国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于覆蓋率分析的僵尸網(wǎng)絡(luò)控制命令發(fā)掘方法

2014-09-18 02:42王志蔡亞運劉露賈春福
通信學(xué)報 2014年1期
關(guān)鍵詞:僵尸命令代碼

王志,蔡亞運,劉露,賈春福

(南開大學(xué) 計算機(jī)與控制工程學(xué)院,天津 300071)

1 引言

僵尸網(wǎng)絡(luò)[1~4]和其他惡意軟件(如蠕蟲)的一個重要不同之處是僵尸網(wǎng)絡(luò)由命令與控制協(xié)議(C&C protocol)驅(qū)動,即僵尸網(wǎng)絡(luò)的控制者(bot master)通過遠(yuǎn)程控制命令與多臺受控主機(jī)(bot)進(jìn)行通信。這種控制機(jī)制使僵尸網(wǎng)絡(luò)具有靈活性、私密性、可控性,使攻擊者能夠以極低的代價獲得強(qiáng)大的分布式計算能力和豐富的信息資源,例如發(fā)動分布式拒絕服務(wù)攻擊[5]、發(fā)送大量的垃圾郵件[6]、分發(fā)間諜程序和廣告程序、竊取僵尸主機(jī)的用戶信息等。僵尸網(wǎng)絡(luò)是當(dāng)前網(wǎng)絡(luò)安全的最大威脅,而且在不斷地演化和變異,并已經(jīng)滲透到移動互聯(lián)網(wǎng)、云計算平臺、甚至工業(yè)控制系統(tǒng)中,如圖1所示,其危害已經(jīng)影響到國家安全,甚至到軍事安全等多個重要領(lǐng)域。

圖1 僵尸網(wǎng)絡(luò)的演化進(jìn)程

對僵尸網(wǎng)絡(luò)的研究可以歸納為5個方面:檢測[7~16]、追蹤[17~23]、測量[24~26]、預(yù)測[27~33]和對抗[34~36],如圖2所示。僵尸網(wǎng)絡(luò)自身也在不斷地進(jìn)行變異,逐漸增強(qiáng)其自我保護(hù)能力[7,16,37]。因此,防治僵尸網(wǎng)絡(luò)的唯一辦法就是連續(xù)不斷地跟蹤僵尸網(wǎng)絡(luò)技術(shù)的新進(jìn)展,探索僵尸網(wǎng)絡(luò)所固有的脆弱性,研究更加高效、準(zhǔn)確、全面的僵尸網(wǎng)絡(luò)分析和防治技術(shù)以應(yīng)對新的網(wǎng)絡(luò)安全威脅。

圖2 僵尸網(wǎng)絡(luò)的研究內(nèi)容

僵尸網(wǎng)絡(luò)的脆弱性之一就是僵尸程序執(zhí)行過程中的路徑信息泄露問題。泄露的路徑信息是僵尸網(wǎng)絡(luò)內(nèi)部命令控制邏輯關(guān)系的二進(jìn)制表示,利用動態(tài)污點分析、符號執(zhí)行、約束求解等技術(shù)可以對這些路徑信息進(jìn)行收集、形式化表示和推理,實現(xiàn)逆向構(gòu)建僵尸網(wǎng)絡(luò)的命令控制模型[19]。但是,二進(jìn)制執(zhí)行軌跡中缺乏高級語言里的類型信息、結(jié)構(gòu)信息等,而且CPU、操作系統(tǒng)等的控制邏輯都混雜在執(zhí)行軌跡的路徑信息中,導(dǎo)致路徑信息的形式化推理過程復(fù)雜、耗時,并受到路徑空間爆炸問題的制約,難以保證路徑空間遍歷的全面性。

與執(zhí)行軌跡泄露的路徑信息一樣,僵尸程序不同的執(zhí)行軌跡對二進(jìn)制代碼塊的覆蓋信息也是易于收集,本文通過挖掘這些覆蓋信息的內(nèi)在規(guī)律,提出了一種二進(jìn)制代碼覆蓋率分析算法,不需要對二進(jìn)制代碼進(jìn)行中間表示與約束求解,在較小的時間開銷和空間開銷下,實現(xiàn)從僵尸程序的執(zhí)行軌跡中快速發(fā)掘僵尸網(wǎng)絡(luò)的控制命令集合。在不考慮ROP[38]和代碼移動[39]的情況下,該方法能夠通過計算有效代碼空間是否被全覆蓋來驗證發(fā)現(xiàn)的僵尸網(wǎng)絡(luò)命令集合是否全面。

2 相關(guān)工作

目前,僵尸網(wǎng)絡(luò)命令與控制協(xié)議的分析方法主要有2類:基于流量的分析和基于二進(jìn)制代碼的分析。

基于流量的分析方法有 CUI等人[40]提出的通過統(tǒng)計網(wǎng)絡(luò)數(shù)據(jù)流中不同協(xié)議字段的出現(xiàn)次數(shù)來推斷協(xié)議結(jié)構(gòu)的方法等。

基于二進(jìn)制代碼的分析利用 IDAPro,W32Dasm等工具對二進(jìn)制代碼進(jìn)行靜態(tài)反匯編,Vigna[41]提出了利用反匯編方法靜態(tài)地提取二進(jìn)制代碼中包含的信息來還原高級語言的語義。CABALLERO等人[42]提出通過對緩沖區(qū)解析自動逆向分析僵尸網(wǎng)絡(luò)通信協(xié)議的方法。CHO等人[23]提出了使用協(xié)議狀態(tài)機(jī)分析僵尸網(wǎng)絡(luò)命令與控制協(xié)議的方法。這些方法主要集中在僵尸網(wǎng)絡(luò)通信協(xié)議的格式上,分析僵尸程序發(fā)送和接收信息的語法格式及每個域的語義。這些方法能夠?qū)崿F(xiàn)協(xié)議字段的自動劃分和具有特殊協(xié)議字段的識別,但是缺乏對控制命令的全面性和完整性的證明。LIM等人[43]提出一種基于系統(tǒng)API調(diào)用和控制依賴圖的提取控制命令的方法。該方法靜態(tài)地從僵尸程序可執(zhí)行文件中提取觸發(fā)API級行為的命令字符串及其和API調(diào)用實參的關(guān)系。該方法可以有效地提取出部分僵尸程序的控制命令,但對系統(tǒng)API調(diào)用有較強(qiáng)的依賴性,且不能處理經(jīng)壓縮的或加密的僵尸程序。王志等人[44]利用惡意代碼的路徑信息泄露問題提出了推理惡意代碼的主機(jī)環(huán)境依賴性的方法,并通過二進(jìn)制代碼插裝技術(shù)削弱了惡意代碼對主機(jī)環(huán)境的感知能力,但是該方法沒有對網(wǎng)絡(luò)環(huán)境的依賴性進(jìn)行分析,不能推理僵尸程序的惡意行為與網(wǎng)絡(luò)輸入數(shù)據(jù)之間的依賴關(guān)系。

3 基于覆蓋率分析的僵尸網(wǎng)絡(luò)控制命令發(fā)掘方法

僵尸程序的路徑空間具有復(fù)雜性,直接進(jìn)行路徑空間的遍歷會遇到路徑空間爆炸問題。本文利用動態(tài)執(zhí)行軌跡對代碼塊的覆蓋率將靜態(tài)的代碼空間與動態(tài)的路徑空間建立了聯(lián)系,提出了一種基于統(tǒng)計特征分析的僵尸網(wǎng)絡(luò)控制命令發(fā)掘方法,利用僵尸程序執(zhí)行軌跡對二進(jìn)制代碼塊的覆蓋信息的內(nèi)在規(guī)律,從有限的執(zhí)行軌跡集合中,實現(xiàn)對僵尸網(wǎng)絡(luò)控制命令空間的快速發(fā)掘?;诟采w率的分析方法減少了對路徑空間遍歷的依賴性,時間和空間開銷較小,更具有實用性。

3.1 執(zhí)行軌跡的基本塊覆蓋

3.1.1 執(zhí)行軌跡與路徑空間

執(zhí)行軌跡是僵尸程序路徑空間中一條路徑的執(zhí)行過程的詳細(xì)記錄,其中記錄了執(zhí)行過程中CPU所執(zhí)行過的每一條指令、指令執(zhí)行前后的 CPU標(biāo)志位狀態(tài)、與指令相關(guān)的寄存器和內(nèi)存等。執(zhí)行軌跡中雖然缺乏高級語言源代碼中的結(jié)構(gòu)信息、類型信息等,但是它詳細(xì)記錄了高級語言中各種算法、數(shù)據(jù)結(jié)構(gòu)、邏輯關(guān)系在 CPU上用二進(jìn)制機(jī)器代碼的具體實現(xiàn)過程,是程序語義的二進(jìn)制表示,其中就包含了程序內(nèi)在的控制邏輯關(guān)系。

執(zhí)行軌跡的獲取通常是使用虛擬機(jī)技術(shù)或二進(jìn)制代碼插裝技術(shù)實現(xiàn),例如基于QEMU[45]虛擬機(jī)的BitBlaze[46]平臺和Intel公司提供的二進(jìn)制代碼插裝工具Pin[47]。目前,CPU的主頻已經(jīng)達(dá)到GHz級別,每秒鐘 CPU執(zhí)行的指令數(shù)量將是千萬級的,因此一條詳細(xì)的程序執(zhí)行軌跡的體積非常龐大。通常,執(zhí)行軌跡的捕獲過程會使用動態(tài)污點傳播技術(shù),只記錄部分指令的執(zhí)行過程,從而減小執(zhí)行軌跡的體積。

執(zhí)行軌跡記錄了程序一條路徑的執(zhí)行過程。程序所有可達(dá)的路徑集合構(gòu)成了這個程序的路徑空間。二進(jìn)制代碼的路徑空間可以用一個二叉樹表示,根節(jié)點就是程序的入口點(entry point),路徑分支是由執(zhí)行軌跡中的 CPU條件跳轉(zhuǎn)指令通過判斷跳轉(zhuǎn)條件是否滿足而產(chǎn)生。執(zhí)行軌跡是路徑空間這棵二叉樹從根節(jié)點到一個葉子節(jié)點的路徑。路徑空間與控制流圖的區(qū)別是路徑空間中沒有循環(huán)結(jié)構(gòu),而控制流圖中有循環(huán)結(jié)構(gòu)。由于程序中有些循環(huán)結(jié)構(gòu)的退出條件的不確定性,導(dǎo)致路徑空間爆炸問題,從而限制了通過遍歷路徑空間實現(xiàn)對程序內(nèi)部控制邏輯關(guān)系的挖掘。對路徑空間遍歷時通常會采用一些啟發(fā)式的方法,例如離線(offline)分析中限制循環(huán)的展開次數(shù),或者在線(online)分析中限制循環(huán)的執(zhí)行時間等。

3.1.2 基本塊(basic block)與代碼空間

基本塊是一段順序執(zhí)行的CPU 指令序列,其中只有一個入口和一個出口。基本塊的第一條指令被執(zhí)行了,后面的指令會順序執(zhí)行,直到最后一條指令,中間沒有控制流的跳轉(zhuǎn)。執(zhí)行軌跡中的CPU指令數(shù)量非常大,在控制邏輯的分析中,一般不以CPU指令為最小單位,而是以基本塊為最小單位,路徑空間中二叉樹的每一個節(jié)點都是一個基本塊。

程序的代碼空間是程序中所有 CPU指令的集合。利用基本塊的定義可以對程序的代碼空間進(jìn)行劃分,進(jìn)而用基本塊的集合表示代碼空間。代碼空間與路徑空間都是程序的一種表示方式,代碼空間是有限的,遍歷代碼空間的開銷較低,而路徑空間由于路徑爆炸問題導(dǎo)致遍歷路徑空間的開銷非常大。本文一個研究內(nèi)容就是在一定的前提條件下,利用遍歷代碼空間模擬對路徑空間的遍歷,實現(xiàn)對僵尸網(wǎng)絡(luò)控制命令集合完整性和全面性的驗證。

3.1.3 執(zhí)行軌跡的基本塊覆蓋

路徑空間是對僵尸程序動態(tài)執(zhí)行過程的描述,而代碼空間是對僵尸程序靜態(tài)代碼分布的描述。本文通過路徑空間的執(zhí)行軌跡對代碼空間的基本塊覆蓋信息,將僵尸程序的路徑空間與代碼空間建立聯(lián)系,如圖3所示。

路徑空間是用二叉樹表示的,描述了程序的動態(tài)執(zhí)行過程,從根節(jié)點到一個葉子節(jié)點的路徑就是一條執(zhí)行軌跡。代碼空間是用有限個基本塊組成的集合表示的,其中不包含執(zhí)行時的先后順序與執(zhí)行次數(shù),只是對代碼所在內(nèi)存空間的一個劃分。

圖3 路徑空間的執(zhí)行軌跡在代碼空間覆蓋的基本塊集合

如果在程序的執(zhí)行過程中,某些基本塊被執(zhí)行,則稱這些被執(zhí)行的基本塊被執(zhí)行軌跡覆蓋。被一條執(zhí)行軌跡覆蓋的基本塊是代碼空間的一個子集?;緣K的覆蓋信息是指被執(zhí)行路徑覆蓋的所有基本塊的執(zhí)行信息,其中包括被覆蓋基本塊的執(zhí)行順序與執(zhí)行次數(shù)。

3.2 基本塊的覆蓋率與覆蓋次數(shù)

基本塊被執(zhí)行軌跡覆蓋的信息包括兩部分:覆蓋率和覆蓋次數(shù)。覆蓋率PBB描述的是一個基本塊被執(zhí)行軌跡覆蓋的頻繁程度N是當(dāng)all前已捕獲的執(zhí)行軌跡的總數(shù), Ncover是覆蓋該基本塊的執(zhí)行軌跡數(shù)量。覆蓋次數(shù)VBB描述的是基本塊在不同執(zhí)行軌跡中被執(zhí)行的頻繁程度,它是一個向量,VT1,VT2,… ,VTn表示基本塊BB在執(zhí)行軌跡T1,T2,…,Tn中被覆蓋的次數(shù)。

根據(jù)基本塊BB在已捕獲的執(zhí)行軌跡中的覆蓋率PBB和覆蓋次數(shù)VBB,可以將基本塊分成5類,如表1所示。

表1 基于覆蓋率和覆蓋次數(shù)的基本塊分類規(guī)則

根據(jù)基本塊是否被所有已捕獲的執(zhí)行軌跡覆蓋,把基本塊分成2類:第一類是被當(dāng)前軌跡都覆蓋到的基本塊,PBB=100%;第二類是只被部分執(zhí)行軌跡覆蓋到的基本塊,PBB<100%。PBB=100%的基本塊根據(jù)其在不同執(zhí)行軌跡中的覆蓋次數(shù)是否具有相似性可以分成2類:類型1和類型2。類型1的基本塊是PBB=100%,且在某2個執(zhí)行軌跡中被執(zhí)行的次數(shù)具有相似性,即;類型2的基本塊是,且基本塊在不同的執(zhí)行軌跡中的執(zhí)行次數(shù)沒有相似性,即的基本塊根據(jù)其是否只被唯一的一條執(zhí)行軌跡覆蓋也可以分成2類:類型3和類型4。類型3的基本塊是PBB<100%,且存在至少2條執(zhí)行軌跡Ti和且 VTj!= 0 ;類型 4的基本塊是且只有唯一的一條執(zhí)行軌跡執(zhí)行了該基本塊,在其他執(zhí)行軌跡中的執(zhí)行次數(shù)都是0。

3.3 覆蓋率分析算法

僵尸程序的執(zhí)行軌跡是其程序語義在 CPU上的二進(jìn)制表示,其中包含了僵尸網(wǎng)絡(luò)的命令控制邏輯。本節(jié)將詳細(xì)介紹如何利用基本塊的覆蓋率分析從僵尸程序的執(zhí)行軌跡中發(fā)掘出其所在僵尸網(wǎng)絡(luò)的控制命令集合。

3.3.1 命令控制邏輯所在基本塊的特征分析

僵尸程序的命令控制邏輯的實現(xiàn)方式主要有循環(huán)結(jié)構(gòu)和分支結(jié)構(gòu)2類,偽代碼如下所示。

基于循環(huán)結(jié)構(gòu)的命令控制邏輯的偽代碼為

While

{If (input==cmd){Trigger related behaviors}cmd=next commanding command set

}

基于if-else分支結(jié)構(gòu)的命令控制邏輯的偽代碼為

if (input==cmd_1)

{trigger related behaviors

}

else if (input== cmd_2)

{

trigger related behaviors

}

else if (input == cmd_n)

{trigger related behaviors

}…

這些命令控制邏輯會分散到幾個不同的基本塊中。僵尸程序的一條執(zhí)行軌跡會覆蓋上百萬個基本塊,即使去掉了操作系統(tǒng)空間、動態(tài)鏈接庫DLL等非來自于僵尸程序所在文件的基本塊后,執(zhí)行軌跡中還會有成千上萬的基本塊。如何從大量的基本塊中發(fā)掘出包含僵尸程序命令控制邏輯的基本塊是一個挑戰(zhàn)。

將僵尸程序基本塊的功能主要分成了3類:預(yù)處理、命令控制邏輯與攻擊行為。預(yù)處理功能主要包括代碼和數(shù)據(jù)的加密解密、接入僵尸網(wǎng)絡(luò)、控制命令的偵聽、Rootkit與注入等自我隱藏功能,多態(tài)、變型等躲避殺毒軟件的功能等;命令控制邏輯就是要挖掘的對象,它負(fù)責(zé)對僵尸網(wǎng)絡(luò)控制命令的解析,并觸發(fā)命令所對應(yīng)的攻擊行為;攻擊行為是指由控制命令所觸發(fā)各種惡意行為,例如,DDoS攻擊、發(fā)送垃圾郵件、盜取用戶數(shù)據(jù)等。

3.3.2 基于循環(huán)結(jié)構(gòu)的命令控制邏輯基本塊的特

征分析

本文分析命令控制邏輯功能的基本塊與其他2種功能的基本塊在執(zhí)行軌跡覆蓋率和覆蓋次數(shù)上的差異,實現(xiàn)對僵尸網(wǎng)絡(luò)控制命令的挖掘。首先,從執(zhí)行軌跡的基本塊覆蓋率上,預(yù)處理功能的基本塊和命令控制邏輯的基本塊在每條執(zhí)行軌跡上都會被執(zhí)行,因此它們的覆蓋率PBB=100%,而攻擊行為的基本塊由于不同命令所觸發(fā)的攻擊行為不同,所以某一攻擊行為的基本塊不會出現(xiàn)在所有的執(zhí)行軌跡中,所以其覆蓋率PBB<100%;其次,從覆蓋次數(shù)上分析,預(yù)處理功能的基本塊在僵尸程序每次運行時的執(zhí)行過程具有相似性,因此在某 2個執(zhí)行軌跡中被執(zhí)行的次數(shù)會具有相似的情況,即。命令控制邏輯所在的基本塊雖然每條執(zhí)行軌跡都會執(zhí)行,但是對于不同的控制命令控制邏輯基本塊的執(zhí)行次數(shù)是具有差異性的。通過分析可以得到 2條識別命令控制邏輯基本塊的規(guī)則。

通過規(guī)則1和規(guī)則2可以過濾掉大量的非控制邏輯基本塊。從Zeus、Agobot和Sdbot的實驗結(jié)果發(fā)現(xiàn),雖然有大量的代碼塊被過濾,符合規(guī)則1和規(guī)則2的代碼塊仍然很多,因此需要繼續(xù)去除噪音的方法。提出了2種去除噪音的策略:策略1是增加執(zhí)行軌跡的數(shù)量,從而增強(qiáng)規(guī)則1和規(guī)則2的過濾效果。增加執(zhí)行軌跡的數(shù)量可以發(fā)現(xiàn)軌跡間覆蓋率的更多差異,從而減少PBB=100%的基本塊數(shù)量,增加規(guī)則1的過濾強(qiáng)度;增加執(zhí)行軌跡的數(shù)量也會使覆蓋次數(shù)向量 VBB= ( VT1,VT2,… ,VTn)變長,更容易發(fā)現(xiàn)相似的覆蓋次數(shù),從而增加規(guī)則2的過濾強(qiáng)度;策略2是不增加執(zhí)行軌跡的數(shù)量,通過創(chuàng)建噪音過濾規(guī)則實現(xiàn)對基本塊的二次過濾,由于僵尸網(wǎng)絡(luò)的控制命令數(shù)量并不是很多,因此命令控制邏輯基本塊的覆蓋次數(shù)的上限是比較少的。設(shè)置一個閾值th,覆蓋次數(shù)超過th的基本塊就認(rèn)為是噪音;又對命令控制邏輯基本塊的在執(zhí)行軌跡里的執(zhí)行順序進(jìn)行分析,僵尸程序在進(jìn)行完邏輯判斷后通常會立即響應(yīng)這些命令,即觸發(fā)響應(yīng)的攻擊行為,因此命令控制邏輯基本塊后面跟著的應(yīng)該是攻擊行為基本塊,只有唯一的一條執(zhí)行軌跡覆蓋該基本塊。噪音的過濾規(guī)則如下。

規(guī)則 4 BBi滿足規(guī)則 1、規(guī)則 2、規(guī)則 3,且

識別循環(huán)結(jié)構(gòu)命令控制邏輯代碼塊的偽代碼如下。

算法1 循環(huán)結(jié)構(gòu)命令控制邏輯基本塊識別算法輸入:TRACES僵尸程序執(zhí)行軌跡集合;

th覆蓋次數(shù)的閾值

輸出:SET_BB僵尸程序命令控制邏輯基本塊集合

Searching(TRACES, th){SET_BB={}; //基本塊集合

SET_PBB={};//基本塊覆蓋率集合

SET_VBB={};//基本塊覆蓋次數(shù)集合

foreach(t in TRACES){

(SET_BB, SET_PBB, SET_VBB)=update_coverage(t);//更新基本塊的覆蓋信息

}// 根據(jù)4個規(guī)則過濾非命令控制邏輯的基本塊SET_BB = analyzing with the RULES (SET_BB, SET_PBB, SET_VBB, th);

return SET_BB;

}

算法的輸入是執(zhí)行軌跡集合 TRACES和覆蓋次數(shù)的閾值 th,輸出是找到的包含僵尸網(wǎng)絡(luò)命令控制邏輯的基本塊。算法的執(zhí)行過程主要分為兩部分:收集執(zhí)行軌跡集合 TRACES中的基本塊覆蓋信息;根據(jù)4個已定義的規(guī)則對非命令控制基本塊進(jìn)行過濾。

3.3.3 基于分支結(jié)構(gòu)的命令控制邏輯基本塊的特

征分析

分支結(jié)構(gòu)的命令控制邏輯基本塊的覆蓋信息特征不同于循環(huán)結(jié)構(gòu)的覆蓋信息特征,其不同點主要在以下2個方面:首先,基本塊的覆蓋率不一致,基于循環(huán)結(jié)構(gòu)的基本塊在不同的執(zhí)行軌跡中都會被覆蓋PBB=100%,但是基于if-else分支結(jié)構(gòu)的基本塊并不是全部被 100%覆蓋。因為僵尸程序?qū)刂泼畹睦斫膺^程總是從if開始,這樣if所在的基本塊的覆蓋率Pif=100%,而且覆蓋次數(shù)Vif=(1, 1,…,1),每個執(zhí)行軌跡只執(zhí)行1次,因此if所在的基本塊是第一類基本塊;然后,如果 if所在基本塊不能告訴僵尸程序如何理解控制命令,那么按順序一個 else接著一個 else的對控制命令進(jìn)行理解。當(dāng)知道了如何去響應(yīng)這個命令后,僵尸程序就不會再繼續(xù)執(zhí)行后面的else代碼了。因此,else所在的基本塊的覆蓋率Pelse<100%,Velse=(1 or 0, 1 or 0,…,1 or 0),而且不同 else基本塊的總覆蓋次數(shù)(n是捕獲的執(zhí)行軌跡數(shù)量)也是不一致的。因此可以總結(jié)出如下識別規(guī)則。

在執(zhí)行軌跡中,if所在的基本塊后面會跟著若干個else基本塊。但是,僵尸程序中基于分支結(jié)構(gòu)的命令控制邏輯并不像高級語言源代碼中的 if-else結(jié)構(gòu)那樣非常規(guī)范。在真實的僵尸程序執(zhí)行軌跡里面,分支結(jié)構(gòu)的命令控制邏輯基本塊中會夾雜著很多噪音,例如預(yù)處理功能基本塊與命令控制基本塊混雜在一起等。因此,要得到清晰的命令控制邏輯的分支結(jié)構(gòu),需要對噪音基本塊進(jìn)行過濾。這些夾雜的噪音一般是屬于第 4類基本塊,也就是 PBB=去掉噪音基本塊后,if基本塊后面的else基本塊的數(shù)量也是有其內(nèi)在規(guī)律性的,即不同的執(zhí)行軌跡中if后面的else基本塊的數(shù)量是不一致的,即?Ti,Tj,Num(BBelsein Ti)!=Num(BBelsein Tj)。因此可以總結(jié)出如下識別規(guī)則

規(guī)則5 ? Ti, Tj,

Num(BBelsein Ti)!=Num(BBelsein Tj)

識別分支結(jié)構(gòu)命令控制邏輯代碼塊的偽代碼如下。

算法2 分支結(jié)構(gòu)命令控制邏輯基本塊識別算法輸入:TRACES僵尸程序執(zhí)行軌跡集合;

輸出:SET_BB僵尸程序命令控制邏輯if基本塊Searching(TRACES){

SET_BB={}; //基本塊集合

SET_PBB={};//基本塊覆蓋率集合

SET_VBB={};//基本塊覆蓋次數(shù)集合foreach (t in TRACES){

//更新基本塊的覆蓋信息

(SET_BB, SET_PBB, SET_VBB) = update_coverage(t);

}

// 根據(jù)5個規(guī)則定位if基本塊的位置

SET_BB = analyzing with the RULES (SET_BB, SET_PBB, SET_VBB);

return SET_BB;}

4 實驗結(jié)果與分析

為了驗證基于覆蓋率分析的僵尸網(wǎng)絡(luò)控制命令發(fā)掘方法的有效性,在 Zeus、Agobot和 Sdbot僵尸網(wǎng)絡(luò)的樣本上進(jìn)行了實驗分析。實驗環(huán)境為Intel Core2 Quad Q9400 2.66 GHz處理器、4 GB內(nèi)存、Ubuntu 12.04操作系統(tǒng)。

針對僵尸網(wǎng)絡(luò)Zeus、Agobot和Sdbot,分別捕獲到了5條不同的執(zhí)行軌跡。實驗設(shè)計分為兩部分:首先,使用BitBlaze的Vine對僵尸程序的執(zhí)行軌跡進(jìn)行靜態(tài)分析,通過對路徑約束關(guān)系的收集、形式化表示和約束求解來分析僵尸網(wǎng)絡(luò)的命令控制邏輯,如圖4~圖6所示;然后,利用覆蓋率分析的方法,定位僵尸網(wǎng)絡(luò)命令控制邏輯所在的基本塊,進(jìn)而對基本塊進(jìn)行逆向分析發(fā)掘僵尸網(wǎng)絡(luò)的控制命令,分析結(jié)果如圖7~圖9所示。

圖4 Zeus的執(zhí)行軌跡信息

圖5 Agobot的執(zhí)行軌跡信息

圖6 Sdbot的執(zhí)行軌跡信息

圖7 利用覆蓋率分析定位Zeus控制命令基本塊

圖4 ~圖6中,包括CPU指令數(shù)量、基本塊的數(shù)量和路徑約束關(guān)系的數(shù)量。捕獲的Zeus的5條執(zhí)行軌跡的CPU指令數(shù)平均為804.2萬,基本塊的數(shù)量平均為17.6萬,使用污點分析和符號執(zhí)行去收集執(zhí)行軌跡中的路徑約束關(guān)系的時間開銷和空間開銷非常龐大。Zeus的執(zhí)行軌跡平均每條含有15.6萬條路徑約束條件,使用Vine對這些路徑約束進(jìn)行求解,能夠得到有效解的只有幾十個,而且這些路徑約束條件與僵尸網(wǎng)絡(luò)的控制邏輯沒有直接聯(lián)系。對僵尸網(wǎng)絡(luò) Agobot和 Sdbot執(zhí)行軌跡的分析結(jié)果與 Zeus的類似,分析過程需要消耗吉比特級別的存儲空間和十幾個小時進(jìn)行約束求解,結(jié)果顯示大部分路徑分支的觸發(fā)條件無法通過約束求解找到,有解的路徑分支與僵尸網(wǎng)絡(luò)的命令控制邏輯沒有直接的聯(lián)系。

圖8 利用覆蓋率分析定位Agobot控制命令基本塊

圖7 和圖8是利用算法1對Zeus和Agobot執(zhí)行軌跡的分析結(jié)果。n表示調(diào)用識別算法時所輸入的執(zhí)行軌跡的數(shù)量,實驗中分別使用了3組、4組和5組執(zhí)行軌跡進(jìn)行基本塊的覆蓋率分析,實驗結(jié)果表明輸入的執(zhí)行軌跡數(shù)量越多,命令控制邏輯基本塊的定位越準(zhǔn)確。但是,隨著執(zhí)行軌跡的數(shù)量增多,必然將增加捕獲執(zhí)行軌跡的時間開銷和空間開銷。

Zeus和Agobot的實驗結(jié)果表明,5條執(zhí)行軌跡就可以準(zhǔn)確定位到命令控制基本塊,其需要的執(zhí)行軌跡數(shù)量遠(yuǎn)小于進(jìn)行路徑約束條件分析時所需的執(zhí)行軌跡數(shù)量。

Threshold表示調(diào)用基于循環(huán)結(jié)構(gòu)的識別算法時所輸入的覆蓋次數(shù)的閾值,在實驗中分別將threshold設(shè)置為1 000和100,實驗結(jié)果表明閾值定位的越小,基本塊的定位越準(zhǔn)確。但是覆蓋次數(shù)閾值不能小于僵尸網(wǎng)絡(luò)控制命令的數(shù)量,如果小于則會導(dǎo)致沒有基本塊能滿足所有的規(guī)則。

圖9 利用分支結(jié)構(gòu)的覆蓋率分析定位到的if基本塊特征

僵尸網(wǎng)絡(luò)Sdbot所使用的命令控制邏輯是基于分支結(jié)構(gòu)的,利用算法2分支結(jié)構(gòu)命令控制邏輯基本塊識別算法對捕獲的Sdbot執(zhí)行軌跡進(jìn)行覆蓋率分析。通過分支結(jié)構(gòu)中if基本塊的5個特征,成功定位到Sdbot控制邏輯的位置。圖9是對if基本塊后面所跟的else基本塊數(shù)量,發(fā)現(xiàn)不同軌跡中if基本塊后面所跟else基本塊的數(shù)量是不相同的,數(shù)量越多說明控制命令在控制邏輯處理過程中的位置越靠后。執(zhí)行軌跡1、3、4中else基本塊數(shù)量都超過了1 000,逆向分析這些基本塊發(fā)現(xiàn)在基于分支結(jié)構(gòu)的控制邏輯的識別過程中有大量的計算代碼,這些計算過程也是if-else結(jié)構(gòu)的一部分,而且覆蓋信息滿足定義的規(guī)則。

利用覆蓋率分析方法定位到命令控制邏輯基本塊后,使用逆向分析技術(shù)可以很容易的找到僵尸網(wǎng)絡(luò)的控制命令集合,Zeus找到了25條控制命令,Agobot中找到了98條控制命令,Sdbot找到了50條命令。利用這些控制命令,構(gòu)造了控制命令數(shù)據(jù)分組,這些控制命令所觸發(fā)的執(zhí)行軌跡覆蓋了僵尸程序代碼空間95%以上的代碼,因此可以說明覆蓋率分析方法找到的控制命令集合能夠全面觸發(fā)僵尸程序的各種功能模塊。

5 討論

本文所提出的基于覆蓋率分析的僵尸網(wǎng)絡(luò)控制命令發(fā)掘方法是一種基于統(tǒng)計特征的分析方法,擴(kuò)展了當(dāng)前利用路徑約束關(guān)系求解的推理方法,將僵尸網(wǎng)絡(luò)命令控制協(xié)議的分析方法從路徑空間的遍歷擴(kuò)展到代碼空間的覆蓋特征分析,是一種全新的分析思路。

該基于統(tǒng)計特征的分析方法不需要對二進(jìn)制代碼進(jìn)行中間表示與約束求解,分析過程的時間開銷和空間開銷小,并能根據(jù)代碼空間是否被全覆蓋來驗證發(fā)現(xiàn)的僵尸網(wǎng)絡(luò)命令空間是否能全面觸發(fā)僵尸網(wǎng)絡(luò)的各個功能模塊,具有一定的實用性。

但是,該分析方法需要預(yù)先捕獲足夠數(shù)量的僵尸網(wǎng)絡(luò)執(zhí)行軌跡才可以進(jìn)行統(tǒng)計特征分析,因此不能用于檢測未知的僵尸網(wǎng)絡(luò)。

該方法是一種對僵尸程序代碼空間統(tǒng)計特征的分析方法,其前提條件是代碼空間是可見的,而且各個代碼基本塊的功能性是確定的。因此,該方法會受到代碼空間混淆技術(shù)的干擾,例如代碼移動(code mobility)混淆技術(shù)[39]可以將部分代碼變成在可控環(huán)境下是不可見的;面向返回的編程技術(shù)ROP(return-oriented programming)[38]可以動態(tài)地將代碼塊任意組裝成不同的功能模塊,破壞了代碼塊由其功能性所產(chǎn)生的統(tǒng)計特征。而且,僵尸網(wǎng)絡(luò)的演化和變異速度很快,需要進(jìn)一步挖掘僵尸程序執(zhí)行軌跡集合對代碼空間的覆蓋信息中內(nèi)在的本質(zhì)的規(guī)律性,實現(xiàn)更高效地逆向構(gòu)建僵尸網(wǎng)絡(luò)的命令控制協(xié)議。

6 結(jié)束語

本文提出了一種基于覆蓋率分析的僵尸網(wǎng)絡(luò)控制命令發(fā)掘方法,對僵尸網(wǎng)絡(luò)命令控制協(xié)議的分析提供了一種全新的思路,引入了輕量級的基于統(tǒng)計特征分析與識別的發(fā)掘方法。僵尸網(wǎng)絡(luò)的執(zhí)行軌跡對命令控制邏輯所在代碼塊的覆蓋率具有一定的規(guī)律性,從中可以快速準(zhǔn)確地定位到命令控制邏輯所在的基本塊,并提取出僵尸程序可執(zhí)行的控制命令集合。該方法不需要對二進(jìn)制代碼的路徑約束關(guān)系進(jìn)行形式化表示和求解,時間和空間開銷小,具有實用性。利用該方法對僵尸網(wǎng)絡(luò)Zeus、Agobot和Sdbot的執(zhí)行軌跡進(jìn)行分析,結(jié)果表明該方法能夠快速準(zhǔn)確地發(fā)掘出僵尸網(wǎng)絡(luò)的控制命令集合,并驗證了該命令集合所對應(yīng)的執(zhí)行軌跡可以覆蓋僵尸程序95%以上的代碼空間。

[1] 諸葛建偉, 韓心慧, 周林等. 僵尸網(wǎng)絡(luò)研究[J]. 軟件學(xué)報, 2008,19(3): 702-715.ZHUGE J W, HAN X H, ZHOU L, et al. Research and development of Botnets[J]. Journal of Software, 2008, 19(3): 702-715.

[2] 方濱興, 崔翔, 王威. 僵尸網(wǎng)絡(luò)綜述[J]. 計算機(jī)研究與發(fā)展, 2011,48(8): 1315-1331.FANG B X, CUI X, WANG W. Survey of Botnets[J]. Journal of Computer Research and Development, 2011, 48(8): 1315-1331.

[3] 王天佐, 王懷民, 劉波等. 僵尸網(wǎng)絡(luò)中的關(guān)鍵問題[J]. 計算機(jī)學(xué)報,2012, 35(6): 1192-1208.WANG T Z, WANG H M, LIU B, et al. Some critical problems of Botnets[J]. Chinese Journal of Computers, 2012, 35(6): 1192-1208.

[4] 江健, 諸葛建偉, 段海新等. 僵尸網(wǎng)絡(luò)機(jī)理與防御技術(shù)[J]. 2012,23(1): 82-96.JIANG J, ZHUGE J W, DUAN H X, et al. Research on Botnet mechanisms and defenses[J]. Journal of Software, 2012, 23(1):82-96.

[5] NAZARIO J. DDoS attack evolution[J]. Network Security, 2008, 7:7-10.

[6] HUSNA H, PHITHAKKITNUKOON S, PALLA S, et al. Behavior analysis of spam Botnets[A]. IEEE COMSWARE[C]. Bangalore, India,2008. 246-253.

[7] FREILING F, HOLZ T, WICHERSKI G. Botnet tracking: exploring a root-cause methodology to prevent distributed denial-of-service attacks[A]. Proc of the ESORICS’05[C]. Milan, Italy, 2005.319-335.

[8] BAECHER P, KOETTER M, HOLZ T, et al. The nepenthes platform:an efficient approach to collect malware[A]. Proc of the RAID’06[C].Hamburg, Germany, 2006.165-184.

[9] 金鑫, 李潤恒, 甘亮等. 基于通信特征曲線動態(tài)時間彎曲距離的IRC僵尸網(wǎng)絡(luò)同源判別方法[J]. 計算機(jī)研究與發(fā)展, 2012, 49(3):481-490.JIN X, LI R H, GAN L, et al. IRC Botnets' homology identifying method based on dynamic time warping distance of communication feature curves[J]. Journal of Computer Research and Development,2012, 49(3): 481-490.

[10] GU G, PORRAS P, YEGNESWARAN V, et al. BotHunter: detecting malware infection through ids-driven dialog correlation[A]. Proc of the 16th USENIX Security Symp[C]. Boston, Massachusetts, USA,2007. 167-182.

[11] GU G, PERDISCT R, ZHANG J, et a1. BotMiner: clustering analysis of network traffic for protocol- and structure-independent botnet detection[A]. Proc of the 17th USENIX Security Symp[C]. San Jose,California, USA, 2008.269-286.

[12] GU G, ZHANG J, LEE W. BotSniffer: detecting botnet command and control channels in network traffic[A]. Proc of the NDSS[C]. San Diego, USA, 2008.

[13] 王威, 方濱興, 崔翔. 基于終端行為特征的 IRC僵尸網(wǎng)絡(luò)檢測[J].計算機(jī)學(xué)報, 2009, 32(10): 1980-1988.WANG W, FANG B X, CUI X. IRC Botnet detection based on host behavior[J]. Chinese Journal of Computers, 2009, 32(10): 1980-1988.

[14] HOLZ T, GORECKI C, RIECK C, et al. Detection and mitigation of fast-flux service networks[A]. Proc of the NDSS[C]. San Diego, USA,2008.

[15] CHING-HSIANG H, HUANG C Y, CHEN K T. Fast-flux bot detection in real time[A]. Proc of the RAID[C]. Menlo Park,California, USA, 2011. 464-483.

[16] 王海龍, 龔正虎, 侯捷. 僵尸網(wǎng)絡(luò)監(jiān)測技術(shù)研究進(jìn)展[J]. 計算機(jī)研究與發(fā)展, 2010, 47(12):2037-2048.WANG H L, GONG Z H, HOU J. Overview of Botnet detection[J].Journal of Computer Research and Development, 2010, 47(12): 2037-2048.

[17] FREILING F, HOLZ T, WICHERSKI G. Botnet tracking: exploring a root-cause methodology to prevent denial of service attacks[A]. Proc of the ESORICS[C]. Milan, Italy, 2005. 319-335.

[18] RAJAB M, ZARFOSS J, MONROSE F, et al. A multifaceted approach to understanding the Botnet phenomenon[A]. Proc of the 6th ACM SIGCOMM Conf on Internet Measurement[C]. Pisa, Italy, 2006. 41-52.

[19] JUAN C, PONGSIN P, CHRISTIAN K, et al. Dispatcher: enabling active botnet infiltration using automatic protocol reverseengineering[A]. Proc of the CCS 2009[C]. Chicago, IL, USA, 2009.

[20] 6K2A1N-6I3C4H. C, KREIBICH C, LEVCHENKO K, et al. Spamalytics: an empirical analysis of spam marketing conversion[A]. Proc of the CCS 2008[C]. Alexandria,VA, USA , 2008. 3-14.

[21] 應(yīng)凌云, 楊軼, 馮登國等. 惡意軟件網(wǎng)絡(luò)協(xié)議的語法和行為語義分析方法[J]. 軟件學(xué)報, 2011, 22(7): 1676-1689.YING L Y, YANG Y, FENG D G, et al. Syntax and behavior semantics analysis of network protocol of malware[J]. Journal of Software, 2011,22(7): 1667-1689.

[22] 劉豫, 王明華, 蘇璞睿等. 基于動態(tài)污點分析的惡意代碼通信協(xié)議逆向分析方法[J]. 電子學(xué)報, 2012, 40(4): 661-668.LIU Y, WANG M H, SU P R, et al. Communication protocol reverse engineering of malware using dynamic taint analysis[J]. Acta Electronica Sinica, 2012, 40(4): 661-668.

[23] CHO C, BABIC D, SHIN E, et al. Inference and analysis of formal models of botnet command and control protocols[A]. Proc of the CCS 2010[C]. Chicago, IL, USA, 2010. 426-439.

[24] KANG B, ERIC C, LEE C, et al. Towards complete node enumeration in a peer-to-peer Botnet[A]. Proc of the CCS 2009[C]. Chicago, IL,USA, 2009. 23-34.

[25] STONE-GROSS B, COVA M, CAVALLARO L, et al. Your Botnet is my botnet: analysis of a Botnet takeover[A]. Proc of the CCS 2009[C].Chicago, IL, USA, 2009. 635-647.

[26] DAGON D, ZOU C, LEE W. Modeling botnet propagation using time zones[A]. Proc of the NDSS[C]. San Diego, USA, 2006. 235-249.

[27] VOGT R, AYCOCK J, JACOBSON M. Army of botnets[A]. Proc of the NDSS[C]. San Diego, USA, 2007. 111-123.

[28] WANG P, WU L, CUNNINGHAM R, et al. Honeypot detection in advanced Botnet attacks[J]. International Journal of Information and Computer Security, 2010, 4(1): 30-51.

[29] WANG W, FANG B, CUI X, et al. A user ID-centralized recoverable Botnet: structure research and defense[J]. International Journal of Innovative Computing, Information and Control, 2010, 6(4):

[30] 4Z3E0N7G-4 3Y1, 7S.HIN K, HU X. Design of SMS commanded-and-controlled and P2P-structured mobile botnets[A]. Proc of the 5th ACM Conf on Security and Privacy in Wireless and Mobile Networks[C]. Tucson,Arizona, USA, 2012. 137-148.

[31] SINGH K, SENGAL S, JAIN N, et al. Evaluating Bluetooth as a medium for Botnet command and control[A]. Proc of the Int Conf on Detection of Intrusions and Malware, and Vulnerability Assessment[C].Bonn, Germany, 2010. 61-80.

[32] CUI X, FANG B, YIN L, et al. Andbot: towards advanced mobile Botnets[A]. Proc of the 4th USENIX Workshop on Large-scale Exploits and Emergent Threats[C]. Berkeley, California, USA,[

33] Z2H01A1O.1 1S., LEE P, LUI J, et al. Cloud-based push-styled mobile botnets:a case study of exploiting the cloud to device messaging service[A].Proc of the Annual Computer Security Applications Conf (ACSAC 2012)[C]. Florida, USA, 2012.119-128.

[34] AMINI P, PIERCE C. Kraken Botnet infiltration[EB/OL]. http://dvlabs. tippingpoint.com.

[35] CHIA Y, JUAN C. Botnet infiltration: finding bugs in botnet command and control[EB/OL]. http://www.eecs.berkeley.edu/~chiayuan/cs261/cs261_cho.pdf, 2009.

[36] DAVIS C, FERNANDEZ J, NEVILLE S, et al. Sybil attacks as a mitigation strategy against the storm Botnet[A]. Proc of the 3rd Int Conf on Malicious and Unwanted Software[C]. Alexandria, Virginia,USA, 2008. 32-40.

[37] BARFORD P, YEGNESWARAN V. An inside look at Botnets[J].Malware Detection, 2007,27: 171-191.

[38] SHACHAM H. The geometry of innocent flesh on the bone:return-into-libc with-out function calls (on the x86)[A]. Proc of the 14th ACM Conf on Computer and Communications Security[C].Alexandria, VA, USA, 2007.552-561.

[39] FALCARIN P, CARLO S, CABUTTO A, et al. Exploiting code mobility for dynamic binary obfuscation[A]. Proc of the World Congress on Internet Security[C]. London, UK, 2011. 114-120.

[40] CUI W, KANNAN J, WANG H J. Discoverer: automatic protocol reverse engineering from network traces[A]. Proc of 16th USENIX Security Symposium on USENIX Security Symposium[C]. Boston,MA, USA, 2007. 1-14.

[41] VIGNA G. Static disassembly and code analysis[J]. Malware Detection,2007,27:19-41.

[42] CABALLERO J, POOSANKAM P, KREIBICH C, et al. Bidirectional Protocol Reverse Engineering: Message Format Extraction and Field Semantics Inference[R]. 2009.

[43] LIM J, REPS T. BCE: Extracting Botnet Commands from Bot Executables[R]. 2010.

[44] 王志, 賈春福, 魯凱. 基于環(huán)境敏感分析的惡意代碼脫殼方法[J].計算機(jī)學(xué)報, 2012, 35(4): 693-702.WANG Z, JIA C F, LU K. Malicious hidden-code extracting based on environment-sensitive analysis[J]. Chinese Journal of Computers, 2012,35(4): 693-702.

[45] Qemu[EB/OL]. http://wiki.qemu.org, 2013.

[46] SONG D, BRUMLEY D, YIN H, et al. BitBlaze: a new approach to computer security via binary analysis[A]. Intl Conf on Information Systems Security(ICISS 2008)[C]. Hyderabad, India, 2008. 1-25.

[47] Pin: a dynamic binary instrumentation tool[EB/OL]. http://software. intel.com/en-us/articles/pin-a-dynamic-binary-instrumentation-tool, 2013.

猜你喜歡
僵尸命令代碼
只聽主人的命令
筆記本電腦“僵尸”
創(chuàng)世代碼
創(chuàng)世代碼
創(chuàng)世代碼
創(chuàng)世代碼
移防命令下達(dá)后
你愿意當(dāng)吸血鬼還是僵尸?
這是人民的命令
在舌尖上筑牢抵御“僵尸肉”的防火墻
孙吴县| 古丈县| 雅安市| 富源县| 徐州市| 格尔木市| 湘潭县| 台南县| 定南县| 毕节市| 柳林县| 辽阳县| 洞口县| 金沙县| 马龙县| 亚东县| 普安县| 喜德县| 屯昌县| 临沂市| 浦东新区| 山西省| 子洲县| 万盛区| 祁门县| 榆林市| 双峰县| 原平市| 云南省| 民权县| 东乡族自治县| 岐山县| 阿巴嘎旗| 松潘县| 卓尼县| 新宁县| 山丹县| 霍城县| 石棉县| 登封市| 运城市|