[摘要]本文研究并總結(jié)出木馬攻擊行為的規(guī)律,通過靜態(tài)分析PE文件提取出程序運行時調(diào)用的API,用木馬攻擊中常見的危險系統(tǒng)調(diào)用序列來建模一個動態(tài)攻擊樹,將分析PE文件得到的API調(diào)用集合與建立的攻擊樹進(jìn)行匹配,有效的區(qū)分木馬文件和正常文件,并能根據(jù)檢測結(jié)果對攻擊樹進(jìn)行動態(tài)的調(diào)整,以不斷提高攻擊樹對未知病毒的檢測能力。
[關(guān)鍵詞]木馬檢測;攻擊樹;PE文件
[中圖分類號]TP309.5[文獻(xiàn)標(biāo)識碼] A
1引言
文獻(xiàn)[1]將通過用危險API序列來構(gòu)建攻擊樹來檢測木馬文件,但該模型不能動態(tài)調(diào)整。本文在此研究的基礎(chǔ)上,提出了一種基于自適應(yīng)攻擊樹模型的檢測木馬的方案。挑選木馬使用頻率高的API函數(shù)來對攻擊樹進(jìn)行建模,通過靜態(tài)地分析PE文件獲得程序運行時可能調(diào)用的API集合,將其和攻擊樹作匹配,用靜態(tài)危險指數(shù)來量化木馬的與已經(jīng)模型的匹配程度。如果一個可執(zhí)行程序匹配程度高到預(yù)定程度,則可以判斷該文件為木馬,并且可以根據(jù)檢測結(jié)果集,在攻擊樹中添加新的結(jié)點,以此方式可以提高對未知木馬的檢測能力。
2PE文件結(jié)構(gòu)分析
PE文件有9個預(yù)定義段,可執(zhí)行代碼段.text、數(shù)據(jù)段.bss、.rdata、.data.、資源段. rsrc、導(dǎo)出數(shù)據(jù)段.edata、導(dǎo)入數(shù)據(jù)段.idata、調(diào)試信息段.debug??蓤?zhí)行文件運行時,將本身和導(dǎo)入函數(shù)表里保存的庫函數(shù)一并調(diào)入到內(nèi)存里。
按一定的方式來遍歷可執(zhí)行文件的IAT,就可以此可執(zhí)行文件需的全部鏈接庫和庫函數(shù),包括該可執(zhí)行程序需要的API??蓤?zhí)行文件F所需是人的API集合記為A(F),則A(F)={A1,A2,…An},本文把A(F)作為檢測文件F是不是木馬程序的數(shù)據(jù)源。
3擴展攻擊樹模型
本文沿用了文獻(xiàn)[1]中的有關(guān)擴展攻擊樹、與結(jié)點、或結(jié)點、最大擴展攻擊樹及靜態(tài)危險指數(shù)的定義。并且針對一些典型的木馬程序進(jìn)行了分析,然后歸納出了木馬攻擊中經(jīng)常使用的危險API調(diào)用序列。并且用擴展攻擊樹表示及存儲API調(diào)用序列。用OR關(guān)系把這些最大攻擊樹的根結(jié)點連接到根結(jié)點ROOT上,此方式可以把森林變?yōu)闃銻T。在RT中,所始的全部結(jié)
本文分析API函數(shù)后,針對有可能被木馬調(diào)用的API函數(shù)定義了危險度,如表1所示。沒有出現(xiàn)在表1中的函數(shù)在動態(tài)調(diào)整攻擊樹時可用到。樹中葉結(jié)點的stv值則是根據(jù)這些危險度設(shè)置的。
在擴展攻擊樹中,原始樹中非葉子結(jié)點的stv值等于0。文獻(xiàn)[1]中的weight樹值是1且不變且OR結(jié)點比AND結(jié)點的權(quán)重低。通過分析可知,以上的設(shè)置并不是太合理:因為對于OR結(jié)點一個從屬它的子目標(biāo)實現(xiàn),此攻擊目標(biāo)就實現(xiàn),面只有子目標(biāo)都達(dá)到后AND攻擊目標(biāo)才實現(xiàn)。所以針對實現(xiàn)條件來講,AND結(jié)點的危險性比OR結(jié)點要低的。因此本文中設(shè)置OR結(jié)點的Weight值為從屬它的子結(jié)點的個數(shù),而AND結(jié)點的Weight值設(shè)定為1。
4基于自適應(yīng)攻擊樹的木馬檢測方法
本文對于PE文件進(jìn)行靜態(tài)分析,獲得程序需要調(diào)用的API函數(shù)集合作為檢測的數(shù)據(jù)源。然后通過去RT對匹配處理數(shù)據(jù)源,檢測是否為木馬。
4.1基于攻擊樹的匹配過程
A(F)與RT的匹配算法過程是:第一,針對A(F)中出現(xiàn)過的葉子結(jié)點,將其在RT對應(yīng)位置作出高亮標(biāo)記,即將state值設(shè)為1;沒有出現(xiàn)過的結(jié)點存入表中,動態(tài)調(diào)整時可用。第二,按照AND或者OR的規(guī)則對RT中的非葉子結(jié)點進(jìn)行高亮標(biāo)記。后序遍歷子樹可得到為實現(xiàn)攻擊目標(biāo)而需要執(zhí)行的API函數(shù)調(diào)用的序列。
對于一個可執(zhí)行PE文件F定義一個靜態(tài)危險指數(shù),表示為STV(F)。STV(F)量化地標(biāo)明了F和木馬的匹配程度。本文的重點在于對于擴展攻擊的動態(tài)調(diào)整。例如圖1所描述的擴展攻擊樹。G2和G3表示匹配到兩棵最大高亮子樹根結(jié)點。
本文根據(jù)STV(F)判斷F是否為木馬,并設(shè)置報警閾值D。如果一個可執(zhí)行文件的STV(F)值此大于D的值,則判定F是木馬文件。D值設(shè)置非常重要,過高時會造成漏報率的升高;而過低則會造成誤報率升高。本文經(jīng)過大量分析及多次實驗后,D值設(shè)置為40。
4.2擴展攻擊樹自適應(yīng)調(diào)整過程
在4.1節(jié)中曾指出提取PE文件的API集合,跟擴展攻擊樹匹配后把沒有出現(xiàn)在攻擊樹中的API存放在一個表中。本文設(shè)置正常PE調(diào)用的API函數(shù)存放到表NormalAPI中;木馬PE調(diào)用的API函數(shù)存放到表TrojanAPI中。表中的對應(yīng)的API出現(xiàn)一次,記錄次數(shù)的變量值加1。
在實施木馬檢測過程中,每過規(guī)定的時間,計算TrojanAPI表中所有API的互信息值,以此來找出危險度已經(jīng)上升到可以加入擴展攻擊樹的程度的API函數(shù)。
互信息用來度量一個消息中兩個信號之間的相互依賴程度[2]。本文將互信息用于衡量API和類別屬性之間的統(tǒng)計關(guān)聯(lián)程度,其定義為:
當(dāng)MID(ak)超過預(yù)設(shè)的值時,判定ak可以添加到擴展攻擊樹。經(jīng)過批量的實驗及分析,MID(ak)取0.3。
本文提出自動實現(xiàn)把API函數(shù)添加到擴展攻擊樹方案。即,如果選定添加到擴展攻擊樹的API以后,在確定此函數(shù)在攻擊樹的加入位置時,選用詞匯分析的方法。
經(jīng)過分析,所有的API函數(shù)名是由若干肯人固定含義的詞匯組成,如同英語中的合成單詞一樣。文獻(xiàn)[3]中對810個樣本文件統(tǒng)計,發(fā)現(xiàn)文件調(diào)用函數(shù)總數(shù)為59 010,其中不重復(fù)的API總數(shù)量是3 680個。本文通過分析,共得到詞匯量為2 281個。因此本文建立一個表存儲常用的API函數(shù)詞匯,如表2所示。表中每個API函數(shù)還有詞性、含義和優(yōu)先級等屬性。
本文用詞匯分析對確定添加到擴展攻擊樹的API函數(shù)分割成若干詞匯。分割時按照如下的方法:大寫字母為詞匯的開始,大寫字一與之后面小寫字母一起構(gòu)成一個詞匯。后通過查詢表2得到詞的屬性。我們可以依據(jù)這些屬性把API譯成所需的形式。比如:API函數(shù)“GetSystem Window Directory”可分解為Get、System、Window、Directory四個詞匯,查表后詞匯的屬性為分別為v、n、n、n。
優(yōu)先級為1、3、2、2。如表中所示動詞的優(yōu)先級最高,而名詞的優(yōu)先詞最低。我們可按照優(yōu)先級把4個詞匯排序且翻譯為:獲取windows系統(tǒng)目錄的路徑名。假如
G2的表示目標(biāo)是獲取系統(tǒng)文件,此API可能會成為G2的子結(jié)點。加入一個分支的關(guān)鍵原則是操作對象一致。
對于加入位置的確定本文設(shè)計的方案:假設(shè)現(xiàn)在確定要把API函數(shù)Ai加入擴展攻擊樹中。第一步:在樹中遍歷并尋找與Ai的作操對象一樣的分支;第二步:判斷找到的分支是與關(guān)系則以O(shè)R的形式添加;當(dāng)是關(guān)系為OR時直接添加。在算法實現(xiàn)上,通過遍歷存儲結(jié)構(gòu)的雙親鏈孩子鏈確定插入點,后生成新結(jié)點插入。
5實驗
我們對“武漢男生”分析,如果此木馬升級,添加一個攻擊目標(biāo):獲取其他用戶主機上的.exe可執(zhí)行文件并刪除功能。我們提出的方法能對攻擊樹進(jìn)行自適應(yīng)調(diào)整后發(fā)現(xiàn)該木馬。
我們提取此木馬的API調(diào)用集合匹配RT。匹配后得到的部分高亮子樹。
此文件可能達(dá)到如下的攻擊目標(biāo):訪問網(wǎng)絡(luò)、加載動態(tài)庫、獲取系統(tǒng)信息、安裝鉤子、等。如果有黑客針對此木馬要添加獲取該主機上的.exe文件將之刪除的功能演變?yōu)橐粋€功能進(jìn)一步的木馬。經(jīng)過分析,完成此攻擊目標(biāo)所需要的函數(shù)序列如表3所示。
以上的API函數(shù)將被按表3中的排列順序編號A101、A102、A103、A104、A105、A106、A107。其中A101、A106、A107為OR關(guān)系,因為操作對象不同但動作相同,生成G11搜索文件。A102、A103、A104、A105為and關(guān)系因為動作不一樣,但對象一樣,生成G12獲取并刪除文件。API函數(shù)添加后,RT如圖2所示:
6總結(jié)
本文在前人研究的基礎(chǔ)上提出一種自適應(yīng)攻擊樹檢測方案。利用該動態(tài)模型對木馬使用頻率較高的及新出現(xiàn)的API函數(shù)調(diào)用序列進(jìn)行建模,可執(zhí)行文件的API集合與攻擊樹進(jìn)行匹配。實驗證明,該方法能有效地區(qū)分木馬與正常文件,對新木馬也能有效的檢測。下一步的工作,對調(diào)整過程進(jìn)行優(yōu)化。
參考文獻(xiàn)
[1]楊彥,黃皓等.基于攻擊樹的木馬檢測方法[J].計算機工程與設(shè)計,2008,11(29):2711-2714.
[2]王衛(wèi)玲,劉培玉,初建崇.一種改進(jìn)的基于條件互信息的特征選擇算法[J].計算機應(yīng)用,2007,27(2):433-435.
[3]戴敏,黃亞樓,王維.基于文件靜態(tài)信息的木馬檢測模型[J].計算機工程,2006,32(6):198-200.
作者簡介:王曉燕(1984-),女,鄭州電力高等專科學(xué)校電子信息系教師,助教,碩士研究生,主要研究方向:計算機信息安全。
王鵬飛(1980-),男,鄭州供電公司,本科,主要研究方向:電力系統(tǒng)自動化和信息安全。