朱立軍
(沈陽化工大學計算機科學與技術學院,遼寧沈陽110142)
目前,對于已知計算機惡意代碼檢測方法主要是基于特征碼的方法,其基本思想是提取病毒樣本中能唯一標識該病毒的二進制串作為該病毒的“特征碼”,并將此“特征碼”添加到病毒特征庫中,在病毒檢測時,通過在病毒特征庫中查找是否存在相匹配的“特征碼”來發(fā)現(xiàn)病毒.這種方法的優(yōu)點是能快速、準確地檢測出已知惡意代碼;缺點是對未知惡意代碼卻無能為力.
由于對計算機病毒的檢測具有不可判定性[1-2],因此,為了識別未知惡意代碼及其變種,人們提出了很多近似算法,其中具有代表性的是:(1)靜態(tài)啟發(fā)式掃描技術,即在代碼沒有運行的狀態(tài)下,通過分析代碼中的特征序列來識別惡意代碼的方法.例如文獻[3]通過分析可執(zhí)行文件靜態(tài)調用的API序列來識別已知惡意代碼的變種,它的依據(jù)是惡意代碼和它的變種一定有足夠多相似的API調用序列;文獻[4]通過提取已知惡意代碼中的特征串和字節(jié)序列,并利用多重貝葉斯算法建立了分類模型.這些方法雖然取得了較好的識別效果,但缺點是對被加殼的惡意代碼無能為力.(2)基于代碼的動態(tài)行為分析法,與靜態(tài)掃描技術不同的是,行為分析技術監(jiān)控代碼運行時的動態(tài)行為,由于某些行為是病毒、木馬等惡意代碼經(jīng)常出現(xiàn)的行為,而在合法程序中卻比較罕見,它們可作為判別應用程序是否非法的依據(jù).文獻[5]通過代碼運行時對系統(tǒng)注冊表的鍵值、網(wǎng)絡連接以及文件的異常變化來識別是否有惡意行為發(fā)生;該方法的優(yōu)點是簡單、高效,可以檢測出未知惡意代碼,而不用擔心是否該代碼被加殼,但缺點是誤判率和漏報率較高.
因為EXE文件運行時,被調用的API序列能在一定程度上反映該文件的行為特征[6],所以,本文通過分析代碼在植入、安裝及啟動時調用的API序列來作為判定代碼是否為惡意的依據(jù),并采用不同的分類算法進行分析比較.實驗表明:基于API調用序列的未知惡意代碼識別方法具有較好的識別未知惡意代碼的能力,且不同的識別方法有不同的優(yōu)缺點.
目前最為流行、破壞力最大的惡意代碼是Win32 PE病毒,PE(Portable Executables)是win32系統(tǒng)中可執(zhí)行程序的二進制文件形式,它是通過調用操作系統(tǒng)中的API函數(shù)(應用程序接口)來實現(xiàn)各項功能,而這些API函數(shù)來自不同的動態(tài)鏈接庫(DLL).所以,以PE文件為存在形式的病毒在完成植入、控制和傳播等任務時都必須借助API函數(shù)的調用.
實踐表明:與運行階段相比,惡意代碼病毒在植入、安裝階段會表現(xiàn)出顯著的有別于一般合法程序的一系列行為特征,如:自刪除、自我復制、殺進程、設置自啟動、感染EXE文件等.因此,捕獲惡意代碼在植入、安裝階段的API函數(shù)調用,就捕獲到了相應惡意代碼的動態(tài)行為.根據(jù)對惡意代碼和合法程序運行時調用API函數(shù)情況的觀察,本文選取141個較敏感的API函數(shù)作為監(jiān)控對象,部分API函數(shù)如表1所示.
表1 監(jiān)控API函數(shù)調用表Table 1 Part of API functions calls
為了防止惡意代碼對系統(tǒng)的破壞,在虛擬機環(huán)境下分析惡意代碼的動態(tài)行為.虛擬機實際是一款可以虛擬出一臺或多臺計算機的軟件,它具備真實計算機幾乎所有的功能,包括開機、關機、重新啟動等物理功能,并可以在上面安裝操作系統(tǒng)、應用程序,訪問網(wǎng)絡資源等.因為它只是磁盤上的文件虛擬出來的,所以,無論惡意代碼進行何種操作,包括磁盤格式化、重新分區(qū)等危險操作,都可以通過回滾操作把系統(tǒng)恢復到系統(tǒng)改變之前的狀態(tài).目前基于Windows平臺的虛擬機應用程序有Vmware Workstation和Virtual PC for Windows等.該實驗平臺操作系統(tǒng)采用Windows XP Professional,虛擬機采用Vmware Workstation 6.0.Win32 API函數(shù)的攔截可以使用 API Hook[7]技術來實現(xiàn).在這里使用ApiMonitorTrial工具軟件對代碼運行時API函數(shù)的調用情況進行捕獲.
實驗樣本共749個,其中白名單-合法程序樣本是在Windows XP Professional操作系統(tǒng)首次安裝,能確保在干凈的系統(tǒng)環(huán)境下選取操作系統(tǒng)PE文件398個;黑名單-惡意代碼樣本通過網(wǎng)絡及其他途徑搜集351個.將殺毒軟件升級到最新并對這些惡意代碼病毒進行查殺,確認都是惡意代碼病毒.其流程如圖1所示.
圖1 代碼行為監(jiān)控步驟Fig.1 Monitoring steps of code behavior
具體實施步驟如下:
(1)啟動虛擬機,并啟動虛擬機中的Windows XP Professional系統(tǒng);
(2)制作快照,保存當前的系統(tǒng)狀態(tài);
(3)啟動API監(jiān)控程序ApiMonitorTrial;
(4)然后將惡意代碼樣本放置到虛擬機中;
(5)運行惡意代碼;
(6)把代碼的監(jiān)控結果文件報告?zhèn)骰刂鳈C;
(7)回滾到初始狀態(tài);
(8)回到第(4)步,準備處理下一個樣本.
在已獲取樣本主機行為特征量的前提下,需要尋找一種能夠表達樣本與特征之間關系的方法.現(xiàn)將每一個樣本作為統(tǒng)計表中的一個元組,其特征定義為基于一多維空間的向量.對這二類樣本的API調用統(tǒng)計結果采用二維表形式(如表2),表中每個數(shù)據(jù)元組X=(x1,x2,…,xn,c)記為一個樣本的特征向量;其中xi(i=l,2,…,n)表示特征向量中的一個特征屬性,xi∈{0,1},0表示某個API一次都沒有被調用過,1表示某個API被調用過一次或多次.c表示類別,c∈{0,1},1代表黑名單樣本,0代表白名單樣本,
表2 特征向量統(tǒng)計表Table 2 Feature vector of sample
分別采用基于標準化歐式距離的最小距離分類器算法、K-最近鄰算法、余弦相似度算法[8]進行分類比較.為了評價算法性能,引入相關概念如下:
真陽性TP:黑樣本被檢測為黑樣本的數(shù)目
假陽性FP:白樣本被檢測為黑樣本的數(shù)目
真陰性TN:白樣本被檢測為白樣本的數(shù)目
假陰性FN:黑樣本被檢測為白樣本的數(shù)目
檢出率:TPR=TP/(TP+FN)
誤報率:FPR=FP/(FP+TN)
正確率:ACY=(TP+TN)/(TP+TN+FP+FN)
Youden指數(shù)=TPR-FPR,其中Youden指數(shù)的取值范圍為(-1,1),其值越接近于+1,就意味著該檢測模型的判別準確性越好.實驗采用3次交叉驗證的方法,結果如表3.
表3 不同分類方法的比較Table 3 Comparison of different methods
從表3結果可以看出:雖然基于標準化歐式距離的最小距離分類器算法的檢出率較其他兩種方法高,但是誤報率也較其他兩種方法高,而余弦相似度算法和K-最近鄰算法雖然誤報率較最小距離分類器算法低,但是檢出率卻不如最小距離分類器.所以,具體選擇哪個算法要依據(jù)具體要求而定,例如,如果在只要求檢出率的場合,則應選擇最小距離分類器算法,如要求誤報率低的場合,則選擇余弦相似度算法.
由于惡意代碼在植入、安裝階段具有明顯不同于一般程序的行為特征,所以,通過提取代碼運行時調用的API序列作為識別惡意代碼依據(jù)的方式,不但可以識別出未知的惡意代碼,而且也能識別出加殼的惡意代碼.為未知惡意代碼的識別提供了一個新的思路.
[1] Fred Cohen.Computer Viruses:Theory and Experiments[J].Computers&Security,1987:6(1):22-35.
[2] Diomidis Spinellis.Reliable Identification of Bounded-lengh Viruses Is NP-comlee[J].IEEE Transactions on Information Theory,2003,49(1):280-284.
[3] Xu Jianyun,Sung Andrew H,Mukkamala Srinivas,et al.Obfuscated Malicious Executable Scanner[J].Journal of Research and Practice in Information Technology,2007,(39)3:181-197.
[4] Schultzm G,Eskin E,Zadok E,et al.Datamining Methods for Detection of new Malicious Executables[C]//Proceedings of the 2001 IEEE Symposium on Security and Privacy.Washington:IEEE Computer Society,2001:38-49.
[5] Huang Hsien-Der,Chuang Tsung-Yen,Tsai Yi-Lang,et al.Ontology-based Intelligent System for Malware Behavioral Analysis[EB/OL].(2010-04-16)[2011-02-18].http://twman.nchc.org.tw/wpcontent/uploads/2011/02/WCCI2010.pdf.
[6] Xu J-Y,Sung A h,Chavez P,et al.Polymorphicmalicious Executable Scanner by API Sequence Analysis[C]//Proceedings of the 4th International Conference on Hybrid Intelligent Systems(HIS 04).Washington:IEEE Computer Society,2004:378-383.
[7] 裴要強,孟波.Windows黑客技術揭秘與攻防[M].北京:中國鐵路出版社,2010:257-265.
[8] 毛國君,段立娟,王實,等.數(shù)據(jù)挖掘原理與算法[M].北京:清華大學出版社,2005:109-130.