張雪濤 王金雙 孫蒙
摘 要:函數(shù)調(diào)用圖存在規(guī)模過大、無關(guān)信息過多等缺陷。為實現(xiàn)函數(shù)調(diào)用圖的高效分析,對安卓惡意軟件的惡意代碼模式進(jìn)行挖掘,提出一種基于圖卷積神經(jīng)網(wǎng)絡(luò)(GCN)的敏感API調(diào)用模式,并設(shè)計相應(yīng)的函數(shù)調(diào)用圖精簡方法,以及敏感API權(quán)重評價方法,有效降低了函數(shù)調(diào)用圖規(guī)模,實現(xiàn)對敏感API調(diào)用模式的挖掘。檢測模型綜合了安卓惡意軟件操作碼特征、敏感權(quán)限特征、敏感函數(shù)調(diào)用頻度特征,構(gòu)建了基于多特征融合的安卓惡意軟件檢測系統(tǒng),進(jìn)一步提升了檢測精度。數(shù)據(jù)集測試驗證了API調(diào)用模式特征以及集成檢測模型的有效性。
關(guān)鍵詞:圖嵌入;圖卷積神經(jīng)網(wǎng)絡(luò);惡意軟件檢測;多特征
DOI:10. 11907/rjdk. 192427 開放科學(xué)(資源服務(wù))標(biāo)識碼(OSID):
中圖分類號:TP309文獻(xiàn)標(biāo)識碼:A 文章編號:1672-7800(2020)007-0187-07
GCN-based Android Malware Detection Model
ZHANG Xue-tao, WANG Jin-shuang, SUN Meng
(Command & Control Engineering College, Army Engineering University of PLA, Nanjing 210007, China)
Abstract:The function call graph (FCG) of the APK is too large and carries redundant information. To achieve efficient analysis of the FCG, and represent the calling mode of sensitive APIs, we propose a sensitive API call mode feature. A function call graph reduction method and a sensitive API weight evaluation method are proposed, which effectively reduces the size of the FCG and realizes the mining of the calling mode of the sensitive API. Besides, opcode frequency feature, sensitive permission feature and API frequency feature are introduced for further detection model improvement. Experiment results show that the API call model feature and integrated detection model are effective.
Key Words:graph embedding; graph convolutional networks; malware detection; multi-feature
0 引言
受經(jīng)濟利益驅(qū)使,針對智能手機平臺的攻擊行為不斷增長,惡意軟件則是攻擊行為的重要載體[1]。相關(guān)研究報告顯示,Android平臺是最大的移動智能設(shè)備終端系統(tǒng)平臺,全球已經(jīng)有超過10億臺安卓設(shè)備售出,GooglePlay應(yīng)用商店下載量累計超過650億次[2]。隨著Android平臺應(yīng)用數(shù)量的快速增長,針對Android設(shè)備的惡意軟件也在快速擴充。McAfee的年度報告顯示,安卓平臺累計檢測到了1 200萬個惡意軟件樣本,每年惡意軟件增加250萬[3]。隨著安卓平臺惡意軟件數(shù)量不斷增長,基于機器學(xué)習(xí)的安卓惡意軟件檢測技術(shù)應(yīng)運而生。
現(xiàn)階段安卓惡意軟件獲取多通過將惡意代碼或廣告等惡意模塊植入良性軟件產(chǎn)生。在安卓惡意軟件產(chǎn)業(yè)鏈中已出現(xiàn)了例如TDKs的安卓勒索軟件批量生成工具。Zhou等[4]指出,超過86%的安卓惡意軟件由重打包產(chǎn)生,故多數(shù)同類型安卓惡意軟件雖基于不同載體軟件重打包獲得,但同類型惡意軟件之間多存在相同或相似的惡意代碼執(zhí)行模式。而基于敏感權(quán)限頻度特征、操作碼頻度特征的檢測方法,側(cè)重于對惡意軟件整體進(jìn)行特征提取,無法準(zhǔn)確對惡意軟件中的惡意代碼進(jìn)行定位,導(dǎo)致面對大量待檢測樣本時無法有針對性地提取特征,且檢測模型泛化性較差,存在誤報率和漏報率較高的問題。
為對惡意代碼模塊的執(zhí)行方式進(jìn)行分析,準(zhǔn)確獲取惡意APK的關(guān)鍵特征,提升檢測精度與效率,本文提出一種基于函數(shù)調(diào)用圖(FCG)的敏感API調(diào)用模式特征。該方法首先提取待檢測樣本的FCG,通過本文提出的圖精簡方法對其中的低敏感度API節(jié)點進(jìn)行刪減,以降低數(shù)據(jù)處理負(fù)荷;基于圖卷積神經(jīng)網(wǎng)絡(luò)(GCN)對精簡后的函數(shù)調(diào)用圖進(jìn)行分析,提取特征,獲取圖中每個API節(jié)點的嵌入表示。敏感API節(jié)點在函數(shù)調(diào)用圖中的嵌入表示攜帶了惡意代碼模塊的調(diào)用結(jié)構(gòu)信息。實驗證明該特征可有效表示程序的惡意代碼部分結(jié)構(gòu)信息,從而實現(xiàn)高效檢測安卓惡意軟件。基于多種特征集成判定提升檢測模型性能。
為驗證敏感API調(diào)用模式特征,以及多特征集成判定模型的有效性,本文基于4 780個良性樣本以及5 600個惡意樣本對單特征,在多特征情況下評估檢測性能,測試結(jié)果顯示本模型擁有優(yōu)異的檢測性能。本文主要貢獻(xiàn)如下:①提出一種基于GCN的安卓惡意軟件敏感API調(diào)用模式,使用圖嵌入實現(xiàn)對惡意代碼部分的函數(shù)調(diào)用結(jié)構(gòu)信息挖掘;②提出圖精簡以及敏感API權(quán)重計算方法,有效降低檢測系統(tǒng)的數(shù)據(jù)復(fù)雜度,提升了檢測系統(tǒng)效率;③提出多元特征融合的安卓惡意軟件檢測模型,綜合多種特征對安卓惡意軟件進(jìn)行判定,有效提升系統(tǒng)性能;④基于大量良性以及惡意安卓軟件樣本,對單個分類器、分類器聯(lián)合、特征有效性等進(jìn)行詳盡的驗證測試。
1 基礎(chǔ)概念與相關(guān)工作
基于機器學(xué)習(xí)的安卓惡意軟件檢測方法,按照特征類型分為動態(tài)檢測與靜態(tài)檢測。其中靜態(tài)監(jiān)測特征提取開銷較小,但易混淆受干擾;動態(tài)檢測特征提取開銷較大。由smali中提取出的函數(shù)調(diào)用圖特征屬于靜態(tài)特征的一種。
1.1 靜態(tài)檢測
靜態(tài)檢測主要對APK文件進(jìn)行特征提取,在程序非運行狀態(tài)下進(jìn)行惡意程序的特征提取與匹配工作。常用的靜態(tài)特征包括操作碼序列、操作碼頻度、程序流圖等。Huang等[5]對基于權(quán)限特征進(jìn)行安卓惡意軟件檢測進(jìn)行了全面評估,實驗結(jié)果證明權(quán)限特征與安卓惡意軟件間存在一定的相關(guān)性;Milosevic等 [6]基于APK源代碼以及權(quán)限信息進(jìn)行安卓惡意軟件檢測,取得了良好的檢測效果;Wang等[7]基于惡意程序權(quán)限、程序意圖等特征進(jìn)行安卓惡意軟件檢測,基于集成檢測的方法進(jìn)一步提升了檢測精度;Arp等[1]在其檢測工作中 使用了APK中所有網(wǎng)絡(luò)地址作為特征進(jìn)行惡意軟件檢測,獲得了94%的檢測準(zhǔn)確率;Sanz等[8]在基于權(quán)限的檢測工作中融入字符串作為輔助特征,有效提升了模型檢測性能。
1.2 動態(tài)檢測
動態(tài)檢測需針對指定的惡意軟件樣本構(gòu)造模擬運行環(huán)境進(jìn)行測試與記錄。面對海量的惡意程序,該種檢測方法開銷較大,導(dǎo)致應(yīng)用場景受限,但可對經(jīng)過混淆的惡意軟件進(jìn)行特征提取。常用的動態(tài)特征包括API調(diào)用、流量、系統(tǒng)運行分析等。Onwuzurike等 [9]基于馬爾科夫鏈,對安卓惡意軟件的API調(diào)用進(jìn)行研究,測試結(jié)果證明其檢測系統(tǒng)可根據(jù)API調(diào)用序列中的前后關(guān)系對未知惡意軟件作出預(yù)測;Jung 等 [10]基于專家經(jīng)驗對API類別進(jìn)行細(xì)分,進(jìn)一步提升了基于API調(diào)用特征的安卓惡意軟件檢測系統(tǒng)精度;Saracino等 [11]基于系統(tǒng)調(diào)用、用戶行為等動態(tài)特征,搭建Madam安卓惡意軟件檢測系統(tǒng),在大規(guī)模數(shù)據(jù)測試中檢測準(zhǔn)確率達(dá)到96%以上。動態(tài)與靜態(tài)特征結(jié)合可有效提升檢測精度,如Idrees等[12]基于權(quán)限、程序意圖等特征,對多種分類器集成方式進(jìn)行實驗,有效提升了系統(tǒng)檢測精度;Coronado-De-Alba等 [13]基于隨機森林以及決策樹構(gòu)建集成檢測模型,同樣獲得了良好的檢測效果。
1.3 圖卷積神經(jīng)網(wǎng)絡(luò)及函數(shù)調(diào)用圖
安卓惡意軟件開發(fā)者常將惡意代碼插入正常APK并進(jìn)行重打包以獲取惡意應(yīng)用。安卓惡意軟件在執(zhí)行危險操作時,常依賴于特定的API函數(shù),如在獲取設(shè)備號碼時常使用getVoiceMailNumber()函數(shù),并搭配相應(yīng)的API進(jìn)行敏感信息傳輸。同類型的安卓惡意軟件中常含有類似結(jié)構(gòu)的惡意代碼,故可通過對函數(shù)調(diào)用圖中的惡意代碼部分進(jìn)行發(fā)掘,從而實現(xiàn)安卓惡意軟件的檢測。
1.3.1 函數(shù)調(diào)用圖
函數(shù)調(diào)用圖是控制流圖的一種,用于反映程序中各個函數(shù)之間的調(diào)用關(guān)系。函數(shù)調(diào)用圖可表示為:
其中,V表示圖中所有頂點的結(jié)合,在APK的函數(shù)調(diào)用圖中,每個頂點對應(yīng)一個Android API;E表示函數(shù)之間的調(diào)用關(guān)系。通過APK-Tool或Androguard工具對APK進(jìn)行反編譯后,可從samli代碼中提取API及調(diào)用關(guān)系,從而形成APK的函數(shù)調(diào)用圖。
1.3.2 圖卷積神經(jīng)網(wǎng)絡(luò)及圖嵌入
圖卷積神經(jīng)網(wǎng)絡(luò)(GCN)概念最早由Kipf等[14]于2016年提出。與卷積神經(jīng)網(wǎng)絡(luò)(CNN)僅適用于處理維度規(guī)則的數(shù)據(jù)相對應(yīng),GCN可以對任意結(jié)構(gòu)化的數(shù)據(jù)進(jìn)行處理,例如社交網(wǎng)絡(luò)、知識圖譜等,并對結(jié)構(gòu)化數(shù)據(jù)的空間特征進(jìn)行提取。
FCG可使用函數(shù)間的調(diào)用關(guān)系用拓?fù)鋱D的形式對軟件進(jìn)行表征,而通過重打包獲得的安卓惡意軟件通常具有相同或相似的惡意代碼結(jié)構(gòu),故可基于GCN對惡意代碼部分的調(diào)用模式進(jìn)行挖掘與表征。
圖嵌入可以使用低維向量,表示圖中各個節(jié)點的鄰居節(jié)點情況與相對位置信息。在APK的函數(shù)調(diào)用圖中,由于惡意代碼執(zhí)行邏輯相似,故對應(yīng)的敏感API在圖中有相近似的上下文調(diào)用關(guān)系。常用的圖嵌入方法有DeepWalk、Node2vec、Walklets、基于GCN的圖嵌入等。由于APK的函數(shù)調(diào)用圖通常具有較大特征,因此GCN的圖卷積方法基于迭代計算,可以使用較小的計算代價獲取節(jié)點的嵌入表示。
2 基于敏感API調(diào)用模式特征的檢測模型
本文檢測模型主要使用敏感API調(diào)用模式特征作為主要特征,同時輔助Opcode頻度信息、敏感權(quán)限特征以及API調(diào)用頻度特征作為輔助特征。將所有特征合并送入分類器中以實現(xiàn)高精度的安卓惡意軟件檢測。檢測模型整體結(jié)構(gòu)如圖1所示。
本檢測系統(tǒng)基于opcode頻度、敏感權(quán)限、API調(diào)用頻度、敏感API調(diào)用模式4種特征進(jìn)行安卓惡意軟件檢測,前3種特征常用于安卓惡意軟件檢測,擁有較強的適應(yīng)性,但由于精度有限,故作為輔助特征?;贕CN的敏感API調(diào)用模式特征為本文提出的一種新型惡意軟件特征,將在下文著重介紹。
2.1 API調(diào)用模式特征
為有效處理函數(shù)調(diào)用圖并獲取敏感API節(jié)點的嵌入表示,提取對應(yīng)特征,實現(xiàn)惡意軟件檢測,本文提出函數(shù)調(diào)用圖精簡及敏感API嵌入計算方法,以最終獲取敏感API的調(diào)用模式特征。
調(diào)用模式特征提取過程如圖2所示。首先對APK進(jìn)行解包,并從samli代碼中提取調(diào)用關(guān)系,形成函數(shù)調(diào)用圖,對函數(shù)調(diào)用圖進(jìn)行精簡后,基于DGL計算每個節(jié)點的嵌入表示。
2.1.1 基于敏感API的函數(shù)調(diào)用圖精簡
由于現(xiàn)階段APK規(guī)模較大,其函數(shù)調(diào)用圖常包含數(shù)量龐大的API節(jié)點,其中多數(shù)為程序運行必需的普通節(jié)點,在引入無效信息的同時增加了檢測系統(tǒng)的數(shù)據(jù)復(fù)雜度,降低了檢測效率。為提升運行效率,檢測系統(tǒng)首先對非敏感API節(jié)點進(jìn)行初步刪減。其中敏感API列表來自Rasthofe等[15]對于敏感API的分析工作,包含敏感API共 26 322個。
為在精簡函數(shù)調(diào)用圖的同時保留敏感API的原始調(diào)用結(jié)構(gòu),避免函數(shù)調(diào)用圖精簡過程中對有效數(shù)據(jù)造成破壞,本文提出一種半保留式精簡方法。精簡算法的API節(jié)點刪減規(guī)則為:若某一節(jié)點為非敏感API節(jié)點,并且其鄰居節(jié)點中不含有敏感API節(jié)點,則對該節(jié)點進(jìn)行刪除;若某一函數(shù)節(jié)點為非敏感API節(jié)點,其鄰居節(jié)點中含有敏感API,則保留該節(jié)點。
以圖3所示函數(shù)調(diào)用圖為例,深色節(jié)點為敏感API節(jié)點,淺色節(jié)點代表一般API函數(shù)。左側(cè)圖形為原始函數(shù)調(diào)用圖,按照上述函數(shù)調(diào)用圖精簡規(guī)則:由于4號節(jié)點是非敏感API節(jié)點,且其鄰居節(jié)點中不含有敏感API節(jié)點,故在精簡過程中4號節(jié)點及其相鄰的邊都被刪除。精簡后的示例函數(shù)調(diào)用圖如圖3右側(cè)所示。
偽代碼如下:
Function FCG Slim
1: Function FCG Slim:
2:? ? Graph←Read gml file
3:? ? List←Read Sensitive API List
4:? ? For i From Graph.nodes
5: ? ?If i NOT IN List Then
6: ? ? ? If i.neighbor NOT IN List Then
7: ? ? ? ? ?Delete i
8: End
該算法可有效保證惡意代碼部分敏感API函數(shù)以及相關(guān)函數(shù)的調(diào)用結(jié)構(gòu)不被刪減。經(jīng)過精簡的函數(shù)調(diào)用圖可有效降低節(jié)點數(shù)量,提升處理效率。示例APK經(jīng)過精簡前后的函數(shù)調(diào)用圖如圖4所示。
如圖4所示,經(jīng)過精簡后的函數(shù)調(diào)用圖包含的節(jié)點數(shù)量明顯減少,可有效降低對大規(guī)模函數(shù)調(diào)用圖進(jìn)行分析造成的計算資源消耗。
2.1.2 基于GCN的敏感API圖嵌入
APK的函數(shù)調(diào)用圖通常擁有復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu),圖形嵌入算法可作為降維算法的一種,將復(fù)雜高維空間中的圖結(jié)構(gòu)映射到低維空間中。GCN與CNN相似,在圖結(jié)構(gòu)上定義了卷積算子,可在迭代過程中不斷擴大節(jié)點嵌入向量所包含的節(jié)點信息,計算過程如圖5所示。
圖5中,n0 ~ n4 表示函數(shù)調(diào)用圖中5個API節(jié)點,每個API節(jié)點對應(yīng)其狀態(tài)向量h0 ~ h4(狀態(tài)向量即API節(jié)點在函數(shù)調(diào)用圖中的嵌入表示)。在嵌入計算過程中,對各節(jié)點的狀態(tài)向量h進(jìn)行隨機初始化,以獲取n0節(jié)點的新的嵌入表示h0new為例,f為非線性變換函數(shù),計算方法如下:
圖卷積神經(jīng)網(wǎng)絡(luò)中API嵌入表示過程就是信息在節(jié)點之間不斷傳播聚合再傳播的過程,每個節(jié)點的嵌入表示均會獲取鄰居節(jié)點信息并進(jìn)行更新;在下輪迭代中,攜帶了遠(yuǎn)端節(jié)點信息的嵌入表示會不斷隨著節(jié)點之間的連接進(jìn)行傳播。以圖5為例,n0節(jié)點為敏感API節(jié)點,在迭代更新過程中該節(jié)點的嵌入表示將會攜帶其鄰居節(jié)點信息,即敏感API在函數(shù)調(diào)用圖中的嵌入表示將會攜帶一定的調(diào)用關(guān)系信息。對于API嵌入表示的有效性將在實驗部分進(jìn)行驗證。
2.1.3 敏感API嵌入權(quán)重分配
由于所有APK樣本中所包含的敏感API種類及數(shù)目不同,本檢測系統(tǒng)基于TF-IDF方法對API函數(shù)的敏感程度進(jìn)行衡量,并在測試中分別選取前10、15、20、 25、 30、35個敏感API函數(shù)的嵌入表示作為API調(diào)用模式特征,以確定最優(yōu)的API數(shù)量。將特征送入分類器進(jìn)行訓(xùn)練,以達(dá)成惡意軟件檢測目的。通過計算,敏感程度排名前30的API如表1所示。
2.2 輔助判定特征
(1)Opcode頻度特征。Opcode是對編譯后的安卓應(yīng)用程序基于助記符的表示方法,由于其包含了程序的大量原始信息,常用于安卓惡意軟件檢測。本檢測模型使用opcode頻度作為子特征之一。首先對APK進(jìn)行反匯編,并從所有smali文件中提取對應(yīng)種類opcode數(shù)量。本方法以詞袋模型為基礎(chǔ),共統(tǒng)計了256類opcode數(shù)量并將其表示為[α={α1,α2,α3,…,α256}, α∈N ]的特征向量。
(2)敏感權(quán)限特征。安卓惡意程序在執(zhí)行惡意操作時需要申請對應(yīng)的敏感權(quán)限,本方法基于AndroidManifest.xml文件提取APK安裝時申請的權(quán)限列表作為特征,其中納入統(tǒng)計范圍的共120個權(quán)限項目,將其表示為長度為120的特征向量:[P={p1,p2,p3,?,p120}, p∈{0,1} ]。表示方法采用one-hot形式,當(dāng)該APK申請了對應(yīng)權(quán)限時,P取值為1,無對應(yīng)權(quán)限申請時,取值為0。
(3)API調(diào)用頻度特征。由于Android平臺API數(shù)量眾多,且部分API為APK在正常運行時的必選項,故本檢測系統(tǒng)在API頻度特征提取中,僅對部分敏感API進(jìn)行頻度統(tǒng)計,敏感API項基于TF-IDF計算得出權(quán)重排名的前200項?;贏ndroguard對APK進(jìn)行解包后獲取samli文件,統(tǒng)計相應(yīng)敏感API項目的調(diào)用次數(shù),并將其歸一化為頻度特征。
2.3 特征及分類器結(jié)構(gòu)
本檢測方法對4種惡意軟件特征進(jìn)行合并,形成調(diào)整矩陣,并使用基于CNN的分類模型對APK特征數(shù)據(jù)進(jìn)行學(xué)習(xí)訓(xùn)練,最終獲得惡意軟件檢測模型。
敏感API項由TF-IDF計算權(quán)重排名得出,并選取前n項敏感API的嵌入表示作為特征數(shù)據(jù)來源,每個API調(diào)用模式特征由10維向量表示,對每個待檢測樣本,特征可被表示為[napi×10]的特征矩陣。API頻度特征、操作碼頻度特征、敏感權(quán)限頻度3種輔助特征,經(jīng)過PCA降維后附于API調(diào)用模式特征矩陣之后。
如圖6所示,敏感API調(diào)用模式特征可表示為圖左側(cè)矩陣,輔助判定特征附于API調(diào)用模式特征后,構(gòu)成整體特征矩陣。卷積核進(jìn)行一維卷積操作提取特征向量,并進(jìn)行后續(xù)運算。
分類模型如圖7所示。
基于CNN的子分類層由三層一維卷積層構(gòu)成,每個卷積層具有不同卷積核深度,以提取不同粒度的API調(diào)用模式特征,Drop Out層用于防止模型過擬合,模型最終判定結(jié)果通過全連接層輸出。
3 實驗測試與結(jié)果分析
首先基于可視化方法對API調(diào)用模式特征之間的區(qū)分度進(jìn)行實驗觀察,隨后使用上文提出的特征提取方法以及檢測模型進(jìn)行檢測器訓(xùn)練與測試。
3.1 評價標(biāo)準(zhǔn)
模型的評價指標(biāo)有準(zhǔn)確率Precision、召回率Recall、F-score三個參數(shù),參數(shù)計算方法如下:
式中TP為真陽率,F(xiàn)P為假陽率,TN為真陰率,F(xiàn)N為假陽率。在上式計算的參數(shù)中,漏報率越接近0說明檢測效果越好,反之Recall越接近1則說明模型分類性能越強。
3.2 數(shù)據(jù)集及相關(guān)環(huán)境
多特征融合檢測模型的運行及測試環(huán)境為CPU Intel(R) E5,16GB內(nèi)存,GPU為GTX1080,120GB SSD+4TB HDD,基于Ubuntu16.04操作系統(tǒng)。實驗數(shù)據(jù)集中惡意APK應(yīng)用來自于VirusShare[16]病毒數(shù)據(jù)庫以及Drebin安卓惡意軟件檢測數(shù)據(jù)集[1],良性樣本由小米應(yīng)用商城爬取并經(jīng)過VirusTotal檢測,保證良性樣本數(shù)據(jù)集不包含其它類型樣本。良性樣本共計4 780個,惡意樣本共計5 600個,樣本總量為10 380。將其按照9∶1的比例隨機劃分為訓(xùn)練集和測試集。
3.3 測試方法
實驗驗證環(huán)節(jié)主要對分類器的判定精度等參數(shù)進(jìn)行測試。首先基于數(shù)據(jù)分析方法對API調(diào)用模式特征進(jìn)行可視化分析,對良性、惡意樣本的API調(diào)用模式特征之間的區(qū)分度進(jìn)行觀察。實驗測試中分別選取前20、25、30、35、40項敏感API的嵌入數(shù)據(jù)作為特征進(jìn)行模型訓(xùn)練與測試,記錄判定結(jié)果。
測試重點為本文提出的API調(diào)用模式特征的有效性驗證,通過與其它工作進(jìn)行性能對比,驗證本多特征融合檢測模型的有效性。
3.4 API調(diào)用模式特征有效性分析
為驗證本文提出的API調(diào)用模式特征的有效性,并對基于該特征進(jìn)行安卓惡意軟件檢測的可行性進(jìn)行驗證,本文首先從良性/惡意軟件中提取API調(diào)用模式特征進(jìn)行可視化,從三維空間對API調(diào)用模式之間的相似性進(jìn)行分析,并基于API調(diào)用模式特征進(jìn)行安卓惡意軟件檢測,進(jìn)一步驗證其有效性。
3.4.1 敏感API調(diào)用模式特征可視化分析
為驗證API調(diào)用模式特征的有效性,本文首先對TF-IDF計算得出權(quán)重較高的部分API調(diào)用模式進(jìn)行可視化,在三維空間中對良性/惡意樣本的同一API調(diào)用模式進(jìn)行觀察,可視化結(jié)果如圖8所示。
敏感API調(diào)用模式特征基于圖嵌入,將每個API在函數(shù)調(diào)用圖中的調(diào)用模式映射為5維向量。為方便在三維空間中進(jìn)行可視化,本文基于PCA對API調(diào)用模式特征進(jìn)行降維處理,并將其繪制于三維空間中。
圖8中藍(lán)色樣本點代表良性樣本API調(diào)用模式特征在三維空間中的映射,紅色點代表惡意樣本對應(yīng)API的調(diào)用模式,每個子圖均對應(yīng)一種敏感API項。API調(diào)用模式特征在三維空間中的映射分布,可清晰體現(xiàn)出良性與惡意樣本之間對同一敏感API存在不同的調(diào)用模式,且同一類別APK的API調(diào)用模式之間存在相似性。
但由于同一API可能存在多個調(diào)用模式,故可能出現(xiàn)如圖8“setvalue()”API項特征對應(yīng)的API調(diào)用模式分布:藍(lán)色色塊分多個區(qū)域聚集,說明對于該敏感API項,其在良性樣本中存在多種調(diào)用模式。故在可視化后,在三維空間中存在分區(qū)域聚集特性。
3.4.2 基于敏感API調(diào)用模式特征的惡意軟件檢測
為驗證基于敏感API調(diào)用模式特征的有效性,本文基于該特征實現(xiàn)了安卓惡意軟件檢測。實驗環(huán)節(jié)分別選取權(quán)重排名前20、25、30、35、40的敏感API項目,并基于敏感API調(diào)用模式特征進(jìn)行安卓惡意軟件檢測。對Precision,recall以及F-score參數(shù)指標(biāo)進(jìn)行記錄,測試結(jié)果見表2。
將測試數(shù)據(jù)繪制于圖9中。
測試結(jié)果顯示,基于敏感API調(diào)用模式特征的安卓惡意軟件檢測子模型,可有效對良性/惡意軟件進(jìn)行區(qū)分,最佳檢測精度可達(dá)到97.6%。隨著采取敏感API數(shù)目的不斷增長,其檢測精度及其它性能均隨之提升。采取的敏感API數(shù)目在30~35時,檢測模型性能有所下降。經(jīng)分析,檢測模型性能下降是由于過多的API項目引入了過多無關(guān)API調(diào)用模式特征,且對應(yīng)API項在良性/惡意APK中存在相同或相似的調(diào)用模式,給檢測模型帶來了過多的無關(guān)信息,從而對檢測模型性能產(chǎn)生了負(fù)面影響。
實驗結(jié)果顯示,基于敏感API調(diào)用模式特征的安卓惡意軟件檢測模型,最佳API數(shù)目應(yīng)在30項左右,且種類應(yīng)與表1中所列項目相同或相似。
3.5 綜合輔助特征的檢測測試
上述測試環(huán)節(jié)僅適用于API調(diào)用模式特征作為檢測依據(jù)。為進(jìn)一步提升檢測器性能,本文綜合了操作碼頻度、敏感權(quán)限頻度、敏感API調(diào)用頻度3種輔助特征,并將其添加至特征矩陣中。對檢測模型進(jìn)行測試,測試結(jié)果如表3所示。
表3 集成檢測性能
[分類器\&Precision\&Recall\&F-score\&集成檢測模型\&0.993\&1.0\&0.996\&]
為客觀評估本文提出的多特征集成檢測模型,本文在相同數(shù)據(jù)集上對其它安卓惡意軟件檢測工作進(jìn)行復(fù)現(xiàn),以對比性能差異。Niall McLaughlin等[17]提出一種基于APK二進(jìn)制數(shù)據(jù)的惡意軟件檢測方法,在測試中獲得了良好的檢測結(jié)果。Drebin是Daniel Arp等提出的多特征安卓惡意軟件檢測框架。與上述工作進(jìn)行性能對比,模型測試數(shù)據(jù)如表4所示。
與相關(guān)安卓惡意軟件檢測工作進(jìn)行對比,本文多特征安卓惡意軟件檢測模型擁有更高的檢測精度,且F-score相較于其它工作最高,說明擁有更高的綜合檢測性能。
4 結(jié)語
本文提出了一種新型敏感API調(diào)用模式特征,該特征基于GCN對函數(shù)調(diào)用圖進(jìn)行API節(jié)點的嵌入計算,實現(xiàn)對API節(jié)點在函數(shù)調(diào)用圖中的調(diào)用模式表征;針對函數(shù)調(diào)用圖規(guī)模較大的問題,提出一種半保留式的函數(shù)調(diào)用圖精簡方法,有效降低了對函數(shù)調(diào)用圖進(jìn)行分析時的數(shù)據(jù)復(fù)雜度;基于卷積神經(jīng)網(wǎng)絡(luò)搭建了對應(yīng)的子分類器,有效實現(xiàn)了安卓惡意軟件檢測。分析與實驗測試結(jié)果顯示,敏感API調(diào)用模式特征可有效對APK中的函數(shù)調(diào)用模式進(jìn)行表征,在采用權(quán)重排序前30的敏感API項的調(diào)用模式作為特征時,可獲得97.6%的檢測精度,相較于其它頻度特征可攜帶更多有效信息,實現(xiàn)高效的安卓惡意軟件檢測。
本檢測模型聯(lián)合了Opcode頻度特征、API頻度特征、敏感權(quán)限特征,將所有特征集成至同一特征矩陣中,進(jìn)一步提升了檢測模型性能,檢測精度達(dá)到99%。與同類工作進(jìn)行比較,本文擁有更優(yōu)的檢測性能,驗證了基于多種特征融合的安卓惡意軟件檢測模型的有效性。
未來可對本檢測模型中的敏感API檢測機制進(jìn)行升級,進(jìn)一步細(xì)化API的挑選機制,從而減少待分析的API數(shù)目,達(dá)到提升檢測效率的目的。
參考文獻(xiàn):
[1] ARP D, SPREITZENBARTH M, HUBNER M, et al. DREBIN: effective and explainable detection of android malware in your pocket[C].? Network and Distributed System Security Symposium,2016.
[2] SMARTPHONE O S. Available martphone-operating-systems[EB/OL]. https://www.statista.com/statistics/263453/global-market-share- held.
[3] MCAFEE LABS. Threat predictions report[R]. SantaClara:McAfeeLabs,2016.
[4] ZHOU Y,JIANG X. Dissecting Android malware: characterization and evolution[J].? Proceedings of IEEE Security and Privacy, 2012(5):95-109.
[5] HUANG CY, TSAI YT, HSU CH. Performance evaluation on permission-based detection for Android malware[J].? Advances in Intelligent Systems and Applications, 2017(9): 111-120.
[6] MILOSEVIC N,DEHGHANTANHA A,CHOO K K R. Machine learning aided Android malware classification[J]. Computers & Electrical Engineering,2017,61(7):266-274.
[7] WANG W,LI Y,WANG X, et al. Detecting Android malicious APPs and categorizing benign APPs with ensemble of classifiers[J].? Future Generation Computer Systems, 2017,78(1):987-994.
[8] SANZ B,SANTOS I,LAORDEN C,et al. PUMA: permission usage to de- tect malware in Android[M].? Berlin: Springer,2013.
[9] ONWUZURIKE L, MARICONTI E, ANDRIOTIS P, et al. Mamadroid: detecting android malware by building Markov chains of behavioral models[C]. Network and Distributed System Security Symposium,2016:1-15.
[10] JUNG J,KIM H,SHIN D,et al. Android malware detection based on useful API calls and machine learning[C]. IEEE First International Conference on Artificial Intelligence and Knowledge Engineering,2018:175-178.
[11] SARACINO A,SGANDURRA D,DINI G,et al. MADAM: effective and efficient behavior-based Android malware detection and prevention[J]. IEEE Transactions on Dependable & Secure Computing, 2018 (99):1-11.
[12] IDREES F,RAJARAJAN M, CONTI M, et al.PIndroid: a novel android malware detection system using ensemble learning methods[J].? Computer and Security, 2017,68(7):36-46.
[13] CORONADO DE ALBA L D, RODRIGUEZ-MOTA A, ESCAMILLA-AMBROSIO P J.Feature selection and ensemble of classifiers for Android malware detection[C]?2016 8th IEEE Latin-American Conference on Communications, 2016(11): 1-6.
[14] KIP F,THOMAS N, WELLING M. Semi-supervised classification with graph convolutional networks[DB/OL]. https://arxiv.org/pdf/1609.02907.pdf.
[15] RASTHOFER S,ARZT S,BODDEN E. A machine-learning approach for classifying and categorizing Android sources and sinks[C]. Proceedings of Network and Distributed System Security, 2014:1-15.
[16] MENG Q Q. Virusshare apk[EB/OL]. https://virusshare.com/.? Accessed 2018.
[17] MCLAUGHLIN N, RINCON J M D, KANG B J, et al. Deep android malware detection[C]. ACM on Conference on Data & Application Security & Privacy. 2017:301-308.
(責(zé)任編輯:杜能鋼)