基於權限特徵和機器學習的Android惡意程序識別技術

在做惡意郵件附件檢測系統時,被要求嘗試在該系統內增加apk的檢測。要求使用靜態分析手段且對檢測速度有較高的要求。

選擇權限特徵是因爲速度很快且相對簡單,只需要解包apk然後編碼二進制化的AndroidManifest文件,根據permission標籤讀取其需要的權限即可。
在調研過程中收集到了權限相關的數據集,而在具體的實現方法上並無太大區別,只是在需要作爲特徵的權限數量上有所區別。
本文無創新點,只是在復現別人的操作,進行了一定程度的對比。

準備知識

以下內容來自官方文檔
應用必須在清單文件的<uses-permission>標籤中寫入所需要的權限。
如以下代碼完成對發送短信SEND_SMS權限的聲明

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example.snazzyapp">

    <uses-permission android:name="android.permission.SEND_SMS"/>

    <application ...>
        ...
    </application>
</manifest>

權限與應用的具體功能直接掛鉤,如圖。
圖1 權限組與api調用
以下非官方文檔
惡意軟件通過具體的api調用實現其惡意操作,而每個權限能夠對應多個api操作,因此通過對權限的檢測能夠在一定程度上表示應用的具體操作。
權限特徵容易獲取,這是該特徵得到關注的另一個原因。
文獻[1]是靜態檢測集大成者,基本參考了apk中的所有特徵,其採用“我全都要“的基本思想,將所有權限作爲特徵進行訓練。
自安卓系統問世以來就有研究人員研究了權限特徵的可行性,至2018年仍有僅研究權限特徵的高水平論文[2]。
考慮過多的權限特徵一方面不一定會使檢測效果更好,另一方面還有可能使檢測的效率下降,因此現在基於權限的研究大多是在精簡特徵的個數。

我的工作

那麼到底考慮多少權限能夠獲得比較好的檢測結果呢。
博主將不同數量的權限作爲特徵進行訓練,對比其在現在的、較新的惡意應用中的表現。
採用的權限數量分別爲88、34、22。
88爲綜合手上兩個較大數據集,取得交集。
22爲論文[2]中選取的權限。
34爲谷歌官方選取的26個危險權限與22個權限取並集,僅26個權限的組合曾做過測試,但由於效果原因與22權限取並集。

問:爲什麼不測試drebin那樣的全部權限?
答:1.權限數量過多,除了drebin本身的數據集,沒有其他數據集採用這麼多權限。2.該方法很經典, 大概在別的地方有足夠的資料。

算法採用效果最好的隨機森林,參數按準確率優先進行了調整。

對457個較新的惡意應用檢測結果:

88權限
34權限22權限
對惡意樣本的檢出率爲:

權限個數 檢出率
88 32.2%
34 24.7%
22 73.1%

注意22權限對照組將該457個應用劃入了訓練集,因而纔有了較明顯的提升。

對1648個較新的良性應用檢測結果:

88良性
34良性
22良性
對於良性樣本的檢出率:

權限個數 檢出率
88 94.2%
34 99.3%
22 96.3%

相關代碼和數據集

細節部分如權限提取,csv處理等就不細說,在代碼裏了。

https://github.com/cckenny/AMDwithPermission-ML

惡意樣本的訓練集大概數千,良性樣本數十萬,只包含權限部分
數據集來源多樣,主要包括kaggle比賽樣本,北京某211學校網站的樣本和drebin樣本等,已上傳至github。

結論

文獻[2]的方法能夠在減少權限數量的情況下達到較高的檢測率(不然發不了論文…)。
可以看到僅基於權限的方法誤報率是很低的,當然在一定程度上可以對參數進行調整,降低漏報則會提升誤報,反之同理。
速度上的提升到沒那麼明顯,因爲無論88權限還是22權限主要都是解壓比較耗時間,差不多都是1-2秒一個(CPU:E3-1231 硬盤:機械7200轉)。
需要注意的是,論文一般採用的訓練集和測試集爲較老的、經典的程序集,對現存的惡意應用檢出率較低。

補充說明

博主半年前完成的該部分復現,如今整理工作時拿出來分享,故存在截圖和對照組缺失的問題
測試惡意程序的時間較短故能夠截一些圖,訓練部分的圖就算了吧,有些慢,不重跑了。
有興趣的童鞋歡迎到github下載運行代碼,如果能幫到您,請留一個star,謝謝

主要參考文獻

  1. Arp, Daniel, et al. “DREBIN: Effective and Explainable Detection of Android Malware in Your Pocket.” NDSS. 2014.
  2. J. Li, L. Sun, Q. Yan, Z. Li, W. Srisa-an and H. Ye, “Significant Permission Identification for Machine-Learning-Based Android Malware Detection,” in IEEE Transactions on Industrial Informatics, vol. 14, no. 7, pp. 3216-3225, July 2018.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章