


摘? 要: 由于安卓平臺開源性、免費性的特點,惡意軟件的數量急劇增長,其安全問題面臨巨大挑戰。現有的基于權限進行安卓惡意軟件的靜態檢測方法中,往往利用單一的權限,缺少特征性,據此該文提出了一種安卓惡意軟件檢測的方案,通過反編譯軟件提取權限,運用改進的樸素貝葉斯方法進行分類,實驗結果表明, 基于權限組合,使用改進的樸素貝葉斯算法相比于傳統的算法,具有較好的分類結果,準確率達到95%。
關鍵詞: 權限組合;樸素貝葉斯;惡意軟件檢測;靜態檢測
中圖分類號: TP309? ? 文獻標識碼: A? ? DOI:10.3969/j.issn.1003-6970.2019.10.026
本文著錄格式:胡芷琦. 基于改進樸素貝葉斯算法的安卓惡意軟件檢測研究[J]. 軟件,2019,40(10):115120
Research on Android Malware Detection Based on Improved Naive Bayes Algorithm
HU Zhi-qi
(School of Information Science and Engineering, Hangzhou Normal University, Hangzhou 311121, China)
【Abstract】: Due to the open source and free features of the Android platform, the number of malwares has increased dramatically, and its security issues are facing enormous challenges. Among the currently static detection method of Android malware that bases on the permissions, it frequently makes use of the single permission, thus, it leads to lack of the characteristic. Accordingly, it puts forward a scheme about detecting Android malware. First, we obtain the permissions by decompiling software. Second, using improved Naive Bayesian method to make classification. The experimental result shows that compared the traditional calculation, using improved Naive Bayesian method based on permissions combination contributes to relatively good classification result with 95% accuracy rate.
【Key words】: Combination of permissions; Naive bayes; Malware detection; Static detection
0? 引言
根據市場調研機構Gartner 2017年第一季度智能手機市場報告[1]顯示安卓的市場份額已經達到了86.1%,而IOS則僅有13.7%的份額。由于安卓操作系統開源性、免費性等優點,使其智能手機獲得了手機廠商和消費者的喜愛,擁有較大的市場占有率,但同時由于安卓平臺的惡意程序制作成本低,可批量生成惡意程序,致使其安全性面臨著巨大的挑戰。2017年360互聯網安全統計[2],如圖1所示,2017年全年,360互聯網安全中心累計截獲安卓平臺新增惡意軟件樣本757.3萬個,平均每天新增2.1萬。安卓的移動惡意軟件總體進入平穩高發期,它的安全問題仍然存在很大的危險,這使得安卓惡意軟件的檢測成為了學術界和工業界關注的熱點。
在惡意軟件檢測中,如果需要執行安全相關的操作或者訪問隱私的情況,開發者需要在其配置文件中進行相應權限的申請。文獻[3]對正常軟件和惡意軟件對權限的使用情況進行了對比,發現惡意程序傾向于使用短信、開機自啟動、更改WIFI狀態等權限,而良性程序很少使用這些權限。因此,我們可以將權限提取出來作為特征值, 具有一定的實際意義。
除此之外,機器學習算法被廣泛應用于安卓惡意軟件的檢測,對此也有很多人進行了研究。Wu等人[4]提出了用k-means聚類算法進行聚類,聚類中心數量通過奇異值分解來確定,但該方法算法復雜度高,并且需要先確定k的個數;張銳等[5]采用卡方檢驗計算各權限特征對分類結果的影響,去除冗余權限特征,從權限相關性角度快速檢測惡意軟件,但沒有考慮組合權限的威脅;Junmei Sun等[6]用關鍵字相關距離進行計算關鍵代碼之間的相關性,后運用SVM算法檢測安卓惡意軟件,但復雜度較高。
所以本文的研究從用戶信息安全入手,將一系列威脅用戶安全的惡意權限組合作為特征,并為了避免程序計算中出現計算不準確這一問題,采用改進的樸素貝葉斯算法進行分類。
1? 研究現狀
1.1? 基于權限的安卓惡意軟件檢測研究
在安卓惡意軟件檢測中,主要有靜態檢測與動態檢測。靜態檢測是指在軟件不運行的狀態下通過提取軟件自身的特征進行分析,而動態檢測是在軟件運行狀態下檢測可疑行為,從而判斷軟件是否為惡意。所以,靜態檢測更為方便快捷。
在靜態分析中,Enck等人[7]提出了有代表性的Kirin系統,通過分析安卓軟件申請的權限來判定軟件是否存在惡意行為。Justin Sahs[8]提取APK的恃征,利用分類器訓練這些特征來進行分類。Glodek等人[9]提取權限、組件、本地代碼作為特征,利用Random Forest算法對應用程序進行分類。Moonsamy等人[10]靜態分析安卓Manifest.xml中的權限,利用biclustering算法,找出惡意軟件和非惡意軟件分別使用頻率最高的權限和權限之間的特征關系。陳洪閔等人[11]獲取apk中的權限以及API特征作為特征集,并用機器學習的分類算法來判斷是否為惡意軟件。由此可見,安卓軟件測權限可以作為檢測惡意軟件的特征屬性。
1.2? 樸素貝葉斯算法在檢測方面的應用
樸素貝葉斯(Native Bayes,NB)算法[12]是一種依據概率原則進行分類的機器學習算法。應用先前事前的有關數據來估計未來事件發生的概率。樸素貝葉斯的思想基礎是:對于給出的待分類項,求解在此項出現的條件下各個類別出現的概率,哪個最大,就認為此待分類項屬于哪個類別。
基于貝葉斯理論的樸素貝葉斯分類方法具有簡單、有效、速度快的優點,是文本分類算法的重點研究內容之一,李丹[13]的基于樸素貝葉斯方法的中文文本分類研究表明樸素貝葉斯具有良好的分類效果;張潔琳[14]使用貝葉斯網絡應用于用戶信用評估;任曉奎[15]等人所做的基于粒子群的加權樸素貝葉斯入侵檢測模型既能解決傳統樸素貝葉斯算法的特征項冗余問題,同時也可以優化特征項間的強獨立性問題,通過實驗證實了該模型的實效性,提高了檢測率。由此可見,樸素貝葉斯算法在分類上具有著廣泛的應用和良好的表現。
綜上,樸素貝葉斯方法在分類檢測方面應用廣泛,且基于權限的樸素貝葉斯檢測方法快速、準確率高、誤報率低,但是要求特征間獨立性較大,而單個權限特征之間往往是互相關聯的。基于權限組合的檢測方法可以增加特征間的獨立性,缺點是檢測方法太單一。
2? 方案介紹
2.1? 安卓惡意軟件檢測方法
該文提出的安卓惡意軟件檢測方法,具體流程如圖1所示,以靜態檢測的方式,通過反編譯提取出軟件中的權限,并將權限組合作為特征形成特征集合,然后將它們向量化,利用改進的樸素貝葉斯算法進行訓練,計算出條件概率和先驗概率,建立相應的分類模型,在測試時利用后驗概率來快速地識別出惡意軟件。
2.2? 構建權限特征集合
安卓軟件中,每一種行為都有相應的權限與之對應,權限能夠在很大程度上反應出軟件的特定行為模式。該文首先獲取軟件的權限信息,構建權限特征集合,將權限作為特征屬性來判別惡意軟件。
安卓應用程序包文件apk,是安卓操作系統上的應用程序安裝文件格式。一個apk文件通常包括被編譯的代碼文件(即.dex件)、資源文件(即resources)、assets、證書文件(即certifi-cates)和清單文件(即mainifest.xml)等。從結構上來說,apk是一種基zip文件格式的文件,它與jar文件的構造方式相似[16]。該文首先將正常和惡意apk作為訓練樣本庫,以apk文件為輸入,利用開源工具解壓縮工具apktool反編譯apk,得到classes.dex文件和安卓Manifest.xml文件,解析安卓Manifest.xml文件提取所有權限信息,例如讀取通訊錄、撥打電話等權限。通過對權限特征的訓練、分析和識別,檢測應用程序是惡意應用程序還是非惡意應用程序。Google為安卓系統設立了134個權限,同時允許用戶進行自定義權限的操作。本文主要研究安卓本身所提供的權限。
解析安卓Manifest.xml文件提取的所有權限信息只是反映出軟件會申請這些權限,但是有些權限,正常應用和惡意應用可能都會申請,不能夠反映出惡意應用的特性,會引起較多的誤判,研究發現一個惡意行為的發生通常需要多個特定權限的配合使用才能達到[17]。
為了識別未知的安卓軟件是否為惡意軟件,是否存在惡意行為,該文采用文獻[3]中總結出來14組權限組合作為輸入特征,其中包括9組危險權限和5組從常被惡意程序利用的事件。如表1所示,構建權限特征集合。
對于每個訓練樣本的提取出所有權限,從中選取含有這14組權限組合特征的權限集合,這樣每個訓練樣本可用{Xi1,Xi2,…,Xi14}來表示,每個維度對應一組權限組合,若樣本中含有該權限組合中的個數為n,則標記為n;若沒有,則用0表示,得到特征向量集合。最后進行類別標記,用{0,1}來表示,其中0表示屬于非惡意軟件,1表示屬于惡意軟件。
例如某個樣本中包含權限RECEIVE_BOOT_ COMPLETED,INTERNET,READ_PHONE_STATE,SEND_SMS,RECEIVE_SMS,CHANGE_CONFI GURATION,則此樣本構建權限特征集為{0,0,0,0, 0,1,0,2,0,1,0,0,0,1,1}。
2.3? 基于改進的樸素貝葉斯算法的惡意軟件檢測
樸素貝葉斯算法利用貝葉斯公式的特性, 將先驗概率和條件概率轉換成后驗概率, 并為了簡化問題處理, 利用條件獨立性假設,減少安卓惡意軟件分類計算的開銷,預測位置數據樣本屬于最高后驗概率的類。但傳統的樸素貝葉斯算法對數據計算要求較高,容易產生偏差,且由于特征的復雜性無法直接應用,該文對此提出了改進:
算法:改進的樸素貝葉斯算法
輸入:樣本訓練數據集定義為D={D1, D2,…,Dn},測試數據集定義為T={T1,T2,…,Tm},將提取出的特征集合作為數據的特征集X={Xi1, Xi2,…, Xi14},i∈[1,m],定義Y={0,1}來表示類別,其中0表示屬于非惡意軟件,1表示屬于惡意軟件。
輸出:T的分類
1. 預處理
(1)Laplace校準
Laplace校準,也叫拉普拉斯平滑,即若出現特征劃分未出現,即條件概率為0的情況下,將所有類別特征劃分計數加1,這樣如果訓練樣本集數量充分大時,并不會對結果產生影響,并且解決了上述頻率為0的尷尬局面。
(2)自然對數避免下溢出
在公示中我們可以發現,在對后驗概率的比較計算中,存在很小的概率相乘可能會造成下溢出,所以在進行乘法運算時采用乘數取自然對數法對運算結果進行修正。采用自然對數可避免下溢出或浮點數舍入導致的錯誤,且不會有任何損失。
2. 計算先驗概率以及條件概率
其中,先驗概率P(Y)可以計算惡意或非惡意樣本在整個訓練集中的比例來得到
(1)
該文利用樸素貝葉斯分類器計算條件概率P(X|Y),由于貝葉斯公式的條件是特征集合A中的各個特征值相互獨立,則條件獨立性假設可表示為
(2)
P(Xi|Y=j)為條件概率,也可以從訓練數據中得到,樣本Ti的特征可以用一組維度為14的特征向量(Xi1,Xi2,…,Xi14)來表示,則條件概率公式可以寫成
(3)
若出現所有特征為出現的情況則引入拉普拉斯校準進行數值修正,即
(4)
3. 計算后驗概率
分別計算出判斷為惡意與非惡意情況下的后驗概率,即可簡化為
(5)
比較各分類下的值,若在惡意條件下的后驗概率比非惡意條件下概率大,則分類結果為惡意軟件;反之,則為良性軟件。
3? 實驗過程與分析
3.1? 實驗過程
本次實驗共采集了7035個樣本,其中3171個是良性應用,為了避免數據的不均衡性,良性應用下載自廣受信賴的應用商城 Google Play、小米商店等分別通過自己編寫的爬蟲程序爬取,包含生活、游戲、社交、購物、教育等應用類別。另外3864個應用為惡意應用,惡意樣本來源為Android Malware Genome Project[16],覆蓋惡意應用家族的所有類別。
實驗在配置有JAVA環境的Windows 操作系統上執行。通過對多個惡意軟件和非惡意軟件的樣本進行檢測,統計計算出檢測的評價標準,作為評估該方法可靠性的指標。
在惡意檢測部分的實驗中,將訓練樣本分為訓練樣本集合和測試樣本集合。其中訓練樣本集合有5628個樣本,包含惡意樣本3010個和非惡意樣本2528個;測試樣本集合有1407個,包含惡意樣本763個,非惡意樣本644個,在分類算法上,使用上述改進的樸素貝葉斯算法,并對檢測出為惡意的軟件進行惡意行為分析,采用十折交叉驗證,輪流將樣本集的90%作為訓練集,10%作為測試集,取10次試驗的平均結果來評估模型。
3.2? 實驗方法和評價標準
為了更好的評估算法模型,實驗選取的評價標準有Accuracy、Precision、Recall、F-score。
(1)Accuracy為準確率,該指標越高,表示該模型對所有未知APK預測結果的準確率越高;
(2)Precision為精確率,該指標越高,表示該模型對負樣本的區分能力越強;
(3)Recall為回歸率,該指標越高,表示該模型對正樣本的識別能力越強;
(4)F-score是Precision與Recall的綜合評估,該指標越高,說明了該模型越穩健。
其中分類的結果表如表2所示。
根據表2的描述,則實驗效果評價標準的計算公式如表3所示。
3.3? 實驗結果與分析
如表4所示,本方案的惡意樣本與Yeima,DroidDetective均包含49個惡意家族,將實驗結果同Yerima[18],DroidDetective[19]的方案比較。為了測試模型的準確性和穩定性,采用了4個指標,分別為:Accuracy、Precision、Recall、F-score。
從上述實驗結果和對比可以得出以下結論:
(1)對比Yeima中使用的傳統樸素貝葉斯方 法,在各個評價指標上均有較好表現,說明本文基于權限組合的改進的樸素貝葉斯算法有一定的改進效果。
(2)與DroidDetective使用權限組合進行對惡意軟件的檢測方案相比,本文表現出了更好的對惡意軟件檢測的準確率以及穩定性。
(3)本文對于惡意樣本的檢測準確率高達97%,而對于良性樣本檢測準確率達到91.9%,可能存在有些軟件權限申請過多而誤判為惡意樣本的情況,有待改進。
4? 總結
該文針對如何對安卓惡意軟件進行快速有效的分析檢測這一問題,使用靜態檢測的方法,首先通過apktool反編譯安卓軟件,并從中提取了安卓軟件的權限,并用機器學習的方法將權限組合作為特征進行訓練,用改進的樸素貝葉斯算法將軟件進行分類檢測。本方案具有較高的準確率和穩定性,并且即使在非惡意軟件使用了大量敏感權限時,也能夠被準確被準確區分出來,將對非惡意軟件的誤報降到最小。在未來的工作中,希望能找到更多更加有效的特征,結合動態檢測進行研究或者將對比基于BP神經網絡和SVM算法[20]以及以熵值法加權的KNN算法[21]來進行安卓惡意軟件上的檢測。
參考文獻
[1]電子產品世界. 2017年第一季度全球智能手機銷量增長9%[DB/OL]. http://www.eepw.com.cn/article/201705/359681. htm, 2017 05 25.
[2]鴻鴈. 360:2017年中國手機安全風險報告[DB/OL]. https:// bbs.360.cn/thread-14972358-1-1.html, 2017 5 12.
[3]ZHOU Y, JIANG X. Dissecting Android malware: characterizationand evolution[C]//Proceedings of the 2012 IEEE Symposium onSecurity and Privacy. Washington, DC: IEEE Computer Society, 2012: 95-109.
[4]Wu D J, Mao C H, Wei T E, et al. DroidMat: Android Malware Detection through Manifest and API Calls Tracing[C]//Information Security (Asia JCIS), 2012 Seventh Asia Joint Conference on. IEEE, 2012: 62-69.
[5]ZHANG R, YANG J Y. Android malware detection based on permission relevance[J]. Journal of Computer Applications, 2014, 34(5): 1322-1325.
[6]Junmei Sun, Kai Yan, Xuejiao Liu, Chunlei Yang, Yaoyin Fu: Malware detection on android smartphones using keywords vector and SVM. ICIS 2017: 833-838.
[7]Enck W, Ongtang M, Mcdaniel P D, et al. On lightweight mobile phone application certification[C]. computer and communications security, 2009: 235-245.
[8]Sahs J, Khan L. A machine learning approach to Androidmalware detection. European Intelligence and SecurityInformatics Conference. Odense, Denmark, 2012: 141-147. [doi:10.1109/EISIC.2012.34].
[9]Glodek W, Harang R. Rapid Permissions-Based Detection and Analysis of Mobile Malware Using Random Decision Forests[C]//Military Communications Conference, Milcom 2013-. IEEE, 2014: 980-985.
[10]Moonsamy V, Rong J, Liu S. Mining permission patterns for contrasting clean and malicious Android applications[J]. Future Generation Computer Systems, 2014, 36(3): 122-132.
[11]陳紅閔, 胡江村. 安卓惡意軟件的靜態檢測方法. 計算機系統應用, 2018, 27(7): 26-33.
[12]BrettLantz, 蘭茲, 李洪成, 等. 機器學習與R語言[M]. 機械工業出版社, 2015.
[13]李丹. 基于樸素貝葉斯方法的中文文本分類研究[D]. 河北大學, 2011.
[14]張潔琳. 試論貝葉斯網絡在用戶信用評估中的應用[J]. 軟件, 2018, 39(12): 194-197.
[15]任曉奎, 繳文斌, 周丹. 基于粒子群的加權樸素貝葉斯入侵檢測模型[J]. 計算機工程與應用, 2016, 52(7): 122-126.
[16]APK[OL]. https://zh. wikipedia. org/wiki/APK.
[17]楊歡, 張玉清, 胡予濮, 等. 基于權限頻繁模式挖掘算法的安卓惡意應用檢測方法[J]. 通信學報, 2013, 34(Z1): 106-115.
[18]Yerima S Y, Sezer S, Mcwilliams G, et al. A New Android Malware Detection Approach Using Bayesian Classification [J]. advanced information networking and applications, 2013: 121-128.
[19]Liang S, Du X. Permission-combination-based scheme for Android mobile malware detection[C]. international conference on communications, 2014: 2301-2306.
[20]王宏濤, 孫劍偉. 基于BP 神經網絡和SVM 的分類方法研究[J]. 軟件, 2015, 36(11): 96-99.
[21]張慧, 侯開虎, 周洲. EM-KNN算法在復烤煙葉分類上的運用[J]. 軟件, 2018, 39(6): 96-100.