陳燕紅 歐毓毅 凌 捷
(廣東工業(yè)大學(xué)計算機學(xué)院 廣東 廣州 510006)
?
一種改進的基于擴展攻擊樹模型的木馬檢測方法
陳燕紅歐毓毅凌捷
(廣東工業(yè)大學(xué)計算機學(xué)院廣東 廣州 510006)
木馬作為惡意程序的一種,經(jīng)常被作為黑客入侵利用的手段,這對網(wǎng)絡(luò)安全和信息安全將造成極大的危害。提出一種改進的基于擴展攻擊樹模型的木馬檢測方法。通過分析PE文件,采用靜態(tài)分析和動態(tài)行為監(jiān)控技術(shù)相結(jié)合的檢測方法提取程序API調(diào)用序列;并用信息增益的方法篩選出木馬關(guān)鍵API短序列集合,作為構(gòu)建擴展攻擊樹模型的特征庫;將待檢測程序以API短序列為行為特征與模型節(jié)點進行匹配、分析,同時改進了匹配節(jié)點的權(quán)值和危險指數(shù)的算法。最后給出擴展攻擊樹模型調(diào)整與優(yōu)化的方法。實驗結(jié)果表明,改進后的方法不僅在木馬檢測效率、準(zhǔn)確度方面有較好的表現(xiàn),還能檢測出經(jīng)過升級變種的木馬。
木馬檢測擴展攻擊樹API調(diào)用改進算法
木馬檢測一般分為靜態(tài)和動態(tài)檢測技術(shù),然而這兩類檢測技術(shù)都有其不足:靜態(tài)檢測技術(shù)在面對已知木馬程序的隱藏和變化時略顯不足,對于未知木馬程序亦是無能為力;而動態(tài)檢測技術(shù)不僅因為占用較多的系統(tǒng)資源導(dǎo)致效率不高,對于已經(jīng)發(fā)現(xiàn)的木馬程序,其運行造成的危害已是事實。
攻擊樹模型有著直觀的結(jié)構(gòu),能夠較好地反映系統(tǒng)威脅路徑,在木馬程序入侵檢測應(yīng)用方面的研究相對較多。文獻(xiàn)[1]在傳統(tǒng)攻擊樹模型上,對每個節(jié)點加入屬性信息實現(xiàn)了對模型的擴展,不足之處在于其對節(jié)點間關(guān)系定義不全面、危險指數(shù)算法過于簡單,將影響檢測的準(zhǔn)確度;文獻(xiàn)[2]提出的一種改進攻擊樹結(jié)構(gòu),并設(shè)計了危害權(quán)值算法,不僅更直觀地體現(xiàn)了攻擊路徑,而且達(dá)到了更好的描述和判斷程序的惡意性的目的。其不足在于未能考慮攻擊樹中不同層次節(jié)點對PE文件危險值比重的差異;文獻(xiàn)[3]中改進的攻擊樹模型是在傳統(tǒng)攻擊樹的基礎(chǔ)上加入?yún)?shù)集合較好地描述了API調(diào)用序列情況,但是其對節(jié)點權(quán)重信息描述不明確;文獻(xiàn)[4]提出一種通過靜態(tài)分析PE文件獲取API短序列與攻擊樹進行匹配,提高了匹配效率,然而當(dāng)前很多木馬程序通過動態(tài)加載DLL獲得函數(shù)地址完成系統(tǒng)調(diào)用以躲避靜態(tài)掃描[5],靜態(tài)分析API序列方法的不足將日益凸顯。
本文在分析了PE文件頭部特征信息[6]的基礎(chǔ)上,重點研究了攻擊樹模型的擴展,API調(diào)用序列的提取、分析以及算法的改進等,提出一種改進的基于擴展攻擊樹模型的木馬檢測方法。首先搜集總結(jié)了大量木馬程序,并對其API調(diào)用序列進行提取、劃分以及篩選作為構(gòu)建模型的特征庫;同時對攻擊樹模型節(jié)點信息進行改造擴展,基于擴展的模型,根據(jù)不同層次目標(biāo)節(jié)點和葉子節(jié)點的權(quán)重、發(fā)生概率以及程序調(diào)用API短序列匹配度等的不同,改進了相應(yīng)算法,再通過計算程序的危險指數(shù)與預(yù)先設(shè)置好的閾值進行比較,以判斷程序是否為木馬程序;最后給出實現(xiàn)攻擊樹模型的調(diào)整與優(yōu)化的方法。
攻擊樹模型是一種采用樹形結(jié)構(gòu)來描述攻擊者對目標(biāo)系統(tǒng)進行攻擊的方法、路徑。在一棵攻擊樹的樹形結(jié)構(gòu)中,可以分為“或”(Or)、“與”(And)、“順序與”(Sand)三種關(guān)系?,F(xiàn)假設(shè)G,a,b三個節(jié)點分別代表父節(jié)點、左子節(jié)點、右子節(jié)點,則上述三種關(guān)系的圖形表示如圖1所示。
圖1 目標(biāo)節(jié)點關(guān)系圖
其中,‘Or’關(guān)系表示只要有包含一個以上的子節(jié)點都將導(dǎo)致父節(jié)點的完成;‘And’關(guān)系表示當(dāng)且僅當(dāng)所有子節(jié)點的完成才能導(dǎo)致父節(jié)點的完成;‘Sand’關(guān)系表示父節(jié)點的完成必須是所有子節(jié)點按相應(yīng)順序完成方可,這里指子節(jié)點從左到右的順序。
擴展攻擊樹T=(V,E,Attribute,Parameter),其中V(T)是上述三種關(guān)系的非葉子節(jié)點及葉子節(jié)點為集合元素的非空并且有限的集合,根節(jié)點記為‘ROOT’,用以表示攻擊者要達(dá)成的最終攻擊目標(biāo)。自上而下,子節(jié)點代表攻擊的子目標(biāo),逐步細(xì)分到葉節(jié)點代表危險API調(diào)用短序列。E(T)中的元素是V×V的子集,用來代表樹中的每條邊,即攻擊的路徑。Attribute(T)是節(jié)點屬性集合,由七元組(S,C,L,P,R,W,D)組成,與每個節(jié)點相關(guān)聯(lián)。S是布爾型變量,表示節(jié)點在匹配過程中的狀態(tài):得到匹配的節(jié)點的S為TRUE,記為“高亮節(jié)點”,反之記為“非高亮節(jié)點”。C表示為API的名稱或者目標(biāo)的文本描述。L表示節(jié)點所在攻擊樹中的層次,其中L(ROOT)=0,ROOT子節(jié)點的L值為1,依次向下類推。P指節(jié)點代表的事件發(fā)生的可能性。R為三態(tài)變量(與/或/順序與),表示子節(jié)點之間的關(guān)系,對于葉子節(jié)點無意義。W和D是數(shù)值型變量,W表示節(jié)點代表的事件發(fā)生后對系統(tǒng)產(chǎn)生的威脅,為惡意性權(quán)值;D表示綜合計算得到的節(jié)點的危險指數(shù)。Parameter(T)是參數(shù)信息集合,由time、paramlist兩個變量組成,用以記錄API調(diào)用時的參數(shù)信息,time表示節(jié)點內(nèi)部的時間序編號,paramlist變量則用來記錄參數(shù)調(diào)用鏈表。對于非葉子節(jié)點該值為NULL。初始狀態(tài)下,模型中所有節(jié)點都處于‘非高亮’狀態(tài),Parameter(T)為空狀態(tài),而非葉子節(jié)點的D暫時也為空。
2.1API調(diào)用序列的提取以及木馬庫的生成
本文在分析了PE文件的特征字符串、API調(diào)用的數(shù)量等頭部特征信息的基礎(chǔ)上,結(jié)合靜態(tài)和動態(tài)方法獲取API調(diào)用序列(包含調(diào)用API的參數(shù)信息),大致流程如圖2所示。
圖2 API調(diào)用序列提取流程
在程序運行前,首先判斷PE文件是否經(jīng)過加殼、變形等,若無則通過靜態(tài)解析PE 文件的方法提取API調(diào)用序列以盡可能地提高檢測效率;若是則將程序置于沙箱中運行以避免其對系統(tǒng)的危害,通過行為監(jiān)控技術(shù)[7,8]攔截程序執(zhí)行過程中的API調(diào)用以提高檢測準(zhǔn)確率。再將提取到的API調(diào)用序列,采用K=6長度的滑動窗口生成API短序列,如圖3所示。
圖3 滑動窗口大小K=6時API調(diào)用短序列
針對部分木馬短序列無法有效區(qū)分木馬程序與正常程序,同時造成不必要的信息冗余,采用信息增益篩選出高識別度、高準(zhǔn)確度的關(guān)鍵API短序列集合A(F)={F1,F2,…,Fm}作為構(gòu)建模型的特征庫。信息增益公式見下:
Grain(A)=Info(Q)-InfoA(Q)
其中,Q為標(biāo)記類的訓(xùn)練集,包括:木馬程序(C1)、正常程序(C2)。Info(Q)即表示對Q進行分類所需要的期望信息,而InfoA(Q)表示按A劃分后再對Q進行分類所需的期望信息,A為木馬調(diào)用的API短序列,公式具體為:
其中,|C1|、|C2|分別表示Q訓(xùn)練集中木馬和正常程序的數(shù)量,|Q|=|C1|+|C2|表示程序的總數(shù)量。
其中,|Qj|即為按A劃分Q得到的子集的數(shù)量,有|Q1|和|Q0|分別表示Q訓(xùn)練集中程序調(diào)用、未調(diào)用A短序列得到的子集數(shù)量。Grain(A)值越大,表示對應(yīng)API短序列對木馬程序的檢測影響就會越大,反之相反。
2.2原始擴展攻擊樹的構(gòu)建
通過分析木馬常見的惡意行為,將原始擴展攻擊樹劃分為8個部分,如圖4所示。
圖4 原始擴展攻擊樹的劃分
具體地,根據(jù)對上述惡意行為的劃分,將木馬特征庫A(F)中的API短序列按照序列達(dá)成的目標(biāo)、目標(biāo)間的依賴關(guān)系構(gòu)建出若干最大木馬擴展攻擊樹,再將這些樹以或的關(guān)系合并在一起作為ROOT根節(jié)點的子節(jié)點,即完成原始擴展攻擊樹的構(gòu)建,如圖5所示(圖中省略了部分目標(biāo)節(jié)點、葉子節(jié)點)。
圖5 構(gòu)建的攻擊樹實例
對于攻擊樹中節(jié)點的命名采用
2.3相關(guān)算法研究
1) 節(jié)點發(fā)生的可能性P的推算方法[9]其中F表示父節(jié)點,Kn表示子節(jié)點。
(1) 對于“Or關(guān)系”的子節(jié)點,其父節(jié)點的發(fā)生可能性等于各子節(jié)點發(fā)生可能性的最大值。
P(F)=max{P(K1),P(K2),…,P(Kn)}
(2) 對于“And關(guān)系”的子節(jié)點,其父節(jié)點的發(fā)生可能性等于各子節(jié)點發(fā)生可能性的乘積。
P(F)=P(K1)×P(K2)×…×P(Kn)
(3) 對于“Sand關(guān)系”的子節(jié)點,其父節(jié)點的發(fā)生可能性需要借助條件概率來計算。
P(F)= P(K1)×P(K2/K1)×…×P(Kn/ K1 K2…Kn-1)
(4) 對于葉子節(jié)點leaf采用多屬性效用理論[10]計算其發(fā)生的可能性,給每個葉子節(jié)點附上三個基本屬性,cost、det、diff分別用來表示完成該葉子節(jié)點所需要的成本、可能被檢測到的等級和難易度,算法如下。
P(leaf)=Wcost×U(cost)+Wdet×U(det) +Wdiff×U(diff)
其中:leaf表示任意的一個葉子節(jié)點;P(leaf)表示該葉子節(jié)點發(fā)生的可能性;Wcost、Wdet、Wdiff用以表示對應(yīng)參數(shù)的權(quán)重系數(shù);而U(cost)、U(diff)、U(det)則用以表示相應(yīng)參數(shù)的效用性。
2) 惡意性權(quán)值W
葉子節(jié)點是由具體API函數(shù)代表的一個行為事件,通過行為要素得出單個葉子節(jié)點的惡意性權(quán)值[11]。主體U為調(diào)用API函數(shù)的進程或線程,客體O為API函數(shù)的操作對象,動作B為API函數(shù)代表的操作,API部分參數(shù)值作為行為的備注部分N。設(shè)Wu、Wo、Wb、Wn分別代表主體、客體、行為操作以及附加參數(shù)值代表的權(quán)重,L為當(dāng)前節(jié)點所在的層數(shù),為不同層節(jié)點設(shè)置權(quán)值可以更好地體現(xiàn)危害差異性。對于匹配的葉子節(jié)點,其所在層次離總目標(biāo)越遠(yuǎn)其權(quán)重相應(yīng)越低,本文采用如下公式計算其惡意性權(quán)值。
W(leaf)=(Wu+Wo+Wb+Wn)×1/L
對于非葉子節(jié)點,其惡意性權(quán)值W由其所有子節(jié)點的危險指數(shù)及包含的葉子點間的相互關(guān)系綜合決定。
W(F)=Fun(K1, K2,…,Kn)
為‘Or’節(jié)點時,W取子節(jié)點中最大的危險指數(shù)為值;為‘And’或者‘Sand’節(jié)點時,將子節(jié)點危險指數(shù)求和作為W值,以體現(xiàn)子節(jié)點共同作用導(dǎo)致父節(jié)點目標(biāo)的達(dá)成,公式如下:
W(F)=Max{D(K1),D(K2)…D(Kn)}×1/L
W(F)=(D(K1)+D(K2)+…+D(Kn))×1/L
3) 危險指數(shù)D
危險指數(shù)標(biāo)識危險級別,表示節(jié)點與木馬程序的相似程度,由自身權(quán)值及發(fā)生概率計算而得。所有最大高亮子樹根節(jié)點的危險指數(shù)D值的和為對應(yīng)木馬程序的危險指數(shù)D(F)。為了有效地降低漏報率和誤報率,文獻(xiàn)[12]在計算程序危險指數(shù)的時候?qū)⒊绦蛘{(diào)用API集合的規(guī)??紤]在內(nèi),本文考慮API序列間的依賴關(guān)系,通過計算API短序列匹配度的方法以更準(zhǔn)確地描述程序的惡意性:假設(shè)目標(biāo)API調(diào)用短序列的總數(shù)為n,在擴展攻擊樹中匹配到的短序列個數(shù)為m,那么m/n的即為目標(biāo)短序列集合中API序列的匹配度,記為P(H)。通過這種方法可以有效地降低正常程序調(diào)用API過多引起的高匹配度從而產(chǎn)生誤報,以及木馬程序調(diào)用API較少造成低匹配度從而產(chǎn)生漏報。式(1)、式(2)分別表示計算子目標(biāo)和最終目標(biāo)的危險指數(shù)。
D=P×W
(1)
D(F)=sum(D)×P(H)
(2)
3.1匹配分析
將待檢測程序中提取、劃分的目標(biāo)API短序列集合G(A)={ A1,A2,…,Am}以短序列為單位同擴展攻擊樹模型進行匹配,同時把相應(yīng)API調(diào)用參數(shù)信息記錄在Parameter(T)中,再對攻擊樹模型進行葉子節(jié)點及非葉子節(jié)點按照相應(yīng)規(guī)則(與/或/順序與)作高亮標(biāo)記。設(shè)置一個閾值作為判斷標(biāo)準(zhǔn),最后計算危險指數(shù)的值來判斷程序是否為木馬程序。
例如某可疑木馬程序部分的調(diào)用序列及參數(shù)調(diào)用記錄如如下:
(1) 可疑木馬程序代碼片段
…
OpenFile(IN:N:XXXOUT:I:32),
WriteFile(IN:I:32 B:XXXOUT:),
RegOpenkeyEx(IN:N:HKLMSYSTEMCurrentControlSetServicesXXXOUT:0),
CreateFile(IN:N:X:filename.exeOUT:0)
RegCreateKey(IN:N:HKLMSYSTEMCurrentControlSetServicesXXXOUT:0)
CreateProcess(IN:N:ProcessNameOUT:0)
RegCloseKey(IN:N:HKLMSYSTEMCurrentControlSetServicesXXXOUT:0),
…
(2) 提取的API調(diào)用序列
Index APIName
11OpenFile()
13WriteFile()
45RegOpenkeyEx()
58CreateFile()
74RegCreateKey()
93CreateProcess()
34RegCloseKey()
105MessageBox()
46Send()
…
將上述可疑API調(diào)用序列通過滑動窗口劃分成短序列,按相應(yīng)規(guī)則匹配攻擊樹后得到的高亮節(jié)點擴展攻擊樹,如圖6所示。
圖6 匹配攻擊樹
3.2動態(tài)調(diào)整擴展攻擊樹方法
原始擴展攻擊樹作為木馬檢測的核心特征庫,需要不斷地更新和補充使得檢測更加準(zhǔn)確有效。檢測過程中,將程序中出現(xiàn)的未被匹配的敏感API調(diào)用序列按照一定的規(guī)則添到新的模型分支中:對于相同的操作對象而動作不同,歸為‘And’或者‘Sand’關(guān)系,并通過參數(shù)信息進行區(qū)分;對于相同動作而操作對象不同,歸為‘Or’關(guān)系。同時,采用如下方法對擴展攻擊樹模型進行調(diào)整優(yōu)化:
1) 或節(jié)點合并法
針對今后出現(xiàn)的新的攻擊方式實現(xiàn)的相同攻擊目標(biāo),使用或節(jié)點進行合并,例如:完成攻擊樹中T21目標(biāo)需要調(diào)用API序列(A1,A2,A3),若發(fā)現(xiàn)不同的API調(diào)用(A4,A5)序列亦可完成T21目標(biāo),則將序列(A1,A2,A3)和序列(A4,A5)分別置于T21新的子節(jié)點T211,T212下實現(xiàn)合并。
2) 節(jié)點精簡法
通過舍去擴展攻擊樹模型中無作用或作用不大的節(jié)點以實現(xiàn)展攻擊樹模型的優(yōu)化。即保證完成攻擊目標(biāo)序列的任意子序列無法達(dá)成該攻擊目標(biāo)。
3) 相似攻擊樹統(tǒng)一法
對于樹中出現(xiàn)的相似的攻擊樹,按結(jié)構(gòu)從簡的原則選擇其一,從而提高程序運行效率并節(jié)省存儲空間,如圖7所示。
圖7 相似攻擊樹
通過分析得到這兩顆攻擊樹中達(dá)成目標(biāo)T3具有相同的API調(diào)用序列,都是{(A1,A3)(A2,A3)}和(A1,A2,A3),因此它們是相似的,通過分析選左圖作為模型子樹。
(1) 通過分析“紅狼遠(yuǎn)控”和“灰鴿子黑防”這兩種遠(yuǎn)程控制木馬程序,對其進行升級都附上新的攻擊目標(biāo):獲取目標(biāo)機上的.jpg圖像文件之后將其刪除的功能作為新的攻擊目標(biāo)。通過匹配之后,再計算危險指數(shù)得到實驗結(jié)果如表1所示。
表1 實驗結(jié)果1
實驗結(jié)果表明,本文方法可以有效地檢測出經(jīng)過升級后的木馬。
(2) 從網(wǎng)上下載了639個木馬文件以及Windows XP系統(tǒng)目錄下的純凈PE文件。以2:8的比例將這些文件分別作為測試集和訓(xùn)練數(shù)據(jù)。將本文方法與文獻(xiàn)[1]、文獻(xiàn)[4]方法進行分析比較FN(木馬被識別為正常程序)和FP(正常程序被識別為木馬)指數(shù)得到如表2所示。
表2 實驗結(jié)果2
通過表2的實驗數(shù)據(jù)比較分析看到,改進后的方法較大地降低了了FN和FP指數(shù),提高了檢測的準(zhǔn)確度。
本文提出一種基于攻擊樹模型的木馬檢測方法,先通過擴展攻擊樹節(jié)點信息等實現(xiàn)更精確的匹配模型;再采用靜態(tài)分析和動態(tài)行為監(jiān)控技術(shù)相結(jié)合的方法可以比較有效而準(zhǔn)確地提取到程序的API調(diào)用序列,并對相關(guān)算法進行研究,改進了權(quán)值、危險指數(shù)的算法。最后給出擴展攻擊樹模型調(diào)整與優(yōu)化的方法以實現(xiàn)模型特征庫的更新與補充。實驗結(jié)果表明,改進后的方法在兼顧木馬檢測效率、準(zhǔn)確度方面有較好表現(xiàn)的同時,還可以檢測出經(jīng)過升級變種的木馬。
[1] 楊彥,黃皓.基于攻擊樹的木馬檢測方法[J].計算機工程與設(shè)計,2008,29(11):2711-2714.
[2] 謝樂川,袁平.改進攻擊樹惡意代碼檢測方法[J].計算機工程與設(shè)計,2013,34(5):1599-1604.
[3] 陳丹偉,唐平,周書桃.基于沙盒技術(shù)的惡意程序檢測模型[J].計算機科學(xué),2012,39(6A):12-14.
[4] 牛冰茹,劉培玉,段林珊.一種改進的基于攻擊樹的木馬分析與檢測[J].計算機應(yīng)用與軟件,2014,31(3):277-280,330.
[5] 張程,馬兆豐,鈕心忻,等.一種API動態(tài)序列分析和 DAG-SVM多類支持向量機的未知病毒檢測方法[J].小型微型計算機系統(tǒng),2012,12(12):2724-2728.
[6] Schultz M G,Eskin E,Zadok F,et al.Proceedings of the 2001 IEEE Symposium on Security and Privacy[C]//Washington: IEEE Computer Society,2001:38-49.
[7] 謝燕江.一種基于輕量級虛擬化的沙盒機制[D].湖南:湖南大學(xué)軟件學(xué)院,2012.
[8] 張永超.基于虛擬執(zhí)行技術(shù)的惡意程序監(jiān)測系統(tǒng)研究與實現(xiàn)[D].國防科學(xué)技術(shù)大學(xué),2011.
[9] 甘早斌,吳平,路松峰,等.基于擴展攻擊樹的信息系統(tǒng)安全風(fēng)險評估[J].計算機應(yīng)用研究,2007,24(11):153-160.
[10] 鐘倩,方勇,劉亮,等.基于攻擊樹的文件風(fēng)險評估方法[J].通信技術(shù),2011,5(44):77-79.
[11] Xia Jiang,Weiwei Qi.An Improved Attack Tree Algorithm Based on Android[J].Journal of Software Engineering,2014,34(1):1-8.
[12] 樂洪州.基于擴展攻擊樹的木馬檢測技術(shù)研究[D].大連:大連海事大學(xué),2013.
AN IMPROVED TROJANS DETECTION METHOD BASED ON EXTENDED ATTACK TREE MODEL
Chen YanhongOu YuyiLing Jie
(FacultyofComputer,GuangdongUniversityofTechnology,Guangzhou510006,Guangdong,China)
Trojans, as one kind of malwares, are often used as the hacking means, and this will cause great harm to the security of network and information. We proposed an improved Trojans detection method which is based on extended attack tree model. First, by analysing PE files, the method extracts the call sequence of program’s API using the detection method combining the static analysis and dynamic behaviour monitoring; Then it sifts the key short call sequence set of API using the method of information as the feature library for building extended attack tree model; Furthermore, it takes the API short call sequence as the behavioural feature of the detecting program to match the model nodes and then analysis them, meanwhile improves the algorithms of matching nodes’ weight and risk index as well. Finally, we introduced the method to adjust and optimise the extended attack tree model. Experimental results showed that the improved method had better performance in Trojans detection efficiency and accuracy, and could detect the upgraded variant of the Trojan as well.
Trojans detectionExtended attack treeAPI callsImproved algorithm
2015-02-15。廣東省自然科學(xué)基金重點項目(S2012 020011071);廣東省高校科技創(chuàng)新項目(2013KJCX0064)。陳燕紅,碩士生,主研領(lǐng)域:信息安全技術(shù)。歐毓毅,副教授。凌捷,教授。
TP309
A
10.3969/j.issn.1000-386x.2016.08.068