張勇敢 李海霞
摘要:隨著Android惡意軟件的數量越來越多,尋求有效的惡意軟件檢測方法顯得越來越重要。針對Android手機惡意軟件檢測的現狀,文章根據Android平臺的特點,結合Spark框架技術和隨機森林算法,構建一種在Spark框架下的基于改進隨機森林的Android惡意軟件檢測方法,方法的使用效地提高惡意軟件檢測的性能和效率,同時也為惡意軟件檢測技術提供一個思路。
關鍵詞:Android ;Spark框架;隨機森林算法;惡意軟件檢測
中圖分類號:TP309 文獻標識碼:A 文章編號:1009-3044(2019)03-0192-03
Abstract:With the increasing number of Android malware, it is more and more important to find an effective malware detection method.Aiming at the current situation of Android mobile malware detection, according to the characteristics of Android platform, combined with Spark framework technology and random forest algorithm, this paper constructs an Android malware detection method based on improved random forest under the Spark framework. The method can effectively improve the performance and efficiency of malware detection, and at the same time, it also improves the efficiency of malware detection. It also provides a train of thought for malware detection technology.
Key words:Android;Spark framework;random forest algorithm;malware detection
如今智能手機上的功能是越來越多,各種APP軟件的大量使用讓我們的生活工作越來越便利,但在享受智能手機帶來便利的同時,也給我們自身信息帶來的潛在安全風險。手機上存在很多非常重要的個人信息,比如個人身份信息、銀行卡信息、家人信息、朋友信息等等 ,如果這些信息一旦被一些非法之徒獲取,將可能給手機用戶造成個人財產上的損失、個人隱私信息的泄露及工作上的不便等[1]。如何保障手機安全是一個非常重要的問題,除了手機用戶要有安全風險意識和平時要養成良好的使用習慣外,研究如何有效地對惡意軟件的檢測也是非常重要的,如果手機在安裝APP軟件前能夠自動進行安全檢測,自動將一些惡意軟件排除在手機之外,那將為手機安全提供一個非常有力的保障。Android系統平臺雖然也提供一些安全機制[2],但由于其是一個開源操作系統,開放性的同時也很容易被惡意軟件感染。針對這一問題,根據Android系統平臺的特點,結合Spark框架技術,文章提出一種在Spark框架下的基于改進隨機森林的Android惡意軟件檢測方法,方法的使用有效提高檢測的性能和效率,同時也為Android平臺惡意軟件檢測技術[3]提供一個思路。
1 隨機森林算法
在對惡意軟件進行判別的方法中,用得最多的就是機器學習分類算法[4],通過機器學習分類算法對惡意軟件進行識別,很多機器學習分類算法在安全領域的入侵檢測中得到了廣泛的應用,但單模型分類算法在精度上不高,而且容易產生過擬合問題。而隨機森林算法[5]是一種組合分類器算法,結合了Bagging方法和CART算法的優點,是一個由多個Decision Tree(決策樹)分類器組成的集成學習分類算法,每棵決策樹的創建是根據隨機采樣的方法生成,隨機森林能夠結合多個決策樹分類器的分類結果,相比單個決策樹分類器具有更好的分類效果和泛化能力,同時多個決策樹分類器的生成過程又是相互獨立的,故非常適合采用并行化處理,方便在Spark框架下使用。隨機森林算法的框架圖如圖1。
2 改進隨機森林算法
隨機森林算法在最終決定樣本類別時采用的是簡單投票原則,每個決策樹的權重相同,沒有區別強決策樹與弱決策樹,從而降低了整體分類性能。針對這個問題,文章提出一種改進的方法,通過添加權重控制來有效區分決策樹的強弱,進一步提升分類的性能。
隨機森林在樣本采樣時采用的是bagging方法[6],是一種隨機有放回抽樣的方法,bagging方法能有效提升機器學習算法的穩定性和準確性,可以減少模型的方差,從而避免過度適應的現象。在這種抽樣方法中,總會有一些沒有被抽到的訓練樣本,這些樣本稱為out-of-bag(OOB)[6],樣本沒有抽到的概率為p=(1-1/N)N,其中N為樣本總數,當N趨近無窮大時,p的值約為0.368,這說明在bagging抽樣中,有接近37%的樣本沒有被抽取到。利用OOB樣本對生成的決策樹進行分類測試,由于OOB中的樣本類別是已知的而且是未參與機器學習的樣本,所以不用擔心過分適應的問題,那就可以根據決策樹的分類準確情況來區分決策樹的分類性能,準確度越高的分類決策樹越優秀,分類效果越好。分類正確率CRt=Otr/Ot,其中Ot為OOB的樣本數,Otr為正確樣本數。直接使用對OOB樣本的分類準確率作為分類決策樹的權重。經過加權控制后,樣本x通過隨機森林分類器進行分類檢測并加權統計,屬于c類別的總得票數記為Sc,最后選出得票最多的Cx=Argmax(Sc)作為樣本的最終類別。
3 Spark框架下Android惡意軟件檢測
隨著Android應用程序數量越來越多,在對應用程序進行檢測時,對APK文件的反編譯[7]、對特征值提取過程都很耗時,所以非常有必要引入并行化處理方式,采用并行化處理方式可以有效提高運行速度,同時在森林算法的建模中,多個決策樹分類器的生成過程之間都是相互獨立的,故也非常適合采用并行化處理方法。Spark框架[8]就是一個基于內存計算的分布式計算框架,提供了一個用于分布式數據處理的API,Spark框架非常適合對大規模數據進行并行化有效處理。Spark框架下Android惡意軟件檢測示意圖如圖2。
整體檢測過程在Spark框架下完成,主要包括三個模式:特征向量集合生成模塊、決策樹分類器生成模塊、決策樹分類檢測模塊。下面分別介紹這三個模塊的步驟。
3.1 特征向量集合生成模塊
特征向量提取模塊主要功能是在Spark框架下高效提取最具代表性的特征屬性,并生成特征向量集合。步驟如下:
3.2決策樹分類器生成模塊
決策樹分類器生成模塊主要功能是根據前面生成的特征向量集,產生決策樹分類器,并對決策樹進行加權處理。步驟如下:
3.3決策樹分類器檢測模塊
決策樹分類檢測模塊主要功能是根據前面產生的決策樹分類器對測試樣本進行分類測試,并將測試結果輸出。
4 實驗測試與結果分析
在實驗測試樣本中,其中良性軟件為413個,惡意軟件為780個。選取信息增益(IG)算法作為特征優化算法,在Spark框架并行環境下進行。實驗結果如表1所示。
通過實驗數據分析可知,通過對隨機森林算法的簡單投票原則進行加權控制改進,有效地區分強決策樹和弱決策樹,在分類的準確性上有一定的提高,當然由于多了一道權重計算程序,在建模的時間上會更長一些。
5 結束語
針對Android惡意軟件的大量出現,全文提出了一種在Spark框架下的基于改進隨機森林的Android惡意軟件檢測方法,通過對隨機森林算法的投票原則進行加權改進,進一步提高惡意軟件檢測的準確度,同時將整個決策樹的生成過程放在Spark框架下運行,通過并行分布式處理,縮短決策樹的生成時間,有效提高運行效率。通過實驗分析,改進隨機森林算法分類的準確度接近94%,具有良好的分類精度和分類效率。不足之處:1)在特征向量的選擇上,只提取了Manifest文件中的Permisson和Intent信息作為特征屬性,在特征屬性的選擇上相對較少,還可以考慮加入API特征處理;2)由于實驗條件的限制,實驗中樣本數據量相對較少,還缺乏一定的說服力。
參考文獻:
[1]王雪芬,郭黎黎.“互聯網+”時代智能手機網絡安全問題探析[J].電子技術與軟件工程,2018(1):222-223.
[2] 樊郁徽,徐寧.Andriod平臺的惡意軟件行為分析[J].重慶文理學院學報:社會科學版,2014, 33(5):144-147.
[3]李江華,邱晨.Android 惡意軟件檢測方法研究綜述[J].2019,36(1).
[4]王奕森,夏樹濤.集成學習之隨機森林算法綜述[J].信息通信技術,2018(1):49-55.
[5]Leo Breiman, Adele Cutler.Random forest[J].Machine Learning,2001,5(1):5-32.
[6]楊宏宇,徐晉.基于改進隨機森林算法的Android惡意軟件檢測[J].通信學報,2017,38(4):8-16.
[7]豐生強.Android軟件安全與逆向分析[M].人民郵電出版社,2013.
[8]曹博,倪建成.基于Spark的并行頻繁模式挖掘算法[J].計算機工程與應用,2016,52(20):86-91.
【通聯編輯:唐一東】