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

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

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

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

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