通過(guò)入侵行為分析IDS應(yīng)用
IDS,即入侵檢測(cè)系統(tǒng)其關(guān)鍵就在于檢測(cè)能力。簡(jiǎn)單的說(shuō),設(shè)立IDS的目的就是當(dāng)場(chǎng)檢測(cè)到網(wǎng)絡(luò)入侵事件的發(fā)生。本篇文章將通過(guò)監(jiān)測(cè)惡性入侵性網(wǎng)頁(yè)瀏覽行為,分析在企業(yè)安全防護(hù)中的IDS應(yīng)用。
IDS就是一個(gè)網(wǎng)絡(luò)上的系統(tǒng),這個(gè)系統(tǒng)包含了下面三個(gè)組件:
(1)網(wǎng)絡(luò)監(jiān)測(cè)組件,用以捕捉在網(wǎng)絡(luò)線上傳遞的封包。
(2)接口組件,用以決定監(jiān)測(cè)中的資料傳遞是否屬于惡意行為或惡意的使用。在網(wǎng)絡(luò)傳遞時(shí),用來(lái)比較的資料樣式 (pattern),以監(jiān)測(cè)惡意網(wǎng)絡(luò)活動(dòng)。
(3)響應(yīng)組件,針對(duì)當(dāng)時(shí)的事件予以適當(dāng)?shù)捻憫?yīng)。這個(gè)響應(yīng)可以是簡(jiǎn)單的,例如寄發(fā)一個(gè)電子郵件訊息給系統(tǒng)管理者,或者是復(fù)雜的,例如暫時(shí)將違規(guī)者的IP地址過(guò)濾掉,不要讓他連到這個(gè)網(wǎng)絡(luò)來(lái)。
IDS如何通過(guò)網(wǎng)頁(yè)監(jiān)測(cè)網(wǎng)絡(luò)入侵事件
IDS系統(tǒng)不只必須監(jiān)測(cè)各式各樣,從大到小,以及各種系列的系統(tǒng)上的網(wǎng)絡(luò)攻擊事件,它還必須能夠快速及時(shí)地的在第一時(shí)間內(nèi)監(jiān)測(cè)到入侵事件的發(fā)生。因此,IDS的數(shù)據(jù)庫(kù)以及式樣比對(duì)(pattern-matching)機(jī)制是復(fù)雜到令人難以置信的。
要使IDS能夠監(jiān)測(cè)通過(guò)網(wǎng)頁(yè)的入侵事件,其中的網(wǎng)絡(luò)監(jiān)測(cè)組件就必須要能夠捕捉所有通過(guò)網(wǎng)頁(yè)通訊端口上,借著HTTP 通訊協(xié)議傳遞的網(wǎng)絡(luò)資料往來(lái)。(注意,SSL的網(wǎng)絡(luò)交通是完全繞過(guò)IDS的網(wǎng)絡(luò)監(jiān)測(cè)的,因?yàn)檫@些網(wǎng)絡(luò)交換資料都是經(jīng)過(guò)加密的。)式樣比對(duì)組件在這里,主要是用于比較URL解析的結(jié)果,看看是否符合數(shù)據(jù)庫(kù)中的惡意的HTTP回詢(xún)(request)。
接下來(lái),我介紹如何制作兩個(gè)快速而簡(jiǎn)易的IDS應(yīng)用軟件,用來(lái)監(jiān)測(cè)可疑的網(wǎng)頁(yè)回詢(xún)活動(dòng)。這些解決方案的目的是在于提供系統(tǒng)管理者,讓他們擁有一個(gè)特別針對(duì)他們網(wǎng)絡(luò)而設(shè)計(jì)的監(jiān)測(cè)/響應(yīng)系統(tǒng)。
制作快速而簡(jiǎn)易的IDS應(yīng)用軟件
(1)Network Grep 工具
我們先從一個(gè)簡(jiǎn)單的網(wǎng)絡(luò)監(jiān)視程序開(kāi)始,這個(gè)程序是用來(lái)監(jiān)測(cè) HTTP 通訊協(xié)議的網(wǎng)絡(luò)資料往來(lái)。HTTP回詢(xún)的特色是,它使用以下的語(yǔ)法:
〈HTTP-Request-Method〉 〈URL〉 HTTP/〈version〉
這個(gè)可在Packetfactory入口網(wǎng)站尋獲的程序ngrep針對(duì)在網(wǎng)絡(luò)上傳遞往來(lái)的資料,執(zhí)行正則表示法(regular expression)式樣比對(duì)。我們可以用以下的指令來(lái)利用ngrep攔截并顯示所有純文字形式的 HTTP 資料往來(lái):
#ngrep-iqt“^GET|^HEAD|^TRACE|^POST|^PUT and HTTP”
以上指令中,-iqt 選項(xiàng)是指示ngrep不要區(qū)分資料中的大小寫(xiě),并且只有顯示封包中有符合式樣比對(duì)的資料,以及在顯示資料時(shí)加上日期以及時(shí)間的標(biāo)題。(注:比對(duì)的式樣,是基于 GET,HEAD,TRACE,POST,PUT,以及 HTTP 等關(guān)鍵詞。欲知更多有關(guān)如何在ngrep使用正則表示法,你可以到http://www.packetfactory.net/Projects/Ngrep/查看相關(guān)資料。)
以上面我們建議的方式使用ngrep再加上運(yùn)行越來(lái)越受歡迎的 Whisker程序,監(jiān)測(cè)地址為 10.1.1.2 的IIS5.0 服務(wù)器平臺(tái),我們得到了以下的結(jié)果:
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)執(zhí)行式樣比對(duì)
使用ngrep攔截網(wǎng)絡(luò)資料往來(lái)很簡(jiǎn)單。然而,分析捕捉到的資料并從中抽取URL則略具難度。因?yàn)閚grep將資料輸出拆成一行一行的,所以我們必須額外耗費(fèi)很多精力,去重組輸出的資料,并將該資料中的URL與已知的網(wǎng)絡(luò)攻擊行為模式做比對(duì)。
此時(shí),我向大家介紹另一個(gè)用來(lái)監(jiān)測(cè)網(wǎng)頁(yè)傳送的犀利工具軟件了。這個(gè)軟件就叫做urlsnarf,它是由Dug Song寫(xiě)成的dsniff工具軟件套件的一部份。urlsnarf 從所攔截的網(wǎng)絡(luò)資料傳送中,捕捉所有的 HTTP 回詢(xún),并且將結(jié)果以共享日記文件格式(Common Log Format ,CLF)顯示出來(lái),這種格式就跟市面上的網(wǎng)頁(yè)服務(wù)器,諸如Apache或者是IIS所用的格式一樣。
跟當(dāng)初我們用ngrep的方式一樣,我們使用urlsnarf并且在 10.1.1.2 的服務(wù)器上執(zhí)行Whisker,所得到的結(jié)果如下:
# 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唯一的缺點(diǎn)是,它現(xiàn)在的程序是寫(xiě)死的,只監(jiān)聽(tīng)TCP通訊端口80(純文字HTTP),3128(MS-proxy)以及8080(generic/squid proxy)。從其它通訊端口傳輸?shù)腍TTP協(xié)議資料則完全被忽略。要想改變這種限制,你必須在urlsnarf的原始程序代碼中做一些小小的改變。然而,光是urlsnarf所提供的功能,就已經(jīng)遠(yuǎn)遠(yuǎn)的超過(guò)它所給我們的限制了。
因?yàn)閡rlsnarf以CLF格式產(chǎn)生日記,我們可以將它的輸出結(jié)果,轉(zhuǎn)送到任何在網(wǎng)頁(yè)服務(wù)器上使用CLF格式分析日記的日記分析軟件。
監(jiān)測(cè)惡性入侵性網(wǎng)頁(yè)瀏覽行為
通過(guò)urlsnarf的輸出,我們可以開(kāi)始建立式樣比對(duì)程序,以尋找網(wǎng)絡(luò)入侵事件。在這里我利用一個(gè)簡(jiǎn)單的Perl程序來(lái)跟urlsnarf一起監(jiān)測(cè)一些基本的網(wǎng)絡(luò)入侵行為,假想體驗(yàn)一下在企業(yè)防護(hù)中的IDS應(yīng)用。我們會(huì)把urlsnarf的執(zhí)行結(jié)果轉(zhuǎn)傳給這個(gè)式樣比對(duì)程序,通過(guò)式樣比對(duì)的方法監(jiān)測(cè)網(wǎng)絡(luò)入侵行為。
式樣比對(duì)程序的第一步是,定義一連串入侵性的URL查詢(xún)。為了簡(jiǎn)單起見(jiàn),我們只列出某些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集中儲(chǔ)存所有我們需要的惡意URL查詢(xún)式樣。在這里,我們也可以從一個(gè)含有這些“特征”的檔案,動(dòng)態(tài)建立這個(gè)查詢(xún)式樣庫(kù)。 注意,以上的URL本身并無(wú)害;然而,它們通常被黑客利用來(lái)做惡意的網(wǎng)頁(yè)攻擊的基礎(chǔ)。(例如:msdacs.dll就可以被用來(lái)破壞 MDAC/RDS)。
下一步,是設(shè)定容忍的最低程度,即:如果某個(gè)訪客查詢(xún)某個(gè)URL超過(guò)三次的話,這個(gè)訪客的IP地址就會(huì)被列在黑名單中。在我們的程序里,定義如下:
$threshold = 3;
下一段重要的程序代碼,是一個(gè)以while敘述開(kāi)始的循環(huán),這個(gè)循環(huán)會(huì)從urlsnarf讀取每一個(gè)CLF紀(jì)錄,并且做分析。為了避免談到太多Perl程序語(yǔ)言的細(xì)節(jié),有關(guān) while 循環(huán)的說(shuō)明就像以下這樣:
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回詢(xún)中的resource字符串。例如,如果URL為 http://10.1.1.2/msadc/msadcs.dll,那么 resource 字符串的值就是 /msadcs/msadcs.dll。
接著是,尋找我們的URL“特征”庫(kù),看看所查詢(xún)的URL字符串是否符合其中的一個(gè)特征。如果式樣符合,我們找出這個(gè)查詢(xún)出處的IP地址, 然后將它的訪客指數(shù)加一。如果訪客觀存在指數(shù)超過(guò)了我們的容忍底線,那么我們將這個(gè)IP地址標(biāo)為黑客地址。
下面是式樣比對(duì)部分的程序代碼:
# 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";
} }
將這個(gè)程序取名為pattern_match.pl。開(kāi)始使用urlsnarf以及 pattern_match.pl,urlsnarf 以及pattern_match.pl 得出來(lái)的結(jié)果應(yīng)該是如下所示:
#urlsnarf| pattern_match.pl
一個(gè)Whisker掃描范例,執(zhí)行urlsnarf以及pattern_match.pl,監(jiān)測(cè)地址為 10.1.1.2 的IIS5.0 服務(wù)器平臺(tái),我們得到了以下的結(jié)果:
** 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
這些結(jié)果告訴我們,來(lái)自IP地址 10.1.1.21 的訪客為惡意訪客,并且也列出了一連串針對(duì) 10.1.1.2 的相關(guān)可疑的URL回詢(xún)。黑客回報(bào)系統(tǒng)是在“特征 URL”已經(jīng)被查詢(xún)?nèi)瘟艘院螅谒拇晤?lèi)似的查詢(xún)又發(fā)生(newdsn)才被激活的。
【編輯推薦】
- 如何構(gòu)建入門(mén)級(jí)IDS
- IDS漏洞分析與黑客入侵手法
- 測(cè)試評(píng)估IDS的性能指標(biāo)
- 正確評(píng)估IDS性能的標(biāo)準(zhǔn)與步驟
- 企業(yè)測(cè)試IDS的四條重要標(biāo)準(zhǔn)