周振吉,吳禮發,梁其川,李華波
(解放軍理工大學 指揮自動化學院,江蘇 南京210007)
近年來,僵尸網絡已經成為互聯網穩定和安全的最大威脅,國內外安全界對此給予了高度關注。僵尸網絡(Botnet)是僵尸主人(BotMaster)通過命令與控制信道(C&C)控制的具有協同性的惡意計算機群,其中被控制的計算機稱為僵尸主機(Zombie),僵尸主人用來控制僵尸主機的計算機程序稱為僵尸程序(Bot)。通過這個計算機群,僵尸主人可以實現覆蓋面更廣、強度更高、更難被檢測的惡意行為,例如分布式拒絕攻擊(DDoS)、發送垃圾郵件(Spam)、竊取敏感信息等。
僵尸網絡具有以下 3個主要特性[1]:(1)“惡意性”,即僵尸主機主要開展DDoS、Spam、下載延伸其他惡意代碼等一系列惡意行為;(2)“可控性”,即僵尸主機通過C&C信道接收僵尸主人的命令后執行相應的惡意行為;(3)“協同性”,即同一個僵尸網絡中的僵尸主機聯合同步執行僵尸主人的命令。
目前,針對最早出現的IRC僵尸網絡的檢測技術取得了比較理想的效果[2]。但是近幾年來,P2P和HTTP類型的僵尸網絡日益盛行,而P2P協議多樣性和HTTP協議普及性的特點,使得傳統的僵尸網絡檢測技術面臨巨大的挑戰。本文從終端層面出發,提出了一種基于主機系統行為和網絡行為的混合式檢測算法,該算法可以有效檢測出IRC、P2P和HTTP類型的僵尸主機。
目前,大多數僵尸網絡檢測技術主要是從僵尸網絡的網絡流量特性入手。
GU G等人[1,3]提出了基于網絡特征的僵尸網絡檢測方法,實現了原型系統BotSniffer和BotMiner。將被監視的網絡內部每臺主機的通信行為和網絡惡意活動進行分類,找出具有相似或相關通信和網絡惡意行為的主機。如果被監控的內部網絡有較多的主機而其中只有少數幾臺(即使一臺)感染了僵尸程序,這種方法就失去了檢測的意義。
KANG J等人[4]提出了一種多圖累加和(Multi-chart CUSUM)檢測P2P僵尸網絡的方法。認為主機產生的網絡流量是一個復雜的隨機模型,發生任何異常都會給這個模型帶來明顯的變化。而一臺主機被感染P2P僵尸程序后,會表現出明顯的異常網絡流。作者用多圖累加和模型描述網絡異常,并采用動態閾值自適應技術提高檢測的精確性。
NOH S等人[5]提出了一種使用多定相流模型(Multi-Phased Flow Model)檢測 P2P僵尸網絡的方法,對P2P僵尸程序與其他節點通信的多種流量特征進行了分析,然后用相似度進行判斷和檢測。該方法充分利用了P2P僵尸網絡的網絡流異常實施檢測,但是對其他類型僵尸網絡檢測效果不好,專用性太強。
WANG B等人[6]利用P2P僵尸網絡控制流的穩定性對僵尸主機進行檢測。他們從P2P僵尸網絡的控制流中選取一個變量,該變量在整個時間段的值都穩定在某一個水平,而且上下波動的幅度不大。這種方法的誤報率和漏報率比較高。
除了僵尸網絡的網絡行為特性外,LIU L等人[7]從僵尸程序執行特征出發,提出了一個檢測原型系統BotTracer。由于沒有考慮僵尸程序的網絡控制流特性,誤報率比較大。而HOLZ T等人[8]采用蜜網蜜罐技術,但是這類方法依賴于蜜網和蜜罐的分布,無法有效地檢測出全部活躍的僵尸網絡。
通過分析大量僵尸程序樣本與綜合現有文獻[9-11]得知:僵尸程序在系統行為和網絡行為方面與正常程序都有比較明顯的區別,而這些區別可以作為僵尸程序檢測的依據。
僵尸程序為了自啟動和執行惡意行為(包括鍵盤記錄、密碼盜取、網絡嗅探、私密后門安裝、間諜軟件和rootkit等),必須調用特定的系統函數。例如網絡下載命令會從終端向外發起連接,向目標請求數據,并且在本地終端上面創建新文件。所有這些動作(網絡連接、發送、接收、文件創建)都通過調用系統函數來實現,而諸如下載地址這樣的控制信息是從網絡中接收到的。正常的網絡應用程序雖然也接收網絡數據,但是一般不會從接收到的數據中提取參數來調用這些特殊的系統函數[12-13]。因此通過監控特定函數調用的參數來源,就可以判定出僵尸主機在終端系統上的惡意行為。
僵尸主機的網絡流量按照用途可以分成兩類:(1)行為流,指與僵尸主機惡意網絡行為相關的流量(如DDoS、Spam、掃描(Scan)等產生的流量);(2)控制流,指與獲得僵尸主人命令、維持C&C信道等相關的流量。通過研究發現,與C&C信道建立連接后,僵尸主機為了保持連接的活躍,一般會周期性地發送特定的報文,這中間沒有用戶的干預,因而控制流表現出一定的穩定性,而正常的網絡應用程序運行時,由于存在用戶干預,一般不會表現出這樣的穩定性,因此控制流的穩定性可以作為僵尸網絡的一個重要判斷依據。
本文在綜合考慮僵尸主機的系統行為和網絡行為的基礎上,提出了一種混合式僵尸主機檢測算法。僵尸主機檢測算法監控有網絡通信行為的進程,并判斷其是否為僵尸進程,只要存在僵尸進程,則該終端為僵尸主機。僵尸進程檢測算法主要結合程序自啟動、控制流的穩定性、系統惡意行為和網絡惡意行為4個指標來判定。僵尸進程檢測算法如下所示:

根據上面的分析,本節給出系統行為監控算法,算法中BotBehavior變量記錄惡意行為數,X0是根據實踐預定義的閾值。惡意行為累計達到一定的閾值時,則標記為系統惡意特征。系統行為監控算法如下所示:

控制流的穩定性是判定僵尸網絡的一個重要依據。基于參考文獻[6]中提出的穩定性思想,本節設計了一個改進的流量穩定性衡量方法。
2.2.1穩定性的衡量
在一個時間段E內,所有的 m個流(flow)組成一個流量 C。 定義流量 C={flowj},j=1,2,…,m,其中 flowj表示單個流。為了檢測穩定性,需要選擇一個合適的隨機變量。在實驗中,選擇最簡單的分組平均字節數abp(the average number of bytes per packet)作為隨機變量。分組平均字節數的計算:一個flowj的總字節數除以總分組數。對于一個流量C,可以計算出abp在時間段E中任何子集上的離散樣本分布。假設對于相鄰的時間間隔T1和T2,abp的值分別為P1和P2,定義兩者之間的距離函數 S(P1,P2)。

2.2.2穩定性檢測算法
本節給出一個在時間段E中通信流量abp分布的穩定性檢測算法。在時間段E的流量C中使用了兩個滑動窗口,一個為基準窗口 Wb,另一個為檢測窗口Wd,兩個窗口具有相同的大小。滑動單元用Tu表示,而且兩個窗口的大小是滑動單元的整數倍。Pb和Pd的含義也和上面提出的距離檢測算法相同。在這個算法中引入參數δ,表示兩個abp分布的相似度,δ越小,它們越相似,反之亦然。在檢測過程中,δ也代表了檢測標準的嚴格程度,δ越小,系統的檢測水平越高。δ根據前面距離檢測的結果選定,如果 S(Pb,Pd)>δ,即表示通信流中出現了異常,不具有穩定性。如果當前的 S(Pb,Pd)≤δ,向前滑動檢測窗口Wd一步且維持基準窗口Wb的位置不變。一旦距離 S(Pb,Pd)>δ,即給出一個流改變的報告,然后把基準窗口移動到流改變的時間點,檢測窗口仍然比基準窗口晚一個滑動單元。穩定性檢測算法的輸入是一個通信流量C,輸出為C中流改變的數量。穩定性檢測算法如下所示:


以提出的混合式僵尸主機檢測算法為基礎,設計并實現了一個檢測原型系統——BotScout。BotScout運行在Windows操作系統上,主要由函數調用監控模塊、系統行為監控模塊、污染傳播監控模塊和網絡行為監控模塊組成,總體架構如圖1所示。
系統函數對監控模塊的調用基于Microsoft Detours 2.1 Express設計,根據監控的功能,系統把攔截的Win32API函數分為系統行為函數、污染傳播函數和網絡行為函數三大類。
(1)系統行為監控模塊。僵尸程序經常把自己注入到其他進程中以躲避殺毒軟件和防火墻的攔截,因此如果某個進程注入代碼到其他的進程,則監控被注入進程的行為。僵尸程序為了實現自啟動必須修改特定的注冊表項或者一些特定文件,而竊取系統的敏感信息也是通過訪問特定的文件、注冊表、鍵盤消息實現,監控這些函數的調用就可以發現此類惡意行為。
(2)污染傳播監控模塊。為檢測僵尸程序“可控性”,算法對接收到的網絡數據進行監控。網絡數據監控發生在網絡接收時,這些接收到的數據稱為臟數據,算法持續跟蹤臟數據:當臟數據寫入新的內存空間時,跟蹤寫入過程,把新的內存區的數據標識為臟數據,并將其加入到臟數據鏈表中。監控污染的傳播相當重要,否則會發生漏報。本模塊主要監控內存拷貝函數(如memcpy),這也是污染傳播的主要途徑。其實,還有一些函數也會起到污染傳播的作用,例如把某個內存內容轉化為數值的函數(如 atoi)、大小端轉化函數(如 htonl、htons),還有一些加密、解密、壓縮、解壓縮的函數等;并且許多內存拷貝函數是inline或者靜態鏈接在文件中的,在原型系統BotScout中暫不考慮這些函數,這也是下一步重點工作之一。
(3)網絡行為監控模塊。如何有效地分離控制流和行為流是這個模塊的一個難點。僵尸程序啟動后自動與C&C信道建立連接,因此標記起始建立的網絡連接為控制流,并在整個進程檢測周期中對相同協議的網絡連接進行統計,分析其穩定性;僵尸主機本質上是控制流驅動行為流,因此如果一個新的網絡連接建立過程中地址綁定參數使用了控制流接收到的數據,則標記這個新連接為行為流,并對內容進行分析,檢查是否符合DDoS、Spam、Scan等惡意行為特征。
由于僵尸網絡范圍非常廣,在實際應用中將整個僵尸網絡中的所有節點檢測、追蹤出來是不可能的,所以僵尸網絡檢測一般是檢測出網絡中的部分節點。本文的試驗和檢測環境為安裝有檢測系統的局域網,檢測對象為局域網內部的主機節點。
BotScout運行在單臺終端系統上,系統測試拓撲如圖2所示。測試主機通過交換機連接在一起,經過邊界路由、防火墻與互聯網通信,所有流量控制在此測試環境內,不會對其他主機產生影響。

共有6臺測試機,分別對應6個樣本,每臺運行120 min。這6臺測試機的運行環境為Windows XP SP3,配置為2CPU Intel(R)Core(R)2.0 GHz、2 GB 內存,100 MB 網卡。
本實驗選擇了兩類樣本程序:(1)僵尸程序樣本。實驗選擇了 SDBot、AgoBot和 SpamThru三種不同控制協議的僵尸程序;(2)正常網絡應用程序樣本。實驗選擇了經典的IRC聊天工具mIRC,熱門的網頁瀏覽器Internet Explorer和流行的P2P下載軟件eMule。對實驗數據進行橫向測試,結果如表1所示,僵尸程序樣本都能在較短的時間內被檢測出來,而正常網絡應用程序在整個運行周期內都沒有報警。

表1 實驗檢測結果
在充分研究僵尸主機的行為特點以及僵尸網絡命令與控制信道的特性后,提出了一種綜合系統行為與網絡行為的混合式僵尸主機檢測算法,并對現有的僵尸網絡行為穩定性衡量方法進行了改進。基于該算法設計實現了一個僵尸主機檢測原型系統BotScout,并對這個系統的性能進行了測試。實驗結果驗證了算法的可行性、有效性和準確性。
[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僵尸網絡檢測[J].計算機學報,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.