張雪濤 王金雙 孫蒙
摘 要:函數(shù)調用圖存在規(guī)模過大、無關信息過多等缺陷。為實現(xiàn)函數(shù)調用圖的高效分析,對安卓惡意軟件的惡意代碼模式進行挖掘,提出一種基于圖卷積神經網(wǎng)絡(GCN)的敏感API調用模式,并設計相應的函數(shù)調用圖精簡方法,以及敏感API權重評價方法,有效降低了函數(shù)調用圖規(guī)模,實現(xiàn)對敏感API調用模式的挖掘。檢測模型綜合了安卓惡意軟件操作碼特征、敏感權限特征、敏感函數(shù)調用頻度特征,構建了基于多特征融合的安卓惡意軟件檢測系統(tǒng),進一步提升了檢測精度。數(shù)據(jù)集測試驗證了API調用模式特征以及集成檢測模型的有效性。
關鍵詞:圖嵌入;圖卷積神經網(wǎng)絡;惡意軟件檢測;多特征
DOI:10. 11907/rjdk. 192427 開放科學(資源服務)標識碼(OSID):
中圖分類號:TP309文獻標識碼: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 引言
受經濟利益驅使,針對智能手機平臺的攻擊行為不斷增長,惡意軟件則是攻擊行為的重要載體[1]。相關研究報告顯示,Android平臺是最大的移動智能設備終端系統(tǒng)平臺,全球已經有超過10億臺安卓設備售出,GooglePlay應用商店下載量累計超過650億次[2]。隨著Android平臺應用數(shù)量的快速增長,針對Android設備的惡意軟件也在快速擴充。McAfee的年度報告顯示,安卓平臺累計檢測到了1 200萬個惡意軟件樣本,每年惡意軟件增加250萬[3]。隨著安卓平臺惡意軟件數(shù)量不斷增長,基于機器學習的安卓惡意軟件檢測技術應運而生。
現(xiàn)階段安卓惡意軟件獲取多通過將惡意代碼或廣告等惡意模塊植入良性軟件產生。在安卓惡意軟件產業(yè)鏈中已出現(xiàn)了例如TDKs的安卓勒索軟件批量生成工具。Zhou等[4]指出,超過86%的安卓惡意軟件由重打包產生,故多數(shù)同類型安卓惡意軟件雖基于不同載體軟件重打包獲得,但同類型惡意軟件之間多存在相同或相似的惡意代碼執(zhí)行模式。而基于敏感權限頻度特征、操作碼頻度特征的檢測方法,側重于對惡意軟件整體進行特征提取,無法準確對惡意軟件中的惡意代碼進行定位,導致面對大量待檢測樣本時無法有針對性地提取特征,且檢測模型泛化性較差,存在誤報率和漏報率較高的問題。
為對惡意代碼模塊的執(zhí)行方式進行分析,準確獲取惡意APK的關鍵特征,提升檢測精度與效率,本文提出一種基于函數(shù)調用圖(FCG)的敏感API調用模式特征。該方法首先提取待檢測樣本的FCG,通過本文提出的圖精簡方法對其中的低敏感度API節(jié)點進行刪減,以降低數(shù)據(jù)處理負荷;基于圖卷積神經網(wǎng)絡(GCN)對精簡后的函數(shù)調用圖進行分析,提取特征,獲取圖中每個API節(jié)點的嵌入表示。敏感API節(jié)點在函數(shù)調用圖中的嵌入表示攜帶了惡意代碼模塊的調用結構信息。實驗證明該特征可有效表示程序的惡意代碼部分結構信息,從而實現(xiàn)高效檢測安卓惡意軟件?;诙喾N特征集成判定提升檢測模型性能。
為驗證敏感API調用模式特征,以及多特征集成判定模型的有效性,本文基于4 780個良性樣本以及5 600個惡意樣本對單特征,在多特征情況下評估檢測性能,測試結果顯示本模型擁有優(yōu)異的檢測性能。本文主要貢獻如下:①提出一種基于GCN的安卓惡意軟件敏感API調用模式,使用圖嵌入實現(xiàn)對惡意代碼部分的函數(shù)調用結構信息挖掘;②提出圖精簡以及敏感API權重計算方法,有效降低檢測系統(tǒng)的數(shù)據(jù)復雜度,提升了檢測系統(tǒng)效率;③提出多元特征融合的安卓惡意軟件檢測模型,綜合多種特征對安卓惡意軟件進行判定,有效提升系統(tǒng)性能;④基于大量良性以及惡意安卓軟件樣本,對單個分類器、分類器聯(lián)合、特征有效性等進行詳盡的驗證測試。
1 基礎概念與相關工作
基于機器學習的安卓惡意軟件檢測方法,按照特征類型分為動態(tài)檢測與靜態(tài)檢測。其中靜態(tài)監(jiān)測特征提取開銷較小,但易混淆受干擾;動態(tài)檢測特征提取開銷較大。由smali中提取出的函數(shù)調用圖特征屬于靜態(tài)特征的一種。
1.1 靜態(tài)檢測
靜態(tài)檢測主要對APK文件進行特征提取,在程序非運行狀態(tài)下進行惡意程序的特征提取與匹配工作。常用的靜態(tài)特征包括操作碼序列、操作碼頻度、程序流圖等。Huang等[5]對基于權限特征進行安卓惡意軟件檢測進行了全面評估,實驗結果證明權限特征與安卓惡意軟件間存在一定的相關性;Milosevic等 [6]基于APK源代碼以及權限信息進行安卓惡意軟件檢測,取得了良好的檢測效果;Wang等[7]基于惡意程序權限、程序意圖等特征進行安卓惡意軟件檢測,基于集成檢測的方法進一步提升了檢測精度;Arp等[1]在其檢測工作中 使用了APK中所有網(wǎng)絡地址作為特征進行惡意軟件檢測,獲得了94%的檢測準確率;Sanz等[8]在基于權限的檢測工作中融入字符串作為輔助特征,有效提升了模型檢測性能。
1.2 動態(tài)檢測
動態(tài)檢測需針對指定的惡意軟件樣本構造模擬運行環(huán)境進行測試與記錄。面對海量的惡意程序,該種檢測方法開銷較大,導致應用場景受限,但可對經過混淆的惡意軟件進行特征提取。常用的動態(tài)特征包括API調用、流量、系統(tǒng)運行分析等。Onwuzurike等 [9]基于馬爾科夫鏈,對安卓惡意軟件的API調用進行研究,測試結果證明其檢測系統(tǒng)可根據(jù)API調用序列中的前后關系對未知惡意軟件作出預測;Jung 等 [10]基于專家經驗對API類別進行細分,進一步提升了基于API調用特征的安卓惡意軟件檢測系統(tǒng)精度;Saracino等 [11]基于系統(tǒng)調用、用戶行為等動態(tài)特征,搭建Madam安卓惡意軟件檢測系統(tǒng),在大規(guī)模數(shù)據(jù)測試中檢測準確率達到96%以上。動態(tài)與靜態(tài)特征結合可有效提升檢測精度,如Idrees等[12]基于權限、程序意圖等特征,對多種分類器集成方式進行實驗,有效提升了系統(tǒng)檢測精度;Coronado-De-Alba等 [13]基于隨機森林以及決策樹構建集成檢測模型,同樣獲得了良好的檢測效果。
1.3 圖卷積神經網(wǎng)絡及函數(shù)調用圖
安卓惡意軟件開發(fā)者常將惡意代碼插入正常APK并進行重打包以獲取惡意應用。安卓惡意軟件在執(zhí)行危險操作時,常依賴于特定的API函數(shù),如在獲取設備號碼時常使用getVoiceMailNumber()函數(shù),并搭配相應的API進行敏感信息傳輸。同類型的安卓惡意軟件中常含有類似結構的惡意代碼,故可通過對函數(shù)調用圖中的惡意代碼部分進行發(fā)掘,從而實現(xiàn)安卓惡意軟件的檢測。
1.3.1 函數(shù)調用圖
函數(shù)調用圖是控制流圖的一種,用于反映程序中各個函數(shù)之間的調用關系。函數(shù)調用圖可表示為:
其中,V表示圖中所有頂點的結合,在APK的函數(shù)調用圖中,每個頂點對應一個Android API;E表示函數(shù)之間的調用關系。通過APK-Tool或Androguard工具對APK進行反編譯后,可從samli代碼中提取API及調用關系,從而形成APK的函數(shù)調用圖。
1.3.2 圖卷積神經網(wǎng)絡及圖嵌入
圖卷積神經網(wǎng)絡(GCN)概念最早由Kipf等[14]于2016年提出。與卷積神經網(wǎng)絡(CNN)僅適用于處理維度規(guī)則的數(shù)據(jù)相對應,GCN可以對任意結構化的數(shù)據(jù)進行處理,例如社交網(wǎng)絡、知識圖譜等,并對結構化數(shù)據(jù)的空間特征進行提取。
FCG可使用函數(shù)間的調用關系用拓撲圖的形式對軟件進行表征,而通過重打包獲得的安卓惡意軟件通常具有相同或相似的惡意代碼結構,故可基于GCN對惡意代碼部分的調用模式進行挖掘與表征。
圖嵌入可以使用低維向量,表示圖中各個節(jié)點的鄰居節(jié)點情況與相對位置信息。在APK的函數(shù)調用圖中,由于惡意代碼執(zhí)行邏輯相似,故對應的敏感API在圖中有相近似的上下文調用關系。常用的圖嵌入方法有DeepWalk、Node2vec、Walklets、基于GCN的圖嵌入等。由于APK的函數(shù)調用圖通常具有較大特征,因此GCN的圖卷積方法基于迭代計算,可以使用較小的計算代價獲取節(jié)點的嵌入表示。
2 基于敏感API調用模式特征的檢測模型
本文檢測模型主要使用敏感API調用模式特征作為主要特征,同時輔助Opcode頻度信息、敏感權限特征以及API調用頻度特征作為輔助特征。將所有特征合并送入分類器中以實現(xiàn)高精度的安卓惡意軟件檢測。檢測模型整體結構如圖1所示。
本檢測系統(tǒng)基于opcode頻度、敏感權限、API調用頻度、敏感API調用模式4種特征進行安卓惡意軟件檢測,前3種特征常用于安卓惡意軟件檢測,擁有較強的適應性,但由于精度有限,故作為輔助特征?;贕CN的敏感API調用模式特征為本文提出的一種新型惡意軟件特征,將在下文著重介紹。
2.1 API調用模式特征
為有效處理函數(shù)調用圖并獲取敏感API節(jié)點的嵌入表示,提取對應特征,實現(xiàn)惡意軟件檢測,本文提出函數(shù)調用圖精簡及敏感API嵌入計算方法,以最終獲取敏感API的調用模式特征。
調用模式特征提取過程如圖2所示。首先對APK進行解包,并從samli代碼中提取調用關系,形成函數(shù)調用圖,對函數(shù)調用圖進行精簡后,基于DGL計算每個節(jié)點的嵌入表示。
2.1.1 基于敏感API的函數(shù)調用圖精簡
由于現(xiàn)階段APK規(guī)模較大,其函數(shù)調用圖常包含數(shù)量龐大的API節(jié)點,其中多數(shù)為程序運行必需的普通節(jié)點,在引入無效信息的同時增加了檢測系統(tǒng)的數(shù)據(jù)復雜度,降低了檢測效率。為提升運行效率,檢測系統(tǒng)首先對非敏感API節(jié)點進行初步刪減。其中敏感API列表來自Rasthofe等[15]對于敏感API的分析工作,包含敏感API共 26 322個。
為在精簡函數(shù)調用圖的同時保留敏感API的原始調用結構,避免函數(shù)調用圖精簡過程中對有效數(shù)據(jù)造成破壞,本文提出一種半保留式精簡方法。精簡算法的API節(jié)點刪減規(guī)則為:若某一節(jié)點為非敏感API節(jié)點,并且其鄰居節(jié)點中不含有敏感API節(jié)點,則對該節(jié)點進行刪除;若某一函數(shù)節(jié)點為非敏感API節(jié)點,其鄰居節(jié)點中含有敏感API,則保留該節(jié)點。
以圖3所示函數(shù)調用圖為例,深色節(jié)點為敏感API節(jié)點,淺色節(jié)點代表一般API函數(shù)。左側圖形為原始函數(shù)調用圖,按照上述函數(shù)調用圖精簡規(guī)則:由于4號節(jié)點是非敏感API節(jié)點,且其鄰居節(jié)點中不含有敏感API節(jié)點,故在精簡過程中4號節(jié)點及其相鄰的邊都被刪除。精簡后的示例函數(shù)調用圖如圖3右側所示。
偽代碼如下:
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ù)以及相關函數(shù)的調用結構不被刪減。經過精簡的函數(shù)調用圖可有效降低節(jié)點數(shù)量,提升處理效率。示例APK經過精簡前后的函數(shù)調用圖如圖4所示。
如圖4所示,經過精簡后的函數(shù)調用圖包含的節(jié)點數(shù)量明顯減少,可有效降低對大規(guī)模函數(shù)調用圖進行分析造成的計算資源消耗。
2.1.2 基于GCN的敏感API圖嵌入
APK的函數(shù)調用圖通常擁有復雜的網(wǎng)絡結構,圖形嵌入算法可作為降維算法的一種,將復雜高維空間中的圖結構映射到低維空間中。GCN與CNN相似,在圖結構上定義了卷積算子,可在迭代過程中不斷擴大節(jié)點嵌入向量所包含的節(jié)點信息,計算過程如圖5所示。
圖5中,n0 ~ n4 表示函數(shù)調用圖中5個API節(jié)點,每個API節(jié)點對應其狀態(tài)向量h0 ~ h4(狀態(tài)向量即API節(jié)點在函數(shù)調用圖中的嵌入表示)。在嵌入計算過程中,對各節(jié)點的狀態(tài)向量h進行隨機初始化,以獲取n0節(jié)點的新的嵌入表示h0new為例,f為非線性變換函數(shù),計算方法如下:
圖卷積神經網(wǎng)絡中API嵌入表示過程就是信息在節(jié)點之間不斷傳播聚合再傳播的過程,每個節(jié)點的嵌入表示均會獲取鄰居節(jié)點信息并進行更新;在下輪迭代中,攜帶了遠端節(jié)點信息的嵌入表示會不斷隨著節(jié)點之間的連接進行傳播。以圖5為例,n0節(jié)點為敏感API節(jié)點,在迭代更新過程中該節(jié)點的嵌入表示將會攜帶其鄰居節(jié)點信息,即敏感API在函數(shù)調用圖中的嵌入表示將會攜帶一定的調用關系信息。對于API嵌入表示的有效性將在實驗部分進行驗證。
2.1.3 敏感API嵌入權重分配
由于所有APK樣本中所包含的敏感API種類及數(shù)目不同,本檢測系統(tǒng)基于TF-IDF方法對API函數(shù)的敏感程度進行衡量,并在測試中分別選取前10、15、20、 25、 30、35個敏感API函數(shù)的嵌入表示作為API調用模式特征,以確定最優(yōu)的API數(shù)量。將特征送入分類器進行訓練,以達成惡意軟件檢測目的。通過計算,敏感程度排名前30的API如表1所示。
2.2 輔助判定特征
(1)Opcode頻度特征。Opcode是對編譯后的安卓應用程序基于助記符的表示方法,由于其包含了程序的大量原始信息,常用于安卓惡意軟件檢測。本檢測模型使用opcode頻度作為子特征之一。首先對APK進行反匯編,并從所有smali文件中提取對應種類opcode數(shù)量。本方法以詞袋模型為基礎,共統(tǒng)計了256類opcode數(shù)量并將其表示為[α={α1,α2,α3,…,α256}, α∈N ]的特征向量。
(2)敏感權限特征。安卓惡意程序在執(zhí)行惡意操作時需要申請對應的敏感權限,本方法基于AndroidManifest.xml文件提取APK安裝時申請的權限列表作為特征,其中納入統(tǒng)計范圍的共120個權限項目,將其表示為長度為120的特征向量:[P={p1,p2,p3,?,p120}, p∈{0,1} ]。表示方法采用one-hot形式,當該APK申請了對應權限時,P取值為1,無對應權限申請時,取值為0。
(3)API調用頻度特征。由于Android平臺API數(shù)量眾多,且部分API為APK在正常運行時的必選項,故本檢測系統(tǒng)在API頻度特征提取中,僅對部分敏感API進行頻度統(tǒng)計,敏感API項基于TF-IDF計算得出權重排名的前200項。基于Androguard對APK進行解包后獲取samli文件,統(tǒng)計相應敏感API項目的調用次數(shù),并將其歸一化為頻度特征。
2.3 特征及分類器結構
本檢測方法對4種惡意軟件特征進行合并,形成調整矩陣,并使用基于CNN的分類模型對APK特征數(shù)據(jù)進行學習訓練,最終獲得惡意軟件檢測模型。
敏感API項由TF-IDF計算權重排名得出,并選取前n項敏感API的嵌入表示作為特征數(shù)據(jù)來源,每個API調用模式特征由10維向量表示,對每個待檢測樣本,特征可被表示為[napi×10]的特征矩陣。API頻度特征、操作碼頻度特征、敏感權限頻度3種輔助特征,經過PCA降維后附于API調用模式特征矩陣之后。
如圖6所示,敏感API調用模式特征可表示為圖左側矩陣,輔助判定特征附于API調用模式特征后,構成整體特征矩陣。卷積核進行一維卷積操作提取特征向量,并進行后續(xù)運算。
分類模型如圖7所示。
基于CNN的子分類層由三層一維卷積層構成,每個卷積層具有不同卷積核深度,以提取不同粒度的API調用模式特征,Drop Out層用于防止模型過擬合,模型最終判定結果通過全連接層輸出。
3 實驗測試與結果分析
首先基于可視化方法對API調用模式特征之間的區(qū)分度進行實驗觀察,隨后使用上文提出的特征提取方法以及檢測模型進行檢測器訓練與測試。
3.1 評價標準
模型的評價指標有準確率Precision、召回率Recall、F-score三個參數(shù),參數(shù)計算方法如下:
式中TP為真陽率,F(xiàn)P為假陽率,TN為真陰率,F(xiàn)N為假陽率。在上式計算的參數(shù)中,漏報率越接近0說明檢測效果越好,反之Recall越接近1則說明模型分類性能越強。
3.2 數(shù)據(jù)集及相關環(huán)境
多特征融合檢測模型的運行及測試環(huán)境為CPU Intel(R) E5,16GB內存,GPU為GTX1080,120GB SSD+4TB HDD,基于Ubuntu16.04操作系統(tǒng)。實驗數(shù)據(jù)集中惡意APK應用來自于VirusShare[16]病毒數(shù)據(jù)庫以及Drebin安卓惡意軟件檢測數(shù)據(jù)集[1],良性樣本由小米應用商城爬取并經過VirusTotal檢測,保證良性樣本數(shù)據(jù)集不包含其它類型樣本。良性樣本共計4 780個,惡意樣本共計5 600個,樣本總量為10 380。將其按照9∶1的比例隨機劃分為訓練集和測試集。
3.3 測試方法
實驗驗證環(huán)節(jié)主要對分類器的判定精度等參數(shù)進行測試。首先基于數(shù)據(jù)分析方法對API調用模式特征進行可視化分析,對良性、惡意樣本的API調用模式特征之間的區(qū)分度進行觀察。實驗測試中分別選取前20、25、30、35、40項敏感API的嵌入數(shù)據(jù)作為特征進行模型訓練與測試,記錄判定結果。
測試重點為本文提出的API調用模式特征的有效性驗證,通過與其它工作進行性能對比,驗證本多特征融合檢測模型的有效性。
3.4 API調用模式特征有效性分析
為驗證本文提出的API調用模式特征的有效性,并對基于該特征進行安卓惡意軟件檢測的可行性進行驗證,本文首先從良性/惡意軟件中提取API調用模式特征進行可視化,從三維空間對API調用模式之間的相似性進行分析,并基于API調用模式特征進行安卓惡意軟件檢測,進一步驗證其有效性。
3.4.1 敏感API調用模式特征可視化分析
為驗證API調用模式特征的有效性,本文首先對TF-IDF計算得出權重較高的部分API調用模式進行可視化,在三維空間中對良性/惡意樣本的同一API調用模式進行觀察,可視化結果如圖8所示。
敏感API調用模式特征基于圖嵌入,將每個API在函數(shù)調用圖中的調用模式映射為5維向量。為方便在三維空間中進行可視化,本文基于PCA對API調用模式特征進行降維處理,并將其繪制于三維空間中。
圖8中藍色樣本點代表良性樣本API調用模式特征在三維空間中的映射,紅色點代表惡意樣本對應API的調用模式,每個子圖均對應一種敏感API項。API調用模式特征在三維空間中的映射分布,可清晰體現(xiàn)出良性與惡意樣本之間對同一敏感API存在不同的調用模式,且同一類別APK的API調用模式之間存在相似性。
但由于同一API可能存在多個調用模式,故可能出現(xiàn)如圖8“setvalue()”API項特征對應的API調用模式分布:藍色色塊分多個區(qū)域聚集,說明對于該敏感API項,其在良性樣本中存在多種調用模式。故在可視化后,在三維空間中存在分區(qū)域聚集特性。
3.4.2 基于敏感API調用模式特征的惡意軟件檢測
為驗證基于敏感API調用模式特征的有效性,本文基于該特征實現(xiàn)了安卓惡意軟件檢測。實驗環(huán)節(jié)分別選取權重排名前20、25、30、35、40的敏感API項目,并基于敏感API調用模式特征進行安卓惡意軟件檢測。對Precision,recall以及F-score參數(shù)指標進行記錄,測試結果見表2。
將測試數(shù)據(jù)繪制于圖9中。
測試結果顯示,基于敏感API調用模式特征的安卓惡意軟件檢測子模型,可有效對良性/惡意軟件進行區(qū)分,最佳檢測精度可達到97.6%。隨著采取敏感API數(shù)目的不斷增長,其檢測精度及其它性能均隨之提升。采取的敏感API數(shù)目在30~35時,檢測模型性能有所下降。經分析,檢測模型性能下降是由于過多的API項目引入了過多無關API調用模式特征,且對應API項在良性/惡意APK中存在相同或相似的調用模式,給檢測模型帶來了過多的無關信息,從而對檢測模型性能產生了負面影響。
實驗結果顯示,基于敏感API調用模式特征的安卓惡意軟件檢測模型,最佳API數(shù)目應在30項左右,且種類應與表1中所列項目相同或相似。
3.5 綜合輔助特征的檢測測試
上述測試環(huán)節(jié)僅適用于API調用模式特征作為檢測依據(jù)。為進一步提升檢測器性能,本文綜合了操作碼頻度、敏感權限頻度、敏感API調用頻度3種輔助特征,并將其添加至特征矩陣中。對檢測模型進行測試,測試結果如表3所示。
表3 集成檢測性能
[分類器\&Precision\&Recall\&F-score\&集成檢測模型\&0.993\&1.0\&0.996\&]
為客觀評估本文提出的多特征集成檢測模型,本文在相同數(shù)據(jù)集上對其它安卓惡意軟件檢測工作進行復現(xiàn),以對比性能差異。Niall McLaughlin等[17]提出一種基于APK二進制數(shù)據(jù)的惡意軟件檢測方法,在測試中獲得了良好的檢測結果。Drebin是Daniel Arp等提出的多特征安卓惡意軟件檢測框架。與上述工作進行性能對比,模型測試數(shù)據(jù)如表4所示。
與相關安卓惡意軟件檢測工作進行對比,本文多特征安卓惡意軟件檢測模型擁有更高的檢測精度,且F-score相較于其它工作最高,說明擁有更高的綜合檢測性能。
4 結語
本文提出了一種新型敏感API調用模式特征,該特征基于GCN對函數(shù)調用圖進行API節(jié)點的嵌入計算,實現(xiàn)對API節(jié)點在函數(shù)調用圖中的調用模式表征;針對函數(shù)調用圖規(guī)模較大的問題,提出一種半保留式的函數(shù)調用圖精簡方法,有效降低了對函數(shù)調用圖進行分析時的數(shù)據(jù)復雜度;基于卷積神經網(wǎng)絡搭建了對應的子分類器,有效實現(xiàn)了安卓惡意軟件檢測。分析與實驗測試結果顯示,敏感API調用模式特征可有效對APK中的函數(shù)調用模式進行表征,在采用權重排序前30的敏感API項的調用模式作為特征時,可獲得97.6%的檢測精度,相較于其它頻度特征可攜帶更多有效信息,實現(xiàn)高效的安卓惡意軟件檢測。
本檢測模型聯(lián)合了Opcode頻度特征、API頻度特征、敏感權限特征,將所有特征集成至同一特征矩陣中,進一步提升了檢測模型性能,檢測精度達到99%。與同類工作進行比較,本文擁有更優(yōu)的檢測性能,驗證了基于多種特征融合的安卓惡意軟件檢測模型的有效性。
未來可對本檢測模型中的敏感API檢測機制進行升級,進一步細化API的挑選機制,從而減少待分析的API數(shù)目,達到提升檢測效率的目的。
參考文獻:
[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.
(責任編輯:杜能鋼)