滕越 王天寶
摘 要:文章對現(xiàn)有的Android程序的行為特征提取技術(shù)和惡意軟件檢測算法進行研究。由于現(xiàn)有Android惡意軟件靜態(tài)檢測模型主要是對Android程序的行為特征即敏感api和敏感權(quán)限的調(diào)用進行數(shù)據(jù)挖掘,從而產(chǎn)生能夠?qū)ndroid程序進行檢測分類的分類器。通過對Android行為特征提取和數(shù)據(jù)挖掘算法的改進和創(chuàng)新是未來Android惡意軟件靜態(tài)檢測的方向。
關(guān)鍵詞:Android惡意軟件;靜態(tài)檢測;數(shù)據(jù)挖掘;機器學習
最近幾年,隨著移動互聯(lián)網(wǎng)的迅猛發(fā)展,以及智能手機的生產(chǎn)成本不斷降低,智能手機在人們的日常生活和工作中扮演的角色越來越重要,在移動互聯(lián)網(wǎng)時代,智能手機將成為訪問互聯(lián)網(wǎng)的主要設備。
智能手機像PC一樣擁有自己獨立的操作系統(tǒng),而不再是傳統(tǒng)意義上的單純的語音通訊設備,用戶可以根據(jù)自己的喜好隨意的安裝和卸載各種應用程序。瀏覽網(wǎng)頁、娛樂辦公、購物支付、社交聊天,可以說智能手機已經(jīng)滲入到人們生活的方方面面,同時,也給人們帶來了實實在在的方便。
最新發(fā)布的數(shù)據(jù)顯示,高達97%的移動惡意軟件將Android設備列為攻擊目標,這也就意味著其他平臺遭到惡意軟件攻擊的幾率是相當?shù)偷?,所以Android的安全性已經(jīng)到了不得不改善的地步。毫無疑問,安全問題將會是Android未來幾年的發(fā)展中所要面臨的重要問題。
一、Android程序行為特征提取
(一)dex文件逆向分析
現(xiàn)有的Android程序行為特征提取大多都是基于dex文件逆向,由于Android采用Dalvik虛擬機作為平臺運行環(huán)境,dex文件就是Dalvik虛擬機的可執(zhí)行文件。通過dex文件可以得到Android程序的內(nèi)部信息,閱讀反匯編形成的Dalvik字節(jié)碼可以通過IDA PO分析dex文件。或者通過文本編輯器baksmali反編譯生成的smali文件。也可以利用反編譯生成java源碼,可以用dex2jar生成jar文件,然后使用jd-gui閱讀jar文件代碼。
(二)ARM匯編逆向分析
由于現(xiàn)在惡意軟件的不斷進化,代碼混淆技術(shù)的不斷發(fā)展,使得應用層代碼的分析越來越疲軟。對于使用ARM處理器的Andorid手機來說,它終將會生成對應的ARM elf可執(zhí)行文件。對于底層的代碼逆向更容易突破各種惡意軟件的逃避檢測機制,但是分析ARM elf可執(zhí)行文件的難度較大,要求具有基本的ARM反匯編代碼閱讀能力,所以目前使用較少,但是這種逆向分析機制可能是Android惡意軟件檢測的一個突破口。
(三)行為特征提取
有了大量逆向工具的幫助,由于一個Android程序反編譯過后的代碼量會非常龐大,所以行為特征提取的重點在于獲取我們想要的關(guān)鍵代碼。關(guān)鍵代碼的識別需要對Android應用層代碼非常熟悉,可通過程序的反饋信息、特征函數(shù)定位關(guān)鍵代碼,也可以通過代碼注入觀察程序運行到指定位置的狀態(tài)數(shù)據(jù),或是跟蹤棧信息,觀察函數(shù)的調(diào)用關(guān)系。對于數(shù)據(jù)的抓取,大多需要自己編寫如python腳本的爬蟲程序,獲取關(guān)注的特征信息,為后面的檢測算法提供支持。
二、Android惡意軟件檢測算法
對于Android 的行為特征提取方法固定,而將行為特征數(shù)據(jù)用于數(shù)據(jù)挖掘是Android惡意軟件靜態(tài)檢測的核心。所以算法的選取是訓練產(chǎn)生好的檢測分類器的關(guān)鍵,下面舉幾種適合用于Android惡意軟件檢測的算法進行簡單介紹。
(一)關(guān)聯(lián)規(guī)則挖掘
關(guān)聯(lián)規(guī)則挖掘發(fā)現(xiàn)大量數(shù)據(jù)中項集之間的聯(lián)系,可以對大量樣本(已知其良惡性)Android程序的敏感api和敏感權(quán)限進行頻繁集的獲取。每一個 Android 程序均可以映射為一個包含所有敏感 API 調(diào)用的事務, 每個API為一個項, API 項的集合為項集,最小支持度為 min _ suppor。最著名的關(guān)聯(lián)規(guī)則發(fā)現(xiàn)方法是R.Agrawal提出的Apriori算法,其核心思想是通過對數(shù)據(jù)樣本的多次掃描來計算項集的支持度,發(fā)現(xiàn)所有的頻繁項集從而生成關(guān)聯(lián)規(guī)則。
找出頻繁項集的關(guān)鍵是連接和剪枝兩步,安卓的行為特征數(shù)據(jù)適合于使用頻繁集關(guān)聯(lián)的規(guī)則,但缺點也比較明顯,需要多次掃描事物數(shù)據(jù)庫,可能產(chǎn)生龐大的候選集,并且在頻發(fā)項集長多變大的情況下,運算效率降低。
(二)貝葉斯分類算法
貝葉斯分類器諸多算法中樸素貝葉斯分類模型是最早的,也大量利用于Android惡意軟件檢測當中。根據(jù)貝葉斯公式能夠獲取訓練樣本的先驗概率,通過選取合適行為特征的Android程序?qū)傩詠碛嬎銟颖镜暮篁灨怕?。在Android惡意軟件檢測中使用貝葉斯分類算法的關(guān)鍵在于關(guān)鍵屬性的選取,需盡量保證其獨立性。
大量研究表明可以通過各種改進方法來提高樸素貝葉斯分類器的性能,在樸素貝葉斯分類器的基礎上構(gòu)建屬性間的相關(guān)性,如構(gòu)建相關(guān)性量度公式,增加屬性間可能存在的依賴關(guān)系,或是構(gòu)建新的樣本集合,在樣本集合之間存在較好的類條件獨立關(guān)系。
在滿足以上條件的情況下,貝葉斯算法分類性能較好,貝葉斯分類模型還具有形式簡單、可擴展性很強和可理解性好等優(yōu)點,適合作為安卓惡意軟件算法的入門。
(三)支持向量機(SVM)
在統(tǒng)計學習的理論基礎上,SVM成為了一種專門研究有限樣本預測的學習方法,與傳統(tǒng)統(tǒng)計學相比較,SVM算法沒有以傳統(tǒng)的經(jīng)驗風險最小化原則作為基礎,而是建立在結(jié)構(gòu)風險最小化原理的基礎之上,在模型的復雜性和學習能力之間尋求最佳折中,即在所有的超平面中,最大間隔分類器要尋找一個最優(yōu)超平面。
Android惡意軟件檢測使用SVM的基礎是提取關(guān)鍵特征值進行規(guī)則的線性可分,對特征屬性進行線性回歸,建立回歸分析方程,即回歸分析預測。SVM的優(yōu)點在于基本不涉及概率測度及大數(shù)定律,不同于現(xiàn)有的統(tǒng)計方法,避開了歸納到演繹的傳統(tǒng)過程,實現(xiàn)了高效的從訓練樣本到預報樣本的轉(zhuǎn)導推理,大大簡化了通常的分類和回歸等問題。
Android惡意軟件檢測使用SVM能夠具有較高的檢測準確率,但是對大規(guī)模訓練樣本難以實施。對于惡意軟件檢測可用于一類惡意家族或一種類型的Android程序的模型建立,對于SVM的改進可以通過多個二類SVM的組合或構(gòu)造多個分類器的組合來解決SVM的固有缺點。
三、Android惡意軟件檢測基本模型
對于現(xiàn)有的Android程序行為特征提取技術(shù)和Android惡意軟件檢測算法,Android惡意軟件檢測模型可歸納于圖1所示。
首先需要收集大量的惡意軟件樣本和正常軟件樣本,正常軟件樣本容易收集,惡意軟件樣本可以從VirusShare組織獲取,然后對樣本提取行為特征屬性,根據(jù)不同的分類算法制定不同的提取方案,將行為特征抽象化為算法的可用數(shù)據(jù)類型,然后通過數(shù)據(jù)挖掘產(chǎn)生分類器,最終通過多次的訓練達到能夠檢測惡意軟件的目的。 四、結(jié)語
本文給出了Android惡意軟件檢測的基本模型,描述Android行為特征獲取方法,簡要說明了各種檢測算法如何與Android行為特征相結(jié)合。對于靜態(tài)Android惡意軟件檢測,基于行為特征提取和機器學習和數(shù)據(jù)挖掘算法結(jié)合是目前的主流方案。檢測方法智能化,能夠?qū)ξ粗獝阂廛浖M行檢測是彌補Android安全機制最有效的措施,也是Android惡意軟件檢測以及整個安全行業(yè)的發(fā)展方向。
參考文獻:
[1] 閆友彪,陳無琰.機器學習的主要策略綜述[J].計算機應用研究,2004, No. 5:4-13.
[2] M. Zhao,T.Zhang,F(xiàn).Ge,and Z.Yuan, “Robotdroid: A lightweightmalware detection framework on smartphones,”Journal of Networks,vol.7,no.4,pp.715-722,2012.
[3] Dong-Jie Wu,Ching-Hao Mao,Te-En Wei,Hahn-Ming LeeDroidMat: Android Malware Detection throughManifest and API Calls Tracing,2012:13.
[4] 張文,嚴寒冰,文偉平.一種 Android 惡意程序檢測工具的實現(xiàn)[J].信息網(wǎng)絡安全,2013(1):27-32.
[5] 張金鑫,楊曉輝.基于權(quán)限分析的Android應用程序檢測系統(tǒng)[J].信息網(wǎng)絡安全,2014,7(1):30-34.