張雨薇 黃迎春
摘 要:惡意軟件的日益增長是對網(wǎng)絡(luò)世界最大的威脅,基于簽名的檢測對于惡意軟件檢測率較低,局限性大,因此提出基于機(jī)器學(xué)習(xí)的惡意軟件檢測技術(shù)來代替?zhèn)鹘y(tǒng)的簽名檢測。根據(jù)沙箱中提取軟件的特征類型包括注冊表和API函數(shù)調(diào)用,并量化數(shù)據(jù),使用機(jī)器學(xué)習(xí)的模型對此數(shù)據(jù)進(jìn)行分類識別,并取得了較好的分類效果。
關(guān)鍵詞:惡意軟件 檢測技術(shù) 機(jī)器學(xué)習(xí) 特征類型
中圖分類號:G64 文獻(xiàn)標(biāo)識碼:A 文章編號:1672-3791(2018)10(c)-000-03
惡意軟件對網(wǎng)絡(luò)世界的威脅不斷增長。根據(jù)Mcafee實(shí)驗(yàn)室的一份報(bào)告,Mcafee實(shí)驗(yàn)室引入了4000萬新的惡意軟件樣本。2015年第一季度惡意軟件庫,帶來了總數(shù)高達(dá)4億的惡意軟件[1]?;诤灻麢z測技術(shù)的惡意軟件檢測依賴于在樣本中發(fā)現(xiàn)的存儲在數(shù)據(jù)庫中的簽名。然而,提取這些樣本的勞動量很大,基于簽名掃描技術(shù)正在努力跟上我們今天看到的惡意軟件的快速增長。如果簽名庫更新的不及時(shí),就不能夠及時(shí)地檢測惡意軟件。因此研究采用機(jī)器學(xué)習(xí)模式的方法,通過對惡意軟件的特征類型進(jìn)行訓(xùn)練,學(xué)習(xí)惡意軟件的特性,以增強(qiáng)對于惡意軟件檢測的精度和速度。
1 惡意軟件檢測方法描述
目前,對于惡意軟件檢測方面的研究主要有兩種類型的惡意軟件檢測方法,即靜態(tài)特性檢測和動態(tài)特性測。靜態(tài)特性檢測是指在不運(yùn)行程序的前提下,對惡意軟件的執(zhí)行文件的PE頭文件或者特定字符串進(jìn)行檢測,如二進(jìn)制n-gram和opcode序列;李陽對于PE文件的組織結(jié)構(gòu)進(jìn)行分析,來對木馬病毒進(jìn)行識別[2];陳勤等人對PE頭文件進(jìn)行分析,檢測軟件是否加殼[3];樊震等人通過分析PE文件結(jié)構(gòu)中的異常值,運(yùn)用樸素貝葉斯支持向量機(jī)等算法對進(jìn)行病毒檢測[4];相對于動態(tài)特性檢測是指在運(yùn)行程序的情況下,針對運(yùn)行后產(chǎn)生的行為特征如DNS請求、訪問文件和修改注冊表,調(diào)用API函數(shù)等行為。屈亞鑫對于現(xiàn)有的程序行為捕獲技術(shù)進(jìn)行了研究,運(yùn)用機(jī)器學(xué)習(xí)的分類算法對木馬程序進(jìn)行識別[5]。
蘇璞睿提出一種基于進(jìn)程行為的異常檢測模型,來判斷進(jìn)程的行為是否異常[6];盡管靜態(tài)特性檢測惡意軟件有它的優(yōu)勢,但仍然容易受到包裝和加密的樣本攻擊。將機(jī)器學(xué)習(xí)模型應(yīng)用于惡意軟件的行為特性檢測中,就不那么容易受到包裝和加密的影響。
2 惡意軟件分類識別
2.1 特征提取
對于惡意軟件的特征主要選擇了注冊表,動態(tài)鏈接庫,API函數(shù)調(diào)用特征,來對惡意軟件進(jìn)行識別。
2.1.1 注冊表
大多數(shù)惡意軟件都會在特定位置增加、修改特定的鍵值與更改文件的關(guān)聯(lián)程序等方法在固定的位置來修改注冊表或通過注冊為定時(shí)任務(wù)、利用注冊表鍵值來實(shí)現(xiàn)自動運(yùn)行,還有一些惡意程序會通過修改注冊表鍵值,并造成任務(wù)管理器無法啟動。
2.1.2 API函數(shù)調(diào)用
API是操作系統(tǒng)為應(yīng)用程序提供的服務(wù)性接口,應(yīng)用程序在完成文件讀寫、網(wǎng)絡(luò)訪問以及其他重要資源的訪問時(shí)都會調(diào)用API。惡意程序在實(shí)現(xiàn)某個(gè)特征功能時(shí)同樣會調(diào)用功能相似的API函數(shù),因此通過提取API函數(shù)調(diào)用序列特征來識別惡意程序行為是一種有效的方法。
本文對注冊表項(xiàng)和API函數(shù)這兩類惡意軟件特征分別來對惡意軟件進(jìn)行識別。所有這些數(shù)據(jù)都以文本的形式存在,在模型訓(xùn)練之前,首先將文本數(shù)據(jù)進(jìn)行量化。
選擇術(shù)語頻率(TF)方法,它為每個(gè)術(shù)語分配唯一的ID,并計(jì)算每個(gè)文檔中術(shù)語的出現(xiàn)。每個(gè)單項(xiàng)的發(fā)生頻率被認(rèn)為是一個(gè)特征。通過為每個(gè)文檔創(chuàng)建一個(gè)特征向量,不在文檔中的術(shù)語由0表示,并將所有的向量組合成一個(gè)矩陣,得到一個(gè)表示數(shù)據(jù)集中所有特征的矩陣。在數(shù)據(jù)集上應(yīng)用術(shù)語頻率方法,獲得了19532個(gè)注冊表特性和38096個(gè)API函數(shù)調(diào)用特性。
2.2 特征選擇
在產(chǎn)生訓(xùn)練模型之前,必須減少特征提取階段產(chǎn)生的特征數(shù)量,以避免過度擬合。為此,本文采用詞頻-逆文檔頻率算法 (TF-IDF)。TF-IDF重新權(quán)衡特征集,為所有文檔中出現(xiàn)頻率較低的詞條賦予更高的權(quán)重。在大多數(shù)文檔中出現(xiàn)的特性提供了較少的樣本信息,因此從數(shù)據(jù)集中刪除的安全性更高。IDF的計(jì)算結(jié)果如下:
(1)
其中是包含t的樣本個(gè)數(shù),N是樣本的總數(shù)。在計(jì)算了一個(gè)詞條的IDF分?jǐn)?shù)之后,通過將詞條頻率乘以IDF分?jǐn)?shù),將權(quán)重賦給這個(gè)詞條。通過為語料庫中的每個(gè)詞條分配一個(gè)權(quán)重,來創(chuàng)建模型分類的數(shù)據(jù)集。在訓(xùn)練的每個(gè)機(jī)器學(xué)習(xí)模型中測試不同數(shù)量的特征,從而找到訓(xùn)練特定模型時(shí)要選擇的最優(yōu)特征數(shù)。
2.3 模型訓(xùn)練
本文采用Scikit-learn中的機(jī)器學(xué)習(xí)方法進(jìn)行特征選擇和模型訓(xùn)練。
我們采用以下方法進(jìn)行模型的分類訓(xùn)練。
(1)支持向量機(jī)。
(2)隨機(jī)梯度下降。
(3)決策樹。
(4)K近鄰。
(5)伯努利樸素貝葉斯。
(6)多項(xiàng)式樸素貝葉斯。
以下是每個(gè)模型的簡要描述。
(1)支持向量機(jī):支持向量機(jī)(SVM)是有監(jiān)督的機(jī)器學(xué)習(xí)模型,該模型是對空間中表示數(shù)據(jù)點(diǎn)的特征向量的訓(xùn)練。它用一個(gè)盡可能寬的超平面將數(shù)據(jù)點(diǎn)從不同的類中分離出來。新的數(shù)據(jù)點(diǎn)根據(jù)它們所屬的超平面的側(cè)面進(jìn)行分類。在訓(xùn)練SVM時(shí),我們需要確定的第一個(gè)參數(shù)是核類型,它以線性函數(shù)、多項(xiàng)式函數(shù)、徑向基函數(shù)或sigmoid函數(shù)的形式出現(xiàn)。在多項(xiàng)式核的情況下,也測試了不同程度的多項(xiàng)式。最后,為了確定最佳的懲罰值,需要確定懲罰項(xiàng)的幾個(gè)參數(shù)值。
(2)隨機(jī)梯度下降:隨機(jī)梯度下降(SGD)是一種用于最小化目標(biāo)損失函數(shù)的優(yōu)化方法。SGD的工作原理是通過模型參數(shù)調(diào)整最小化底層分類器的誤差來工作。在Scikit學(xué)習(xí)中,SGD可以用來優(yōu)化生成線性SVM的損失函數(shù),用于邏輯回歸的對數(shù)損失函數(shù)。
(3)決策樹:決策樹的分類器將特征映射到類標(biāo)簽,其中樹的內(nèi)部節(jié)點(diǎn)代表特征,樹葉代表類標(biāo)簽。通過遞歸將特征集分割成更小的子集來學(xué)習(xí)樹,直到每個(gè)子集代表一個(gè)類標(biāo)簽為止。當(dāng)一個(gè)新的數(shù)據(jù)點(diǎn)被分類時(shí),它從根節(jié)點(diǎn)開始,根據(jù)哪個(gè)特征最能代表數(shù)據(jù)點(diǎn),沿著一條路徑到其中一個(gè)葉子。
(4)k近鄰:最簡單的機(jī)器學(xué)習(xí)模型之一,k近鄰(KNN)根據(jù)距離數(shù)據(jù)點(diǎn)最近的k個(gè)鄰居的大多數(shù)類對新的數(shù)據(jù)點(diǎn)進(jìn)行分類。k的值被用作KNN的輸入,可以修改以產(chǎn)生更精確的分類器。此外,權(quán)重可以分配給鄰居,因?yàn)橄噜彽泥従佑休^高的權(quán)重。
(5)伯努利樸素貝葉斯和多項(xiàng)式樸素貝葉斯:伯努利樸素貝葉斯(BernoulliNB)和多項(xiàng)式樸素貝葉斯(多項(xiàng)式)是兩個(gè)相似的分類器,但是有著細(xì)微的差別。伯努利(BernoulliNB)用于描述伯努利分布之后的數(shù)據(jù)。貝葉斯定理應(yīng)用于以出現(xiàn)頻率為特征的多項(xiàng)式分布數(shù)據(jù)。BernoulliNB和多項(xiàng)式都應(yīng)用貝葉斯定理,假設(shè)其特征是獨(dú)立的。
3 分析與結(jié)果
本文通過VirusShare[7]和XHeaven[8]網(wǎng)站上采集的惡意軟件樣本,其中包括500個(gè)惡意樣本和200個(gè)良性樣本,并將樣本感染主機(jī),采用cuckoo[9]沙箱自動對樣本進(jìn)行分析。Cuckoo沙箱用VirusTotal[10]掃描每個(gè)樣本,并將結(jié)果保存在報(bào)告中。通過惡意軟件樣本和良性軟件的報(bào)告,我們采用不同的機(jī)器學(xué)習(xí)模型方法對其進(jìn)行分類識別。其模型的分類識別的精確度如下所示:
(2)
如果TP是真正的陽性,TN是真實(shí)的否定,F(xiàn)P是假陽性,而FN是假陰性。此外,AUROC的計(jì)算方法是,首先繪制出所有正負(fù)片的真值,然后再計(jì)算出所產(chǎn)生的曲線下的面積。表1和表2分別總結(jié)了所有模型在準(zhǔn)確性和AUROC評分的結(jié)果。
4 結(jié)語
惡意軟件對于當(dāng)前世界存在巨大的威脅,每年會產(chǎn)生大概4000萬個(gè)惡意軟件,基于簽名的靜態(tài)檢測技術(shù)已經(jīng)不能適應(yīng)時(shí)代的步伐,本文采用內(nèi)存中的惡意軟件的動態(tài)行為特征,采用機(jī)器學(xué)習(xí)的模型對數(shù)據(jù)進(jìn)行訓(xùn)練,識別,并取得了較好的實(shí)驗(yàn)結(jié)果。
參考文獻(xiàn)
[1] McAfee Labs,“Threat report,”[EB/OL].Available:http://www.mcafee.com/us/resources/reports/rp-quarterly-threat-q1-2015.pdf.
[2] 李陽.基于PE文件的加殼檢測與木馬識別技術(shù)[D].廣西大學(xué),2014.
[3] 屈亞鑫.反木馬系統(tǒng)中程序行為分析關(guān)鍵技術(shù)研究與實(shí)現(xiàn)[D].北京郵電大學(xué),2014.
[4] 陳勤,黃劍軍,褚一平,等.基于帶權(quán)歐拉距離的PE文件殼檢測技術(shù)[J].計(jì)算機(jī)工程與科學(xué),2010,32(7):1-3,7.
[5] 樊震,楊秋翔.基于PE文件結(jié)構(gòu)異常的未知病毒檢測[J].計(jì)算機(jī)技術(shù)與發(fā)展,2009,19(10):160-163.
[6] 蘇璞睿,馮登國.基于進(jìn)程行為的異常檢測模型[J].電子學(xué)報(bào),2006(10):1809-1811.
[7] Virus Share[EB/OL].http://www.virusshare.com.
[8] XHeaven[EB/OL].http://www.XHeavean.com.
[9] Cuckoo[EB/OL].http://www.cuckoo.com.
[10] virustotal在線沙箱[EB/OL].http://www.virustotal.com.