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