?

基于敏感權限和API的Android惡意軟件家族分類方法

2020-08-25 06:56于媛爾張琳琳方文波胡英杰王晨躍
鄭州大學學報(理學版) 2020年3期
關鍵詞:樣本數應用程序家族

于媛爾, 張琳琳, 趙 楷, 方文波, 胡英杰,宋 鑫, 王晨躍

(1. 新疆大學 信息科學與工程學院 新疆 烏魯木齊 830046; 2. 新疆大學 網絡空間安全學院 新疆 烏魯木齊 830046; 3.新疆大學 軟件學院 新疆 烏魯木齊 830091)

0 引言

自2007年面世以來,Android系統迅速發展為移動終端應用最廣泛的操作系統。相比于個人計算機,移動設備與用戶的隱私信息和財產安全聯系更為密切。此外,由于系統的開源性與市場開放性,Android操作系統更加容易被惡意軟件利用。2019年8月13日,360互聯網安全中心最新發布《2019年上半年中國手機安全狀況報告》[1]。報告顯示,2019年上半年,360互聯網安全中心共截獲安卓平臺新增惡意程序樣本約92.0萬個,平均每天截獲新增手機惡意程序樣本約0.5萬個。惡意軟件樣本數量的增長速度遠遠超過了惡意軟件檢測系統分析的速度。

大多數新型惡意軟件樣本都是已知惡意軟件的多態變體[2-3],由于同源惡意軟件家族很大程度上都共用了祖先的大部分代碼,具有內在關聯性,因此,同一家族的樣本可能執行類似的惡意行為。將惡意軟件樣本分類到各個已知的家族中,不僅可以減少這些惡意軟件變體的分析時間,還可用于預測未知惡意軟件樣本的行為。這對于惡意軟件的檢測和分類具有重要意義。

本文依據惡意家族繼承性與衍生性的本質特征,結合靜態分析方法,提出一種基于敏感權限和API的Android惡意軟件家族分類方法,并結合隨機森林算法實現對Android惡意軟件的家族分類。

1 惡意軟件家族分類現狀

目前,通過對Android不同家族的特征進行研究,總結出119個家族的惡意行為,例如,數據竊取、惡意下載、將信息竊取到遠程服務器等。惡意軟件家族之間的區別微不可察,惡意行為的大量重疊使得區分家族變得異常困難。國內外學者針對Android惡意軟件家族分類提出了多種方法。分類方法大致可以分為靜態分析方法和動態分析方法。

靜態分析方法是在不運行程序情況下,需要先對應用程序進行反編譯或反匯編處理,通過處理過后的代碼來分析Android應用程序的行為,并根據這些行為來判斷應用程序是否具有相似性。文獻[4]通過多個簽名條目(字符串、方法名、方法體等)評估不同樣本間的相似性,進而歸類同家族樣本,使得檢測變體成為可能。Dendroid[5]利用數據挖掘的方法分析Android惡意軟件家族樣本的代碼結構,通過靜態分析,提取與應用程序片段關聯的代碼結構CFG來進行惡意軟件的相似性計算。DroidSieve[6]是一種基于靜態分析的Android惡意軟件分類器,該分類器快速、準確且對混淆具有彈性。Fan等[7]為了識別Android惡意軟件的多態變體,采用聚類算法和社區結構方法,從家族樣本的敏感API調用子圖中提取頻繁子圖作為惡意軟件的家族行為特征,并利用該家族特征識別未知惡意軟件,檢測率達到94.5%。文獻[8]定義了Android軟件基因,從代碼段、資源段和配置清單文件三個方面對基因進行了提取,并進行檢測與分類,有較高的檢測率和分類正確率。文獻[9]提出了一種用于發現不同數量大小的Android惡意軟件家族的新算法,通過在Drebin[10]和最近的Koodous惡意軟件數據集上進行實驗,得到良好的分類效果。文獻[11]提出了一個兩級行為圖模型DroidMiner,并提取敏感路徑來表示惡意軟件的行為模式。但是敏感路徑可能出現在合法部分和惡意組件中,從而導致高誤報率。DroidSIFT[12]提取加權上下文API依賴圖作為程序語義來構造特征集,確定應用程序是否屬于惡意應用程序,以及惡意應用程序所屬的家族,其依賴于一組良性子圖來刪除惡意軟件中的常見子圖。不足的是,確保良性子圖集的完整性往往是困難的。文獻[13]提出了MassVet,它將應用程序的UI建模為有向圖,其中每個節點都是一個視圖,每個邊描述它們之間的導向關系。通過不同應用程序中的類似視圖結構,MassVet可以有效地識別重新打包的應用程序。

動態分析方法主要是通過運行Android應用程序發現應用漏洞,常見的方式是通過在沙箱中運行應用程序,觀察應用程序所表現出的行為,分析其中是否存在惡意行為,如是否泄漏用戶隱私、是否含有誘騙信息等。文獻[14]提出了一種自動提取Android惡意軟件家族簽名的方法,通過識別使用相同(或類似)惡意代碼搭載在不同的良性應用程序上,對產生的惡意軟件的簽名進行家族匹配,但該方法的重點明確放在搭載和重新打包的應用程序上。DroidScribe[15]使用機器學習方法將Android惡意軟件樣本自動準確分類到各個家族中,同時僅觀察其運行時的行為。

由于靜態分析只需要反編譯提取文件的相關特征就可以進行分析,相比于動態分析,不會對系統運行產生影響,所消耗的系統資源與時間較少,效率更高。因此本文提出一種基于靜態分析的方法,進行惡意軟件的家族分類。

2 本文方法

2.1 Android理論基礎

任何Android應用程序的后綴都是.apk,即Android application file package。APK文件是一個壓縮包,主要包括Java源代碼編譯后的文件、資源文件、簽名證書和配置文件等,本文所提取的API在classes.dex文件中,采用dex2jar工具進行反編譯,可得到.jar后綴的文件,用jd-gui工具將.jar文件反編譯為.java文件,最后通過python代碼提取其中的API。

APK文件經過工具APKTool(http:∥ibotpeaches.github.io/Apktooll)反編譯可以生成一種smali格式的數據包。smali語言是Davlik的寄存器語言,語法上和匯編語言相似。smali文件前三行的通用模式如下:

.class<訪問權限[修飾關鍵字]><類名>,用于說明目前的類名;

.super<父類名>,說明目前類的父類名稱;

.source<源文件名>,說明目前類的源文件名稱。

剩下的是類的主體部分,一個類包括多個字段或方法。

2.2 惡意軟件家族分類框架的搭建

整個系統的框架如圖1所示,首先收集各個家族的惡意軟件樣本,通過Android逆向工程技術提取權限與API,將提取過后的Android權限通過權值分配,對比不同權值的結果,選取結果最優的權限組作為敏感權限。通過Android官方聲明文檔中對敏感權限所對應的API進行提取,并與通過權值篩選提取的API相結合,將這些API定義為敏感API,將敏感API與權限相結合構成特征集,最后通過隨機森林算法對Android惡意軟件家族進行分類。

圖1 惡意軟件家族分類框架圖Figure 1 Malware family classification framework

2.3 特征提取

2.3.1敏感權限的提取 普通權限是指那些不會威脅到用戶安全和隱私的權限,這部分權限系統會自動進行授權,不需要手動操作。敏感權限則表示那些可能會觸及到用戶安全隱私或者對設備安全造成影響的權限,如獲取手機聯系人信息等權限,這些權限必須由用戶點擊授權才可以使用,否則程序無法使用相應的功能。本文采用APKTool工具對Drebin數據集[10]中的APK文件進行反編譯。由于反編譯過后的AndroidManifest.xml文件中聲明了所有權限,要篩選出所需要的敏感權限,還需要進一步處理。因此對20個家族4 664個樣本的權限信息進行提取,并根據提取結果與目前官方發布的151個權限進行對比,采用權值計算公式(1)對各家族權限賦予權重,

(1)

其中:p(s,f)代表家族f中某個權限調用樣本數s;allnum代表所有家族的總樣本數;totalnum代表家族f的樣本數。選用w>0.3、w>0.2和w>0.1的三組權限進行對比,最終選取w>0.1的權限作為本文的敏感權限,共31個。

2.3.2敏感API的提取 通常,惡意軟件的實現需要調用特定API來完成,如惡意計費軟件會調用發送短信的API、隱私竊取軟件會調用訪問通訊錄的API等,此類API被稱為敏感API。本文的敏感API主要分為三個部分。第一部分是通過將Drebin數據集中選取的4 664個APK進行解壓,對其中的classes.dex文件采用dex2jar和jd-jui工具得到java源碼,從java源碼中提取出API,并進行統計篩選,通過權值計算公式(1),選用w>0.2、w>0.1和w>0.05的三組API進行對比,最終選取w>0.05的共30個API作為敏感API的一部分。第二部分通過查閱Android5.1.1版本的官方文檔,提取出8個危險權限所對應的87個API。最后一部分為官方聲明重度敏感的11個敏感API。刪去重復部分,最后一共提取121個API作為敏感API。將每個APK反編譯過后,從中提取.smali文件與敏感API進行匹配。

2.3.3敏感權限與API特征融合 由于單一特征難以充分地反映惡意軟件的惡意行為,例如權限雖然可以證明敏感資源的使用情況,但是不能提供可疑應用程序意圖的詳細描述,而與權限相關的API更能反映惡意軟件的行為。因此本文將31個敏感權限與121個敏感API結合后共152個敏感特征,作為分類器的輸入。

2.4 分類算法

隨機森林(random forest,RF)是一種常見的機器學習分類算法,通過集成多個決策樹生成分類器,且其輸出的類別是由個別樹輸出的類別的眾數而定[16]。在樣本訓練階段,通過有放回抽樣的方式抽取子樣本集,對每組子樣本集進行決策樹建模,由多棵決策樹構成隨機森林。在樣本預測階段,先統計每棵決策樹的預測結果,再通過投票形式給出最終的分類結果。

隨機森林算法有許多優點,例如,既可以用于回歸也可以用于分類任務,易于查看模型輸入特征的相對重要性等。特別是在處理多種類型數據時準確度較高,且可以平衡不平衡數據集的誤差,適用于惡意家族數據集的分類。所以,本文實驗選用隨機森林算法作為分類算法,并與K近鄰(K-nearest neighbor,KNN)、支持向量機(support vector machine,SVM)、邏輯回歸(logistics regression,LR)、反向傳播(back propagation,BP)、決策樹(decision tree,DT)進行對比。

3 實驗結果與分析

3.1 實驗數據

本文的數據集來源于Drebin數據集,包含5 560個惡意軟件樣本,共179個家族。由于大多數家族的樣本個數較少,不具有代表性,因此選擇樣本數量排名前20的家族作為本實驗的數據集,家族分布情況如表1所示。

表1 數據集樣本列表Table 1 Dataset list

3.2 結果分析

為了評估該模型對于Android惡意軟件家族分類的效果,主要采用的指標為:精確度(precision)、召回率(recall)、F1值及正確率(acc),其中:precision代表預測正例正確占所有預測正例的比值;recall代表預測正例正確占全部實際為正例的比值;F1是precision和recall加權調和平均;acc代表分類器正確分類的樣本數與總樣本數之比。以上指標計算為

其中:TP(true positive)為真正例,代表將正例正確預測為正例的樣本數;FP(false positive)為假正例,代表將負例錯誤預測為正例的樣本數;FN(false negative)為假負例,代表將正例錯誤預測為負例的樣本數;TN(true negative)為真負例,代表將負例正確預測為負例的樣本數。采用隨機森林算法得到的實驗結果如表2所示,除了ExploitLinuxLotoor家族的F1值較低之外,其他家族的平均F1值都高于90%。對惡意軟件家庭分類的平均精確度為98.4%、平均召回率為95.9%、平均F1值為97.1%。表明該方法對于惡意軟件家族分類有較好的效果。

表2 隨機森林分類算法實驗結果Table 2 Experimental results of RF classification algorithm

為了證明隨機森林方法分類的準確性,本文采用其他5種分類算法進行實驗結果對比分析,如表3所示。實驗結果表明,隨機森林算法優于其他5種基線算法。

4 結束語

惡意軟件變體數量的快速增長,為惡意軟件的檢測及分類帶來極大挑戰。為了縮短惡意軟件檢測及分類的時間,將其分類至所在的家族顯得格外重要。本文提出一種基于敏感權限和API的惡意軟件家族分類方法,利用逆向工程技術提取Android應用程序的權限和API特征。通過權重分配,定義并提取敏感權限和敏感API,同時進行特征融合,構建出特征庫,最后采用隨機森林算法進行分類。實驗結果表明,該方法能夠有效地進行惡意軟件的家族分類,達到了較高的精確度。下一步工作,將抽取或挖掘更多特征(如增加intent、opcode、string等特征)對惡意軟件進行全面描述,并利用深度學習模型研究更多惡意軟件家族的衍變規律。

猜你喜歡
樣本數應用程序家族
境外蔗區(緬甸佤邦勐波縣)土壤理化狀況分析與評價
勘 誤 聲 明
孟連蔗區土壤大量元素養分狀況分析
基于極端學習機的NOx預測模型樣本特性研究
刪除Win10中自帶的應用程序
《小偷家族》
谷歌禁止加密貨幣應用程序
家族中的十大至尊寶
三星電子將開設應用程序下載商店
微軟軟件商店開始接受應用程序
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合