通过入侵行为分析IDS应用

IDS,即入侵检测系统其关键就在于检测能力。简单的说,设立IDS的目的就是当场检测到网络入侵事件的发生。本篇文章将通过监测恶性入侵性网页浏览行为,分析在企业安全防护中的IDS应用。

IDS就是一个网络上的系统,这个系统包含了下面三个组件:

(1)网络监测组件,用以捕捉在网络线上传递的封包。

(2)接口组件,用以决定监测中的资料传递是否属于恶意行为或恶意的使用。在网络传递时,用来比较的资料样式 (pattern),以监测恶意网络活动。

(3)响应组件,针对当时的事件予以适当的响应。这个响应可以是简单的,例如寄发一个电子邮件讯息给系统管理者,或者是复杂的,例如暂时将违规者的IP地址过滤掉,不要让他连到这个网络来。

IDS如何通过网页监测网络入侵事件

IDS系统不只必须监测各式各样,从大到小,以及各种系列的系统上的网络攻击事件,它还必须能够快速及时地的在第一时间内监测到入侵事件的发生。因此,IDS的数据库以及式样比对(pattern-matching)机制是复杂到令人难以置信的。

要使IDS能够监测通过网页的入侵事件,其中的网络监测组件就必须要能够捕捉所有通过网页通讯端口上,借着HTTP 通讯协议传递的网络资料往来。(注意,SSL的网络交通是完全绕过IDS的网络监测的,因为这些网络交换资料都是经过加密的。)式样比对组件在这里,主要是用于比较URL解析的结果,看看是否符合数据库中的恶意的HTTP回询(request)。

接下来,我介绍如何制作两个快速而简易的IDS应用软件,用来监测可疑的网页回询活动。这些解决方案的目的是在于提供系统管理者,让他们拥有一个特别针对他们网络而设计的监测/响应系统。

制作快速而简易的IDS应用软件

(1)Network Grep 工具

我们先从一个简单的网络监视程序开始,这个程序是用来监测 HTTP 通讯协议的网络资料往来。HTTP回询的特色是,它使用以下的语法:

〈HTTP-Request-Method〉 〈URL〉 HTTP/〈version〉

这个可在Packetfactory入口网站寻获的程序ngrep针对在网络上传递往来的资料,执行正则表示法(regular expression)式样比对。我们可以用以下的指令来利用ngrep拦截并显示所有纯文字形式的 HTTP 资料往来:

#ngrep-iqt“^GET|^HEAD|^TRACE|^POST|^PUT and HTTP”

以上指令中,-iqt 选项是指示ngrep不要区分资料中的大小写,并且只有显示封包中有符合式样比对的资料,以及在显示资料时加上日期以及时间的标题。(注:比对的式样,是基于 GET,HEAD,TRACE,POST,PUT,以及 HTTP 等关键词。欲知更多有关如何在ngrep使用正则表示法,你可以到http://www.packetfactory.net/Projects/Ngrep/查看相关资料。)

以上面我们建议的方式使用ngrep再加上运行越来越受欢迎的 Whisker程序,监测地址为 10.1.1.2 的IIS5.0 服务器平台,我们得到了以下的结果:

T 03:37:30.041739 10.1.1.21:2425 -> 10.1.1.2:80 [AP]
HEAD / HTTP/1.0..User-Agent: Mozilla/5.0 [en] (Win95; U)..Referer: http://10.1.1.2/..Connection: close….

T 2001/01/16 03:37:30.108630 10.1.1.21:2426 -> 10.1.1.2:80 [AP]
GET /cfdocs/ HTTP/1.0..User-Agent: Mozilla/5.0 [en] (Win95; U)..Cookie: ASPSESSIONIDGQGQGLAC=HDJNBOGBIPOCPNCKOJOPBCFD;path=
/..Referer:http://10.1.1.2/..Connection: close….

T 2001/01/16 03:37:31.842452 10.1.1.21:2427 -> 10.1.1.2:80 [AP]
GET /scripts/ HTTP/1.0..User-Agent: Mozilla/5.0 [en] (Win95; U)..Cookie: ASPSESSIONIDGQGQGLAC=HDJNBOGBIPOCPNCKOJOPBCFD;path=
/..Referer:http://10.1.1.2/..Connection: close….

T 2001/01/16 03:37:31.854206 10.1.1.21:2428 -> 10.1.1.2:80 [AP]
GET /scripts/cfcache.map HTTP/1.0..User-Agent: Mozilla/5.0 [en]
(Win95; U)..Cookie: ASPSESSIONIDGQGQGLAC=HDJNBOGBIPOCPNCKOJOPBCFD;
path=/..Referer: http://10.1.1.2/..Connection: close….

T 2001/01/16 03:37:33.644534 10.1.1.21:2429 -> 10.1.1.2:80 [AP]
GET /cfcache.map HTTP/1.0..User-Agent: Mozilla/5.0 [en] (Win95; U)..Cookie: ASPSESSIONIDGQGQGLAC=HDJNBOGBIPOCPNCKOJOPBCFD;path=
/..Referer:http://10.1.1.2/..Connection: close…. 

(2)执行式样比对

使用ngrep拦截网络资料往来很简单。然而,分析捕捉到的资料并从中抽取URL则略具难度。因为ngrep将资料输出拆成一行一行的,所以我们必须额外耗费很多精力,去重组输出的资料,并将该资料中的URL与已知的网络攻击行为模式做比对。

此时,我向大家介绍另一个用来监测网页传送的犀利工具软件了。这个软件就叫做urlsnarf,它是由Dug Song写成的dsniff工具软件套件的一部份。urlsnarf 从所拦截的网络资料传送中,捕捉所有的 HTTP 回询,并且将结果以共享日记文件格式(Common Log Format ,CLF)显示出来,这种格式就跟市面上的网页服务器,诸如Apache或者是IIS所用的格式一样。

跟当初我们用ngrep的方式一样,我们使用urlsnarf并且在 10.1.1.2 的服务器上执行Whisker,所得到的结果如下:

# urlsnarf
urlsnarf: listening on eth0
10.1.1.21 – – [16/02/2001:03:58:43 +0530] “HEAD http://10.1.1.2/ HTTP/1.0” – – “http://10.1.1.2/” “Mozilla/5.0 [en] (Win95; U)”

10.1.1.21 – – [16/02/2001:03:58:43 +0530] “GET http://10.1.1.2/cfdocs/ HTTP/1.0” – – “http://10.1.1.2/” “Mozilla/5.0 [en] (Win95; U)”

10.1.1.21 – – [16/02/2001:03:58:45 +0530] “GET http://10.1.1.2/scripts/ HTTP/1.0” – – “http://10.1.1.2/” “Mozilla/5.0 [en] (Win95; U)”

10.1.1.21 – – [16/02/2001:03:58:45 +0530] “GET http://10.1.1.2/scripts/cfcache.map HTTP/1.0” – – “http://10.1.1.2/” “Mozilla/5.0 [en] (Win95; U)”

10.1.1.21 – – [16/02/2001:03:58:48 +0530] “GET http://10.1.1.2/cfcache.map HTTP/1.0” – – “http://10.1.1.2/” “Mozilla/5.0 [en] (Win95; U)”

10.1.1.21 – – [16/02/2001:03:58:50+0530]”GET
http://10.1.1.2/cfide/Administrator/startstop.html HTTP/1.0″ – – “http://10.1.1.2/” “Mozilla/5.0 [en] (Win95; U)”

10.1.1.21 – – [16/02/2001:03:58:52 +0530] “GET http://10.1.1.2/cfappman/index.cfm HTTP/1.0” – – “http://10.1.1.2/” “Mozilla/5.0 [en] (Win95; U)”

使用urlsnarf唯一的缺点是,它现在的程序是写死的,只监听TCP通讯端口80(纯文字HTTP),3128(MS-proxy)以及8080(generic/squid proxy)。从其它通讯端口传输的HTTP协议资料则完全被忽略。要想改变这种限制,你必须在urlsnarf的原始程序代码中做一些小小的改变。然而,光是urlsnarf所提供的功能,就已经远远的超过它所给我们的限制了。

因为urlsnarf以CLF格式产生日记,我们可以将它的输出结果,转送到任何在网页服务器上使用CLF格式分析日记的日记分析软件。

监测恶性入侵性网页浏览行为

通过urlsnarf的输出,我们可以开始建立式样比对程序,以寻找网络入侵事件。在这里我利用一个简单的Perl程序来跟urlsnarf一起监测一些基本的网络入侵行为,假想体验一下在企业防护中的IDS应用。我们会把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 andURLfrom theCLFline
 # $logline =~ /(S+).+?([.+]).+?(”.+?”).+/;
 # $ip = $1;
 # $time = $2;
 # $url = $3;

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

 # check if there is a match with theURL

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

接着是,寻找我们的URL“特征”库,看看所查询的URL字符串是否符合其中的一个特征。如果式样符合,我们找出这个查询出处的IP地址, 然后将它的访客指数加一。如果访客观存在指数超过了我们的容忍底线,那么我们将这个IP地址标为黑客地址。

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

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

将这个程序取名为pattern_match.pl。开始使用urlsnarf以及 pattern_match.pl,urlsnarf 以及pattern_match.pl 得出来的结果应该是如下所示:

#urlsnarf| pattern_match.pl

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

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

这些结果告诉我们,来自IP地址 10.1.1.21 的访客为恶意访客,并且也列出了一连串针对 10.1.1.2 的相关可疑的URL回询。黑客回报系统是在“特征 URL”已经被查询三次了以后,第四次类似的查询又发生(newdsn)才被激活的。

 

【编辑推荐】

  1. 如何构建入门级IDS
  2. IDS漏洞分析与黑客入侵手法
  3. 测试评估IDS的性能指标
  4. 正确评估IDS性能的标准与步骤
  5. 企业测试IDS的四条重要标准

 

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/122975.html<

(0)
管理的头像管理
上一篇2025-02-22 14:28
下一篇 2025-02-22 14:29

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注