◆孫澤浩
?
基于深度學習的惡意代碼檢測技術
◆孫澤浩
(武漢市第二高級中學 湖北 430010)
本文首先分析了當前惡意代碼檢測技術所面臨的問題,介紹了深度學習技術及caffe深度學習框架,最后提出了一種基于深度學習的惡意代碼檢測方法,并采用6000個樣本進行訓練測試,檢測率可以達到99%,證明了本方法具有較好的可行性。
深度學習;惡意代碼;Caffe
隨著人類智能工業(yè)的發(fā)展,智能手機迅速普及。據(jù)著名的數(shù)據(jù)預測公司Garner統(tǒng)計,Android系統(tǒng)手機占了87.7%的份額[1]。但因Android系統(tǒng)的開放性,它也成為了眾多惡意代碼開發(fā)者的活躍地盤。由于惡意代碼的數(shù)量和種類越來越多,加上代碼混淆、代碼變異、代碼加密等技術的興起,使得惡意代碼檢測變得越來越困難。全球每天都有超過百萬的安卓惡意代碼變種在肆虐,傳統(tǒng)的病毒庫對比技術很難適應惡意代碼的變種速度[2],因此,研究如何不完全依賴于病毒庫,檢測未知惡意代碼成為研究熱點。
近年來,隨著計算機硬件性能的提升,深度學習(Deep Learning)得到了巨大的發(fā)展。2016年谷歌公司DeepMind團隊開發(fā)的深度學習系統(tǒng)AlphaGo[3]以4:1的驚人戰(zhàn)績打敗了韓國圍棋界傳奇人物李世石九段,大大提升了深度學習的關注度。目前,深度學習技術已經(jīng)在很多計算機傳統(tǒng)領域,如圖像識別、語音識別、手寫識別、文本識別等取得了突破性的進步。惡意代碼檢測本質上也是一種分類與識別的問題,在獲取海量的惡意代碼數(shù)據(jù)基礎上,采用深度學習進行惡意代碼檢測成為了一種新路徑。本文提出了一種基于深度學習的惡意代碼檢測方法,并采用6000個樣本進行訓練測試,檢測率可以達到99%,驗證了該方法的可行性。
深度學習的興起,最早因機器學習領域的泰斗、多倫多大學G.E.Hinton教授帶領的深度學習團隊在ImageNet圖像分類大賽中一舉奪魁,其準確率超過了第二名10%以上[4],而引起了計算機視覺領域的極大震動,再一次掀起了深度學習的熱潮。
深度學習是機器學習研究的一個新領域,其動機在于建立、模擬人腦進行分析學習的神經(jīng)網(wǎng)絡,通過模仿人腦的機制來解讀數(shù)據(jù),例如圖像,聲音和文本。實際上它是一種無監(jiān)督的學習,其概念源于人工神經(jīng)網(wǎng)絡的研究,含多隱層的多層感知器就是一種深度學習結構,其通過組合低層特征形成更加抽象的高層表示屬性類別或特征,以發(fā)現(xiàn)數(shù)據(jù)的分布式特征表達。深度學習允許那些由多處理層組成的計算機模型去學習具有多個等級抽象數(shù)據(jù)的表達,可利用反向傳播算法發(fā)現(xiàn)大數(shù)據(jù)的內(nèi)在復雜結構,然后BP算法會指導機器如何在每一層利用從上一次獲得的表達來改變其內(nèi)部參數(shù)。在許多領域得到了廣泛的應用,例如視覺對象識別、語音識別、對象檢測等,同時對醫(yī)藥學的新發(fā)現(xiàn)和基因組學的新進展也起到了促進作用。
深度學習采用的模型為深層神經(jīng)網(wǎng)絡(Deep Neural Networks,DNN)模型,即包含多個隱藏層(Hidden Layer,也稱隱含層)的神經(jīng)網(wǎng)絡(Neural Networks,NN),利用模型中的隱藏層,通過特征組合的方式,逐層將原始輸入轉化為淺層特征、中層特征、高層特征直至最終的任務目標。下圖1展現(xiàn)的就是深度學習的基本處理流程[5]。
圖1 深度學習基本處理流程
在深度學習概念的提出以及GPU被用于科學計算之前,大型神經(jīng)網(wǎng)絡幾乎鮮有問津。究其原因,其一,深度神經(jīng)網(wǎng)絡面臨著由梯度消失和過擬合等原因導致的訓練困難的問題。其二,大型神經(jīng)網(wǎng)絡動輒百萬甚至千萬級的參數(shù)數(shù)量不僅令人望而生畏。而且面臨著訓練周期以周甚至月為單位計量的尷尬局面。深度學習的提出在很大程度上解決了梯度消失和過擬合的問題。而GPU計算平臺被直接用于科學計算,主要以NVIDIA公司的CUDA框架為底層系統(tǒng)。在此基礎上,科研人員開發(fā)了眾多的深度學習開源框架,其中Caffe是較為成熟和完善的一個深度學習框架[6]。
Caffe是一個清晰而高效的深度學習框架,它是開源的,核心語言是C++,支持命令行、Python和MATLAB接口,既可以在CPU上運行也可以在GPU上運行。而且可以應用在視覺、語音識別、機器人、神經(jīng)科學和天文學等領域。Caffe提供了一個完整的工具包,用來訓練、測試、微調和部署模型。它具有模塊化、表示和現(xiàn)實分離、測試覆蓋全面、接口豐富和預訓練參考模型等特點。
Caffe框架支持多種網(wǎng)絡模型,比如LeNet、ImageNet等。下面以LeNet為例進行介紹。圖2為LeNet網(wǎng)絡的示意圖,LeNet模型結構一共包括8層網(wǎng)絡:由下至上分別為輸入層、卷積層C1、下采樣層S2、卷積層C3、下采樣層S4、卷積層C5、全連接層F6和輸出全連接層。
圖片經(jīng)過固定的裁剪后固定輸入的像素大小后,將訓練集通過上圖C1、S2、C3、S4兩對卷積層和池化層,提取出圖片的主要特征,隨后C5、F6作為后層全連接層的輸入,輸入的特征在全連接與訓練樣本的標簽之間不斷調整權值,通過調整權值的大小,來使網(wǎng)絡的具有記憶性。
圖2 LeNet網(wǎng)絡圖
最后的全連接層也為輸出層,輸出的節(jié)點數(shù)為結果數(shù)。例如使用LeNet對手寫數(shù)字圖片的識別,那么節(jié)點數(shù)就為10,分別代表數(shù)字0-9。若為手寫大寫字母識別,那么節(jié)點數(shù)字就為26。通過最后的全連接層輸出結果。
深度學習的特長是對學習的數(shù)據(jù)進行分類,為此,本文提出圖3所示的惡意代碼檢測處理流程。
圖3 基于深度學習的惡意代碼檢測處理流程
要進行深度學習,首先要收集大量學習數(shù)據(jù)。在惡意代碼檢測領域,需要采集大量正常的和惡意的代碼,對其進行特征提取,進而生成提供給深度學習模塊學習的素材。
通??梢圆捎渺o態(tài)分析技術,使用反編譯工具獲取反編譯的Smali文件,去掉無關的動作指令并進行統(tǒng)計,為深度學習提供所需的特征。
APKTool是Google提供的APK編譯工具,能夠反編譯APK文件,將數(shù)萬個APK樣本按照樣本的順序,進行如流程圖4的步驟處理:
圖4 APK反編譯執(zhí)行流程圖
運行編寫的python腳本將提取出來的核心Dalvik指令按N-gram規(guī)則處理,生成Dalvik指令的N-Gram序列并進行統(tǒng)計處理,生成如下文本文件,如圖5所示。
圖5 匯總后的Smali文件
采用第2節(jié)介紹的Caffe框架,將以上靜態(tài)分析所獲取的樣本特征數(shù)據(jù)構造成樣本矩陣,數(shù)據(jù)包含4000個安全APK樣本和2000個惡意APK的樣本數(shù)據(jù),該矩陣為60×35。為了進行有監(jiān)督學習,將惡意TZHD-Mat圖像記為數(shù)值1,將安全TZHD-Mat圖像記為數(shù)值0,原始圖像對其進行卷積操作、下采樣操作等,并將采集到的特征輸入到構造的LeNet網(wǎng)絡,進行不斷訓練學習,進而得到一個檢測模型。具體運行過程如圖6所示。
圖6 Caffe卷積神經(jīng)網(wǎng)絡訓練完畢
首輪的卷積神經(jīng)網(wǎng)絡模型訓練完畢,但如圖6所示,檢測精確度為40%,還需要進行模型優(yōu)化?,F(xiàn)主要工作就是調整部分關鍵的網(wǎng)絡參數(shù),讓卷積神經(jīng)網(wǎng)絡在不同的網(wǎng)絡參數(shù)下進行重新迭代訓練,最后再統(tǒng)計網(wǎng)絡的訓練時間以及模型的預測準確率。在卷積神經(jīng)網(wǎng)絡的迭代訓練過程中,Caffe主要采用默認的隨機梯度下降的策略進行梯度更新,直到收斂。梯度下降法也叫最速下降法,其通過負梯度▽L(W)和上一次的權重更新值Vt的線性組合來更新梯度Wt,迭代公式如下:(其中μ代表動量,α 代表基礎學習率)
由以上迭代關系可以觀察到,卷積神經(jīng)網(wǎng)絡的訓練迭代過程中,基礎學習率和動量這兩個參數(shù)對于網(wǎng)絡的訓練效果影響比其他參數(shù)更大。于是網(wǎng)絡的優(yōu)化過程中,主要通過改變基礎學習率α和動量μ這兩個參數(shù)。
將基礎學習率base_lr設置為0.01,將初始動量momentum設置為0.9,網(wǎng)絡模型的預測效果較好。具體參數(shù)如表1所示。參數(shù)設置完畢以后,圖像分類識別準確率達到了0.99,模型訓練時間為1077分鐘。
表1 caffe參數(shù)設置
本文在分析現(xiàn)有惡意代碼檢測技術存在的問題的基礎上,提出了一種基于深度學習的惡意代碼檢測方法,并通過對6000個樣本進行訓練學習,最終訓練出來的模型可以達到99%的檢測率。未來將使用更多的樣本數(shù)據(jù)來改進完善檢測模型,進一步驗證本方法的可行性。
[1]Gartner. Android accounted for 87.7% of global smartphone sales in the second quarter[OL]. [2017-08-23].https://www.phonearena.com/news/Gartner-Android-accounted-for-87.7-of-global-smartphone-sales-in-the-second-quarter_id97353.
[2]鳳凰資訊. “勒索病毒”幕后工具指向美國國安局[OL]. [2017-05-16].http://news.ifeng.com/a/20170516/51097848_0.shtml.
[3]新浪新聞.AlphaGo最終戰(zhàn)勝李世石人機大戰(zhàn)總比分1:4[OL].[2016-03-15].http://tech.sina.com.cn/it/2016-03-15/doc-ifxqhmvc2486669.shtml.
[4]ImageNet.Large Scale Visual Recognition Challenge 2012(ILSVRC2012)[OL].[2012-10-12].Large ScaleVisual RecongnitionChallenge2012.http://www.image- net.org/challenges/LSVRC/2012/results.html.
[5]LE Q, NGIAM J, CHEN Zheng-hao, et al. Tiled convolutional neural networks[C]. Advances in Neural Information Processing Systems. Cambridge:MIT Press, 2010.
[6]Yangqing Jia. Convolution in Caffe: a memo [OL]. [2015-07-19]https://github.com/Yangqing/caffe/wiki/Convolution-in-Caffe:-a-memo.