賀嬌君, 蔡滿春, 蘆天亮
(中國人民公安大學(xué)信息網(wǎng)絡(luò)安全學(xué)院,北京 100038)
隨著移動智能終端技術(shù)的不斷提升,移動智能設(shè)備得到廣泛的使用。目前智能設(shè)備的操作系統(tǒng)主要分為IOS和Android兩大類,截止2021年7月,Android在全球移動智能終端操作系統(tǒng)市場中占83.8%[1],Android以開源的優(yōu)勢已經(jīng)成為主流的移動操作系統(tǒng)。然而由于系統(tǒng)的可擴展性和開發(fā)的開放性,Android系統(tǒng)頻遭黑客們的攻擊,數(shù)據(jù)泄露和隱私侵犯時有發(fā)生,用戶被置于各種威脅和高風(fēng)險中,為網(wǎng)絡(luò)安全帶來了極大的挑戰(zhàn)。
目前主流的Android惡意代碼檢測方法是對請求權(quán)限、API調(diào)用、字節(jié)碼等特征進行提取,然后針對數(shù)據(jù)的語法特征和語義系統(tǒng)特征使用機器學(xué)習(xí)方法構(gòu)建檢測模型?;谡Z法的方法往往忽略了應(yīng)用程序的語義信息。例如,一些檢測模型只提取出應(yīng)用程序的請求權(quán)限來構(gòu)建特征向量,但惡意程序可以在利用程序漏洞而不調(diào)取權(quán)限的情況下實施惡意行為。MaMadroid[2]提取API的抽象包,使用馬爾科夫鏈表示包與包之間的轉(zhuǎn)換概率,該方法的缺點是只提取了數(shù)據(jù)的序列信息,無法獲得節(jié)點之間的結(jié)構(gòu)特征。同樣,基于卷積神經(jīng)網(wǎng)絡(luò)和循環(huán)神經(jīng)網(wǎng)絡(luò)的惡意軟件檢測模型只獲取了數(shù)據(jù)的平面結(jié)構(gòu)或序列特征,并沒有考慮到對于判定應(yīng)用程序惡意性質(zhì)非常關(guān)鍵的結(jié)構(gòu)依賴關(guān)系。
本文提出了一種基于異構(gòu)圖注意力網(wǎng)絡(luò)的Android惡意軟件檢測方法,相較于目前大多數(shù)使用的GraphSAGE[3]和Node2vec[4]等圖表示方法,克服了只利用拓?fù)浣Y(jié)構(gòu)或節(jié)點特征而未考慮不同類型節(jié)點關(guān)系的不足。該方法受到異構(gòu)圖注意力網(wǎng)絡(luò)算法的啟發(fā),提取Android應(yīng)用程序的請求權(quán)限、訪問URL、API調(diào)用、包含組件4種特征節(jié)點和其間的邊結(jié)構(gòu)關(guān)系,在構(gòu)建異構(gòu)圖后分層聚合基于元路徑的鄰域特征。為進一步提取更深層次的語義關(guān)系,分別對兩個應(yīng)用程序之間不同的關(guān)系進行語義聚合,生成節(jié)點嵌入。我們綜合4種特征關(guān)系并將MaMadroid所使用的API調(diào)用序列的包轉(zhuǎn)換概率作為應(yīng)用程序節(jié)點屬性,在結(jié)構(gòu)化的異構(gòu)圖上建模,使用基于異構(gòu)圖注意力的網(wǎng)絡(luò)模型對Android惡意軟件進行檢測,實驗的準(zhǔn)確率達到98.83%,假陽性率為0.36%,與現(xiàn)有的圖神經(jīng)網(wǎng)絡(luò)模型相比檢測率有所提高。
圖嵌入是將網(wǎng)絡(luò)中的節(jié)點特征映射到到低維向量中,這些向量仍具有圖的拓?fù)浣Y(jié)構(gòu)信息和節(jié)點內(nèi)容信息,從而完成后續(xù)節(jié)點分類、鏈路預(yù)測、聚類以及可視化等圖分析任務(wù)。許多淺層結(jié)構(gòu)模型的圖嵌入算法(如DeepWalk、LINE、Node2vec)都不能捕獲高度非線性的網(wǎng)絡(luò)結(jié)構(gòu),而基于深度學(xué)習(xí)的圖嵌入方法直接使用深度自編碼器學(xué)習(xí)圖鄰接矩陣的編碼與重構(gòu),可以通過多層非線性函數(shù)捕捉高度非線性的網(wǎng)絡(luò)結(jié)構(gòu),較為熟知的深度圖嵌入方法有基于圖自編碼的算法(如SDNE[5]和DNGR[6])和基于無監(jiān)督訓(xùn)練的圖卷積神經(jīng)網(wǎng)絡(luò)(如GraphSAGE)。Deep-Walk使用隨機游走在無向圖中采樣生成序列,通過skip-gram模型中的word2vec進行向量學(xué)習(xí)。LINE是在大規(guī)模圖上將節(jié)點的一階相似性局部結(jié)構(gòu)信息和二階相似性的鄰居信息拼接在一起作為節(jié)點的嵌入。Node2vec是DeepWalk的擴展,它通過策略使用二階隨機行走生成節(jié)點序列。2009年由Scarselli等人[7]最早提出圖神經(jīng)網(wǎng)絡(luò)(Graph Neural Network,GNN)的概念,它能夠有效利用圖中豐富的語義信息和結(jié)構(gòu)特征,每個節(jié)點通過相互交換信息更新本身節(jié)點的狀態(tài),不管是在傳統(tǒng)的自然語言處理領(lǐng)域[8]、圖像領(lǐng)域[9],還是在醫(yī)藥化學(xué)領(lǐng)域[10],GNN都表現(xiàn)出優(yōu)異的性能。
為了克服傳統(tǒng)Android惡意軟件檢測在捕獲拓?fù)浣Y(jié)構(gòu)和語義特征方面的缺失,許多方法將程序語義表示為圖,通過分析生成的圖檢測惡意軟件。最初大多數(shù)方法使用圖的特征工程度量惡意代碼家族之間的相似性,人為設(shè)計如節(jié)點度、圖中心性等特征[11],計算敏感API調(diào)用節(jié)點圖的Katz、Betweenness、Closeness、Pagerank值以度量節(jié)點中心性,將26個敏感API調(diào)用的4個中心值組合為輸入的特征向量,使用圖卷積神經(jīng)網(wǎng)絡(luò)[12](Graph Convolutional Net-work,GCN)進行訓(xùn)練。Yang[13]在計算節(jié)點中心性Betweenness、Closeness的同時,將n跳內(nèi)數(shù)量作為屬性特征豐富結(jié)構(gòu)信息。后來為進一步快速獲取新節(jié)點嵌入的表示、降低運算的開銷,funcGNN[14]選取節(jié)點的標(biāo)簽、屬性、列表以及編輯距離作為特征,使用GraphSAGE算法采樣鄰居特征,歸納嵌入節(jié)點,提出了一種基于GNN的判斷同類惡意代碼家族相似度的方法。挖掘樣本的結(jié)構(gòu)信息可以進一步檢測出隱蔽的Android惡意軟件,Hom-Droid[15]通過分析函數(shù)調(diào)用的社會網(wǎng)絡(luò)同源性,挖掘出社會網(wǎng)絡(luò)中代表網(wǎng)絡(luò)不同結(jié)構(gòu)特征的敏感API三元體,并從可疑子圖提取語義特征檢測隱蔽的Android惡意軟件。除此之外,GDroid[16]引入包含不同類型節(jié)點和邊的異構(gòu)圖豐富樣本特征的結(jié)構(gòu)信息,研究人員將應(yīng)用程序和API映射成一個大的異構(gòu)圖,成為第一個探索圖神經(jīng)網(wǎng)絡(luò)在惡意軟件分類領(lǐng)域應(yīng)用的研究。
現(xiàn)實場景下的圖結(jié)構(gòu)模型通常具有多種類型的節(jié)點和邊,這種網(wǎng)絡(luò)稱為異質(zhì)信息網(wǎng)絡(luò)(Hetegeneous Information Network,HIN)。異質(zhì)信息網(wǎng)絡(luò)包含更加豐富的語義,可以反映惡意軟件的結(jié)構(gòu)特征。HinDroid[17]使用HIN為應(yīng)用程序、API及其之間的關(guān)系構(gòu)造圖結(jié)構(gòu),并對應(yīng)用程序和API之間的調(diào)用關(guān)系、API之間的關(guān)聯(lián)位置關(guān)系和API的包及方法名稱關(guān)系建模,使用元路徑的方法比較應(yīng)用程序間路徑的相似性。Scorpion[18]使用異構(gòu)圖模擬不同類型的實體特征和惡意軟件中的語義關(guān)系,以metagraph2vec的方式學(xué)習(xí)節(jié)點嵌入,在保留節(jié)點間結(jié)構(gòu)和語義關(guān)系的前提下,降低特征向量的維度,最后采用SVM分類器輸出分類結(jié)果,與HinDroid方法中只加權(quán)元路徑就進行分類有了較大改進。AiDroid[19]在隨機游走生成語料之后,通過skip-gram算法編碼節(jié)點,提出了樣本外節(jié)點表示學(xué)習(xí)算法,自主學(xué)習(xí)對應(yīng)的節(jié)點表示。實驗證明,基于異構(gòu)圖的Android惡意軟件檢測算法一定程度上提升了檢測效果。
異構(gòu)圖注意力網(wǎng)絡(luò)[20](Heterogeneous graph Atten-tion Network,HAN)是一種新的圖神經(jīng)網(wǎng)絡(luò),節(jié)點間以元路徑(meta-path)的方式連接不同的語義路徑,能更好地捕獲不同語義信息。HAN由節(jié)點級注意力和語義級注意力組成,節(jié)點級注意力是將不同類型的節(jié)點都映射到同一個特征空間中,學(xué)習(xí)基于元路徑鄰居節(jié)點的權(quán)重并聚合得到特定語義的節(jié)點嵌入,而語義級注意力綜合學(xué)習(xí)每個元路徑的權(quán)重并融合前面的結(jié)果得到新的節(jié)點嵌入。
本文將異構(gòu)圖注意力網(wǎng)絡(luò)應(yīng)用于Android惡意軟件的檢測,主要分為3個階段:首先是特征提取與網(wǎng)絡(luò)構(gòu)建階段,從數(shù)據(jù)集中提取Android樣本的應(yīng)用程序名、請求權(quán)限、訪問URL、API調(diào)用和包含組件信息,針對不同類型關(guān)系構(gòu)建異構(gòu)圖;其次使用HAN算法學(xué)習(xí)不同元路徑下的異質(zhì)信息網(wǎng)絡(luò),得到最終的節(jié)點嵌入;最后是檢測階段,對樣本進行分類并評估模型的分類效果,總體框架如圖1所示。
圖1 基于異構(gòu)圖注意力網(wǎng)絡(luò)的Android惡意軟件檢測模型框架
惡意軟件的特征提取由靜態(tài)分析或動態(tài)分析獲得。靜態(tài)分析是在未運行的狀態(tài)下對程序進行全覆蓋的特征提取。動態(tài)分析是通過在沙箱、虛擬機和其他操作環(huán)境下模擬運行惡意樣本,并同時對其進行測試與記錄。Android應(yīng)用程序以APK格式打包并安裝在Android系統(tǒng)上,APK文件通常包含代碼文件、授權(quán)和服務(wù)配置文件、Lib文件和其他資源文件。
本文使用靜態(tài)特征提取工具Androguard從APK的DEX源文件以及AndroidManifest.xml配置文件中提取請求權(quán)限、訪問URL、敏感API調(diào)用和包含組件4種類型的特征,作為判斷程序是否具有惡意的依據(jù)。
(1)權(quán)限
Android的權(quán)限機制提供了對應(yīng)用的訪問控制,一個應(yīng)用程序所申請的權(quán)限在一定程度上有效地反映了其行為。敏感權(quán)限的使用可能會對用戶的隱私和設(shè)備運行狀態(tài)產(chǎn)生嚴(yán)重影響,如申請敏感權(quán)限SEND_SMS、ACCESS_NETWORK_STATE、READ_PHONE_STATE會讀取手機信息、發(fā)送短信,然后通過調(diào)取sendTextMessage()、getActiveNetworkInfo()、getDevicedId()、getSubscribeId()等API實施惡意行為。
(2)URL
應(yīng)用程序中的一些網(wǎng)絡(luò)地址信息可能與惡意性質(zhì)有關(guān),它通過定期與外部網(wǎng)絡(luò)建立連接達到檢索敏感信息或泄漏數(shù)據(jù)的目的,這些網(wǎng)絡(luò)地址可以作為鑒別相關(guān)僵尸網(wǎng)絡(luò)的特征。
(3)敏感API
通過靜態(tài)解析工具解析smali代碼中包含invoke-static、invoke-virtual、invoke-direct和invoke-super等指令得到API調(diào)用。由于提取的API函數(shù)大多為應(yīng)用程序運行本身所必須的非特征節(jié)點,增加了數(shù)據(jù)的復(fù)雜度和檢測難度,為提升檢測效率,在選取敏感API特征時,只對匹配Pscout[21]API調(diào)用集的API進行處理統(tǒng)計,從而有效提高特征的代表性,部分敏感API如表1所示。
表1 敏感API項
(4)組件
Android系統(tǒng)共有4種應(yīng)用組件類型,分別為活動(Activity)、服務(wù)(Service)、廣播接收器(Broadcast receiver)和內(nèi)容提供者(Content provider)。每個組件都是一個入口點,系統(tǒng)或用戶通過入口點進入應(yīng)用[22]。通過Androguard獲取4大組件的初步特征集,為了進一步簡化數(shù)據(jù)只保留4大組件的名稱,舍棄前面的com.***的內(nèi)容。
定義1異質(zhì)信息網(wǎng)絡(luò)定義為一個有向圖G=(V,E,T,R),每個節(jié)點vi∈V屬于節(jié)點類型集合T中的一個節(jié)點類型,每個邊ei∈E屬于邊類型集合R中的一個邊類型,類型映射函數(shù)分別表示為:V→T和E→R。當(dāng)節(jié)點類型數(shù)量和邊類型數(shù)量均為1時,G為同質(zhì)信息網(wǎng)絡(luò),當(dāng)節(jié)點類型數(shù)量和邊類型數(shù)量之和大于2時,G為異質(zhì)信息網(wǎng)絡(luò)。
定義2網(wǎng)絡(luò)模式TG=(T,R)定義為對于給定網(wǎng)絡(luò)G=(V,E,T,R),由節(jié)點類型為T的節(jié)點和邊類型為R的邊構(gòu)成的圖。
定義3元路徑M定義為的路徑,簡寫為T1T2…Tl。它描述了節(jié)點類型T1和Tl之間的關(guān)系,其中R=R1?R2?…?Rl-1表示關(guān)系之間的組合運算符。
圖2 異質(zhì)信息網(wǎng)絡(luò)實例以及網(wǎng)絡(luò)模式
將Android樣本中提取的應(yīng)用程序名、請求權(quán)限和訪問URL、API調(diào)用和包含組件分別作為節(jié)點在圖G=(V,E,T,R)上表示,V=(v1,v2,…,vn)代表節(jié)點的集合,E=(e1,e2,…,en)代表節(jié)點間邊的集合,T=(tapp,tpermission,tURL,tAPI,tcomponent)為節(jié)點類型的集合,R=(rapp-permission,rapp-URL,rapp-API,rapp-component)為邊類型的集合。為了使模型更加準(zhǔn)確,使用MaMadroid中包轉(zhuǎn)換概率作為應(yīng)用程序節(jié)點的屬性值,賦予應(yīng)用程序節(jié)點特征。節(jié)點v的特征向量表示為xv,完整的節(jié)點特征向量集為{xv,?v∈V}。我們將提取的特征實體標(biāo)記為A(應(yīng)用程序名)、P(請求權(quán)限)、U(URL)、I(API)、C(組件),根據(jù)節(jié)點間關(guān)系構(gòu)建數(shù)據(jù)樣本的異質(zhì)信息網(wǎng)絡(luò),實體間鄰接矩陣表示如下:
(1)R1:描述應(yīng)用程序與請求權(quán)限的關(guān)系,構(gòu)建APP-request-Permission矩陣R,其中每個元素Ri,j∈{0,1},Ri,j=1表示應(yīng)用程序i請求權(quán)限j。
(2)R2:描述應(yīng)用程序與訪問URL的關(guān)系,構(gòu)建APP-access-URL矩陣A,其中每個元素Ai,j∈{0,1},Ai,j=1表示應(yīng)用程序i訪問URLj。
(3)R3:描述應(yīng)用程序與API調(diào)用的關(guān)系,構(gòu)建APP-call-API矩陣C,其中每個元素Ci,j∈{0,1},Ci,j=1表示應(yīng)用程序i調(diào)用APIj。
(4)R4:描述應(yīng)用程序與組件使用的關(guān)系,構(gòu)建APP-use-Component矩陣U,其中每個元素Ui,j∈{0,1},Ui,j=1表示應(yīng)用程序i使用組件j。
表2 定義的元路徑
在構(gòu)建異質(zhì)信息網(wǎng)絡(luò)后,使用異構(gòu)圖注意力網(wǎng)絡(luò)的節(jié)點級注意力將全部類型的節(jié)點都映射到統(tǒng)一的特征空間中,通過語義級注意力學(xué)習(xí)元路徑鄰居節(jié)點的權(quán)重并聚合得到特定語義的節(jié)點嵌入。
2.3.1 節(jié)點級注意力
選取本文異構(gòu)圖G中的某條元路徑,對當(dāng)前語義下的節(jié)點使用節(jié)點級注意力學(xué)習(xí)表示,通過自注意力機制學(xué)習(xí)各類節(jié)點的權(quán)重,基于元路徑Φ的節(jié)點對(i,j)的重要性如下所示:
式(1)中,Φ指本文定義的{M1,M2,M3,M4}中4種類型的元路徑,h'i和h'j表示節(jié)點i和節(jié)點j經(jīng)過投影變換后統(tǒng)一空間的特征,為在元路徑Φ下節(jié)點j對節(jié)點i的注意力,attnode為統(tǒng)一元路徑下節(jié)點共享的一個節(jié)點級注意力神經(jīng)網(wǎng)絡(luò)。
圖3 異構(gòu)圖注意力網(wǎng)絡(luò)模型中的節(jié)點級聚合和語義級聚合
然后使用mask對中心節(jié)點和鄰居節(jié)點之間的重要性進行計算,求得注意力系數(shù),并用softmax函數(shù)歸一化操作:
式(2)中是一個節(jié)點級注意力向量,節(jié)點對(i,j)的注意力系數(shù)依賴于他們的特征,通過學(xué)習(xí)得到基于元路徑Φ的鄰居特征聚合如下:
表示最后節(jié)點i在元路徑Φ下學(xué)到的嵌入。給定元路徑集合{Φ0,Φ1,…,ΦP},由節(jié)點級注意力可得P組在當(dāng)前語義下的節(jié)點嵌入{ZΦ0,ZΦ1,…,ZΦP}。
2.3.2 語義級注意力
為了得到Android樣本信息中更為全面的節(jié)點嵌入,需要綜合不同的語義信息。語義級注意力的輸入就是節(jié)點級注意力的P組輸出{ZΦ0,ZΦ1,…,ZΦP}。(βΦ0,βΦ1,…,βΦP)為每個元路徑學(xué)到的權(quán)重,attsem表示語義級注意力神經(jīng)網(wǎng)絡(luò):
通過非線性變換得到特定語義的嵌入,然后利用語義級注意力向量q轉(zhuǎn)換嵌入相似度,從而學(xué)到每個元路徑的重要性,如式(5)。其中,W表示權(quán)重矩陣,b表示偏置項。
使用softmax函數(shù)對每個元路徑的重要性都進行歸一化處理,最后融合不同元路徑得到語義級的節(jié)點嵌入,如式(6)和式(7)。
最后將得到的節(jié)點嵌入放入一個多層感知器(MLP)來進行分類,通過反向傳播算法優(yōu)化模型更好地學(xué)習(xí)節(jié)點嵌入。本文使用交叉熵作為損失函數(shù),如式(8)所示:
其中為對應(yīng)的標(biāo)簽值,Yl為經(jīng)過多層感知器輸出再通過softmax層得到的預(yù)測值。
基于異構(gòu)圖注意力網(wǎng)絡(luò)的Android惡意軟件檢測以分層的方式獲取節(jié)點鄰居和不同元路徑的最優(yōu)結(jié)構(gòu),充分學(xué)習(xí)異質(zhì)信息網(wǎng)絡(luò)中的拓?fù)浣Y(jié)構(gòu)和豐富語義信息。被標(biāo)記的鄰接矩陣和節(jié)點特征向量作為圖神經(jīng)網(wǎng)絡(luò)模型的輸入,分別學(xué)習(xí)每個元路徑的權(quán)重后得到融合特定語義的節(jié)點嵌入,最終通過多層感知器判別樣本類別。
實驗在NVIDIA GTX1080Ti GPU上進行,使用Androguard分 析APK文 件,通 過PyTorch[23]和DGL[24]圖深度學(xué)習(xí)庫進行實驗。
實驗數(shù)據(jù)來自Drebin數(shù)據(jù)集[25]、Androzoo數(shù)據(jù)集[26]以及360手機助手。其中Drebin包含179個家族的5 560個樣本,Androzoo包含5 781 781個樣本。表3為將數(shù)據(jù)集構(gòu)造為異質(zhì)信息網(wǎng)絡(luò)后節(jié)點數(shù)和邊數(shù)的具體圖數(shù)據(jù)統(tǒng)計信息。我們將良性樣本標(biāo)記為0,將惡意樣本標(biāo)記為1,通過分層抽樣劃分訓(xùn)練集、驗證集和測試集,分別占整個實驗數(shù)據(jù)集的70%、20%和10%。學(xué)習(xí)到的節(jié)點嵌入輸入多層感知器,全連接層間采用ReLU作為激勵函數(shù),使用Adam優(yōu)化器和最小化交叉熵?fù)p失函數(shù)優(yōu)化模型,最終通過softmax函數(shù)對節(jié)點分類判斷樣本是否為惡意,具體參數(shù)的設(shè)置如表4所示。
表3 圖數(shù)據(jù)統(tǒng)計信息
表4 參數(shù)設(shè)置
實驗選取準(zhǔn)確率(Accuracy)、精確率(Precision)、召回率(Recall)和F1(F1-score)作為評估指標(biāo)。分別計算了真陽性(TP)、真陰性(TN)、假陽性(FP)和假陰性(FN)等值。F1-score在一定程度上代表了模型的綜合訓(xùn)練效果,結(jié)果的漏報率越接近0、召回率越接近1則說明模型分類能力越強,評估指標(biāo)的具體公式如下:
為了驗證本文算法模型的性能,將本文模型與以下4種檢測惡意軟件的基準(zhǔn)模型進行對比。
(1)MaMadroid。該算法從控制流圖中提取API調(diào)用序列并抽象為包或家族,將基于馬爾科夫鏈的包轉(zhuǎn)換概率作為特征向量,最后使用隨機森林進行分類。
(2)Drebin。該算法靜態(tài)提取應(yīng)用程序中權(quán)限、API、組件等8種信息作為二值特征向量,使用線性支持向量機作為分類模型。
(3)Node2vec。使用word2vec算法學(xué)習(xí)同質(zhì)圖中的節(jié)點嵌入,設(shè)置每個節(jié)點的行走次數(shù)為10,最大行走長度為10。
(4)GraphSAGE。該模型對同質(zhì)圖進行兩跳內(nèi)鄰居采樣,使用均值聚合器聚合采樣鄰居的特征。
5組對比實驗的評估結(jié)果如表5、圖4所示:
表5 對比算法實驗結(jié)果
圖4 評估指標(biāo)對比
從表5可知,本文算法的模型檢測準(zhǔn)確率高達98.83%,假陽性率只有0.36%。圖5為5組實驗的ROC曲線。AUC值是ROC曲線下方的面積,理想情況下AUC值為1,該值反映了分類結(jié)果的整體水平,曲線越接近左上角就證明檢測率越高,假陽性就越低,對惡意軟件的檢測就越敏感。MaMadroid和Drebin均對歐式數(shù)據(jù)進行處理,僅考慮提取特征的數(shù)量和序列關(guān)系,F1值和精確率相對較低。Node2vec通過深度優(yōu)先和廣度優(yōu)先的二階隨機行走獲得節(jié)點序列,只學(xué)習(xí)網(wǎng)絡(luò)中的結(jié)構(gòu)關(guān)系,故精確率只有97.43%,與本文算法模型相比低2.46%?;贕raphSAGE的模型獲取了節(jié)點的屬性信息,檢測效果明顯提升,但因僅捕獲單一語義存在丟失信息的可能,所以在F1值、準(zhǔn)確率方面沒有本文算法高,特別是精確率低,僅為1.84%,有待進一步加強。本文基于異構(gòu)圖注意力網(wǎng)絡(luò)的模型表現(xiàn)優(yōu)異,AUC值和準(zhǔn)確率分別達到了99.95%和98.83%。
圖5 ROC曲線對比
圖6為本文算法模型隨迭代次數(shù)的Loss值變化,Loss值為預(yù)測標(biāo)簽和真實標(biāo)簽的交叉熵,由圖6可知經(jīng)過訓(xùn)練Loss值不斷趨于0,表明模型的學(xué)習(xí)能力逐漸增強。從實驗多項評估指標(biāo)結(jié)果可知,基于異構(gòu)圖注意力網(wǎng)絡(luò)的模型具有更強的語義表達能力,能夠?qū)W習(xí)豐富的結(jié)構(gòu)關(guān)系和語義特征,準(zhǔn)確識別惡意軟件,取得更好的檢測效果。
圖6 迭代次數(shù)對損失的影響
為了進一步評估參數(shù)對本文算法模型的影響,通過遞增迭代輪次測評Epochs變化對本文模型分類效果的提升能力,實驗結(jié)果如表6所示。
表6 不同Epochs模型的準(zhǔn)確率
同時利用t-SNE[27]方法將不同Epochs下模型學(xué)習(xí)到的節(jié)點嵌入降維,得到2維可視化結(jié)果,最佳分類效果如圖7所示。其中,右上角節(jié)點簇代表惡意樣本,左下角的節(jié)點簇代表良性樣本。
圖7 節(jié)點嵌入可視化
由表6可知,隨著Epochs增加分類模型準(zhǔn)確率不斷提升,在達到20后趨于穩(wěn)定,逐漸由擬合優(yōu)化狀態(tài)逐漸轉(zhuǎn)化為過擬合狀態(tài)。本文設(shè)定Epochs為20時可以學(xué)習(xí)到更好的節(jié)點表示,獲得模型的最佳訓(xùn)練效果。
目前檢測Android惡意軟件的主流方法是使用深度學(xué)習(xí)的方法對非歐式數(shù)據(jù)進行訓(xùn)練,然而此類方法并不能有效捕捉樣本的節(jié)點信息和結(jié)構(gòu)特征,本文使用圖神經(jīng)網(wǎng)絡(luò)對Android惡意軟件進行檢測,將異構(gòu)圖注意力網(wǎng)絡(luò)算法應(yīng)用于惡意軟件檢測模型中,有效地在異構(gòu)圖中融合了應(yīng)用程序與請求權(quán)限、訪問URL、API調(diào)用和包含組件之間復(fù)雜的拓?fù)浣Y(jié)構(gòu)和豐富的語義信息。將提取Android樣本中的特征轉(zhuǎn)換為不同類型節(jié)點,通過節(jié)點級注意力將不同類型的節(jié)點映射到統(tǒng)一的特征空間,對不同的關(guān)系分別進行語義聚合生成節(jié)點嵌入,最終使用多層感知器輸出分類結(jié)果。在對本文數(shù)據(jù)樣本進行訓(xùn)練的實驗中,本文算法的檢測模型準(zhǔn)確率為98.83%,且各項評估指標(biāo)優(yōu)于其他對比算法模型,檢測效果有了明顯的提升。
后續(xù)研究將結(jié)合Android樣本動態(tài)運行的特征,充分利用圖神經(jīng)網(wǎng)絡(luò)的語義信息,彌補選取Android樣本靜態(tài)特征的不足,同時進一步優(yōu)化異構(gòu)圖神經(jīng)網(wǎng)絡(luò)模型,提高分類器的泛化能力和分類效率。