摘 要: 為了進(jìn)一步提高檢測(cè)的精確性,在研究僵尸主機(jī)的行為特點(diǎn)以及僵尸網(wǎng)絡(luò)命令與控制信道的特性后,提出了一種基于終端系統(tǒng)行為和網(wǎng)絡(luò)行為的混合式僵尸主機(jī)檢測(cè)算法,并對(duì)現(xiàn)有的僵尸網(wǎng)絡(luò)行為穩(wěn)定性衡量方法進(jìn)行了改進(jìn)。在此基礎(chǔ)上,設(shè)計(jì)實(shí)現(xiàn)了一個(gè)僵尸主機(jī)檢測(cè)原型系統(tǒng)——BotScout。評(píng)估結(jié)果表明了算法的有效性。
關(guān)鍵詞: 系統(tǒng)行為;網(wǎng)絡(luò)行為;僵尸網(wǎng)絡(luò);僵尸主機(jī)
近年來(lái),僵尸網(wǎng)絡(luò)已經(jīng)成為互聯(lián)網(wǎng)穩(wěn)定和安全的最大威脅,國(guó)內(nèi)外安全界對(duì)此給予了高度關(guān)注。僵尸網(wǎng)絡(luò)(Botnet)是僵尸主人(BotMaster)通過(guò)命令與控制信道(C&C)控制的具有協(xié)同性的惡意計(jì)算機(jī)群,其中被控制的計(jì)算機(jī)稱為僵尸主機(jī)(Zombie),僵尸主人用來(lái)控制僵尸主機(jī)的計(jì)算機(jī)程序稱為僵尸程序(Bot)。通過(guò)這個(gè)計(jì)算機(jī)群,僵尸主人可以實(shí)現(xiàn)覆蓋面更廣、強(qiáng)度更高、更難被檢測(cè)的惡意行為,例如分布式拒絕攻擊(DDoS)、發(fā)送垃圾郵件(Spam)、竊取敏感信息等。
僵尸網(wǎng)絡(luò)具有以下3個(gè)主要特性[1]:(1)“惡意性”,即僵尸主機(jī)主要開(kāi)展DDoS、Spam、下載延伸其他惡意代碼等一系列惡意行為;(2)“可控性”,即僵尸主機(jī)通過(guò)C&C信道接收僵尸主人的命令后執(zhí)行相應(yīng)的惡意行為;(3)“協(xié)同性”,即同一個(gè)僵尸網(wǎng)絡(luò)中的僵尸主機(jī)聯(lián)合同步執(zhí)行僵尸主人的命令。
目前,針對(duì)最早出現(xiàn)的IRC僵尸網(wǎng)絡(luò)的檢測(cè)技術(shù)取得了比較理想的效果[2]。但是近幾年來(lái),P2P和HTTP類型的僵尸網(wǎng)絡(luò)日益盛行,而P2P協(xié)議多樣性和HTTP協(xié)議普及性的特點(diǎn),使得傳統(tǒng)的僵尸網(wǎng)絡(luò)檢測(cè)技術(shù)面臨巨大的挑戰(zhàn)。本文從終端層面出發(fā),提出了一種基于主機(jī)系統(tǒng)行為和網(wǎng)絡(luò)行為的混合式檢測(cè)算法,該算法可以有效檢測(cè)出IRC、P2P和HTTP類型的僵尸主機(jī)。
1 相關(guān)研究
目前,大多數(shù)僵尸網(wǎng)絡(luò)檢測(cè)技術(shù)主要是從僵尸網(wǎng)絡(luò)的網(wǎng)絡(luò)流量特性入手。
GU G等人[1,3]提出了基于網(wǎng)絡(luò)特征的僵尸網(wǎng)絡(luò)檢測(cè)方法,實(shí)現(xiàn)了原型系統(tǒng)BotSniffer和BotMiner。將被監(jiān)視的網(wǎng)絡(luò)內(nèi)部每臺(tái)主機(jī)的通信行為和網(wǎng)絡(luò)惡意活動(dòng)進(jìn)行分類,找出具有相似或相關(guān)通信和網(wǎng)絡(luò)惡意行為的主機(jī)。如果被監(jiān)控的內(nèi)部網(wǎng)絡(luò)有較多的主機(jī)而其中只有少數(shù)幾臺(tái)(即使一臺(tái))感染了僵尸程序,這種方法就失去了檢測(cè)的意義。
KANG J等人[4]提出了一種多圖累加和(Multi-chart CUSUM)檢測(cè)P2P僵尸網(wǎng)絡(luò)的方法。認(rèn)為主機(jī)產(chǎn)生的網(wǎng)絡(luò)流量是一個(gè)復(fù)雜的隨機(jī)模型,發(fā)生任何異常都會(huì)給這個(gè)模型帶來(lái)明顯的變化。而一臺(tái)主機(jī)被感染P2P僵尸程序后,會(huì)表現(xiàn)出明顯的異常網(wǎng)絡(luò)流。作者用多圖累加和模型描述網(wǎng)絡(luò)異常,并采用動(dòng)態(tài)閾值自適應(yīng)技術(shù)提高檢測(cè)的精確性。
NOH S等人[5]提出了一種使用多定相流模型(Multi-Phased Flow Model)檢測(cè)P2P僵尸網(wǎng)絡(luò)的方法,對(duì)P2P僵尸程序與其他節(jié)點(diǎn)通信的多種流量特征進(jìn)行了分析,然后用相似度進(jìn)行判斷和檢測(cè)。該方法充分利用了P2P僵尸網(wǎng)絡(luò)的網(wǎng)絡(luò)流異常實(shí)施檢測(cè),但是對(duì)其他類型僵尸網(wǎng)絡(luò)檢測(cè)效果不好,專用性太強(qiáng)。
WANG B等人[6]利用P2P僵尸網(wǎng)絡(luò)控制流的穩(wěn)定性對(duì)僵尸主機(jī)進(jìn)行檢測(cè)。他們從P2P僵尸網(wǎng)絡(luò)的控制流中選取一個(gè)變量,該變量在整個(gè)時(shí)間段的值都穩(wěn)定在某一個(gè)水平,而且上下波動(dòng)的幅度不大。這種方法的誤報(bào)率和漏報(bào)率比較高。
除了僵尸網(wǎng)絡(luò)的網(wǎng)絡(luò)行為特性外,LIU L等人[7]從僵尸程序執(zhí)行特征出發(fā),提出了一個(gè)檢測(cè)原型系統(tǒng)BotTracer。由于沒(méi)有考慮僵尸程序的網(wǎng)絡(luò)控制流特性,誤報(bào)率比較大。而HOLZ T等人[8]采用蜜網(wǎng)蜜罐技術(shù),但是這類方法依賴于蜜網(wǎng)和蜜罐的分布,無(wú)法有效地檢測(cè)出全部活躍的僵尸網(wǎng)絡(luò)。
2 算法設(shè)計(jì)
通過(guò)分析大量僵尸程序樣本與綜合現(xiàn)有文獻(xiàn)[9-11]得知:僵尸程序在系統(tǒng)行為和網(wǎng)絡(luò)行為方面與正常程序都有比較明顯的區(qū)別,而這些區(qū)別可以作為僵尸程序檢測(cè)的依據(jù)。
僵尸程序?yàn)榱俗詥?dòng)和執(zhí)行惡意行為(包括鍵盤記錄、密碼盜取、網(wǎng)絡(luò)嗅探、私密后門安裝、間諜軟件和rootkit等),必須調(diào)用特定的系統(tǒng)函數(shù)。例如網(wǎng)絡(luò)下載命令會(huì)從終端向外發(fā)起連接,向目標(biāo)請(qǐng)求數(shù)據(jù),并且在本地終端上面創(chuàng)建新文件。所有這些動(dòng)作(網(wǎng)絡(luò)連接、發(fā)送、接收、文件創(chuàng)建)都通過(guò)調(diào)用系統(tǒng)函數(shù)來(lái)實(shí)現(xiàn),而諸如下載地址這樣的控制信息是從網(wǎng)絡(luò)中接收到的。正常的網(wǎng)絡(luò)應(yīng)用程序雖然也接收網(wǎng)絡(luò)數(shù)據(jù),但是一般不會(huì)從接收到的數(shù)據(jù)中提取參數(shù)來(lái)調(diào)用這些特殊的系統(tǒng)函數(shù)[12-13]。因此通過(guò)監(jiān)控特定函數(shù)調(diào)用的參數(shù)來(lái)源,就可以判定出僵尸主機(jī)在終端系統(tǒng)上的惡意行為。
僵尸主機(jī)的網(wǎng)絡(luò)流量按照用途可以分成兩類:(1)行為流,指與僵尸主機(jī)惡意網(wǎng)絡(luò)行為相關(guān)的流量(如DDoS、Spam、掃描(Scan)等產(chǎn)生的流量);(2)控制流,指與獲得僵尸主人命令、維持C&C信道等相關(guān)的流量。通過(guò)研究發(fā)現(xiàn),與C&C信道建立連接后,僵尸主機(jī)為了保持連接的活躍,一般會(huì)周期性地發(fā)送特定的報(bào)文,這中間沒(méi)有用戶的干預(yù),因而控制流表現(xiàn)出一定的穩(wěn)定性,而正常的網(wǎng)絡(luò)應(yīng)用程序運(yùn)行時(shí),由于存在用戶干預(yù),一般不會(huì)表現(xiàn)出這樣的穩(wěn)定性,因此控制流的穩(wěn)定性可以作為僵尸網(wǎng)絡(luò)的一個(gè)重要判斷依據(jù)。
本文在綜合考慮僵尸主機(jī)的系統(tǒng)行為和網(wǎng)絡(luò)行為的基礎(chǔ)上,提出了一種混合式僵尸主機(jī)檢測(cè)算法。僵尸主機(jī)檢測(cè)算法監(jiān)控有網(wǎng)絡(luò)通信行為的進(jìn)程,并判斷其是否為僵尸進(jìn)程,只要存在僵尸進(jìn)程,則該終端為僵尸主機(jī)。僵尸進(jìn)程檢測(cè)算法主要結(jié)合程序自啟動(dòng)、控制流的穩(wěn)定性、系統(tǒng)惡意行為和網(wǎng)絡(luò)惡意行為4個(gè)指標(biāo)來(lái)判定。僵尸進(jìn)程檢測(cè)算法如下所示:
輸入:有網(wǎng)絡(luò)通信行為的進(jìn)程
輸出:是否為僵尸進(jìn)程
過(guò)程:
if系統(tǒng)惡意行為||網(wǎng)絡(luò)惡意行為
if自啟動(dòng)&&控制流穩(wěn)定
報(bào)警;
exit;
else
可能是下載者、木馬等其他惡意代碼;
end if
else
什么都不做;
end if
2.1 系統(tǒng)行為監(jiān)控算法設(shè)計(jì)
根據(jù)上面的分析,本節(jié)給出系統(tǒng)行為監(jiān)控算法,算法中BotBehavior變量記錄惡意行為數(shù),X0是根據(jù)實(shí)踐預(yù)定義的閾值。惡意行為累計(jì)達(dá)到一定的閾值時(shí),則標(biāo)記為系統(tǒng)惡意特征。系統(tǒng)行為監(jiān)控算法如下所示:
輸入:Windows操作系統(tǒng)某一進(jìn)程和該進(jìn)程接收到的網(wǎng)絡(luò)數(shù)據(jù)
輸出:報(bào)警信息(也可無(wú)報(bào)警)
過(guò)程:
BotBehavior=0; //初始化時(shí),僵尸行為數(shù)為0;
SelectAPI 1=AutoAPISet;//APISet是一些自啟動(dòng)行為必須調(diào)用的系統(tǒng)函數(shù)
SelectAPI 2=MalAPISet;//APISet是一些惡意行為必須調(diào)用的系統(tǒng)函數(shù)
X=X0; //給判定閾值賦初值
while進(jìn)程為終結(jié)
捕獲該進(jìn)程的系統(tǒng)調(diào)用call;
if call 屬于SelectAPI1
報(bào)警自啟動(dòng)
else if call 屬于SelectAPI2
if call 的參數(shù)是接收自網(wǎng)絡(luò)的數(shù)據(jù)
BotBehavior ++;
end if
end if
if BotBehavior>=X
報(bào)警系統(tǒng)惡意行為;
exit;
end if
end while
2.2 網(wǎng)絡(luò)行為監(jiān)控算法設(shè)計(jì)
控制流的穩(wěn)定性是判定僵尸網(wǎng)絡(luò)的一個(gè)重要依據(jù)。基于參考文獻(xiàn)[6]中提出的穩(wěn)定性思想,本節(jié)設(shè)計(jì)了一個(gè)改進(jìn)的流量穩(wěn)定性衡量方法。
2.2.2 穩(wěn)定性檢測(cè)算法
3 算法評(píng)估
以提出的混合式僵尸主機(jī)檢測(cè)算法為基礎(chǔ),設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)檢測(cè)原型系統(tǒng)——BotScout。BotScout運(yùn)行在Windows操作系統(tǒng)上,主要由函數(shù)調(diào)用監(jiān)控模塊、系統(tǒng)行為監(jiān)控模塊、污染傳播監(jiān)控模塊和網(wǎng)絡(luò)行為監(jiān)控模塊組成,總體架構(gòu)如圖1所示。
系統(tǒng)函數(shù)對(duì)監(jiān)控模塊的調(diào)用基于Microsoft Detours 2.1 Express設(shè)計(jì),根據(jù)監(jiān)控的功能,系統(tǒng)把攔截的Win32API函數(shù)分為系統(tǒng)行為函數(shù)、污染傳播函數(shù)和網(wǎng)絡(luò)行為函數(shù)三大類。
(1)系統(tǒng)行為監(jiān)控模塊。僵尸程序經(jīng)常把自己注入到其他進(jìn)程中以躲避殺毒軟件和防火墻的攔截,因此如果某個(gè)進(jìn)程注入代碼到其他的進(jìn)程,則監(jiān)控被注入進(jìn)程的行為。僵尸程序?yàn)榱藢?shí)現(xiàn)自啟動(dòng)必須修改特定的注冊(cè)表項(xiàng)或者一些特定文件,而竊取系統(tǒng)的敏感信息也是通過(guò)訪問(wèn)特定的文件、注冊(cè)表、鍵盤消息實(shí)現(xiàn),監(jiān)控這些函數(shù)的調(diào)用就可以發(fā)現(xiàn)此類惡意行為。
(2)污染傳播監(jiān)控模塊。為檢測(cè)僵尸程序“可控性”,算法對(duì)接收到的網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行監(jiān)控。網(wǎng)絡(luò)數(shù)據(jù)監(jiān)控發(fā)生在網(wǎng)絡(luò)接收時(shí),這些接收到的數(shù)據(jù)稱為臟數(shù)據(jù),算法持續(xù)跟蹤臟數(shù)據(jù):當(dāng)臟數(shù)據(jù)寫入新的內(nèi)存空間時(shí),跟蹤寫入過(guò)程,把新的內(nèi)存區(qū)的數(shù)據(jù)標(biāo)識(shí)為臟數(shù)據(jù),并將其加入到臟數(shù)據(jù)鏈表中。監(jiān)控污染的傳播相當(dāng)重要,否則會(huì)發(fā)生漏報(bào)。本模塊主要監(jiān)控內(nèi)存拷貝函數(shù)(如memcpy),這也是污染傳播的主要途徑。其實(shí),還有一些函數(shù)也會(huì)起到污染傳播的作用,例如把某個(gè)內(nèi)存內(nèi)容轉(zhuǎn)化為數(shù)值的函數(shù)(如atoi)、大小端轉(zhuǎn)化函數(shù)(如htonl、htons),還有一些加密、解密、壓縮、解壓縮的函數(shù)等;并且許多內(nèi)存拷貝函數(shù)是inline或者靜態(tài)鏈接在文件中的,在原型系統(tǒng)BotScout中暫不考慮這些函數(shù),這也是下一步重點(diǎn)工作之一。
(3)網(wǎng)絡(luò)行為監(jiān)控模塊。如何有效地分離控制流和行為流是這個(gè)模塊的一個(gè)難點(diǎn)。僵尸程序啟動(dòng)后自動(dòng)與C&C信道建立連接,因此標(biāo)記起始建立的網(wǎng)絡(luò)連接為控制流,并在整個(gè)進(jìn)程檢測(cè)周期中對(duì)相同協(xié)議的網(wǎng)絡(luò)連接進(jìn)行統(tǒng)計(jì),分析其穩(wěn)定性;僵尸主機(jī)本質(zhì)上是控制流驅(qū)動(dòng)行為流,因此如果一個(gè)新的網(wǎng)絡(luò)連接建立過(guò)程中地址綁定參數(shù)使用了控制流接收到的數(shù)據(jù),則標(biāo)記這個(gè)新連接為行為流,并對(duì)內(nèi)容進(jìn)行分析,檢查是否符合DDoS、Spam、Scan等惡意行為特征。
3.1 測(cè)試環(huán)境
由于僵尸網(wǎng)絡(luò)范圍非常廣,在實(shí)際應(yīng)用中將整個(gè)僵尸網(wǎng)絡(luò)中的所有節(jié)點(diǎn)檢測(cè)、追蹤出來(lái)是不可能的,所以僵尸網(wǎng)絡(luò)檢測(cè)一般是檢測(cè)出網(wǎng)絡(luò)中的部分節(jié)點(diǎn)。本文的試驗(yàn)和檢測(cè)環(huán)境為安裝有檢測(cè)系統(tǒng)的局域網(wǎng),檢測(cè)對(duì)象為局域網(wǎng)內(nèi)部的主機(jī)節(jié)點(diǎn)。
BotScout運(yùn)行在單臺(tái)終端系統(tǒng)上,系統(tǒng)測(cè)試拓?fù)淙鐖D2所示。測(cè)試主機(jī)通過(guò)交換機(jī)連接在一起,經(jīng)過(guò)邊界路由、防火墻與互聯(lián)網(wǎng)通信,所有流量控制在此測(cè)試環(huán)境內(nèi),不會(huì)對(duì)其他主機(jī)產(chǎn)生影響。
共有6臺(tái)測(cè)試機(jī),分別對(duì)應(yīng)6個(gè)樣本,每臺(tái)運(yùn)行120 min。這6臺(tái)測(cè)試機(jī)的運(yùn)行環(huán)境為Windows XP SP3,配置為2CPU Intel(R) Core(R) 2.0 GHz、2 GB內(nèi)存,100 MB網(wǎng)卡。
3.2 測(cè)試結(jié)果
本實(shí)驗(yàn)選擇了兩類樣本程序:(1)僵尸程序樣本。實(shí)驗(yàn)選擇了SDBot、AgoBot和SpamThru三種不同控制協(xié)議的僵尸程序;(2)正常網(wǎng)絡(luò)應(yīng)用程序樣本。實(shí)驗(yàn)選擇了經(jīng)典的IRC聊天工具mIRC,熱門的網(wǎng)頁(yè)瀏覽器Internet Explorer和流行的P2P下載軟件eMule。對(duì)實(shí)驗(yàn)數(shù)據(jù)進(jìn)行橫向測(cè)試,結(jié)果如表1所示,僵尸程序樣本都能在較短的時(shí)間內(nèi)被檢測(cè)出來(lái),而正常網(wǎng)絡(luò)應(yīng)用程序在整個(gè)運(yùn)行周期內(nèi)都沒(méi)有報(bào)警。
在充分研究僵尸主機(jī)的行為特點(diǎn)以及僵尸網(wǎng)絡(luò)命令與控制信道的特性后,提出了一種綜合系統(tǒng)行為與網(wǎng)絡(luò)行為的混合式僵尸主機(jī)檢測(cè)算法,并對(duì)現(xiàn)有的僵尸網(wǎng)絡(luò)行為穩(wěn)定性衡量方法進(jìn)行了改進(jìn)?;谠撍惴ㄔO(shè)計(jì)實(shí)現(xiàn)了一個(gè)僵尸主機(jī)檢測(cè)原型系統(tǒng)BotScout,并對(duì)這個(gè)系統(tǒng)的性能進(jìn)行了測(cè)試。實(shí)驗(yàn)結(jié)果驗(yàn)證了算法的可行性、有效性和準(zhǔn)確性。
參考文獻(xiàn)
[1] GU G F,PERDISCI R,ZHANG J J,et al.BotMiner:clustering analysis of network traffic for protocol-and structureindependent botnet detection[C].In Proc.of USENIX Security’08,July 2008.
[2] 王威,方濱興,崔翔.基于終端行為特征的IRC僵尸網(wǎng)絡(luò)檢測(cè)[J].計(jì)算機(jī)學(xué)報(bào),2009,32(10):1980-1988.
[3] GU G,ZHANG J,LEE W.BotSniffer:detecting Botnet command and control channels in network traffic[C].In Proc.of the 15th Annual Network and Distributed System Security Symposium(NDSS’08),2008.
[4] KANG J,ZHANG J,LI Q,et al.Detecting new P2P Botnet with multi-chart CUSUM[C].In 2009 International Conference on Networks Security,Wirelsss Communications and Trusted Computing.2009.
[5] NOH S,OH J,LEE J,et al.Detecting P2P Botnets using a multi-phased flow model[C].In Third International Conference on Digital Society.2009.
[6] WANG B,LI Z,TU H,et al.Measuring Peer-to-Peer Botnets using control flow stability[C].In 2009 International Conference on Availability,Reliability and Security.2009.
[7] LIU L,CHEN S,YAN G,et al.BotTracer:execution-based bot-like malware detection[C].In 11th International Conference on Information Security(ISC 2008).2008.
[8] HOLZ T,STEINER M,DAHL F,et al.Mesaurments and mitigation of Peer-to-Peer-based Botnets:a case study of storm worm[C].In Proc.of USENIX LEET’08,April 2008.
[9] NAZARIO J.Botnet tracking:tools,techniques,and lessons learned[C].In Black Hat,2007.
[10] ZHUGE J W,HAN X H,ZHOU Y L,et al.Research and development of Botnets[J].Journal of Software,2008,19(1):152-165.
[11] GRIZZARD J B,SHARMA V,NUNNERY C.Peer-to-Peer botnets:overview and case study[C].In Proc.of the 1st Workshop on Hot Topics in Understanding Botnets(HotBots 2007).Boston,2007.
[12] YIN H,SONG D,EGELE M,et al.Panorama:capturing system-wide information flow malware detection and analysis[C].In ACM Conference on Computer and Communication Security(CCS),2007.
[13] STINSON E,MITCHELL J C.Characterizing bots’ remote control behavior[C].In Lecture Notes in Computer Science,Volume 4579.Springer Berlin/Heidelberg,2007.