逮捕骇客现行犯

ZDNet软件频道 时间:2001-06-29 作者:Chris Prosise |  我要评论()
本文关键词:
侦测恶行并以程序自动产生响应的需求,为网络入侵侦测系统(又称 IDS)催生。这篇文章将谈到如何制作两个快速而简易的 IDS,用来侦测可疑的网页回询活动。身为系统管理者及网站建构者的你不能不知。

寻找入侵性网页浏览活动

借着 urlsnarf 的输出,我们可以开始建立式样比对程序,以寻找网络入侵事件。我们写了一个简单的Perl 程序 来跟 urlsnarf 一起侦测一些基本的网络入侵行为。我们会把 urlsnarf 的执行结果转传给这个式样比对程序,透过式样比对的方法侦测网络入侵行为。

请按这里以观看式样比对程序的全貌

式样比对程序的第一步是,定义一连串入侵性的 URL 查询。为了简单起见,我们只列出某些 URL 如下:

%cgis = (    "/msadc/msadcs.dll" => "mdac",
   "/msadc/Samples/selector/showcode.asp" => "showcode",
   "/cgi-bin/guestbook.cgi" => "guestbook",
   "/cgi-bin/test-cgi" => "test-cgi",
   "/cgi-bin/finger" => "finger",
   "/cfdocs/expelval/exprcalc.cfm" => "exprcalc",
   "/cgi-bin/phf" => "phf",
   "/scripts/samples/search/webhits.exe" => "webhits",
   "/scripts/iisadmin/ism.dll" => "ism",
   "/scripts/tools/newdsn.exe" => "newdsn",
   "/scripts/perl.exe" => "perl_exe",
   "/scripts/proxy/w3proxy.dll" => "w3proxy"
);

我们使用了%cg集中储存所有我们需要的恶意 URL 查询式样。在这里,我们也可以从一个含有这些「特征」的档案,动态建立这个查询式样库。注意,以上的 URL 本身并无害;然而,它们通常都在很多众所皆知的网络骇客事件中被利用来做恶意的网页攻击的基础。(例如 msdacs.dll 曾经被用来破坏 MDAC/RDS)。

下一步,是决定我们能够容忍某个累犯到什么程度。如果某个网客查询某个 URL 超过三次的话,这个网客的 IP 地址就会被列为「入侵者」的黑名单中。在我们的程序里,我们将容忍底线定义如下:

$threshold = 3;

下一段重要的程序代码,是一个以while叙述开始的循环,这个循环会从 urlsnarf 读取每一个 CLF 纪录,并且做分析。为了避免谈到太多 Perl 程序语言的细节,有关while循环的说明就像以下这样:

while(<>) {
   # # parse incoming log line
   # $logline = $_;

   # # pick out the IP,timestamp and URL from the CLF line
   # $logline =~ /(S+).+?([.+]).+?(".+?").+/;
   # $ip = ;
   # $time = ;
   # $url = ;

   # # select the resource from the URL
   # $url =~ /w+s+.*//.+?(/.*)s+.*/;
   # $resource = ;

   # check if there is a match with the URL

变量$resource的值为 URL 回询中的 resource 字符串。例如,如果 URL 为http://10.0.0.1/msadc/msadcs.dll,那么 resource 字符串的值就是/msadcs/msadcs.dll

接着是,寻找我们的 URL「特征」库,看看所查询的 URL 字符串是否符合其中的一个特征。如果式样符合,我们找出这个查询出处的 IP 地址,然后将它的累犯指数加一。如果累犯指数超过了我们的容忍底线,那么我们将这个 IP 地址标为入侵者地址。

下面是式样比对部分的程序代码:

# check if there is a match with the URL
   if($cgis ne "") {
      push(@{ $offender_list }, $cgis);
      # check if the threshold count is crossed
      if($offence_count++ > $threshold) {
         # response to intrusion detected
         print STDERR "** $ip " . join(" ",@{ $offender_list }) . "n";
   } }

我们将这个程序取名为pattern_match.pl

开始使用 urlsnarf 以及 pattern_match.pl

urlsnarf 以及 pattern_match.pl 跑出来的结果应该是如下所示:

# urlsnarf | pattern_match.pl

一个 Whisker 扫描范例,执行 urlsnarf 以及 pattern_match.pl,监测地址为 10.0.0.1 的 IIS 5.0 服务器平台,我们得到了以下的结果:

** 10.0.0.11 webhits ism showcode newdsn
** 10.0.0.11 webhits ism showcode newdsn mdac
** 10.0.0.11 webhits ism showcode newdsn mdac w3proxy
** 10.0.0.11 webhits ism showcode newdsn mdac w3proxy perl_exe

这些结果告诉我们,来自 IP 地址 10.0.0.11 的网客为累犯,并且也列出了一连串针对 10.0.0.1 的相关可疑的 URL 回询。入侵者回报系统是在「特征 URL」已经被查询三次了以后,第四次类似的查询又发生(newdsn)才被激活的。


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134