蘇 慶,林佳銳,黃海濱,黃劍鋒
廣東工業大學 計算機學院,廣州510006
大部分安卓惡意程序都可以被對應歸類于某一安卓惡意應用家族[1]。對安卓惡意應用家族進行檢測,有利于針對具有相似特征的安卓惡意應用制定針對性強、適應性廣的防御策略。一般而言,新興安卓惡意應用家族具有樣本數量小、繁殖速度快的特點。探究一種能快速適應新興小樣本惡意家族識別任務的方法,對遏制新興安卓惡意應用的快速傳播,具有重要的研究意義。
機器學習方法常用于安卓惡意應用家族分類研究。有研究者以較大樣本量的安卓惡意應用家族作為實驗對象,提出了MalDAE[2]、Revealdroid[3]和AndMFC[4]等基于機器學習算法的模型,取得了不錯的效果。但新興惡意家族的樣本數量往往較小,基于機器學習的模型很難對其特征進行有效提取。深度學習可以更好地挖掘小樣本惡意家族內惡意應用特征之間的關聯,可提高模型對小樣本惡意家族的識別率。有研究者提出,將遷移學習思想與卷積神經網絡融合,用于解決小樣本惡意家族訓練過程中容易過擬合的問題[5]。楊昭[6]和Chen等[7]通過采用生成式對抗網絡來生成對抗樣本訓練神經網絡,從而提高小樣本惡意家族識別率。張伯安[8]采用深度殘差神經網絡進行多分類訓練,實驗表明相比于現有深度卷積神經網絡模型[9],其對小樣本惡意家族的識別率更高。
基于深度學習的方法,在面對新惡意家族識別任務時,需要重新執行一遍完整的訓練過程,導致耗時長,不利于快速完成檢測。而元學習[10](meta learning)則是一種能在小樣本應用場景中,快速適應新任務的方法。因此,有研究者將匹配網絡[11](matching networks)、原型網絡[12](prototypical networks)等元學習模型引入安卓惡意應用檢測領域,驗證了元學習模型對新的惡意家族分類任務具有較好的適應性[13]。
針對新興小樣本安卓惡意應用家族進行及時檢測的應用場景,本文提出一種安卓惡意應用家族分類模型MAML-CAS(MAML CNN-Attention-SVM)。首先對安卓惡意應用樣本的DEX文件進行可視化,生成灰度圖,接著將元學習方法MAML與能自動挖掘灰度圖特征內在關聯、對特征進行降維的卷積神經網絡(CNN)相結合,使模型面對新的小樣本安卓惡意應用家族分類任務時,只需要經過幾步迭代就能適應;引入混合域注意力機制模塊(attention block),增加CNN訓練過程中對重要特征的關注。最后使用對小樣本數據具有較強泛化能力的支持向量機(SVM)作為分類器,提高了模型泛化性能。
本MAML-CAS模型是在CNN的基礎上,引入元學習方法MAML,提高模型對新任務的適應能力;并引入通道域和空間域注意力組成的混合域注意力機制模塊,提取全局和局部的核心特征,進行特征細化;使用SVM作為最終分類器,進一步提高模型對小樣本分類任務的性能。
MAML-CAS模型架構如圖1所示,主要分為兩大模塊:(1)數據處理模塊。(2)融合MAML和注意力機制的卷積神經網絡模塊(convolutional neural network module based on MAML and attention mechanism,CMA)。其中CMA內又包含了融合注意力機制的卷積神經網絡和自適應的元學習方法MAML。

圖1 MAML-CAS架構圖Fig.1 Architecture of MAML-CAS
數據處理模塊是從經過標注的惡意APK樣本庫中提取出DEX文件,進而可視化為灰度圖集,并將其劃分為訓練集Htrain和測試集Htest,再從這兩個集合中抽取出訓練任務集Ttrain和測試任務集Ttest。
融合注意力機制的卷積神經網絡則是在卷積神經網絡的每個卷積層和池化層之間嵌入混合域注意力模塊。該模塊將經過卷積層處理后的特征圖作為輸入,從通道和空間兩個維度對特征圖的重要紋理特征進行增強,并保持輸入、輸出數據維度相同;然后將增強的特征圖輸入池化層,保留有效特征并降低維度,從而提高模型檢測效率和精度。
自適應的元學習方法MAML則改變傳統深度學習訓練方法,通過設計兩個相同的融合注意力機制的卷積神經網絡,稱為元學習器和基學習器,分別用于元訓練階段和元測試階段,使模型面對新的小樣本惡意家族分類任務時,只需幾步迭代即以適應,無需重新執行一遍訓練過程,大大提高了新興惡意家族分類效率。
常用的靜態安卓惡意APK特征提取方法,經常使用反編譯手段獲取程序API等特征,提取過程較為復雜、且易受代碼混淆等對抗技術干擾;而動態特征提取方法則通常耗費資源較大,容易降低模型檢測效率。
為避免上述問題,本文將安卓惡意APK中的DEX文件進行可視化,生成灰度圖,以此提升特征提取效率。相比于傳統的特征提取方法,可視化過程僅需要經過文件解壓和讀取字節碼兩個步驟,簡化了特征提取過程,提高了模型整體檢測效率,并可在一定程度上應對安卓惡意APK混淆、加殼等對抗手段,使提取到的特征更具有魯棒性。
DEX(Dalvik executable)文件結構(包括header、string_ids和data等多個部分)與字節碼圖像存在對應關系,主要分為三個部分:(1)DEX文件頭部分包括文件大小、簽名和數據在文件中的偏移量;(2)索引結構區包含文件標識符,如字符串、類型和方法等;(3)數據存儲區則存儲了定義程序行為的執行代碼。以上各部分分別對應于可視化后的灰度圖的不同紋理,可區分地反映了安卓惡意APK的特征。圖2(b)給出了一個灰度圖示例。
1.2.1 灰度圖化
安卓APK中的DEX文件封裝了可被Dalvik虛擬機執行的所有字節碼,保存了整個文件的運行邏輯和變量空間,是整個程序的核心。因此,本文通過對安卓惡意APK中的DEX文件進行可視化操作,使得惡意APK生成對應灰度圖,可以提取到必要的關鍵特征。安卓惡意APK可視化過程如圖2所示。
如圖2(a)所示,首先通過對安卓惡意APK進行解壓得到DEX文件,接著讀取文件中的字節碼,一個字節碼取值范圍為0x00~0xFF,即有256種取值,最后對應生成256階灰度圖,灰度圖尺寸設置為256×256,不足的部分補0,多余的部分則舍棄。將所有惡意樣本可視化后,得到灰度圖集H,再將H劃分為訓練集Htrain和測試集Htest,分別用于元訓練和元測試階段。
圖2(b)中首先展示的是安卓惡意應用家族Jifake和Boogr可視化后的灰度圖,由于同一惡意家族內的惡意程序往往會在很大程度上共用祖先的核心代碼,因此家族內的惡意APK生成的灰度圖圖像紋理會表現出一定的相似性,而圖像紋理是圖像特征的關鍵組成部分,是實現惡意軟件分類的關鍵。不同家族之間的灰度圖具有各自的視覺特征,這對于惡意家族識別具有重要意義。

圖2 安卓惡意APK可視化Fig.2 Visualization of Android malicious APK
1.2.2 構建任務集合
任務是元學習的基本處理單位。每個任務由兩部分組成:支持集(support set)和查詢集(query set)。
支持集用于訓練基學習器,使其適應當前惡意家族分類任務。由N-wayK-shot設置,包含N個類,每個類K個樣本。
查詢集則通過訓練好的基學習器,計算出其損失值,決定了梯度下降的方向。包含與支持集同樣的N個類,每個類Q個樣本。
任務集合由隨機抽取的多個任務組成,以元訓練階段任務集合構建為例,過程如圖3所示。

圖3 任務集合構建Fig.3 Construction of task set
進入元訓練階段時,先從訓練集Htrain中隨機抽取N個惡意家族,再從每個家族中抽取Q+K個樣本,組成一個任務Ti。重復上述隨機抽取過程M次,構建任務集Ttrain:


用于元測試階段的任務集Ttest其構建方式與上述過程相同。
本文提出一種融合注意力機制的卷積神經網絡,其具有兩個優勢:(1)能自動挖掘紋理特征,且特征降維后仍可較好地保留有效信息;(2)可以從通道和空間兩個維度,更準確提取如特征圖的紋理關聯等關鍵的深層特征。此外,混合注意力機制在提升神經網絡分類效果的過程中,增加的參數量和計算量較少,與本文設計的淺層網絡結合,保證了模型的分類效率。
1.3.1 特征提取與降維
卷積神經網絡(CNN)是一種具有深度監督學習的多層神經網絡結構[14],同時擁有自動挖掘特征內在關聯、對特征進行降維等優點。因此本文模型利用CNN對安卓惡意APK生成的灰度圖進行紋理特征挖掘,得到特征圖后,再對其進行特征降維,以提高模型對惡意家族分類的準確率和檢測速度。將混合域注意力機制和CNN融合后,所得網絡主體結構如圖4所示。

圖4 網絡主體結構Fig.4 Structure of main network
本文設計的融合混合域注意力機制網絡模型由輸入層、4組嵌入混合域注意力機制模塊的卷積池化層、激活層、全連接層以及輸出層構成。數據處理過程以及反向傳播過程如下:
首先利用通道數為56,卷積核大小為4×4的卷積層對輸入的灰度圖x進行提取和局部感知,利用卷積運算增強灰度圖紋理原始特征。卷積公式如式(3)所示:

然后將56個通道生成的特征圖輸入混合域注意力模塊(mixed attention block),從通道和空間兩個維度提取特征圖中深層次的紋理特征關系,兩者結合進一步增強特征表示,使安卓家族分類模型關注于特征圖中重要的區域,做出更準確的判斷。最后把卷積結果進行平均池化,減少數據處理量的同時保留有用的信息,提高模型運行效率。池化過程計算如式(4)所示:

經過上述4次卷積、注意力機制特征增強和池化等過程后,再將得到的特征向量輸入全連接層,以進一步提取特征,降低維度。
最后根據全連接層輸出進行惡意家族分類,并進行損失計算,用于反向傳播更新模型參數。
1.3.2 基于混合域注意力機制的特征增強
注意力機制可以令使得神經網絡具備專注于輸入特征的某些局部重要信息的能力[15]。由于單一注意力機制對于關鍵特征的提取效果提升有限[16],因此,本文在CNN網絡結構中引入混合域注意力機制模塊CBAM,以提升安卓惡意應用家族關鍵特征的提取效果。
混合域注意力模塊是按通道域注意力機制、空間域注意力機制的順序構成的組合,如圖5所示。通過通道域注意力機制獲取每個通道特征圖的重要程度,使惡意家族分類模型更加關注權重高的通道,并抑制權重低的通道,提高了惡意家族分類模型對全局紋理特征的提取能力。而空間域注意力機制則用于獲取特征圖中不同區域的重要程度,來增強模型對局部紋理特征的提取能力。

圖5 混合域注意力模塊Fig.5 Mixed attention module
首先,卷積后得到的通道數為C、高度為H、寬度為W的C×H×W三維特征圖F進入到通道域注意力機制模塊,分別在全局平均池化和最大池化層中,從兩個不同的維度提取F的特征信息,得到兩個C×1×1的特征信息。接著特征信息輸入到多層感知機(MLP)中,利用MLP容易對特征向量進行權重賦值、且保持輸出與輸入數據維度相同特點,對特征圖每個通道進行權重賦值,獲得兩個C×1×1的特征圖,將這兩個特征圖進行加法操作后,再使用Sigmoid激活函數,獲得權重向量Mc,即三維特征圖F( )C×H×W中每個通道的重要程度。計算公式如式(5)所示:

其中,σ代表Sigmoid激活函數,W表示MLP參數。最后將Mc與F進行乘法操作后得到特征圖Fc,緊接著將Fc輸入空間域注意力機制模塊,Fc分別經過最大池化和平均池化后,得到兩個1×H×W的特征信息,將其拼接在一起后利用CNN卷積層能自動挖掘特征圖關鍵特征空間分布的特點,增加特征圖上關鍵特征關注度。最后通過Sigmoid激活函數得到相應權重Ms,即三維特征圖Fc( )C×H×W中的每個通道特征關注度的空間分布。計算公式如式(6)所示:

將Ms與Fc進行乘法操作最終得到特征增強的特征圖Fcs。
元學習通過從許多不同小樣本任務的學習中獲取經驗,使模型可以在多個小樣本任務之間泛化,則面對新的任務時能快速迭代。針對新興安卓惡意應用家族的快速檢測需求,本文引入元學習方法MAML[17],將其與具有自動特征挖掘、特征增強特點的融合注意力機制的卷積神經網絡相結合,使得模型能根據不同的惡意家族分類任務,進行快速迭代,達到及時、有效檢測新興安卓惡意應用家族的要求。惡意家族分類模型學習的過程可分為元訓練和元測試兩個階段:
元訓練階段:利用基學習器完成特定惡意家族分類任務的屬性學習,元學習器則學習不同任務的共性,最終使得模型得到一個具有強泛化性的初始參數。
元測試階段:通過隨機抽取不同的任務,對模型進行適應測試。
1.4.1 元訓練階段
在元訓練階段會執行多輪迭代訓練,每輪迭代都會從訓練集Htrain中抽取一個任務集Ttrain。元訓練階段一次迭代過程如圖6所示。具體而言,會將元訓練階段分為基學習器訓練過程和元學習器訓練過程:

圖6 元訓練階段的一次迭代過程Fig.6 Iterative process in meta training stage
(1)基學習器訓練過程
在本過程中,遍歷Ttrain中每個任務,分別利用任務中的支持集和查詢集進行參數更新和損失計算,從而使基學習器可學習到不同惡意家族之間的特征。
在已初始化基學習器參數θ的條件下,遍歷Ttrain下每個任務Ti( )1≤i≤M,接著計算當前任務Ti支持集的損失梯度,記為

Support關于θ的損失值,?θ表示求關于θ的梯度。接著利用對θ進行梯度更新,記使用Ti更新后,對應基學習器參數為θi:

其中,α為基學習器學習率。在計算出θi后,利用Ti查詢集計算關于θi的損失,最后將Ttrain中所有任務的損失之和傳到元學習器中。

(2)元學習器訓練過程
在本過程中,利用上一基學習器訓練過程中Ttrain查詢集的損失之和來更新參數,達到學習任務中各個惡意家族共性的目的。

1.4.2 元測試階段
元測試階段遍歷Ttest中每個任務Ti( )1≤i≤M,使用Ti支持集中的惡意家族樣本對基學習器進行訓練,使得模型適應當前的惡意家族分類任務,再對Ti查詢集進行分類。元測試階段執行過程如圖7所示。

圖7 元測試階段執行過程Fig.7 Workflow of meta test stage
(1)中式(7)和(8)對基學習器參數θ進行幾步迭代更新,得到θi,使得基學習器適應當前惡意家族分類任務Ti。
然后將基學習器最后一步迭代訓練生成的低維特征向量XS輸入到分類器SVM中進行訓練,以求得最優超平面,進而提高模型的泛化能力。一般計算公式如式(12)所示:

其中,w為分類超平面的系數向量,γi為松弛因子,C為懲罰參數。
在本文模型MAML-CAS的構建過程中,首先建立一個基于MAML的CNN基礎模型MAML-CNN,然后在MAML-CNN中融入混合域注意力機制,最后引入SVM作為分類器。根據本模型特點,實驗方案設計如下:
首先,將MAML-CNN與混合域注意力機制融合,再將MAML-CNN分別與其他三種注意力機制,即通道域注意力機制、空間域注意力機制、按空間域和通道域注意力機制順序組成的混合域注意力機制(空間域、通道域),結合得到的模型進行對比,驗證混合域注意力機制的有效性。
然后將MAML-CNN分類層分別替換為SVM和其他5種機器學習算法(CATBOOST、GBDT、KNN、RANDFOREST、DECISIONTREE),共構成6種CNN+機器學習算法混合模型,繼而對比融合了混合域注意力機制的6種混合模型,驗證了SVM作為分類器的有效性。
接著,為驗證將MAML引入惡意家族分類領域的應用效果,將MAML-CAS與常見的4種元學習模型(Relation Networks[18]、Meta-learn LSTM[19]、Matching Networks[11]、Prototypical Networks[12])進行對比。
繼而將MAML-CAS與常見元學習模型、其他混合模型和傳統深度學習模型在訓練和檢測耗時方面進行比較和討論,驗證本文模型在快速檢測新興惡意家族方面具有優勢。
最后,為驗證訓練集和測試比例設置對惡意家族分類準確率的影響,采用多個不同比例的惡意家族分別作為訓練集和測試集,進行比較實驗,以證明MAML-CAS的穩定性。
實驗所采集的安卓惡意APK樣本來源于加拿大網絡安全研究所(https://www.unb.ca/cic/datasets/invesandmal2019.html)和Drebin數據集(https://www.sec.cs.tu-bs.de/~danarp/drebin/download.html)共計5 986個。將所有安卓惡意APK上傳至VirusTotal網站(https://www.virustotal.com/gui/home/upload)進行家族標注并保存其惡意家族標簽,最后保留78個安卓惡意應用家族,每個惡意家族保留15個樣本,共1 170個。在本文實驗中,惡意家族按8∶2的比例劃分訓練集和測試集。
本文使用準確率(Accuracy),精準率(Precision),召回率(Recall)和F1值作為實驗結果判定指標。
為驗證混合域注意力機制應用在惡意家族分類模型的有效性,本次實驗將另外三種注意力機制分別與MAML-CNN融合作為對照組。實驗結果如圖8和圖9所示,注意力機制模塊提升了MAML-CNN的分類效果,在準確率、精確率、召回率和F1指標上均表現得更好。且不同的注意力機制以及注意力機制的組合方式對模型具有一定的影響,其中單一的注意力機制忽略了某些關鍵特征,將通道域和空間域結合能夠獲取更多有效的特征表達,使模型對安卓惡意應用家族具有更好的識別率。

圖8 5-way 1-shot實驗結果Fig.8 Result of 5-way 1-shot

圖9 5-way 5-shot實驗結果Fig.9 Result of 5-way 5-shot
各模塊組成的模型準確率和參數量如表1所示。可知向MAML-CNN添加注意力機制后,新增的參數量較少,也有助于有效提升了模型準確率。

表1 模型準確率和參數量Table 1 Accuracy and parameters of model
為解決采用softmax作為卷積神經網絡分類器,容易導致惡意家族分類模型泛化能力不足的問題,在保持網絡結構相同的前提下,本文將混合域注意力機制與MAML-CNN相融合,并把MAML-CNN中的softmax分類器,替換為SVM和其他5種常見的機器學習模型(CATBOOST、GBDT、KNN、RANDFOREST、DECISIONTREE),構成新的混合模型。為方便表示,使用CATBOOST作為分類器時,模型命名為MAML-CAC,其他模型以此類推。在5-way 1-shot和5-way 5-shot條件下,實驗結果如表2和表3所示。

表2 5-way 1-shot實驗結果Table 2 Result of 5-way 1-shot 單位:%

表3 5-way 5-shot實驗結果Table 3 Result of 5-way 5-shot 單位:%
由表2和表3可知,并非所有機器學習算法作為CNN的分類器時,都能提升分類準確率。而SVM由于其間隔最大化的學習策略,使得它能較好地適應小樣本任務。本文提出的MAML-CAS模型分類效果優于其他混合模型,且在1-shot和5-shot的條件下,相比于融合了混合域注意機制的MAML-CNN模型,在準確率上分別提升了1.32個百分點和2.57個百分點。
為了驗證本文引入的元學習方法MAML的有效性,將MAML-CAS與其他4個典型的元學習模型Relation Networks[18]、Meta-learn LSTM[19]、Matching Networks[11]、Prototypical Networks[12]對比。實驗結果如圖10和圖11所示。
由圖10和圖11可知,MAML-CAS與其他4種常見元學習模型相比,在準確率、精確率、召回率以及F1這4項指標上最優,驗證了元學習方法MAML在安卓惡意家族分類領域的適用性。

圖11 5-way 5-shot實驗結果Fig.11 Result of 5-way 5-shot
在本次實驗中,將4種基于傳統深度學習的安卓惡圖10 5-way 1-shot實驗結果
Fig.10 Result of 5-way 1-shot意應用家族分類模型(ResNet18[8]、CNN[14]、Deep-Net[20]、DAE-CNN[21]),與2.3和2.4節中出現的基于元學習方法的分類模型,在訓練和測試耗時兩方面進行對比。其中,由于DECISIONTREE模型和RANDOMFOREST模型復雜度較低,所以其混合模型訓練和檢測耗時比較小,但在2.3節實驗中分類準確性較差,因此在本實驗中不列入比較范圍。實驗選用1 600個任務,在5-way 5-shot條件下進行訓練和檢測耗時測試,對結果取平均值,實驗結果如表4所示。

表4 各模型訓練和檢測耗時Table 4 Training and detection time of each model單位:s
從表4可以看出,在訓練耗時方面,基于元學習方法的分類模型遠低于傳統深度學習模型。因為基于元學習方法的模型在面對新的安卓惡意應用家族分類任務時,只需要經過幾步迭代就可以適應,而傳統深度學習模型則需要重新執行一遍完整的訓練過程,導致耗時較長。
在基于元學習方法的模型中,MAML-CAS比其他混合模型和元學習模型的訓練時間少,經分析,原因如下:一方面,在本文設計的淺層CNN在有效提取灰度圖特征的同時,也降低了特征的維度,使得SVM能利用低維特征進行快速分類,而CATBOOST等分類器優化步驟多,難以并行訓練數據等原因導致訓練耗時較長;另一方面,MAML僅通過改變CNN參數更新方式,就能使CNN適應新任務,相比其他元學習模型,在復雜度更低,訓練耗時更少。
在檢測耗時方面,基于元學習方法的模型整體表現比傳統深度學習模型更好,并且本文模型耗時相對較少。
在本次實驗中將78個惡意家族按照多個不同比例劃分實驗集和測試集。實驗結果如圖12所示。

圖12 多比例下分類結果Fig.12 Result of multiple proportion
由上述實驗結果可以發現,在1-shot和5-shot的實驗條件下,隨著訓練集占比的增加,惡意家族分類準確率有小幅提升,最高提升分別為3.02個百分點和2.74個百分點。從整體實驗來說,多個比例下的分類準確率相差較小,說明了參與訓練的惡意家族數量對模型的性能影響較小,既證明了MAML-CAS具有較好的穩定性,也說明該模型適用于小樣本的新興安卓惡意應用家族檢測場景。
本文提出了一種基于MAML的安卓惡意應用家族分類模型MAML-CAS,通過將安卓惡意應用的DEX文件進行可視化,提升特征提取效率,同時將元學習方法MAML與CNN融合,使得模型面對新的小樣本安卓惡意應用家族識別任務時能快速迭代。提出將混合域注意力機制與CNN結合,以此增強特征表達,最后由對小樣本具有強泛化性的SVM進行分類,有效提高模型整體對小樣本惡意家族的識別率。最終實驗結果表明,該模型能很好滿足對新興安卓惡意家族的快速檢測需求。
鑒于元學習方法對于解決新興安卓惡意應用家族檢測問題具有良好的發展前景,因此在下一步工作將著重研究優化元學習方法,減少元學習過程中需要調整的參數量,使元學習方法能更好地適應惡意家族分類。