?

基于異構圖注意力網絡的Android惡意軟件檢測

2022-12-09 04:54賀嬌君蔡滿春蘆天亮
關鍵詞:異構應用程序注意力

賀嬌君, 蔡滿春, 蘆天亮

(中國人民公安大學信息網絡安全學院,北京 100038)

0 引言

隨著移動智能終端技術的不斷提升,移動智能設備得到廣泛的使用。目前智能設備的操作系統主要分為IOS和Android兩大類,截止2021年7月,Android在全球移動智能終端操作系統市場中占83.8%[1],Android以開源的優勢已經成為主流的移動操作系統。然而由于系統的可擴展性和開發的開放性,Android系統頻遭黑客們的攻擊,數據泄露和隱私侵犯時有發生,用戶被置于各種威脅和高風險中,為網絡安全帶來了極大的挑戰。

目前主流的Android惡意代碼檢測方法是對請求權限、API調用、字節碼等特征進行提取,然后針對數據的語法特征和語義系統特征使用機器學習方法構建檢測模型?;谡Z法的方法往往忽略了應用程序的語義信息。例如,一些檢測模型只提取出應用程序的請求權限來構建特征向量,但惡意程序可以在利用程序漏洞而不調取權限的情況下實施惡意行為。MaMadroid[2]提取API的抽象包,使用馬爾科夫鏈表示包與包之間的轉換概率,該方法的缺點是只提取了數據的序列信息,無法獲得節點之間的結構特征。同樣,基于卷積神經網絡和循環神經網絡的惡意軟件檢測模型只獲取了數據的平面結構或序列特征,并沒有考慮到對于判定應用程序惡意性質非常關鍵的結構依賴關系。

本文提出了一種基于異構圖注意力網絡的Android惡意軟件檢測方法,相較于目前大多數使用的GraphSAGE[3]和Node2vec[4]等圖表示方法,克服了只利用拓撲結構或節點特征而未考慮不同類型節點關系的不足。該方法受到異構圖注意力網絡算法的啟發,提取Android應用程序的請求權限、訪問URL、API調用、包含組件4種特征節點和其間的邊結構關系,在構建異構圖后分層聚合基于元路徑的鄰域特征。為進一步提取更深層次的語義關系,分別對兩個應用程序之間不同的關系進行語義聚合,生成節點嵌入。我們綜合4種特征關系并將MaMadroid所使用的API調用序列的包轉換概率作為應用程序節點屬性,在結構化的異構圖上建模,使用基于異構圖注意力的網絡模型對Android惡意軟件進行檢測,實驗的準確率達到98.83%,假陽性率為0.36%,與現有的圖神經網絡模型相比檢測率有所提高。

1 相關工作

1.1 圖嵌入與圖神經網絡

圖嵌入是將網絡中的節點特征映射到到低維向量中,這些向量仍具有圖的拓撲結構信息和節點內容信息,從而完成后續節點分類、鏈路預測、聚類以及可視化等圖分析任務。許多淺層結構模型的圖嵌入算法(如DeepWalk、LINE、Node2vec)都不能捕獲高度非線性的網絡結構,而基于深度學習的圖嵌入方法直接使用深度自編碼器學習圖鄰接矩陣的編碼與重構,可以通過多層非線性函數捕捉高度非線性的網絡結構,較為熟知的深度圖嵌入方法有基于圖自編碼的算法(如SDNE[5]和DNGR[6])和基于無監督訓練的圖卷積神經網絡(如GraphSAGE)。Deep-Walk使用隨機游走在無向圖中采樣生成序列,通過skip-gram模型中的word2vec進行向量學習。LINE是在大規模圖上將節點的一階相似性局部結構信息和二階相似性的鄰居信息拼接在一起作為節點的嵌入。Node2vec是DeepWalk的擴展,它通過策略使用二階隨機行走生成節點序列。2009年由Scarselli等人[7]最早提出圖神經網絡(Graph Neural Network,GNN)的概念,它能夠有效利用圖中豐富的語義信息和結構特征,每個節點通過相互交換信息更新本身節點的狀態,不管是在傳統的自然語言處理領域[8]、圖像領域[9],還是在醫藥化學領域[10],GNN都表現出優異的性能。

1.2 研究現狀

為了克服傳統Android惡意軟件檢測在捕獲拓撲結構和語義特征方面的缺失,許多方法將程序語義表示為圖,通過分析生成的圖檢測惡意軟件。最初大多數方法使用圖的特征工程度量惡意代碼家族之間的相似性,人為設計如節點度、圖中心性等特征[11],計算敏感API調用節點圖的Katz、Betweenness、Closeness、Pagerank值以度量節點中心性,將26個敏感API調用的4個中心值組合為輸入的特征向量,使用圖卷積神經網絡[12](Graph Convolutional Net-work,GCN)進行訓練。Yang[13]在計算節點中心性Betweenness、Closeness的同時,將n跳內數量作為屬性特征豐富結構信息。后來為進一步快速獲取新節點嵌入的表示、降低運算的開銷,funcGNN[14]選取節點的標簽、屬性、列表以及編輯距離作為特征,使用GraphSAGE算法采樣鄰居特征,歸納嵌入節點,提出了一種基于GNN的判斷同類惡意代碼家族相似度的方法。挖掘樣本的結構信息可以進一步檢測出隱蔽的Android惡意軟件,Hom-Droid[15]通過分析函數調用的社會網絡同源性,挖掘出社會網絡中代表網絡不同結構特征的敏感API三元體,并從可疑子圖提取語義特征檢測隱蔽的Android惡意軟件。除此之外,GDroid[16]引入包含不同類型節點和邊的異構圖豐富樣本特征的結構信息,研究人員將應用程序和API映射成一個大的異構圖,成為第一個探索圖神經網絡在惡意軟件分類領域應用的研究。

現實場景下的圖結構模型通常具有多種類型的節點和邊,這種網絡稱為異質信息網絡(Hetegeneous Information Network,HIN)。異質信息網絡包含更加豐富的語義,可以反映惡意軟件的結構特征。HinDroid[17]使用HIN為應用程序、API及其之間的關系構造圖結構,并對應用程序和API之間的調用關系、API之間的關聯位置關系和API的包及方法名稱關系建模,使用元路徑的方法比較應用程序間路徑的相似性。Scorpion[18]使用異構圖模擬不同類型的實體特征和惡意軟件中的語義關系,以metagraph2vec的方式學習節點嵌入,在保留節點間結構和語義關系的前提下,降低特征向量的維度,最后采用SVM分類器輸出分類結果,與HinDroid方法中只加權元路徑就進行分類有了較大改進。AiDroid[19]在隨機游走生成語料之后,通過skip-gram算法編碼節點,提出了樣本外節點表示學習算法,自主學習對應的節點表示。實驗證明,基于異構圖的Android惡意軟件檢測算法一定程度上提升了檢測效果。

2 基于異構圖注意力網絡的Android惡意軟件檢測

異構圖注意力網絡[20](Heterogeneous graph Atten-tion Network,HAN)是一種新的圖神經網絡,節點間以元路徑(meta-path)的方式連接不同的語義路徑,能更好地捕獲不同語義信息。HAN由節點級注意力和語義級注意力組成,節點級注意力是將不同類型的節點都映射到同一個特征空間中,學習基于元路徑鄰居節點的權重并聚合得到特定語義的節點嵌入,而語義級注意力綜合學習每個元路徑的權重并融合前面的結果得到新的節點嵌入。

本文將異構圖注意力網絡應用于Android惡意軟件的檢測,主要分為3個階段:首先是特征提取與網絡構建階段,從數據集中提取Android樣本的應用程序名、請求權限、訪問URL、API調用和包含組件信息,針對不同類型關系構建異構圖;其次使用HAN算法學習不同元路徑下的異質信息網絡,得到最終的節點嵌入;最后是檢測階段,對樣本進行分類并評估模型的分類效果,總體框架如圖1所示。

圖1 基于異構圖注意力網絡的Android惡意軟件檢測模型框架

2.1 特征提取

惡意軟件的特征提取由靜態分析或動態分析獲得。靜態分析是在未運行的狀態下對程序進行全覆蓋的特征提取。動態分析是通過在沙箱、虛擬機和其他操作環境下模擬運行惡意樣本,并同時對其進行測試與記錄。Android應用程序以APK格式打包并安裝在Android系統上,APK文件通常包含代碼文件、授權和服務配置文件、Lib文件和其他資源文件。

本文使用靜態特征提取工具Androguard從APK的DEX源文件以及AndroidManifest.xml配置文件中提取請求權限、訪問URL、敏感API調用和包含組件4種類型的特征,作為判斷程序是否具有惡意的依據。

(1)權限

Android的權限機制提供了對應用的訪問控制,一個應用程序所申請的權限在一定程度上有效地反映了其行為。敏感權限的使用可能會對用戶的隱私和設備運行狀態產生嚴重影響,如申請敏感權限SEND_SMS、ACCESS_NETWORK_STATE、READ_PHONE_STATE會讀取手機信息、發送短信,然后通過調取sendTextMessage()、getActiveNetworkInfo()、getDevicedId()、getSubscribeId()等API實施惡意行為。

(2)URL

應用程序中的一些網絡地址信息可能與惡意性質有關,它通過定期與外部網絡建立連接達到檢索敏感信息或泄漏數據的目的,這些網絡地址可以作為鑒別相關僵尸網絡的特征。

(3)敏感API

通過靜態解析工具解析smali代碼中包含invoke-static、invoke-virtual、invoke-direct和invoke-super等指令得到API調用。由于提取的API函數大多為應用程序運行本身所必須的非特征節點,增加了數據的復雜度和檢測難度,為提升檢測效率,在選取敏感API特征時,只對匹配Pscout[21]API調用集的API進行處理統計,從而有效提高特征的代表性,部分敏感API如表1所示。

表1 敏感API項

(4)組件

Android系統共有4種應用組件類型,分別為活動(Activity)、服務(Service)、廣播接收器(Broadcast receiver)和內容提供者(Content provider)。每個組件都是一個入口點,系統或用戶通過入口點進入應用[22]。通過Androguard獲取4大組件的初步特征集,為了進一步簡化數據只保留4大組件的名稱,舍棄前面的com.***的內容。

2.2 異質信息網絡構建

定義1異質信息網絡定義為一個有向圖G=(V,E,T,R),每個節點vi∈V屬于節點類型集合T中的一個節點類型,每個邊ei∈E屬于邊類型集合R中的一個邊類型,類型映射函數分別表示為:V→T和E→R。當節點類型數量和邊類型數量均為1時,G為同質信息網絡,當節點類型數量和邊類型數量之和大于2時,G為異質信息網絡。

定義2網絡模式TG=(T,R)定義為對于給定網絡G=(V,E,T,R),由節點類型為T的節點和邊類型為R的邊構成的圖。

定義3元路徑M定義為的路徑,簡寫為T1T2…Tl。它描述了節點類型T1和Tl之間的關系,其中R=R1?R2?…?Rl-1表示關系之間的組合運算符。

圖2 異質信息網絡實例以及網絡模式

將Android樣本中提取的應用程序名、請求權限和訪問URL、API調用和包含組件分別作為節點在圖G=(V,E,T,R)上表示,V=(v1,v2,…,vn)代表節點的集合,E=(e1,e2,…,en)代表節點間邊的集合,T=(tapp,tpermission,tURL,tAPI,tcomponent)為節點類型的集合,R=(rapp-permission,rapp-URL,rapp-API,rapp-component)為邊類型的集合。為了使模型更加準確,使用MaMadroid中包轉換概率作為應用程序節點的屬性值,賦予應用程序節點特征。節點v的特征向量表示為xv,完整的節點特征向量集為{xv,?v∈V}。我們將提取的特征實體標記為A(應用程序名)、P(請求權限)、U(URL)、I(API)、C(組件),根據節點間關系構建數據樣本的異質信息網絡,實體間鄰接矩陣表示如下:

(1)R1:描述應用程序與請求權限的關系,構建APP-request-Permission矩陣R,其中每個元素Ri,j∈{0,1},Ri,j=1表示應用程序i請求權限j。

(2)R2:描述應用程序與訪問URL的關系,構建APP-access-URL矩陣A,其中每個元素Ai,j∈{0,1},Ai,j=1表示應用程序i訪問URLj。

(3)R3:描述應用程序與API調用的關系,構建APP-call-API矩陣C,其中每個元素Ci,j∈{0,1},Ci,j=1表示應用程序i調用APIj。

(4)R4:描述應用程序與組件使用的關系,構建APP-use-Component矩陣U,其中每個元素Ui,j∈{0,1},Ui,j=1表示應用程序i使用組件j。

表2 定義的元路徑

2.3 異構圖注意力網絡

在構建異質信息網絡后,使用異構圖注意力網絡的節點級注意力將全部類型的節點都映射到統一的特征空間中,通過語義級注意力學習元路徑鄰居節點的權重并聚合得到特定語義的節點嵌入。

2.3.1 節點級注意力

選取本文異構圖G中的某條元路徑,對當前語義下的節點使用節點級注意力學習表示,通過自注意力機制學習各類節點的權重,基于元路徑Φ的節點對(i,j)的重要性如下所示:

式(1)中,Φ指本文定義的{M1,M2,M3,M4}中4種類型的元路徑,h'i和h'j表示節點i和節點j經過投影變換后統一空間的特征,為在元路徑Φ下節點j對節點i的注意力,attnode為統一元路徑下節點共享的一個節點級注意力神經網絡。

圖3 異構圖注意力網絡模型中的節點級聚合和語義級聚合

然后使用mask對中心節點和鄰居節點之間的重要性進行計算,求得注意力系數,并用softmax函數歸一化操作:

式(2)中是一個節點級注意力向量,節點對(i,j)的注意力系數依賴于他們的特征,通過學習得到基于元路徑Φ的鄰居特征聚合如下:

表示最后節點i在元路徑Φ下學到的嵌入。給定元路徑集合{Φ0,Φ1,…,ΦP},由節點級注意力可得P組在當前語義下的節點嵌入{ZΦ0,ZΦ1,…,ZΦP}。

2.3.2 語義級注意力

為了得到Android樣本信息中更為全面的節點嵌入,需要綜合不同的語義信息。語義級注意力的輸入就是節點級注意力的P組輸出{ZΦ0,ZΦ1,…,ZΦP}。(βΦ0,βΦ1,…,βΦP)為每個元路徑學到的權重,attsem表示語義級注意力神經網絡:

通過非線性變換得到特定語義的嵌入,然后利用語義級注意力向量q轉換嵌入相似度,從而學到每個元路徑的重要性,如式(5)。其中,W表示權重矩陣,b表示偏置項。

使用softmax函數對每個元路徑的重要性都進行歸一化處理,最后融合不同元路徑得到語義級的節點嵌入,如式(6)和式(7)。

2.4 分類預測

最后將得到的節點嵌入放入一個多層感知器(MLP)來進行分類,通過反向傳播算法優化模型更好地學習節點嵌入。本文使用交叉熵作為損失函數,如式(8)所示:

其中為對應的標簽值,Yl為經過多層感知器輸出再通過softmax層得到的預測值。

基于異構圖注意力網絡的Android惡意軟件檢測以分層的方式獲取節點鄰居和不同元路徑的最優結構,充分學習異質信息網絡中的拓撲結構和豐富語義信息。被標記的鄰接矩陣和節點特征向量作為圖神經網絡模型的輸入,分別學習每個元路徑的權重后得到融合特定語義的節點嵌入,最終通過多層感知器判別樣本類別。

3 實驗評估

3.1 實驗環境

實驗在NVIDIA GTX1080Ti GPU上進行,使用Androguard分 析APK文 件,通 過PyTorch[23]和DGL[24]圖深度學習庫進行實驗。

實驗數據來自Drebin數據集[25]、Androzoo數據集[26]以及360手機助手。其中Drebin包含179個家族的5 560個樣本,Androzoo包含5 781 781個樣本。表3為將數據集構造為異質信息網絡后節點數和邊數的具體圖數據統計信息。我們將良性樣本標記為0,將惡意樣本標記為1,通過分層抽樣劃分訓練集、驗證集和測試集,分別占整個實驗數據集的70%、20%和10%。學習到的節點嵌入輸入多層感知器,全連接層間采用ReLU作為激勵函數,使用Adam優化器和最小化交叉熵損失函數優化模型,最終通過softmax函數對節點分類判斷樣本是否為惡意,具體參數的設置如表4所示。

表3 圖數據統計信息

表4 參數設置

3.2 評估標準

實驗選取準確率(Accuracy)、精確率(Precision)、召回率(Recall)和F1(F1-score)作為評估指標。分別計算了真陽性(TP)、真陰性(TN)、假陽性(FP)和假陰性(FN)等值。F1-score在一定程度上代表了模型的綜合訓練效果,結果的漏報率越接近0、召回率越接近1則說明模型分類能力越強,評估指標的具體公式如下:

3.3 實驗結果與分析

為了驗證本文算法模型的性能,將本文模型與以下4種檢測惡意軟件的基準模型進行對比。

(1)MaMadroid。該算法從控制流圖中提取API調用序列并抽象為包或家族,將基于馬爾科夫鏈的包轉換概率作為特征向量,最后使用隨機森林進行分類。

(2)Drebin。該算法靜態提取應用程序中權限、API、組件等8種信息作為二值特征向量,使用線性支持向量機作為分類模型。

(3)Node2vec。使用word2vec算法學習同質圖中的節點嵌入,設置每個節點的行走次數為10,最大行走長度為10。

(4)GraphSAGE。該模型對同質圖進行兩跳內鄰居采樣,使用均值聚合器聚合采樣鄰居的特征。

5組對比實驗的評估結果如表5、圖4所示:

表5 對比算法實驗結果

圖4 評估指標對比

從表5可知,本文算法的模型檢測準確率高達98.83%,假陽性率只有0.36%。圖5為5組實驗的ROC曲線。AUC值是ROC曲線下方的面積,理想情況下AUC值為1,該值反映了分類結果的整體水平,曲線越接近左上角就證明檢測率越高,假陽性就越低,對惡意軟件的檢測就越敏感。MaMadroid和Drebin均對歐式數據進行處理,僅考慮提取特征的數量和序列關系,F1值和精確率相對較低。Node2vec通過深度優先和廣度優先的二階隨機行走獲得節點序列,只學習網絡中的結構關系,故精確率只有97.43%,與本文算法模型相比低2.46%?;贕raphSAGE的模型獲取了節點的屬性信息,檢測效果明顯提升,但因僅捕獲單一語義存在丟失信息的可能,所以在F1值、準確率方面沒有本文算法高,特別是精確率低,僅為1.84%,有待進一步加強。本文基于異構圖注意力網絡的模型表現優異,AUC值和準確率分別達到了99.95%和98.83%。

圖5 ROC曲線對比

圖6為本文算法模型隨迭代次數的Loss值變化,Loss值為預測標簽和真實標簽的交叉熵,由圖6可知經過訓練Loss值不斷趨于0,表明模型的學習能力逐漸增強。從實驗多項評估指標結果可知,基于異構圖注意力網絡的模型具有更強的語義表達能力,能夠學習豐富的結構關系和語義特征,準確識別惡意軟件,取得更好的檢測效果。

圖6 迭代次數對損失的影響

3.4 參數分析

為了進一步評估參數對本文算法模型的影響,通過遞增迭代輪次測評Epochs變化對本文模型分類效果的提升能力,實驗結果如表6所示。

表6 不同Epochs模型的準確率

同時利用t-SNE[27]方法將不同Epochs下模型學習到的節點嵌入降維,得到2維可視化結果,最佳分類效果如圖7所示。其中,右上角節點簇代表惡意樣本,左下角的節點簇代表良性樣本。

圖7 節點嵌入可視化

由表6可知,隨著Epochs增加分類模型準確率不斷提升,在達到20后趨于穩定,逐漸由擬合優化狀態逐漸轉化為過擬合狀態。本文設定Epochs為20時可以學習到更好的節點表示,獲得模型的最佳訓練效果。

4 結語

目前檢測Android惡意軟件的主流方法是使用深度學習的方法對非歐式數據進行訓練,然而此類方法并不能有效捕捉樣本的節點信息和結構特征,本文使用圖神經網絡對Android惡意軟件進行檢測,將異構圖注意力網絡算法應用于惡意軟件檢測模型中,有效地在異構圖中融合了應用程序與請求權限、訪問URL、API調用和包含組件之間復雜的拓撲結構和豐富的語義信息。將提取Android樣本中的特征轉換為不同類型節點,通過節點級注意力將不同類型的節點映射到統一的特征空間,對不同的關系分別進行語義聚合生成節點嵌入,最終使用多層感知器輸出分類結果。在對本文數據樣本進行訓練的實驗中,本文算法的檢測模型準確率為98.83%,且各項評估指標優于其他對比算法模型,檢測效果有了明顯的提升。

后續研究將結合Android樣本動態運行的特征,充分利用圖神經網絡的語義信息,彌補選取Android樣本靜態特征的不足,同時進一步優化異構圖神經網絡模型,提高分類器的泛化能力和分類效率。

猜你喜歡
異構應用程序注意力
試論同課異構之“同”與“異”
讓注意力“飛”回來
刪除Win10中自帶的應用程序
谷歌禁止加密貨幣應用程序
“揚眼”APP:讓注意力“變現”
異構醇醚在超濃縮洗衣液中的應用探索
overlay SDN實現異構兼容的關鍵技術
A Beautiful Way Of Looking At Things
LTE異構網技術與組網研究
三星電子將開設應用程序下載商店
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合