◆王子騰
?
一種多機器學習算法集成的惡意代碼檢測系統
◆王子騰
(武漢市第二高級中學 湖北 430010)
隨著手的廣泛應用,針對手機的惡意代碼帶來的風險也越來越凸顯。大多數惡意代碼檢測系統難以檢測未知的惡意代碼。本文提出采用隨機森林、前饋神經網絡、深度學習等多種機器學習算法集成,構建一個惡意代碼檢測系統,并將其部署在云端。
機器學習;隨機森林;前饋神經網絡
大數據信息時代使人們足不出戶便可分享網上購物、網絡社交、線上點餐、洞悉世事等的網絡便捷服務,但是這些服務軟件系統后臺也需提取用戶海量的個人信息,才能做到服務的人性化,同時也帶來了個人信息被泄露的安全風險。繼“灰鴿子”和“熊貓燒香”之后,一種名為Wanna Cry的“蠕蟲”勒索病毒曾肆虐全球[1],一時成為影響力最大的病毒之一,使很多高等院校、科研單位、銀行以及證券機構受到嚴重攻擊,帶來了全球性的互聯網災難,又一次敲響了信息安全的警鐘。因此,研究檢測與防范未知惡意代碼技術,保證數據信息安全成為關注的熱點。
本文將機器學習技術引入惡意代碼檢測領域,提出了一種多機器學習算法集成的惡意代碼檢測框架,該框架集成了隨機森林算法、前饋神經網絡和深度學習技術,并采用matlab和caffe等優秀開發框架實現了該惡意代碼檢測系統,最后將本系統部署到阿里云中,取得了較好的效果。
機器學習的宗旨是使用計算機模擬人類的學習活動,它是一種研究計算機識別現有知識、獲取新知識、不斷改善性能和實現自身完善的方法。機器學習研究的就是如何使機器通過識別和利用現有知識來獲取新知識與新技能。它是人工智能的一個重要的研究領域。整體上看,機器學習就是模仿人識別事物的過程,即:學習、提取特征、識別、分類。 在本文中主要使用了三種機器學習算法來實現分類。
隨機森林是一種比較新的機器學習模型,隨機森林在變量(列)的使用和數據(行)的使用上進行隨機化,生成很多分類樹,再匯總分類樹結果。隨機森林在運算量沒有顯著提高的前提下提高了預測精度[2]。
前饋神經網絡是一種最簡單的神經網絡,各神經元分層排列,每個神經元只與前一層的神經元相連,接收前一層的輸出,并輸出給下一層,各層間沒有反饋,能夠以任意精度逼近任意連續函數及平方可積函數,而且可以精確實現任意有限訓練樣本集,是目前應用最廣泛、發展最迅速的人工神經網絡之一。從系統的觀點看,前饋網絡是一種靜態非線性映射。通過簡單非線性處理單元的復合映射,可獲得復雜的非線性處理能力;從計算的觀點看,缺乏豐富的動力學行為。大部分前饋網絡都是學習網絡,其分類能力和模式識別能力一般都強于反饋網絡[3]。
深度學習的概念最早由機器學習領域的泰斗、多倫多大學G.E.Hinton教授帶領的深度學習團隊在Image Net[4]圖像分類大賽中取得了優勝,其準確率超過了第二名10%以上,引起了計算機視覺領域的極大震動,再一次掀起了深度學習的浪潮。深度學習是機器學習研究中的一個新的領域,其動機在于建立、模擬人腦進行分析學習的神經網絡,它模仿人腦的機制來解釋數據,例如圖像、聲音和文本。深度學習是無監督學習的一種,概念源于人工神經網絡的研究。含多隱層的多層感知器就是一種深度學習結構。深度學習通過組合低層特征形成更加抽象的高層表示屬性類別或特征,以發現數據的分布式特征表示[5]。
系統的處理流程分為模型建立與訓練、模型使用兩大部分。在模型建立與訓練部分,通過采集大量數據,并進行特征工程預處理,然后提交給三個機器學習算法進行訓練,進而得到模型。在模型應用部分,系統將模型應用于本地的檢測系統和云服務檢測系統。具體如圖1所示。

圖1 系統總體框圖
(1)數據采集
為了構建可靠的檢測系統,本文下載了大約50G的Andriod惡意與安全APK樣本,這些APK樣本部分下載于Kaggle(大數據競賽平臺)和The Drebin Dateset實驗室提供的惡意樣本。機器學習領域的數據科學家們分享這些已經分類的APK樣本數據,以便為有需求的機器學習項目提供訓練材料。部分安全APK樣本下載于經過權威認證的手機小米應用商店、華為手機應用市場、以及Google應用市場。
(2)數據預處理
APKTool是一款很好的APK反編譯工具,能夠反編譯APK文件,同時安裝反編譯編譯系統APK所需要的framework-res框架,清理上次反編譯文件夾等功能。處理后如下圖2所示:

圖2 匯總后的smali文件sumsmali.txt
(1)隨機森林模塊
隨機森林是一種統計學習理論,它利用bootstrap重抽樣方法從原始APK樣本中抽出多個樣本,然后對每個bootstrap樣本進行決策建模,然后組合成多決策樹進行預測,并最后通過投票得出最終的結果。每棵決策樹由樣本量為k的訓練樣本集X和隨機向量θk生成。
隨機向量獨立分布為:

決策樹的集合為:

每個決策樹模型h(X,θk)都有對每個APK樣本一票的投票權來選擇輸入樣本的分布結果。

其中H(x)表示隨機森林對APK樣本屬性的分類結果,hi(x)表示單個決策樹對APK樣本的分類結果,I(x)為示性函數,隨機森林的分類結果采用簡單的投票系統完成。在本文中,隨機森林算法有兩大屬性必須考慮,即收斂性和泛化誤差上界。
采用隨機森林算法對樣本原始的特征向量 進行訓練、反饋、調優,由于隨機森林算法擅長檢測和處理高維度的檢測數據,而且模型采用決策樹群并行預測的算法原理,從而大大縮短了檢測的時間和效率。隨機森林模塊采用隨機森林算法對2100維的樣本特征矩陣進行處理和檢測,所有的決策樹對樣本進行投票,進而生成隨機森林檢測模型。
(2)前饋神經網絡模塊
多層前饋神經網絡在網絡結構上通常由輸入層、隱含層和輸出層組成。在網絡特征上主要表現為既無層內神經元的互聯,也無層間的反聯絡。這種網絡實質上是一種靜態網絡,其輸出只是現行輸入的函數,而與過去和將來的輸入與輸出無關。這種結構特征的網絡主要應用于模式識別、函數逼近及邏輯功能運算等方面。
將原始數據輸入,調用Matlab工具箱中自帶的前饋神經網絡工具箱,即可生成前饋神經網絡檢測模型。
(3)caffe模塊
Caffe是一個清晰而高效的深度學習框架,它是開源的,核心語言是C++,支持命令行、Python和MATLAB接口,既可以在CPU上運行,也可以在GPU上運行??梢詰迷谝曈X、語音識別、機器人、神經科學和天文學領域。Caffe提供了一個完整的工具包,用來訓練、測試、微調和部署模型。它具有模塊化、表示和現實分離、測試覆蓋全面、接口豐富和預訓練參考模型等特點。在ubuntu系統下安裝caffe,將原始數據輸入caffe,調用caffe的image Net深度學習網絡,生成基于caffe的深度學習檢測模型。
通過機器學習模塊生成模型后,即可將模型用于檢測惡意代碼。
(1)本地檢測系統
本文實現了一個本地檢測系統,界面如圖3所示。左側文本輸入框中輸入一個待檢測樣本的文件名;右側輸出中,檢測概率報告表示隨機森林算法決策樹投票屬性的結果,深度檢測給出經過caffe深度學習得到的結果。
(2)云端檢測平臺
我們將本地檢測系統部署到阿里云服務器上,阿里云服務器采用ubuntu16.04操作系統,采用tomcat提供web服務,網頁采用PHP開發。在瀏覽器中輸入http://47.93.207.72訪問云主機的主頁,主頁界面如圖4所示。

圖3 本地惡意代碼檢測系統

圖4 檢測平臺網頁功能界面
當用戶上傳檢測樣本后,將會把檢測結果顯示在網頁上。如圖5所示。

圖5 云端檢測平臺
為了應對用戶信息安全面臨的嚴峻挑戰,本文將機器學習技術用于惡意代碼檢測,采用隨機森林、前饋神經網絡、深度學習等多種機器學習算法集成,實現了一個主要由模型訓練、本地檢測系統、云端檢測系統三部分組成的惡意代碼檢測系統,很好地解決了惡意代碼變種速度快、檢測率不高的實際問題。
[1]騰訊新聞.全球爆發電腦勒索病毒 中國多所大學校園網被攻擊[OL],[2017. https://news.qq.com/a/20170513/001170.htm.
[2]Prinzie Anita, Poel, Dirk. Random Multiclass Classification: Generalizing Random Forests to Random MNL and Random NB. Database and Expert Systems Applications[C]. Lecture Notes in Computer Science,2007.
[3]Auer, Peter. A learning rule for very simple universal approximators consisting of a single layer of perceptrons[C]. Neural Networks, 2008.
[4]ImageNet. Large Scale Visual Recognition Challenge 2012 (ILSVRC2012)[OL]. [2012-10-12]Large Scale Visual Recongnition Challenge,2012. 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.