王勁松,劉帆,張健
(1.天津理工大學 計算機視覺與系統省部共建教育部重點實驗室,天津 300191;2.天津理工大學 智能計算及軟件新技術天津市重點實驗室,天津 300191; 3.國家計算機病毒應急處理中心,天津 300457)
隨著互聯網的普及,安全問題變得越來越嚴重。據CNCERT/CC2008年度上半年報告[1]顯示:在境內外控制者利用木馬控制端對主機進行控制的事件中,木馬控制端IP地址總數為280 068個,被控制端IP地址總數為1 485 868個,我國大陸地區302 526個IP地址的主機被植入木馬。
針對這一現狀,學術界已進行了很多相關研究并先后提出了很多方法來嘗試解決這一問題。近年來,基于P2P模型的僵尸網絡逐漸發展壯大起來,因此對P2P模型僵尸網絡的研究也成為了網絡安全領域的熱點話題[2,3],目前國內外的僵尸網絡檢測技術可以分為如下3類[4]。
1) 基于蜜罐的檢測方法。蜜罐技術通過模擬真實主機來誘騙攻擊者,從而捕獲僵尸程序樣本,然后通過逆向工程等手段獲取并分析隱藏在代碼中的僵尸網絡相關信息。文獻[5]介紹了諸葛建偉等人設計開發的一種基于高交互式蜜罐技術的惡意代碼自動捕獲器——HoneyBow,它能夠高效地對互聯網上實際傳播的惡意代碼和網絡攻擊進行自動捕獲,并提交到集中的樣本服務器上。以該系統研究成果為基礎,CNCERT/CC在全國15個省市自治區部署了一個名為Matrix的分布式蜜網試驗系統[6],用于捕獲惡意代碼和跟蹤僵尸網絡。蜜罐技術可以檢測未知類型的僵尸程序,但是部署成本較高,而且對于已經停止傳播的僵尸網絡無法檢測[7]。
此外,蜜罐系統還必須能夠較好地偽裝自己以不被攻擊者識破,文獻[8]重點研究了這一問題。
2) 基于網絡異常的檢測方法。此類方法著眼于僵尸網絡中的受控主機(僵尸)在接受來自控制端的命令、發起攻擊或進行掃描以求擴散惡意代碼等的行為與其他正常網絡應用的不同,但由于忽略數據流的具體內容而造成誤報漏報率較高,而且有可能局限于特定結構的僵尸網絡,不能實時檢測。
Guofei Gu等人在文獻[9]中設計并實現了通過對網絡流量進行聚類分析從而達到與協議和結構無關的僵尸網絡檢測器 BotMinner,但是這種檢測方法的準確度不夠理想,誤報、漏報率較高,檢測速度也無法達到實時在線檢測的要求。
Chet Langin等人提出一種基于自組映射(SOM)的惡意流量檢測方法[10]:將邊緣防火墻的日志記錄作為向量輸入到自組映射中,經過運算之后得出結果,可以識別未知僵尸通信,其缺點是依賴于邊緣網絡的防火墻,生成的報告也有明顯的延遲。
3) 基于流分類技術的檢測方法。與基于網絡異常的檢測方法不同,基于流分類技術的僵尸網絡監測方法主要根據數據流的特點將其區分為各種網絡應用,包括正常的和異常的。該類方法大多誤報漏報率較低,其難點在于找到合適的依據對網絡數據流進行分類。
Sang-Kyun Noh等人介紹了一種可用于檢測P2P僵尸網絡的多階段流模型[11],這一頗具新意的方法將網絡流作為輸入對象,克服了對邊緣網絡的依賴性,但使用了馬爾科夫鏈等復雜模型,對網絡數據流量處理能力有限,并且誤報率較高。
Tao Wang等人采用流聚合[12]的思想,利用僵尸主機間通信的相似性和同步性特點來實時在線檢測僵尸主機,可以檢測出未知類型的僵尸流量,但是這一模型需要白名單的支持,在系統白名單尚不健全時,誤報率會比較高。
相比之下,使用特征串過濾器對數據分組進行過濾的僵尸網絡檢測方法的優點是準確性高、健壯性好、具有分類功能等[13],并且可以檢測已經停止傳播的僵尸程序。使用特征碼過濾器的方法檢測僵尸網絡是從網絡通信流量分析的角度,通過在網絡拓撲中的關鍵節點部署數據分組監聽軟件或設備,按照預定義的特征碼對捕獲到的數據分組進行匹配,一旦匹配成功則說明網絡上某對IP地址主機之間存在著被檢測的網絡應用,如僵尸程序。這一方法的缺點是對數據分組過濾系統的性能要求較高,并且傳統的分組過濾系統的特征碼一般都是基于單一數據分組的,當某種僵尸程序的數據分組特征過于短小或不夠明顯時,如果仍然使用單分組特征碼進行過濾,可能單位時間內會匹配大量的正常網絡應用的數據分組,這無疑大大降低了檢測結果的準確性。
針對這一問題,本文提出了一種基于組特征過濾器的僵尸網絡檢測方法,可以有效地應對特征碼的非單分組分布,準確找出使用了待檢測網絡應用的IP主機,并且用實驗證明該方法也可以對已經停止傳播的僵尸網絡進行準確檢測,算法空間復雜度為O(tmn)。表1對上述幾種類型的僵尸網絡檢測方法做了簡單對比。

表1 幾種僵尸網絡檢測方法對比
僵尸網絡客戶端為了使自己不被用戶和反病毒軟件發現,一般都要將自己隱藏起來,這里所提到的隱藏包括2方面內容:一方面是對文件系統的隱藏,僵尸客戶端大多通過進程注入、修改自身的非關鍵代碼等方式來實現,這種隱藏可以逃避反病毒軟件的檢測。另一方面是對網絡的隱藏,由于僵尸客戶端都需要與位于互聯網上的僵尸控制端進行網絡通信,因此僵尸客戶端大多通過端口重用、反彈連接等方法來逃避防火墻的攔截。無論何種隱藏,由于對于僵尸主機來說網絡通信總是必要的,所以可以通過分析其數據分組的特征字串來實現從網絡上對僵尸網絡的檢測。這種方法的依據是:僵尸客戶端可以接受多種不同的命令從而采取相應的動作,所以其數據分組特征是客觀存在的,一旦網絡上出現一個與預定義特征串相匹配的數據分組,則可以認定該數據分組所指出的一對IP主機屬于某個僵尸網絡。
通過研究發現一些僵尸客戶端開始從數據分組層隱藏自己,具體表現為特征串簡短化,并分散于多個數據分組中。在這種情況下如果仍然使用單分組特征串進行過濾,由于特征串長度過短而造成的可區分度大幅下降,造成短時間內有大量數據分組發生匹配,而這些數據分組大多是正常的網絡應用所產生的,從而使得過濾結果沒有實際意義,也喪失了基于數據分組過濾的僵尸主機檢測方法原本的精確性。
為了解決在僵尸數據分組特征簡短化和多分組分布的情況下數據分組過濾精確度大幅降低的問題,本文提出了一種新的基于組特征過濾器的檢測方法。
定義 1 設集合 S={s1,s2,…,sn,a} ,n ∈N+,a∈N+,1≤a≤n,若si與sj(1≤i,j≤n)是2個不同的數據分組過濾特征串,a是一固定常數,那么集合S稱為組特征過濾器,si或sj稱為組特征過濾器S的成員特征,正整數n稱為組特征過濾器S的維度,a稱為組特征過濾器S的警戒值。
當使用維度為n的組特征過濾器S對一個數據分組進行過濾匹配時,等價于使用 si(si∈ S ,1≤i≤n)對該數據分組逐一進行過濾匹配,并將匹配結果寫入S所對應的位向量表中。
定義2 有m個n維向量構成的集合V={v1,v2,…,vm},m∈N+,若對于任意vi=(vi1,vi2,…,vin)(vi∈V,1≤i≤m,i∈N+)的每一個分量vij(1≤j≤n)的值都滿足vij∈{0,1},即向量vi是位向量,那么集合V稱為位向量表。
實際使用時,位向量表將與組特征過濾器協同工作,位向量表中的一個向量對應一個IP地址,用于保存一個組特征過濾器的數據分組匹配結果。當有多于一個的組特征過濾器工作時,就需要多個位向量表分別與之對應。
定義3 當確定某對IP主機之間存在僵尸通信,則新增一個過濾器 s′={IPs,I Pd,TC,TH}用于過濾該對IP主機之間的通信數據,其中IPs表示源IP地址,IPd表示目的IP地址,TC表示s′的生成時間,TH表示s′的最后一次匹配時間,s′稱為動態過濾器。
當數據分組與一個組特征過濾器的發生匹配(即與一個成員特征發生匹配)時,應當將匹配結果保存起來。保存發生匹配的數據分組的所有內容顯然是不現實的,而如果只保存數據分組的源 IP地址和目的IP地址將節省很大的空間。事實上,網絡管理員由于自身管理權限有限,往往難以對來自外網的主機施加干預,而對內網主機擁有較高的管理權限。因此在沒有斷定某臺主機上運行了僵尸客戶端之前只需記錄數據分組的內網IP地址,當匹配了多次并足以斷言一對 IP地址的主機在進行僵尸通信時再同時保存源IP地址和目的IP地址,甚至數據分組全文。組特征過濾器系統工作流程。

1) 建立內網IP地址與位向量表中位向量的映射關系。例如,對于一個B類子網,使用以下散列函數建立映射關系:式(1)中,IP_Addr表示內網中任意一個IP地址,Byte1表示一個IP地址從低位到高位的第一字節,同理Byte2表示第二字節,函數MAKEWORD將 2個單字節數拼湊成為1個雙字節數。內網中一個IP地址的散列結果HashIndex就是這個地址所對應的位向量表中位向量的序號。
2) 若個數據分組Pck與維度為n,警戒值為a的組特征過濾器S發生匹配,且相匹配的成員特征是si,則找到數據分組Pck的內網端IP地址,并將IP地址帶入式(1)中得到散列值HashIndex,根據HashIndex的值將位向量表V中的位向量vHashIndex的第i個分量置為1,然后計算。
4) 顯然,s′應在S之前嘗試與數據分組進行匹配。當存在多個動態過濾器時,這一點仍然適用。一旦數據分組與任何一個過濾器發生匹配,則應立即停止與后續過濾器的嘗試匹配步驟。
若同時存在t個組特征過濾器 S1,S2,…,St(t > 1,t ∈ N+),則應同時具備相同個數的位向量表 V1,V2,…,Vt(t > 1,t ∈ N+)與之分別對應。
設動態過濾器s′={IPs,I Pd,TC,TH}是由組特征過濾器S生成的,S所對應的位向量表是V,假設IPs是內網IP地址,由式(1)得出的IPs散列值為Hs',則S的匹配信息保存于位向量vHs'中。指定時間差閾值Tt,如果一個數據分組 Pck與s′發生匹配,則首先置TH為系統當前時間,并判斷TH-TC≤Tt是否成立,若成立,則將Pck保存,若不成立,則Pck不必保存,同時應刪除s′,并將位向量vHs'置為零向量。這樣做的目的在于避免當IPs與IPd之間的僵尸通信已經結束時,過濾系統仍然保存過多的無用數據分組。為了更好地達到這一目的,可以指定匹配次數閾值Ht,當s′匹配了足夠多次后就將其刪除,并將位向量vHs'置為零向量。當過濾系統只為能識別內網某IP進行了僵尸通信,而不必還原其通信數據時,這一設置將節省出一定的內存空間。
組特征過濾器系統模型如圖1所示。

圖1 組特征過濾器系統模型
由上述的過濾步驟不難看出,基于組特征過濾器的過濾算法與傳統的單分組特征過濾算法相比,增加了位向量表用于保存每個組特征過濾器的匹配結果信息。設式(1)的值域中共有m(m ≥1,m ∈N+)個 可 能 的 值 , 與 維 度 為n(n ≥1,n ∈N+)的組特征向量過濾器Si所對應的位向量表是Vi,則有 Vi={vi1,vi2,…,vim},其中,對于每個 vik(1≤k≤m,k ∈ N+),都滿足dim(vik)=n。因此,由Si所引入的空間復雜度為O(mn),若在系統中同時存在t個組特征過濾器,相應的空間復雜度增加到O(tmn)。
實際上,因為計算機最小處理單位為字節(byte),1 byte=8 bit,所以可以用1 byte的空間來存儲一個8維位向量,并且使每個位向量的維度是8的整數倍,即滿足dim(vik)=8×n/8。于是對于一個B類IP地址網段,與維度為 n(n ≥1,n ∈N+)的組特征向量過濾器Si對應的位向量表Vi所需的存儲空間約為
MSi=65535×8×n/8bit=65535×n/8byte
一般情況下,維度n≤8時已能滿足大多數需求,因此根據上式可知Vi所需存儲空間約為65 535byte,即 64kbyte。若在系統中同時存在t個組特征過濾器,相應的所需空間64 t kbyte。
顯然,在基于組特征過濾器的僵尸網絡檢測系統中,傳統的單分組匹配算法仍然適用,所以不會改變過濾系統的時間復雜度。
基于組特征過濾器的僵尸主機檢測算法將檢測對象由傳統的數據分組間接轉換為IP地址對,并且可以將一個傳統的單分組過濾器轉換為組特征過濾器,但這一轉換往往是不可逆的。如果一個組特征過濾器S只有一個成員特征si,那么S等價于si所表示的單分組過濾器。
灰鴿子是國內一款“著名”遠程控制軟件,也是黑客們常用的后門軟件,其主要功能有遠程文件傳輸、執行,文件目錄、進程列表的獲取,截獲屏幕等。RAdmin也是一款常見的遠程控制型僵尸軟件,其功能與灰鴿子基本相似,但影響范圍和破壞力都略遜色于灰鴿子。通過研究發現,灰鴿子的通信流量可以通過單分組特征串來識別,而 RAdmin的通信數據分組單分組特征極不明顯,且極易與正常流量相混淆,但是其數據分組之間存在明顯的聯系,因此可以使用組特征過濾器的方法來識別RAdmin的通信流量。
為驗證方法的有效性,搭建了如圖2所示的實驗環境。

圖2 實驗環境
在IP為202.113.76.97的主機A上同時安裝了灰鴿子控制端程序和RAdmin控制端程序,在IP為202.113.76.119的主機B上安裝了灰鴿子受控端程序,在 IP為 202.113.76.115的主機 C上安裝了RAdmin受控端程序,另有正常主機D~F。實驗中主機B~F同時進行不間斷的局域網文件傳輸,用以模擬正常流量。
按照上述特征串,針對灰鴿子建立了有1個成員特征的組特征過濾器并設置過濾器警戒值為 1;對于RAdmin建立了有8個成員的組特征過濾器,并設置過濾器警戒值為5。


指定B~F為內網主機,A為外網主機。實驗開始后,先后在主機A上發現主機B和C都成功連接到了相應的控制端程序上,此時開啟研發的數據分組檢測工具BotCapD,之后利用安裝在A上的灰鴿子控制端和RAdmin控制端分別給B、C主機發送一些控制命令,如傳輸、執行文件,監視屏幕等。灰鴿子控制端發送完一次控制命令后,BotCapD已經檢測出網絡中 2個主機之間存在疑似灰鴿子流量;RAdmin控制端在發送完兩次命令后也被成功檢測。檢測結果如圖3、圖4所示。

圖3 Radmin組特征過濾器各成員特征匹配次數

圖4 BotCapD對灰鴿子和RAdmin主機通信的檢測結果
從圖3中可以看出,在RAdmin的組特征的各個成員特征中 s1的匹配次數明顯高于其他各成員,這是由于實驗過程用于模擬正常流量的局域網文件傳輸數據分組大量與 s1發生匹配,但同時存在其他7個成員特征將s1的匹配失誤所產生的負面影響減至最低。事實上,s2~s8也有可能存在匹配失誤,但是考慮到只有 RAdmin的流量數據分組完整具有s1~s8全部特征,因此與它們匹配的主機對的集合的交集就是進行 RAdmin通信的一對主機。由于警戒值設置為5,所以上述實驗中取了5個成員特征匹配集合的交集實現了對RAdmin通信流量的檢測。如果從系統效率的角度考慮,s1匹配失誤過多使得效率降低,應找到更適合的特征串替換s1。
實驗證明,使用組特征過濾的方法時,可以通過只設置一個成員特征來實現單分組特征過濾;也可以設置一組成員特征來實現組過濾,并且在不需要設計開發新的模式匹配算法的前提之下實現了對僵尸主機間的通信數據的識別,進而檢測出僵尸主機,同時,檢測系統的內存占用和 CPU占用都在可接受范圍內。
通過大量實驗分析各種遠程控制型僵尸通信時所用的內部協議,包括上興遠控(又名PCShare)、Boer、寧瑞、小熊遠控(又名 Bear)、冰河等遠程控制型僵尸主機通信找到了它們的通信特征,建立了相應的組特征庫。
為了驗證方法的有效性,在天津教育城域網中部署了 BotCapD,通過流量鏡像對主干網上的部分流量進行僵尸主機檢測,平均流量在 600~800Mbit/s之間。圖5給出了BotCapD連續運行1個月后的檢測結果,圖中連線的匯聚點為疑似僵尸網絡控制端主機。通過IP地址定位查詢,在天津市教育網中找到了該主機,通過使用多種主機安全軟件對該主機進行徹底查毒,查找到并刪除了木馬程序。在刪除木馬程序之后,BotCapD沒有再捕捉到該主機的異常通信流量。實驗證明組特征過濾的方法可以準確地檢測出遠程控制型僵尸程序的通信。

圖5 BotCapD對天津教育城域網的流量檢測
總體來說,由于受軟件開發水平所限,很多僵尸通信數據分組不具備一定的協議格式,但如果將多個交互數據分組視作一組,卻往往能體現出某種特異性。組特征過濾的思想正是利用了這一點。另一方面,一些影響較為廣泛的遠程控制僵尸系統在通信時都嚴格遵循其內部協議,每個數據分組都含有特征串,此時若能將一個特征串單獨視為一組,那么顯然也可以使用這樣一個組特征過濾器來檢測僵尸通信流量。
本文所介紹的基于組特征過濾器的僵尸網絡檢測方法,以增加O(tmn)在特征串較短,且分散于多個數據分組情況下的僵尸通信識別問題。同時,該方法可以實時對網絡流量進行檢測,能夠即時生成檢測報告。此外,檢測系統允許部署在較大規模網絡的主干網上,且不依賴于邊緣網絡設備,對各種網絡協議上的僵尸通信流量都可以準確檢測,并能夠識別出具體的僵尸客戶端。實驗也驗證了該檢測方法的可行性、準確性和高效性。
但是,隨著特征庫的不斷增長,檢測系統的整體性能可能會有所下降,對資源的占用也會逐漸增加,另外,系統對新出現的僵尸通信無法識別,這也是 DPI算法的主要缺陷。因此,如何改進檢測策略以盡量減少檢測系統對資源的占用從而保證檢測效率,如何在發現新的僵尸通信流量后能盡量方便地添加到檢測系統中,將是下一步需要解決的問題。
[1] CNCERT/CC.CNCERT/CC Report of Network Security of First Half of 2008[R].2008.
[2] GRIZZARD J B,SHARMA V,NUNNERY C.Peer-to-peer botnets:overview and case study[A].Proc of the 1st Workshop on Hot Topics in Understanding Botnets(Hot-Bots 2007)[C] Boston,2007.
[3] DONG K K,LIU Y.Detection of peer-to-peer botnets[A].Information Security and Communications Privacy[C].2008.34-36.
[4] LU W,Mahbod tavallaee.botcop: an online botnet traffic classifier[A].Communication Networks and Services Research Conference,2009.CNSR '09[C].Seventh Annual,2009.
[5] ZHUGE J W,HAN X H,et al.Honeybow: an automated malware collection tool based on the high-interaction honeypot principle[J].Journal on Communications,2007,28(12):8-13.
[6] HAN X H,GUO J P.Investigation on the botnets activities[J].Journal on Communications,2007,28(12): 167-172.
[7] XIE K B,CAI W D,CAI J C.Decision tree based detection of botnet flow[A].Information Security and Communications Privacy[C].2008.76-77.
[8] ZOU C C,CUNNINGHAM R.Honeypot-aware advanced botnet construction and maintenance[A].Dependable Systems and Networks,2006.DSN 2006[C].2006,199-208.
[9] GU G F,PERDISCI R,ZHANG J J,et al.BotMiner: clustering analysis of network traffic for protocol and structure- independent botnet detection[A].17th Usenix Security Symposium[C].2008.8-18.
[10] LANGIN C,ZHOU H B,RAHIMI S H.A self-organizing map and its modeling for discovering malignant network traf fi c[A].IEEE Symposium on Computational Intelligence in Cyber Security[C].2009.122-129.
[11] NOH S K,OH J H,LEE J S.Detecting P2P botnets using a multi-phased flow model[A].Third International Conference on Digital Society[C].2009.247-253.
[12] WANG T,YU S Z.Parallel and distributed processing with applications[A].2009 IEEE International Symposium[C].2009.86-93.
[13] JIAN G Y.Research and Implementation of DeeP Packet Inspeetion P2P Flow Based on Heuristic Identification[D].Tianhe District,Guangzhou,Ji'nan University.2008.5.4