《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于大樣本的隨機(jī)森林惡意代碼檢測(cè)與分類算法
基于大樣本的隨機(jī)森林惡意代碼檢測(cè)與分類算法
李雪虎,王發(fā)明,戰(zhàn)凱
(北京江民新科技術(shù)有限公司,北京 100097)
摘要: 隨著互聯(lián)網(wǎng)的快速發(fā)展,計(jì)算機(jī)安全問(wèn)題已經(jīng)提高到國(guó)家安全的戰(zhàn)略角度。但是在互聯(lián)網(wǎng)上傳播的惡意代碼數(shù)量、種類等都在增加。針對(duì)惡意代碼數(shù)量龐大、傳統(tǒng)特征檢測(cè)覆蓋面不夠廣、準(zhǔn)確度不高的問(wèn)題,提出了在大樣本下基于隨機(jī)森林的惡意代碼檢測(cè)算法。大樣本下,將PE文件結(jié)構(gòu)特征和敏感API作為輸入特征,采用隨機(jī)森林算法對(duì)惡意代碼進(jìn)行檢測(cè)。實(shí)驗(yàn)結(jié)果表明,大樣本下,隨機(jī)森林算法是一種優(yōu)秀的用于惡意代碼檢測(cè)的算法,即使在惡意代碼樣本量龐大的情況下,仍然具有良好的分類效果,其在現(xiàn)實(shí)應(yīng)用中具有重要的價(jià)值。
中圖分類號(hào):TP393
文獻(xiàn)標(biāo)識(shí)碼:A
DOI: 10.19358/j.issn.2096-5133.2018.07.001
中文引用格式:李雪虎,王發(fā)明,戰(zhàn)凱.基于大樣本的隨機(jī)森林惡意代碼檢測(cè)與分類算法[J].信息技術(shù)與網(wǎng)絡(luò)安全,2018,37(7):3-5,21.
Large sample-based random forest malicious code detection and classification algorithm
Li Xuehu, Wang Faming, Zhan Kai
(Beijing Jiangmin New Technology Co., Ltd.,Beijing 100097, China)
Abstract: With the rapid development of Internet, computer security has been raised to the strategic perspective of national security. However, the number and types of malicious code that spread on Internet are increasing. Due to large number of malicious code, insufficient coverage of traditional feature detection, and low accuracy, this paper proposes a malicious code detection algorithm based on random forest under large samples. Under large samples, the structural characteristics of the PE file and the sensitive API are used as input features. The random forest algorithm is used to detect the malicious code. Experimental results show that under large samples, random forest algorithm is an excellent algorithm for malicious code detection. Even if the amount of malicious code is large, it still has a good classification effect. It is of great value in practical application.
Key words : PE file structure features; sensitive API; random forest; malicious code detection and classification

0  引言


隨著互聯(lián)網(wǎng)的快速發(fā)展,計(jì)算機(jī)安全問(wèn)題已經(jīng)提高到國(guó)家安全的戰(zhàn)略角度,但是在互聯(lián)網(wǎng)上傳播的惡意代碼的數(shù)量、種類等都在增加。根據(jù)江民病毒疫情監(jiān)測(cè)預(yù)警中心提供的數(shù)據(jù)顯示[1]:2018年5月,新增病毒1 140種,感染計(jì)算機(jī)13 569臺(tái)。北京、上海、廣州是主要的被感染和受攻擊地區(qū)。雖然惡意代碼一直在持續(xù)的增長(zhǎng),但是大部分惡意代碼在編寫過(guò)程中都是關(guān)鍵模塊重利用,其特征行為具有高度的相似性[2]

首先,惡意代碼為了偽裝自身,會(huì)對(duì)自身代碼結(jié)構(gòu)進(jìn)行修改,而修改自身代碼結(jié)構(gòu)的方法則具有規(guī)律性;其次,惡意代碼為了實(shí)現(xiàn)獲取計(jì)算機(jī)相關(guān)權(quán)限、修改計(jì)算機(jī)重要文件等敏感操作,就需要調(diào)用系統(tǒng)相關(guān)的API函數(shù)來(lái)達(dá)到目的。所以本文根據(jù)以上惡意代碼的特點(diǎn)通過(guò)機(jī)器學(xué)習(xí)的方法實(shí)現(xiàn)對(duì)惡意代碼的辨別與分類。

1  惡意代碼分類算法相關(guān)研究

1.1  基于API調(diào)用的特征提取

應(yīng)用程序編程接口(Application Programming Interface, API)是可以作為惡意代碼分類特征使用的,惡意程序通過(guò)調(diào)用一些API(主要是系統(tǒng)底層API),達(dá)到竊取用戶敏感信息或者獲取本計(jì)相操作權(quán)限等,而這些API在大部分的惡意代碼中均被大量使用,本文將這些API稱為敏感API。在文獻(xiàn)[3]中已經(jīng)證實(shí)在同一種分類算法中,使用敏感API得到的分類結(jié)果準(zhǔn)確度要優(yōu)于不使用敏感API得到的分類結(jié)果準(zhǔn)確度,故本文將敏感API作為惡意代碼分類的特征向量。

一般提取惡意代碼特征主要有兩種方法:靜態(tài)分析方法和動(dòng)態(tài)分析方法。靜態(tài)分析主要使用IDA[4]、JEB等反匯編工具,主要特征有PE文件結(jié)構(gòu)信息和敏感API調(diào)用等。動(dòng)態(tài)分析方法主要是使用沙箱[5](例如布谷鳥(niǎo))等程序模擬操作系統(tǒng)環(huán)境,監(jiān)測(cè)其中未知程序的行為并與已知的惡意代碼行為進(jìn)行匹配,如果匹配成功,則可判定未知程序?yàn)閻阂獬绦?。但是在具體的應(yīng)用過(guò)程中發(fā)現(xiàn),由于系統(tǒng)API層次較低,沙箱進(jìn)行行為監(jiān)控時(shí),難以獲得行為的準(zhǔn)確含義,并且沙箱分析出結(jié)果的速度緩慢,耗時(shí)較長(zhǎng)。由于這些缺點(diǎn)的存在,故本文采用靜態(tài)特征分析的方法。

得到特征數(shù)據(jù)以后,就可以使用機(jī)器學(xué)習(xí)的相關(guān)模型進(jìn)行惡意代碼的分類識(shí)別。分類算法有很多,常見(jiàn)的算法有K近鄰(K-Nearest Neighbor, KNN)[6]、支持向量機(jī)(Support Vector Machine, SVM)[7]、邏輯回歸(Logistic Regression)[8]、卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network, CNN)[9]等。本文主要是使用隨機(jī)森林進(jìn)行惡意代碼分類。

1.2  隨機(jī)森林

隨機(jī)森林可以解釋為若干自變量(X1,X2,…,Xi,…,Xn) 對(duì)因變量Y的作用。如果因變量Y有m個(gè)觀測(cè)值,有n個(gè)自變量與之相關(guān)(并且大多數(shù)情況下,m是遠(yuǎn)遠(yuǎn)小于n的);在構(gòu)建決策分類樹(shù)的時(shí)候,隨機(jī)森林會(huì)隨機(jī)地在原數(shù)據(jù)中重新選擇m個(gè)觀測(cè)值,其中有的觀測(cè)值可能被多次選擇,有的可能一次都沒(méi)有被選到。根據(jù)選擇的樣本進(jìn)行決策樹(shù)建模,然后組合多棵決策樹(shù)的預(yù)測(cè),通過(guò)投票得出最終的預(yù)測(cè)結(jié)果。

1.3  隨機(jī)森林算法實(shí)現(xiàn)

本文的隨機(jī)森林算法是在Spark下實(shí)現(xiàn)的,采用的是Python第三方庫(kù)Pyspark。實(shí)驗(yàn)分為兩個(gè),第一個(gè)實(shí)驗(yàn)的輸入為樣本文件的文件特征,包括文件類型、文件大小、文件導(dǎo)入表、文件基地址、文件版本等50個(gè)特征作為輸入;第二個(gè)實(shí)驗(yàn)的輸入為敏感API特征,其中調(diào)節(jié)的參數(shù)為:numTrees=150,maxDepth=30,labelCol=“indexed”,featuresCol='features',seed=42,其余參數(shù)保持不變。本文將總數(shù)據(jù)集的80%用于訓(xùn)練,20%用于測(cè)試。

2  實(shí)驗(yàn)分析

2.1  實(shí)驗(yàn)數(shù)據(jù)集

惡意代碼數(shù)據(jù)集是進(jìn)行惡意代碼分析的基礎(chǔ),機(jī)器學(xué)習(xí)算法只有結(jié)合相關(guān)的數(shù)據(jù)集對(duì)樣本進(jìn)行訓(xùn)練,才能更好地實(shí)現(xiàn)檢測(cè)功能。

本文采用的數(shù)據(jù)集是江民新科技術(shù)有限公司病毒庫(kù)中的數(shù)據(jù)集。本次采用的數(shù)據(jù)集總量為90萬(wàn),其中45萬(wàn)白樣本,45萬(wàn)病毒樣本。并且在45萬(wàn)病毒樣本中,Downloader、Trojan、Backdoor三類樣本樣本量分別是15萬(wàn)、15萬(wàn)、15萬(wàn)。

2.2  實(shí)驗(yàn)環(huán)境

實(shí)驗(yàn)環(huán)境:CPU:Intel(R) Xeon(R) CPU E5645 @ 2.40 GHz,操作系統(tǒng)CentOS Linux release 7.3.1611,內(nèi)存32 GB。

Hadoop和Spark的版本為:Hadoop版本2.7.1,Spark版本2.2.1。

2.3  實(shí)驗(yàn)評(píng)判標(biāo)準(zhǔn)

用查準(zhǔn)率(Precision)、查全率(Recall)和F1度量評(píng)估本文算法,通常以關(guān)注的類為正類,其他類為負(fù)類,指標(biāo)的取值為0~1。這些度量的計(jì)算公式如下:

微信截圖_20181022144401.png

其中,TP(True Positive)是指將正類預(yù)測(cè)為正類數(shù),F(xiàn)P(False Positive)是指將負(fù)類預(yù)測(cè)為正類數(shù),F(xiàn)N(False Negative)是指正類預(yù)測(cè)為負(fù)類數(shù)。

2.4  結(jié)果分析

在所選擇的數(shù)據(jù)集(江民新科技術(shù)有限公司病毒庫(kù)中的數(shù)據(jù)集)上將本文的隨機(jī)森林算法與支持向量機(jī)算法、邏輯回歸算法做比較。

首先進(jìn)行黑白樣本分類的實(shí)驗(yàn),查看實(shí)驗(yàn)的查準(zhǔn)率、查全率和F1值,從實(shí)驗(yàn)結(jié)果可以看出當(dāng)樣本總量在10萬(wàn)左右的時(shí)候,隨機(jī)森林在辨識(shí)黑白樣本的效果上與支持向量機(jī)算法、邏輯回歸算法相比較,結(jié)果并不理想。但是隨著樣本數(shù)量增大到90萬(wàn),隨機(jī)森林模型在辨識(shí)黑白樣本的查準(zhǔn)率、查全率、F1值從原來(lái)的0.732、0.711、0.721提升到0.973、0.973、0.973,都達(dá)到了三種分類中的最好,其中在500 000到700 000樣本的時(shí)候,查準(zhǔn)率、查全率和F1值出現(xiàn)了下降,是因?yàn)殡S著病毒樣本的增加,其中部分白樣本經(jīng)過(guò)編譯器編譯得到的PE結(jié)構(gòu)信息與部分病毒樣本的結(jié)構(gòu)信息相似,使得隨機(jī)森林算法出現(xiàn)了一定的誤差。但是隨著樣本量的繼續(xù)增大,這一小部分的樣本對(duì)于整體的分類影響逐漸變小。實(shí)驗(yàn)結(jié)果如圖1、圖2、圖3所示。

微信截圖_20181022144730.png


其次,再進(jìn)行基于Downloader、Trojan、Backdoor這三種病毒分類的實(shí)驗(yàn),本次實(shí)驗(yàn)的惡意代碼數(shù)據(jù)是總數(shù)據(jù)集中的45萬(wàn)病毒樣本。從實(shí)驗(yàn)結(jié)果可以看出隨機(jī)森林在對(duì)Downloader、Trojan、Backdoor三種病毒分類時(shí),與支持向量機(jī)分類算法和邏輯回歸分類算法相比較,實(shí)驗(yàn)效果是比較好的。隨著惡意代碼的樣本量從9萬(wàn)增長(zhǎng)到45萬(wàn)時(shí),查準(zhǔn)率、查全率、F1值從原來(lái)的0.924、0.918、0.921提升到0.935、0.932、0.934,評(píng)判標(biāo)準(zhǔn)都有提升。其實(shí)驗(yàn)結(jié)果如圖4、圖5、圖6所示。

微信截圖_20181022144759.png

從以上結(jié)果可知,隨機(jī)森林在分類的泛化能力上要優(yōu)于SVM和邏輯回歸。

3  結(jié)束語(yǔ)

本文聚焦在大樣本下利用機(jī)器學(xué)習(xí)算法對(duì)惡意代碼進(jìn)行識(shí)別和分類檢測(cè),選擇PE文件結(jié)構(gòu)和敏感API作為輸入,實(shí)驗(yàn)數(shù)據(jù)表明隨機(jī)森林的評(píng)價(jià)效果比支持向量機(jī)、邏輯回歸模型的效果優(yōu)秀。在進(jìn)行三種病毒分類上,雖然隨機(jī)森林的效果最好,但是隨機(jī)森林對(duì)于某些白樣本使用和病毒樣本相同的編譯器時(shí),容易將其劃分為病毒樣本。其次,準(zhǔn)確率仍然不是很高,只有0.935左右,在基于大樣本的前提下,模型的分類效果仍然需要提升,以上兩個(gè)問(wèn)題是本文今后工作的重點(diǎn)。


參考文獻(xiàn)

[1] 江民病毒疫情監(jiān)測(cè)預(yù)警中心.江民病毒疫情歷史數(shù)據(jù)統(tǒng)計(jì)[EB/OL].[2018-05-30].http://virusinfo.jiangmin.com/virinfo/virusDataStat.aspx.

[2] SIKORSKI M, HONIG A.惡意代碼分析實(shí)戰(zhàn)[M].諸葛建偉,姜輝,張光凱,譯.北京:電子工業(yè)出版社,2014.

[3] 盛超,魏盛娜. 基于權(quán)限與敏感API的惡意程序檢測(cè)方法[J]. 電腦知識(shí)與技術(shù), 2017, 13(33):67-69.

[4] HEX-RAYS SA. IDA pro introduction[EB/OL]. [2018-05-30].http://www.hex-rays. com/products.shtml/.

[5] BABU A J,RAVEENDRANATH R,RAJAMANJ V,et al,Dissecting SMS malwares in Android[C] //Proceedings of International Conference on Contemporary Computing and Informatics,2014:1065-1069.

[6] ABOU-ASSALEH T, CERCONE N, KESELJ V, et al. N-gram-based detection of new malicious code[C]//The 28th Annual International Computer Software and Applications Conference (COMPSAC), 2004:41-42.

[7] ANDERSON B, QUIST D, NEIL J, et al. Graph-based malware detection using dynamic analysis[J]. Journal in Computer Virology,2011, 7(4): 247-258.

[8] 郭尚瓚. 基于流量行為特征的僵尸網(wǎng)絡(luò)研究與檢測(cè)[D]. 北京:北京郵電大學(xué), 2016.

[9] 楊曄. 基于行為的惡意代碼檢測(cè)方法研究[D]. 西安:西安電子科技大學(xué), 2015.

(收稿日期:2018-06-26)

作者簡(jiǎn)介:

李雪虎(1990-),男,學(xué)士,工程師,主要研究方向:反病毒、逆向分析、網(wǎng)絡(luò)攻防。

王發(fā)明(1993-),男,學(xué)士,工程師,主要研究方向:大數(shù)據(jù)、分布式、機(jī)器學(xué)習(xí)。

戰(zhàn)凱(1990-),男,碩士研究生,主要研究方向:推薦系統(tǒng)、反病毒。


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。