摘 要: 為了進一步提高檢測的精確性,在研究僵尸主機的行為特點以及僵尸網絡命令與控制信道的特性后,提出了一種基于終端系統行為和網絡行為的混合式僵尸主機檢測算法,并對現有的僵尸網絡行為穩定性衡量方法進行了改進。在此基礎上,設計實現了一個僵尸主機檢測原型系統——BotScout。評估結果表明了算法的有效性。
關鍵詞: 系統行為;網絡行為;僵尸網絡;僵尸主機
近年來,僵尸網絡已經成為互聯網穩定和安全的最大威脅,國內外安全界對此給予了高度關注。僵尸網絡(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類型的僵尸主機。
1 相關研究
目前,大多數僵尸網絡檢測技術主要是從僵尸網絡的網絡流量特性入手。
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]采用蜜網蜜罐技術,但是這類方法依賴于蜜網和蜜罐的分布,無法有效地檢測出全部活躍的僵尸網絡。
2 算法設計
通過分析大量僵尸程序樣本與綜合現有文獻[9-11]得知:僵尸程序在系統行為和網絡行為方面與正常程序都有比較明顯的區別,而這些區別可以作為僵尸程序檢測的依據。
僵尸程序為了自啟動和執行惡意行為(包括鍵盤記錄、密碼盜取、網絡嗅探、私密后門安裝、間諜軟件和rootkit等),必須調用特定的系統函數。例如網絡下載命令會從終端向外發起連接,向目標請求數據,并且在本地終端上面創建新文件。所有這些動作(網絡連接、發送、接收、文件創建)都通過調用系統函數來實現,而諸如下載地址這樣的控制信息是從網絡中接收到的。正常的網絡應用程序雖然也接收網絡數據,但是一般不會從接收到的數據中提取參數來調用這些特殊的系統函數[12-13]。因此通過監控特定函數調用的參數來源,就可以判定出僵尸主機在終端系統上的惡意行為。
僵尸主機的網絡流量按照用途可以分成兩類:(1)行為流,指與僵尸主機惡意網絡行為相關的流量(如DDoS、Spam、掃描(Scan)等產生的流量);(2)控制流,指與獲得僵尸主人命令、維持C&C信道等相關的流量。通過研究發現,與C&C信道建立連接后,僵尸主機為了保持連接的活躍,一般會周期性地發送特定的報文,這中間沒有用戶的干預,因而控制流表現出一定的穩定性,而正常的網絡應用程序運行時,由于存在用戶干預,一般不會表現出這樣的穩定性,因此控制流的穩定性可以作為僵尸網絡的一個重要判斷依據。
本文在綜合考慮僵尸主機的系統行為和網絡行為的基礎上,提出了一種混合式僵尸主機檢測算法。僵尸主機檢測算法監控有網絡通信行為的進程,并判斷其是否為僵尸進程,只要存在僵尸進程,則該終端為僵尸主機。僵尸進程檢測算法主要結合程序自啟動、控制流的穩定性、系統惡意行為和網絡惡意行為4個指標來判定。僵尸進程檢測算法如下所示:
輸入:有網絡通信行為的進程
輸出:是否為僵尸進程
過程:
if系統惡意行為||網絡惡意行為
if自啟動&&控制流穩定
報警;
exit;
else
可能是下載者、木馬等其他惡意代碼;
end if
else
什么都不做;
end if
2.1 系統行為監控算法設計
根據上面的分析,本節給出系統行為監控算法,算法中BotBehavior變量記錄惡意行為數,X0是根據實踐預定義的閾值。惡意行為累計達到一定的閾值時,則標記為系統惡意特征。系統行為監控算法如下所示:
輸入:Windows操作系統某一進程和該進程接收到的網絡數據
輸出:報警信息(也可無報警)
過程:
BotBehavior=0; //初始化時,僵尸行為數為0;
SelectAPI 1=AutoAPISet;//APISet是一些自啟動行為必須調用的系統函數
SelectAPI 2=MalAPISet;//APISet是一些惡意行為必須調用的系統函數
X=X0; //給判定閾值賦初值
while進程為終結
捕獲該進程的系統調用call;
if call 屬于SelectAPI1
報警自啟動
else if call 屬于SelectAPI2
if call 的參數是接收自網絡的數據
BotBehavior ++;
end if
end if
if BotBehavior>=X
報警系統惡意行為;
exit;
end if
end while
2.2 網絡行為監控算法設計
控制流的穩定性是判定僵尸網絡的一個重要依據。基于參考文獻[6]中提出的穩定性思想,本節設計了一個改進的流量穩定性衡量方法。
2.2.2 穩定性檢測算法
3 算法評估
以提出的混合式僵尸主機檢測算法為基礎,設計并實現了一個檢測原型系統——BotScout。BotScout運行在Windows操作系統上,主要由函數調用監控模塊、系統行為監控模塊、污染傳播監控模塊和網絡行為監控模塊組成,總體架構如圖1所示。
系統函數對監控模塊的調用基于Microsoft Detours 2.1 Express設計,根據監控的功能,系統把攔截的Win32API函數分為系統行為函數、污染傳播函數和網絡行為函數三大類。
(1)系統行為監控模塊。僵尸程序經常把自己注入到其他進程中以躲避殺毒軟件和防火墻的攔截,因此如果某個進程注入代碼到其他的進程,則監控被注入進程的行為。僵尸程序為了實現自啟動必須修改特定的注冊表項或者一些特定文件,而竊取系統的敏感信息也是通過訪問特定的文件、注冊表、鍵盤消息實現,監控這些函數的調用就可以發現此類惡意行為。
(2)污染傳播監控模塊。為檢測僵尸程序“可控性”,算法對接收到的網絡數據進行監控。網絡數據監控發生在網絡接收時,這些接收到的數據稱為臟數據,算法持續跟蹤臟數據:當臟數據寫入新的內存空間時,跟蹤寫入過程,把新的內存區的數據標識為臟數據,并將其加入到臟數據鏈表中。監控污染的傳播相當重要,否則會發生漏報。本模塊主要監控內存拷貝函數(如memcpy),這也是污染傳播的主要途徑。其實,還有一些函數也會起到污染傳播的作用,例如把某個內存內容轉化為數值的函數(如atoi)、大小端轉化函數(如htonl、htons),還有一些加密、解密、壓縮、解壓縮的函數等;并且許多內存拷貝函數是inline或者靜態鏈接在文件中的,在原型系統BotScout中暫不考慮這些函數,這也是下一步重點工作之一。
(3)網絡行為監控模塊。如何有效地分離控制流和行為流是這個模塊的一個難點。僵尸程序啟動后自動與C&C信道建立連接,因此標記起始建立的網絡連接為控制流,并在整個進程檢測周期中對相同協議的網絡連接進行統計,分析其穩定性;僵尸主機本質上是控制流驅動行為流,因此如果一個新的網絡連接建立過程中地址綁定參數使用了控制流接收到的數據,則標記這個新連接為行為流,并對內容進行分析,檢查是否符合DDoS、Spam、Scan等惡意行為特征。
3.1 測試環境
由于僵尸網絡范圍非常廣,在實際應用中將整個僵尸網絡中的所有節點檢測、追蹤出來是不可能的,所以僵尸網絡檢測一般是檢測出網絡中的部分節點。本文的試驗和檢測環境為安裝有檢測系統的局域網,檢測對象為局域網內部的主機節點。
BotScout運行在單臺終端系統上,系統測試拓撲如圖2所示。測試主機通過交換機連接在一起,經過邊界路由、防火墻與互聯網通信,所有流量控制在此測試環境內,不會對其他主機產生影響。
共有6臺測試機,分別對應6個樣本,每臺運行120 min。這6臺測試機的運行環境為Windows XP SP3,配置為2CPU Intel(R) Core(R) 2.0 GHz、2 GB內存,100 MB網卡。
3.2 測試結果
本實驗選擇了兩類樣本程序:(1)僵尸程序樣本。實驗選擇了SDBot、AgoBot和SpamThru三種不同控制協議的僵尸程序;(2)正常網絡應用程序樣本。實驗選擇了經典的IRC聊天工具mIRC,熱門的網頁瀏覽器Internet Explorer和流行的P2P下載軟件eMule。對實驗數據進行橫向測試,結果如表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.