《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于大樣本的隨機(jī)森林惡意代碼檢測與分類算法
基于大樣本的隨機(jī)森林惡意代碼檢測與分類算法
李雪虎,,王發(fā)明,戰(zhàn)凱
(北京江民新科技術(shù)有限公司,,北京 100097)
摘要: 隨著互聯(lián)網(wǎng)的快速發(fā)展,,計算機(jī)安全問題已經(jīng)提高到國家安全的戰(zhàn)略角度。但是在互聯(lián)網(wǎng)上傳播的惡意代碼數(shù)量、種類等都在增加。針對惡意代碼數(shù)量龐大,、傳統(tǒng)特征檢測覆蓋面不夠廣、準(zhǔn)確度不高的問題,,提出了在大樣本下基于隨機(jī)森林的惡意代碼檢測算法,。大樣本下,將PE文件結(jié)構(gòu)特征和敏感API作為輸入特征,采用隨機(jī)森林算法對惡意代碼進(jìn)行檢測,。實(shí)驗(yàn)結(jié)果表明,大樣本下,,隨機(jī)森林算法是一種優(yōu)秀的用于惡意代碼檢測的算法,即使在惡意代碼樣本量龐大的情況下,,仍然具有良好的分類效果,其在現(xiàn)實(shí)應(yīng)用中具有重要的價值,。
中圖分類號:TP393
文獻(xiàn)標(biāo)識碼:A
DOI: 10.19358/j.issn.2096-5133.2018.07.001
中文引用格式:李雪虎,,王發(fā)明,戰(zhàn)凱.基于大樣本的隨機(jī)森林惡意代碼檢測與分類算法[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īng)提高到國家安全的戰(zhàn)略角度,,但是在互聯(lián)網(wǎng)上傳播的惡意代碼的數(shù)量,、種類等都在增加。根據(jù)江民病毒疫情監(jiān)測預(yù)警中心提供的數(shù)據(jù)顯示[1]:2018年5月,,新增病毒1 140種,,感染計算機(jī)13 569臺。北京,、上海,、廣州是主要的被感染和受攻擊地區(qū)。雖然惡意代碼一直在持續(xù)的增長,,但是大部分惡意代碼在編寫過程中都是關(guān)鍵模塊重利用,,其特征行為具有高度的相似性[2]

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

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

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

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

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

得到特征數(shù)據(jù)以后,就可以使用機(jī)器學(xué)習(xí)的相關(guān)模型進(jì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) 對因變量Y的作用,。如果因變量Y有m個觀測值,有n個自變量與之相關(guān)(并且大多數(shù)情況下,m是遠(yuǎn)遠(yuǎn)小于n的);在構(gòu)建決策分類樹的時候,,隨機(jī)森林會隨機(jī)地在原數(shù)據(jù)中重新選擇m個觀測值,,其中有的觀測值可能被多次選擇,有的可能一次都沒有被選到。根據(jù)選擇的樣本進(jìn)行決策樹建模,然后組合多棵決策樹的預(yù)測,,通過投票得出最終的預(yù)測結(jié)果,。

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

本文的隨機(jī)森林算法是在Spark下實(shí)現(xiàn)的,采用的是Python第三方庫Pyspark。實(shí)驗(yàn)分為兩個,,第一個實(shí)驗(yàn)的輸入為樣本文件的文件特征,,包括文件類型、文件大小,、文件導(dǎo)入表、文件基地址,、文件版本等50個特征作為輸入,;第二個實(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%用于測試,。

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

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

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

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

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)評判標(biāo)準(zhǔn)

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

微信截圖_20181022144401.png

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

2.4  結(jié)果分析

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

首先進(jìn)行黑白樣本分類的實(shí)驗(yàn),,查看實(shí)驗(yàn)的查準(zhǔn)率,、查全率和F1值,從實(shí)驗(yàn)結(jié)果可以看出當(dāng)樣本總量在10萬左右的時候,,隨機(jī)森林在辨識黑白樣本的效果上與支持向量機(jī)算法,、邏輯回歸算法相比較,結(jié)果并不理想,。但是隨著樣本數(shù)量增大到90萬,,隨機(jī)森林模型在辨識黑白樣本的查準(zhǔn)率、查全率,、F1值從原來的0.732,、0.711、0.721提升到0.973,、0.973,、0.973,都達(dá)到了三種分類中的最好,,其中在500 000到700 000樣本的時候,,查準(zhǔn)率、查全率和F1值出現(xiàn)了下降,,是因?yàn)殡S著病毒樣本的增加,,其中部分白樣本經(jīng)過編譯器編譯得到的PE結(jié)構(gòu)信息與部分病毒樣本的結(jié)構(gòu)信息相似,使得隨機(jī)森林算法出現(xiàn)了一定的誤差,。但是隨著樣本量的繼續(xù)增大,,這一小部分的樣本對于整體的分類影響逐漸變小。實(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萬病毒樣本,。從實(shí)驗(yàn)結(jié)果可以看出隨機(jī)森林在對Downloader,、Trojan,、Backdoor三種病毒分類時,與支持向量機(jī)分類算法和邏輯回歸分類算法相比較,,實(shí)驗(yàn)效果是比較好的,。隨著惡意代碼的樣本量從9萬增長到45萬時,查準(zhǔn)率,、查全率,、F1值從原來的0.924、0.918,、0.921提升到0.935,、0.932、0.934,,評判標(biāo)準(zhǔn)都有提升,。其實(shí)驗(yàn)結(jié)果如圖4、圖5,、圖6所示。

微信截圖_20181022144759.png

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

3  結(jié)束語

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


參考文獻(xiàn)

[1] 江民病毒疫情監(jiān)測預(yù)警中心.江民病毒疫情歷史數(shù)據(jù)統(tǒng)計[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的惡意程序檢測方法[J]. 電腦知識與技術(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ò)研究與檢測[D]. 北京:北京郵電大學(xué), 2016.

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

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

作者簡介:

李雪虎(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)載。