《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計應(yīng)用 > 一種混合式僵尸主機檢測算法的設(shè)計與實現(xiàn)
一種混合式僵尸主機檢測算法的設(shè)計與實現(xiàn)
來源:微型機與應(yīng)用2010年第16期
周振吉,,吳禮發(fā),,梁其川,李華波
(解放軍理工大學(xué) 指揮自動化學(xué)院,,江蘇 南京210007)
摘要: 為了進一步提高檢測的精確性,,在研究僵尸主機的行為特點以及僵尸網(wǎng)絡(luò)命令與控制信道的特性后,提出了一種基于終端系統(tǒng)行為和網(wǎng)絡(luò)行為的混合式僵尸主機檢測算法,,并對現(xiàn)有的僵尸網(wǎng)絡(luò)行為穩(wěn)定性衡量方法進行了改進,。在此基礎(chǔ)上,設(shè)計實現(xiàn)了一個僵尸主機檢測原型系統(tǒng)——BotScout,。評估結(jié)果表明了算法的有效性,。
Abstract:
Key words :

摘  要: 為了進一步提高檢測的精確性,在研究僵尸主機的行為特點以及僵尸網(wǎng)絡(luò)命令與控制信道的特性后,,提出了一種基于終端系統(tǒng)行為網(wǎng)絡(luò)行為的混合式僵尸主機檢測算法,,并對現(xiàn)有的僵尸網(wǎng)絡(luò)行為穩(wěn)定性衡量方法進行了改進。在此基礎(chǔ)上,,設(shè)計實現(xiàn)了一個僵尸主機檢測原型系統(tǒng)——BotScout,。評估結(jié)果表明了算法的有效性。
關(guān)鍵詞: 系統(tǒng)行為,;網(wǎng)絡(luò)行為,;僵尸網(wǎng)絡(luò);僵尸主機

    近年來,,僵尸網(wǎng)絡(luò)已經(jīng)成為互聯(lián)網(wǎng)穩(wěn)定和安全的最大威脅,,國內(nèi)外安全界對此給予了高度關(guān)注。僵尸網(wǎng)絡(luò)(Botnet)是僵尸主人(BotMaster)通過命令與控制信道(C&C)控制的具有協(xié)同性的惡意計算機群,,其中被控制的計算機稱為僵尸主機(Zombie),僵尸主人用來控制僵尸主機的計算機程序稱為僵尸程序(Bot),。通過這個計算機群,,僵尸主人可以實現(xiàn)覆蓋面更廣、強度更高,、更難被檢測的惡意行為,,例如分布式拒絕攻擊(DDoS)、發(fā)送垃圾郵件(Spam),、竊取敏感信息等,。
    僵尸網(wǎng)絡(luò)具有以下3個主要特性[1]:(1)“惡意性”,,即僵尸主機主要開展DDoS、Spam,、下載延伸其他惡意代碼等一系列惡意行為,;(2)“可控性”,,即僵尸主機通過C&C信道接收僵尸主人的命令后執(zhí)行相應(yīng)的惡意行為,;(3)“協(xié)同性”,,即同一個僵尸網(wǎng)絡(luò)中的僵尸主機聯(lián)合同步執(zhí)行僵尸主人的命令,。
    目前,,針對最早出現(xiàn)的IRC僵尸網(wǎng)絡(luò)的檢測技術(shù)取得了比較理想的效果[2],。但是近幾年來,,P2P和HTTP類型的僵尸網(wǎng)絡(luò)日益盛行,,而P2P協(xié)議多樣性和HTTP協(xié)議普及性的特點,,使得傳統(tǒng)的僵尸網(wǎng)絡(luò)檢測技術(shù)面臨巨大的挑戰(zhàn),。本文從終端層面出發(fā),,提出了一種基于主機系統(tǒng)行為和網(wǎng)絡(luò)行為的混合式檢測算法,,該算法可以有效檢測出IRC,、P2P和HTTP類型的僵尸主機,。
1 相關(guān)研究
    目前,,大多數(shù)僵尸網(wǎng)絡(luò)檢測技術(shù)主要是從僵尸網(wǎng)絡(luò)的網(wǎng)絡(luò)流量特性入手,。
    GU G等人[1,,3]提出了基于網(wǎng)絡(luò)特征的僵尸網(wǎng)絡(luò)檢測方法,實現(xiàn)了原型系統(tǒng)BotSniffer和BotMiner,。將被監(jiān)視的網(wǎng)絡(luò)內(nèi)部每臺主機的通信行為和網(wǎng)絡(luò)惡意活動進行分類,,找出具有相似或相關(guān)通信和網(wǎng)絡(luò)惡意行為的主機,。如果被監(jiān)控的內(nèi)部網(wǎng)絡(luò)有較多的主機而其中只有少數(shù)幾臺(即使一臺)感染了僵尸程序,,這種方法就失去了檢測的意義,。
    KANG J等人[4]提出了一種多圖累加和(Multi-chart CUSUM)檢測P2P僵尸網(wǎng)絡(luò)的方法,。認為主機產(chǎn)生的網(wǎng)絡(luò)流量是一個復(fù)雜的隨機模型,,發(fā)生任何異常都會給這個模型帶來明顯的變化,。而一臺主機被感染P2P僵尸程序后,,會表現(xiàn)出明顯的異常網(wǎng)絡(luò)流,。作者用多圖累加和模型描述網(wǎng)絡(luò)異常,并采用動態(tài)閾值自適應(yīng)技術(shù)提高檢測的精確性,。
    NOH S等人[5]提出了一種使用多定相流模型(Multi-Phased Flow Model)檢測P2P僵尸網(wǎng)絡(luò)的方法,,對P2P僵尸程序與其他節(jié)點通信的多種流量特征進行了分析,然后用相似度進行判斷和檢測,。該方法充分利用了P2P僵尸網(wǎng)絡(luò)的網(wǎng)絡(luò)流異常實施檢測,,但是對其他類型僵尸網(wǎng)絡(luò)檢測效果不好,專用性太強,。
    WANG B等人[6]利用P2P僵尸網(wǎng)絡(luò)控制流的穩(wěn)定性對僵尸主機進行檢測,。他們從P2P僵尸網(wǎng)絡(luò)的控制流中選取一個變量,該變量在整個時間段的值都穩(wěn)定在某一個水平,,而且上下波動的幅度不大。這種方法的誤報率和漏報率比較高,。
    除了僵尸網(wǎng)絡(luò)的網(wǎng)絡(luò)行為特性外,LIU L等人[7]從僵尸程序執(zhí)行特征出發(fā),,提出了一個檢測原型系統(tǒng)BotTracer,。由于沒有考慮僵尸程序的網(wǎng)絡(luò)控制流特性,誤報率比較大,。而HOLZ T等人[8]采用蜜網(wǎng)蜜罐技術(shù),,但是這類方法依賴于蜜網(wǎng)和蜜罐的分布,,無法有效地檢測出全部活躍的僵尸網(wǎng)絡(luò),。
2 算法設(shè)計
    通過分析大量僵尸程序樣本與綜合現(xiàn)有文獻[9-11]得知:僵尸程序在系統(tǒng)行為和網(wǎng)絡(luò)行為方面與正常程序都有比較明顯的區(qū)別,,而這些區(qū)別可以作為僵尸程序檢測的依據(jù)。
    僵尸程序為了自啟動和執(zhí)行惡意行為(包括鍵盤記錄,、密碼盜取,、網(wǎng)絡(luò)嗅探、私密后門安裝,、間諜軟件和rootkit等),必須調(diào)用特定的系統(tǒng)函數(shù),。例如網(wǎng)絡(luò)下載命令會從終端向外發(fā)起連接,,向目標(biāo)請求數(shù)據(jù),,并且在本地終端上面創(chuàng)建新文件,。所有這些動作(網(wǎng)絡(luò)連接,、發(fā)送,、接收、文件創(chuàng)建)都通過調(diào)用系統(tǒng)函數(shù)來實現(xiàn),,而諸如下載地址這樣的控制信息是從網(wǎng)絡(luò)中接收到的,。正常的網(wǎng)絡(luò)應(yīng)用程序雖然也接收網(wǎng)絡(luò)數(shù)據(jù),但是一般不會從接收到的數(shù)據(jù)中提取參數(shù)來調(diào)用這些特殊的系統(tǒng)函數(shù)[12-13],。因此通過監(jiān)控特定函數(shù)調(diào)用的參數(shù)來源,,就可以判定出僵尸主機在終端系統(tǒng)上的惡意行為,。
    僵尸主機的網(wǎng)絡(luò)流量按照用途可以分成兩類:(1)行為流,指與僵尸主機惡意網(wǎng)絡(luò)行為相關(guān)的流量(如DDoS,、Spam,、掃描(Scan)等產(chǎn)生的流量),;(2)控制流,,指與獲得僵尸主人命令、維持C&C信道等相關(guān)的流量,。通過研究發(fā)現(xiàn),與C&C信道建立連接后,,僵尸主機為了保持連接的活躍,一般會周期性地發(fā)送特定的報文,,這中間沒有用戶的干預(yù),,因而控制流表現(xiàn)出一定的穩(wěn)定性,而正常的網(wǎng)絡(luò)應(yīng)用程序運行時,,由于存在用戶干預(yù),,一般不會表現(xiàn)出這樣的穩(wěn)定性,因此控制流的穩(wěn)定性可以作為僵尸網(wǎng)絡(luò)的一個重要判斷依據(jù),。
    本文在綜合考慮僵尸主機的系統(tǒng)行為和網(wǎng)絡(luò)行為的基礎(chǔ)上,提出了一種混合式僵尸主機檢測算法,。僵尸主機檢測算法監(jiān)控有網(wǎng)絡(luò)通信行為的進程,,并判斷其是否為僵尸進程,,只要存在僵尸進程,,則該終端為僵尸主機。僵尸進程檢測算法主要結(jié)合程序自啟動,、控制流的穩(wěn)定性,、系統(tǒng)惡意行為和網(wǎng)絡(luò)惡意行為4個指標(biāo)來判定。僵尸進程檢測算法如下所示:
    輸入:有網(wǎng)絡(luò)通信行為的進程
    輸出:是否為僵尸進程
    過程:
    if系統(tǒng)惡意行為||網(wǎng)絡(luò)惡意行為
        if自啟動&&控制流穩(wěn)定
            報警,;
            exit,;
        else
            可能是下載者、木馬等其他惡意代碼,;
        end if
    else
        什么都不做,;
    end if
2.1 系統(tǒng)行為監(jiān)控算法設(shè)計
    根據(jù)上面的分析,本節(jié)給出系統(tǒng)行為監(jiān)控算法,,算法中BotBehavior變量記錄惡意行為數(shù),,X0是根據(jù)實踐預(yù)定義的閾值。惡意行為累計達到一定的閾值時,,則標(biāo)記為系統(tǒng)惡意特征,。系統(tǒng)行為監(jiān)控算法如下所示:
    輸入:Windows操作系統(tǒng)某一進程和該進程接收到的網(wǎng)絡(luò)數(shù)據(jù)
    輸出:報警信息(也可無報警)
    過程:
    BotBehavior=0;    //初始化時,,僵尸行為數(shù)為0,;
    SelectAPI 1=AutoAPISet;//APISet是一些自啟動行為必須調(diào)用的系統(tǒng)函數(shù)
    SelectAPI 2=MalAPISet,;//APISet是一些惡意行為必須調(diào)用的系統(tǒng)函數(shù)
    X=X0,;            //給判定閾值賦初值
    while進程為終結(jié)
        捕獲該進程的系統(tǒng)調(diào)用call;
        if call 屬于SelectAPI1
            報警自啟動
        else if call 屬于SelectAPI2
            if call 的參數(shù)是接收自網(wǎng)絡(luò)的數(shù)據(jù)
                BotBehavior ++,;
            end if
        end if
        if BotBehavior>=X
            報警系統(tǒng)惡意行為,;
            exit;
        end if
    end while
2.2 網(wǎng)絡(luò)行為監(jiān)控算法設(shè)計
    控制流的穩(wěn)定性是判定僵尸網(wǎng)絡(luò)的一個重要依據(jù),?;趨⒖嘉墨I[6]中提出的穩(wěn)定性思想,,本節(jié)設(shè)計了一個改進的流量穩(wěn)定性衡量方法。

2.2.2 穩(wěn)定性檢測算法

   
3 算法評估
    以提出的混合式僵尸主機檢測算法為基礎(chǔ),,設(shè)計并實現(xiàn)了一個檢測原型系統(tǒng)——BotScout,。BotScout運行在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ù)對監(jiān)控模塊的調(diào)用基于Microsoft Detours 2.1 Express設(shè)計,,根據(jù)監(jiān)控的功能,系統(tǒng)把攔截的Win32API函數(shù)分為系統(tǒng)行為函數(shù),、污染傳播函數(shù)和網(wǎng)絡(luò)行為函數(shù)三大類,。
    (1)系統(tǒng)行為監(jiān)控模塊。僵尸程序經(jīng)常把自己注入到其他進程中以躲避殺毒軟件和防火墻的攔截,,因此如果某個進程注入代碼到其他的進程,,則監(jiān)控被注入進程的行為。僵尸程序為了實現(xiàn)自啟動必須修改特定的注冊表項或者一些特定文件,,而竊取系統(tǒng)的敏感信息也是通過訪問特定的文件,、注冊表、鍵盤消息實現(xiàn),,監(jiān)控這些函數(shù)的調(diào)用就可以發(fā)現(xiàn)此類惡意行為,。
    (2)污染傳播監(jiān)控模塊。為檢測僵尸程序“可控性”,,算法對接收到的網(wǎng)絡(luò)數(shù)據(jù)進行監(jiān)控,。網(wǎng)絡(luò)數(shù)據(jù)監(jiān)控發(fā)生在網(wǎng)絡(luò)接收時,這些接收到的數(shù)據(jù)稱為臟數(shù)據(jù),,算法持續(xù)跟蹤臟數(shù)據(jù):當(dāng)臟數(shù)據(jù)寫入新的內(nèi)存空間時,,跟蹤寫入過程,把新的內(nèi)存區(qū)的數(shù)據(jù)標(biāo)識為臟數(shù)據(jù),,并將其加入到臟數(shù)據(jù)鏈表中,。監(jiān)控污染的傳播相當(dāng)重要,否則會發(fā)生漏報,。本模塊主要監(jiān)控內(nèi)存拷貝函數(shù)(如memcpy),,這也是污染傳播的主要途徑。其實,,還有一些函數(shù)也會起到污染傳播的作用,,例如把某個內(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ù),,這也是下一步重點工作之一,。
    (3)網(wǎng)絡(luò)行為監(jiān)控模塊。如何有效地分離控制流和行為流是這個模塊的一個難點,。僵尸程序啟動后自動與C&C信道建立連接,,因此標(biāo)記起始建立的網(wǎng)絡(luò)連接為控制流,并在整個進程檢測周期中對相同協(xié)議的網(wǎng)絡(luò)連接進行統(tǒng)計,,分析其穩(wěn)定性,;僵尸主機本質(zhì)上是控制流驅(qū)動行為流,因此如果一個新的網(wǎng)絡(luò)連接建立過程中地址綁定參數(shù)使用了控制流接收到的數(shù)據(jù),,則標(biāo)記這個新連接為行為流,,并對內(nèi)容進行分析,檢查是否符合DDoS,、Spam,、Scan等惡意行為特征,。
3.1 測試環(huán)境
    由于僵尸網(wǎng)絡(luò)范圍非常廣,,在實際應(yīng)用中將整個僵尸網(wǎng)絡(luò)中的所有節(jié)點檢測、追蹤出來是不可能的,,所以僵尸網(wǎng)絡(luò)檢測一般是檢測出網(wǎng)絡(luò)中的部分節(jié)點,。本文的試驗和檢測環(huán)境為安裝有檢測系統(tǒng)的局域網(wǎng),檢測對象為局域網(wǎng)內(nèi)部的主機節(jié)點,。
    BotScout運行在單臺終端系統(tǒng)上,,系統(tǒng)測試拓撲如圖2所示。測試主機通過交換機連接在一起,,經(jīng)過邊界路由,、防火墻與互聯(lián)網(wǎng)通信,所有流量控制在此測試環(huán)境內(nèi),,不會對其他主機產(chǎn)生影響,。

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

    在充分研究僵尸主機的行為特點以及僵尸網(wǎng)絡(luò)命令與控制信道的特性后,,提出了一種綜合系統(tǒng)行為與網(wǎng)絡(luò)行為的混合式僵尸主機檢測算法,,并對現(xiàn)有的僵尸網(wǎng)絡(luò)行為穩(wěn)定性衡量方法進行了改進?;谠撍惴ㄔO(shè)計實現(xiàn)了一個僵尸主機檢測原型系統(tǒng)BotScout,,并對這個系統(tǒng)的性能進行了測試。實驗結(jié)果驗證了算法的可行性,、有效性和準(zhǔ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ò)檢測[J].計算機學(xué)報,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.

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。