馮本慧
(湖南工學院,湖南 衡陽 421002)
隨著計算機的普及和Internet的發(fā)展,各種類型的惡意代碼,如木馬、蠕蟲、病毒、僵尸程序等出現(xiàn)和傳播的速度與周期也越來越快,根據(jù)國家互聯(lián)網(wǎng)應急中心的7月底安全周報顯示[1],國內(nèi)感染惡意代碼的主機數(shù)量達到了64.9萬,被篡改的網(wǎng)站達到了5875,惡意代碼的防范形式非常的嚴峻。
傳統(tǒng)的惡意代碼檢測技術(shù)主要有基于特征碼的檢測方法與啟發(fā)式的檢測方法,基于特征碼的檢測方法過于依賴特征庫,無法檢測出未知惡意代碼;啟發(fā)的檢測方法又過于依賴專家的經(jīng)驗,檢測效率低且容易誤報,因此亟需一種新的惡意代碼檢測技術(shù),解決傳統(tǒng)檢測技術(shù)的缺陷,基于數(shù)據(jù)挖掘的檢測技術(shù)屬于其中之一,該技術(shù)相對傳統(tǒng)的檢測技術(shù)而言,具有快速、智能化的特點,無須依賴專家經(jīng)驗并且對未知惡意代碼具有很好的檢測能力。本文在研究當前基于數(shù)據(jù)挖掘的惡意代碼檢測技術(shù)基礎之上,提出了一種基于變長指令序列與粗糙集屬性約簡的惡意代碼檢測技術(shù)。
首次將數(shù)據(jù)挖掘技術(shù)應用到惡意代碼檢測中的學者當屬Schultz[2],他利用從PE文件中獲得的字符串序列、字節(jié)序列、導入表中API調(diào)用函數(shù)作為特征,利用PIPPER、樸素貝葉斯、多重樸素貝葉斯算法進行分類學習,在實驗數(shù)據(jù)集上取得了很高的檢測精度,遠高于當時的商業(yè)防病毒軟件。沿著Schultz的開拓性工作,基于數(shù)據(jù)挖掘的惡意代碼檢測技術(shù)成為惡意代碼檢測領(lǐng)域研究的熱點,研究的重點主要集中在兩個方面:(1)特征的表示與選擇;(2)分類算法的選擇。其中常用的惡意代碼特征包括:文件結(jié)構(gòu)特征、字節(jié)特征、指令特征等,分類算法主要采用貝葉斯、決策樹、支持向量機等算法。本文主要關(guān)注于惡意代碼的指令特征,由于惡意代碼與正常文件其行為模式的不同,則其匯編指令也會存在區(qū)別,Bilar[3]通過研究證實了這一點,他發(fā)現(xiàn)惡意代碼與正常文件之間的某些指令的統(tǒng)計特征存在很大的區(qū)別,因此指令特征可以作為區(qū)分惡意代碼與正常文件的特征之一。基于此思想,國外的Santos[4]利用指令序列作為特征進行檢測,由于采用了n-gram滑動窗口技術(shù),最終獲得的特征維數(shù)非常高,于是他利用互信息進行降維,最后利用K鄰近、決策樹、支持向量機算法進行分類檢測,實驗取得的很高的檢測精度。國內(nèi)的張健飛[5]等也是利用指令特征進行檢測,與Santos不同的是,他采用的是變長的指令序列作為特征,并且采用了一種分家族的逐層精華的特征選擇方法,他最后通過實驗指出,該方法具有很好的檢測迷惑代碼的能力。
通過以上的研究,本文發(fā)現(xiàn),Santos的檢測方式,由于獲取的是所有指令所構(gòu)成的指令序列,因此特征的規(guī)模非常大,不便于后續(xù)的學習,同時采用了定長的方式,又可能出現(xiàn)分割特征的問題,而張健飛的檢測方式,雖然考慮到了指令特征的規(guī)模與特征分割的問題,采用了變長指令序列并使用層次化的特征選擇方式,但其特征選擇方式過于復雜,因此本文提出了一種基于變長指令序列與粗糙集屬性約簡的惡意代碼檢測技術(shù),其主要的創(chuàng)新點如下:
(1)采用變長的常用指令序列作為特征。變長的方式可以避免分割特征的問題,同時只考慮常用的匯編指令即所構(gòu)成的指令序列,可以有效的降低最終獲得的特征規(guī)模。
(2)采用粗糙集理論進行特征約簡。由于粗糙集理論具有在不改變分類能力的前提下有效刪除冗余特征的優(yōu)勢,因此將獲得特征再利用粗糙集理論進行特征約簡,排除冗余特征的干擾,從而大大加快后續(xù)學習算法的分類時間。
本文提出的檢測技術(shù)的步驟主要分為兩個階段。第一個階段:訓練階段;第二個階段,檢測階段。訓練階段主要完成特征的獲取與約簡并且完成分類器的訓練。檢測階段,主要利用已獲得的分類器對測試樣本進行分類并評估最終的分類結(jié)果。
本文的正常文件從干凈的XP系統(tǒng)的系統(tǒng)目錄獲得,共計308個樣本,惡意代碼文件來自網(wǎng)絡收集的86個PE型的惡意代碼,然后將獲得的樣本分為2等份,一份做訓練集,一份做測試集。實驗平臺為一臺安裝XP系統(tǒng)的機器,CPU為AMD Athlon 64 X2,內(nèi)存為3G。實驗工具包括反匯編工具IDA Pro,數(shù)據(jù)挖掘平臺Weka。指令序列主要關(guān)注常用的 13 個指令即 mov、push、call、pop、cmp、jz、lea、test、jmp、add、jnz、retn、xor所構(gòu)成的序列,其長度基于 Moskovitch[6]的研究本文限定為2~3,粗糙集屬性約簡算法采用啟發(fā)式的約簡算法,具體算法可參考文獻[7],由于本文獲得樣本規(guī)模不大,分類算法采用在小樣本上表現(xiàn)很好的支持向量機算法。
基于本文的特征提取與處理方法,在訓練集上獲得的初始特征維數(shù)只有1150維,約簡后的特征維數(shù)僅8維,其原因在于,由于只考慮了常用的指令所構(gòu)成的指令序列,而忽略了其它的指令,降低了特征的規(guī)模,因此獲得的初始特征維數(shù)并不是很高,然后再次利用粗糙集理論進行特征約簡后,刪除了其中大量的冗余特征,特征降維幅度非常明顯,僅僅剩余8維,維數(shù)非常低,這樣會大大降低后續(xù)學習算法的分類時間。
所有的訓練集的樣本經(jīng)過特征處理之后,然后利用支持向量機算法訓練分類器,最后在測試集上進行分類測試,其分類精度與漏報率如表1所示,
表1 不同指令序列的檢測精度與漏報率
從表1可以看出,本文采用的變長指令序列的方式相對定長的方式而言其分類精度更高而且漏報率更低,因此在實際應用中更具有應用價值。
本文在研究現(xiàn)有的基于數(shù)據(jù)挖掘的惡意代碼檢測技術(shù)基礎之上,提出了一種基于變長指令序列與粗糙集屬性約簡的惡意代碼檢測技術(shù),該技術(shù)只考慮常用的指令特征構(gòu)成的序列并利用粗糙集理論進行屬性約簡,因此最終獲得的序列特征的規(guī)模維數(shù)非常低,僅僅只有8維,同時本文采用了變長的指令序列模式,降低了分割特征的風險,相對定長的指令序列特征而言,其分類精度更高,漏報率也相對更低。
[1]國家互聯(lián)網(wǎng)應急響應中心.國家互聯(lián)網(wǎng)應急中心的7月底安全周報[EB/OL].[2012-7-22].http://www.cert.org.cn/publish/main/upload/File/20130731CNCERT30.pdf.
[2]Schultz M G,Eskin E,Zadoc E.Data Mining Methods for Detection of New Malicious Executables[C]//Proceedings of the IEEE Symposium On Security And Privacy.Oakland:IEEE,2001,38-49.
[3]Bilar D.Opcodes as predictor for malware[J].International Journal of Electronic Security and Digital Forensics,2007,1(2):156-168.
[4]Santos I,Brezo F,Nieves J,et al.Idea:Opcode-sequence-based malware detection[M]//Engineering Secure Software and Systems.Springer Berlin Heidelberg,2010:35-43.
[5]張健飛,陳黎飛,郭躬德.檢測迷惑惡意代碼的層次化特征選擇方法[J].計算機應用,2012,32(10):2761-2767.
[6]Moskovitch R,Feher C,Tzachar N,et al.Unknown Malcode Detection Using Opcode Representation[M].Intelligence and Security Informatics.Springer Berlin Heidelberg,2008:204-215.
[7]葛浩,李龍澍,楊傳健.改進的快速屬性約簡算法[J].小型微型計算機系統(tǒng),2009,30(2):308-312.