李默,蘆天亮,謝子恒
(中國人民公安大學 信息網絡安全學院,北京 100038)(?通信作者電子郵箱lutianliang@ppsuc.edu.cn)
基于代碼圖像合成的Android惡意軟件家族分類方法
李默,蘆天亮*,謝子恒
(中國人民公安大學 信息網絡安全學院,北京 100038)(?通信作者電子郵箱lutianliang@ppsuc.edu.cn)
代碼圖像化技術被提出后在Android惡意軟件研究領域迅速普及。針對使用單個DEX文件轉換而成的代碼圖像表征能力不足的問題,提出了一種基于代碼圖像合成的Android惡意軟件家族分類方法。首先,將安裝包中的DEX、XML與反編譯生成的JAR文件進行灰度圖像化處理,并使用Bilinear插值算法來放縮處理不同尺寸的灰度圖像,然后將三張灰度圖合成為一張三維RGB圖像用于訓練與分類。在分類模型上,將軟閾值去噪模塊與基于Split-Attention的ResNeSt相結合提出了STResNeSt。該模型具備較強的抗噪能力,更能關注代碼圖像的重要特征。針對訓練過程中的數據長尾分布問題,在數據增強的基礎上引入了類別平衡損失函數(CB Loss),從而為樣本不平衡造成的過擬合現象提供了解決方案。在Drebin數據集上,合成代碼圖像的準確率領先DEX灰度圖像2.93個百分點,STResNeSt與殘差神經網絡(ResNet)相比準確率提升了1.1個百分點,且數據增強結合CB Loss的方案將F1值最高提升了2.4個百分點。實驗結果表明,所提方法的平均分類準確率達到了98.97%,能有效分類Android惡意軟件家族。
Android惡意軟件家族;代碼圖像;遷移學習;卷積神經網絡;通道注意力
Android系統自出現以來憑借其開源性受到越來越多的用戶與開發者的歡迎,所占市場份額逐年增長;但開放性的特點使它一度成為97%惡意軟件攻擊的首選目標[1]。在惡意軟件數量不斷增長的過程中,代碼混淆、軟件加殼等技術的應用也讓惡意軟件的抗檢測能力不斷增強,其越來越快的更新與迭代更是讓安全廠商們應接不暇。為應對以上威脅,針對惡意軟件家族的分類與檢測技術逐漸成為主流。將不同的惡意樣本根據行為劃分至相應家族,對惡意家族中典型樣本進行分析,可以極大減少工作量;研究惡意家族相關迭代版本也有助于研究人員發現惡意軟件攻擊規律,以增強安全軟件的查殺能力。
近年來,卷積神經網絡(Convolutional Neural Network, CNN)快速發展,并在圖像識別和目標檢測領域廣泛應用。He等[2]提出了著名的殘差網絡,有效抑制了深層網絡的梯度消失。之后,Hu等[3]又提出了通道注意力機制,對通道間的相互依賴關系進行了建模,近期的研究[4-6]已證實通道注意力在改善深度CNN中存在巨大的潛力。隨著CNN結構越來越復雜、參數量越來越龐大,對算力也提出了更為苛刻的要求,而遷移學習的應用在很大程度上緩解了此問題。在大規模數據集上預訓練好的模型已經習得了大量的泛化特征,將這部分特征參數遷移到新模型中不僅節省了訓練時間,也提升了模型的最終訓練效果。
代碼圖像廣泛應用前,惡意代碼靜態分析方法需研究人員手工提取特征[7-10],費時費力,而CNN的普及則為代碼圖像化技術的發展提供了契機。代碼圖像化指將代碼以二進制形式轉換為像素點并構成圖像,利用CNN自動學習圖像深層抽象特征的能力,既可免去手工提取特征,在保持高識別率的同時也極大簡化了檢測流程。
在Android惡意代碼圖像化識別領域,目前主流的方法[11-14]均將安裝包中的DEX(Classes.dex)文件轉換為灰度圖或RGB(Red-Green-Blue)格式彩圖,但以上方法的缺點在于單個DEX文件所提供的信息量有限,不足以概括惡意軟件的行為特征。除此之外,Android惡意代碼圖像化識別面臨的挑戰還包括以下三點:1)代碼圖像尺寸處理過程中容易丟失特征信息;2)代碼圖像不同于生活圖像,存在其獨特紋理且含有明顯的噪聲特征,對代碼圖像識別與分類需要特定的網絡模型;3)代碼圖像數據集中普遍存在長尾分布現象,多數樣本集中在前幾類家族中,樣本較少的家族難以得到較好的分類效果。
針對以上問題,本文提出了一種基于代碼圖像合成的Android惡意軟件家族分類方法,方法流程如圖1所示。本文方法的主要工作如下:
1)為解決DEX代碼圖像特征不足的問題,將DEX、XML(AndroidManifest.xml)與JAR(Classes.jar)文件合成為三維RGB圖作為特征圖像,合成的代碼圖像融合了多類特征信息,可從更多維分析惡意軟件。
2)使用插值放縮法處理不同比例大小的圖像,相較于截取填充法,插值放縮能夠在不損失圖像信息的情況下更大程度保留圖像特征。在此基礎上,針對不同插值算法在代碼圖像上的表現進行了對比與分析,最終使用Bilinear算法進行代碼圖像的放縮處理。
3)分類模型上將軟閾值去噪模塊(Soft Thresholding Block, ST Block)[15]與基于Split-Attention的ResNeSt[6]相結合,提出了STResNeSt(ST Block+ResNeSt),并使用在ImageNet上訓練好的模型參數進行遷移訓練。ST Block增強了模型的抗噪能力,與Split-Attention共同作用,有效增強了模型在代碼圖像上的特征提取能力。
4)使用了圖像增強方案對Drebin數據集進行擴增,同時在模型訓練過程中引入類別平衡損失函數(Class-Balanced Loss, CB-Loss)[16]。CB Loss能夠根據不同家族的有效樣本數在訓練中為每個家族賦予相應的權重,是處理數據不平衡問題的有效方案。

圖1 惡意軟件分類流程Fig. 1 Flow chart of malware classification
在代碼圖像化廣泛應用之前,對惡意軟件的靜態分析通常需要研究人員手工提取特征。Santos等[7]提取操作碼序列作為特征,并統計每個序列出現的頻率,最后在支持向量機構造的分類器上實現了95.90%的準確率。Wang等[8]從APK(Android Application Package)的應用配置文件XML中提取出權限信息,對不同權限進行風險排序,并分析了多個權限組合引發的風險,最后使用支持向量機、決策樹與隨機森林根據權限集合對惡意軟件進行分析。此外,Grini等[9]使用軟計算方法,結合多類機器學習模型對500個家族的近10億個樣本進行分類,最終取得了89%的準確率。相較于以上方法,Qiu等[10]針對零日家族的識別使用了更為豐富的特征,提取出了API(Application Programming Interface)、權限以及網絡地址等敏感信息對惡意軟件進行分析。
Nataraj等[17]首次提出了代碼圖像化的概念,原理是將惡意代碼以二進制形式轉換為灰度圖像,代碼文件的每1個字節恰好對應灰度圖像中一個0~255的像素值,之后采用GiST(Generalized Search Tree)算法對灰度圖像進行紋理特征提取,并輸入支持向量機進行分類。使用圖像化處理惡意代碼不僅保持了高準確率,同時極大減少了手工提取和篩選各類特征的開銷,所以該方法一經提出便引起了轟動,隨后代碼圖像化也應用到了Android惡意軟件檢測上。除了GiST算法,張晨斌等[11]還對DEX文件圖像使用了包括Tamura在內的3種特征提取算法,通過4種算法提取出的紋理特征集合,最后構造了5種分類模型對惡意代碼進行檢測與分類。
文獻[11]研究的問題在于,在圖像訓練前仍需提取圖像的紋理特征,卷積神經網絡的應用則極大改善了這一問題。文獻[18]中將惡意代碼文件二進制轉換為灰度圖后輸入卷積神經網絡中進行訓練,卷積神經網絡能夠自動學習惡意軟件的抽象特征,利用網絡的自動表征能力,代碼圖像可直接輸入網絡進行訓練。
文獻[19]中使用Windows惡意代碼文件的二進制數據、ASCII(American Standard Code for Information Interchange)字符和文件結構信息構建代碼圖像,輸入帶有SPP(Spatial Pyramid Pooling)結構的網絡中進行訓練。使用SPP結構的網絡雖然解除了對輸入圖像大小的限制,但是該方法的局限在于圖像尺寸的不統一,導致訓練模型批尺寸只能設為1,這將導致訓練時長成倍增長。
文獻[12-13]中都將DEX文件映射為三通道的RGB彩色圖像,與傳統的單通道灰度圖相比,該方法中使用的三通道RGB圖像理論提供了3倍的信息量,能夠充分發揮神經網絡多通道的卷積運算優勢,分類效果優于灰度圖;但該方法只是將灰度圖像進行簡單的三維折疊,并沒有考慮到通道間的關聯關系,且單個DEX文件所能提供的信息量有限,并不足以概括惡意代碼的行為特征。
特征提取部分選擇了APK中的DEX、XML和反編譯生成的JAR文件作為特征文件用于合成三維RGB代碼圖像。
在APK文件的內部結構中,XML與DEX是在Android惡意軟件分析中最重要的兩個文件。XML文件存放了軟件包名、權限聲明以及各個組件的注冊信息,是用來整體描述Android應用的配置文件。DEX文件是存放Dalvik字節碼的文件,能在Dalvik虛擬機中運行,此文件由構成各Java類的源碼編譯而成,本質上是所有應用程序的邏輯,是程序中信息含量最高的一個文件。將DEX文件轉換為代碼圖像也是目前Android惡意代碼圖像化分析中最常用的一種方法。
DEX文件包含了程序所有的Java代碼,但這些代碼都被編譯成Dalvik字節碼用于在Dalvik虛擬機上運行,其中一些結構信息在判斷代碼特征時屬于冗余部分。將DEX文件反編譯成JAR文件,并對文件中的連續可見字符(ASCII范圍:32~126)進行提取。JAR文件中的可見字符包含了具體的代碼信息,相較于原始JAR文件,能更準確地體現惡意代碼特征。
灰度圖也稱為灰階圖,將黑色與白色間的對數關系分成不同的等級,稱之為灰度。RGB色彩標準則是目前應用最廣泛的一種顏色標準,一張RGB彩色圖片是由不同程度的紅、綠、藍顏色通過疊加構成,目前大部分卷積神經網絡的三通道輸入設計正是受到RGB標準的影響。灰度圖的灰階范圍為0~255,恰好對應了二進制中8 bit的表示范圍,也就是1 B。將特征文件以二進制方式讀取,將每8 bit轉換為一個灰度像素值,以此生成代碼圖像。而RGB圖片中一個像素點的通道數為灰度圖的3倍,可使用三張形狀相同的灰度圖疊加而成。
在將文件轉換成圖像的過程中,因卷積網絡對輸入圖片的大小有固定限制,故不可避免地要考慮圖像尺寸參數。以Drebin[20]中的BaseBridge家族為例,提取出DEX文件后,最大的DEX文件為5 839 KB,而最小的僅有5 KB,文件大小不同導致無法確定統一的圖像尺寸,故需解決兩個問題:圖像轉換比例與圖像縮放。
2.2.1 圖像轉換比例
文獻[11]中在處理圖像比例問題時,嘗試固定圖像寬度,并將較小文件使用0填充至固定長度。在本文情況下,如將寬度固定為ResNeSt規定的224像素,兩個大小分別為5 839 KB和5 KB的DEX文件轉換成圖片后長度分別為26 692像素和23像素,使用0填充后,后者的有效信息量僅為0.08%,所以當數據集內樣本大小差距過大時該方法并不適用。
針對以上問題的解決方案之一是根據不同的文件大小設定不同的寬度轉換標準。為使代碼圖像尺寸符合網絡規定的1∶1長寬比,可直接對文件大小值進行開方,對開方結果向下取整求得寬度值:。
以上方法的問題在于,對每個文件設定完全不同的轉換比例會導致轉換出的代碼圖像結構各異,不利于同類大小文件的特征對比。因此,本文選擇對同一大小區間的文件設定相同的寬度值,經過計算后本文使用了表1中的轉換比例,計算方法如下。
首先根據Drebin數據集中樣本大小的分布情況劃分出不同大小區間,如表1中的第一列所示。為使一個區間內的圖像更趨近于網絡要求的長寬比,取區間內的中位數并對其進行開方。以1 MB(Megabytes)~2 MB為例,區間中位數為1.5 MB,即1 536 000 B,開方取整后得到1 239,之后取離1 239較近的1 280(常見分辨率尺寸值)作為1 MB~2 MB區間的圖像寬度值。故此區間內的代碼圖像寬度固定為1 280像素,長度則根據文件大小不同略有差異,但圖像總體比例與模型要求的比例趨近,避免了后續縮放過程中對圖像造成的大規模結構性改變。

表1 代碼圖像轉換比例Tab. 1 Ratio of code image conversation
2.2.2 圖像縮放
根據表1的比例生成圖像后,需要將圖像插值縮放至模型網絡規定的輸入尺寸。常見的插值算法有Nearest、Bilinear、Bicubic和Lanczos與Box等。

圖2 插值坐標Fig. 2 Coordinates for interpolations
在Bilinear算法[21]中,通過計算距離最近的4個點的灰度值得到,計算過程包括兩次線性插值運算。首先在軸方向上使用式(1)~(2)計算和的灰度值:
Lanczos和Box都采用了窗口采樣的形式,并使用了以下兩類基函數[23]:
由式(6)可見,Box因窗口值較小,上采樣時與Nearest類似,對于插值點的計算只會使用若干采樣點中的一個,效果較差。但Nearest的問題在于,下采樣過程中圖像縮小到一定程度時將對不相鄰的點進行采樣,導致輸入像素的丟失,而Box則是對窗口內所有點進行下采樣,確保了所有輸入的像素都能貢獻其相應的權重。
實驗中將對以上介紹的5種插值算法進行對比與分析,從中選出最適合代碼圖像的插值算法后,將三張灰度圖縮放至尺寸,并按紅、綠、藍的維度順序合成為RGB代碼圖像。合成代碼圖像的圖像紋理在不同家族中表現出了明顯的差異,如圖3中所示,圖中的紅、綠、藍分別呈現出了XML、JAR與DEX二進制文件的紋理。

圖3 不同家族樣本的合成代碼圖像Fig. 3 Integrated code images of samples from different families
代碼圖像由原文件直接生成,為處理此過程中產生的圖像噪聲,增強模型的特征選擇能力,本文將Split-Attention注意力機制與去噪算法相結合提出了STResNeSt;同時在模型訓練的過程中引入了CB Loss,以應對數據不平衡性導致的過擬合現象。
ResNeSt是以殘差神經網絡(Residual Neural Network, ResNet)為骨干網絡,在SENet[3]和ResNeXt[4]網絡的基礎上發展而來。ResNeXt在ResNet的殘差結構中提出了分組卷積的概念,通過基組(Cardinality)控制分組的數量,在不增加參數復雜度的前提下提高了準確率。SENet則引入了通道注意力機制,在訓練過程中為每個特征通道賦予相應權重,并依照不同通道的權重提升有用的特征。ResNeSt在分組卷積通道注意力的基礎上設計了ResNeSt Block,該模塊允許特征圖獲取不同基組間的權重特征,用于增強特征的信息關聯能力,提升分類效果。圖4(a)展示了ResNeSt Block結構,圖4(b)展示了ResNeSt Block中核心模塊Split-Attention Block的結構。

圖4 ResNeSt Block與Split-Attention Block結構
Tab. 4 Structures of ResNeSt Block and Split-Attention Block
如圖4所示,為解決ResNet網絡感受野過小和缺乏跨通道間信息交互能力的問題,ResNeSt將輸入的特征圖劃分為個基組,并對每個基組繼續進行切片(Split),將一個基組內的Splits數量記為,故最初的輸入被切分為個Split。對這些Split施加卷積映射變換后,每個Split的輸出表示為,其中。之后對一個基組內的所有Split進行元素相加便可獲得基組的分組卷積結果,計算式如下:
之后通過通道軟注意力機制實現對基組的加權融合。首先計算特征圖經過激活函數Softmax后所得權重,當時,通過以下計算式計算:
考慮到代碼圖像的來源為整個代碼文件,由此生成的圖像必然存在與特征無關的噪聲。以往的手工去噪工作繁瑣且低效。大量的研究[24-26]已證實,將去噪分類器或算法加入分類模型中便可賦予模型主動抗噪能力。
文獻[15]中將軟閾值算法融入殘差網絡,提出了面向強噪聲的深度殘差收縮網絡(Deep Residual Shrinkage Network, DRSN)。受此啟發,本文將軟閾值去噪模塊嵌入ResNeSt Block的一核卷積層之后,提出了STResNeSt。將融合了Split Attention與ST Block的基礎模塊命名為STResNeSt Block,其結構如圖5所示。

圖5 STResNeSt Block結構
Tab. 5 Structure of STResNeSt Block
軟閾值函數常用于噪聲過濾,能夠把有效信息轉換成為正特征或負特征,將無效信息過濾為零特征,計算式如下:
本文實驗中使用的Drebin數據集呈典型的長尾分布,存在較大的樣本不均衡性,不少研究[27-28]通過增加重復樣本、生成近似樣本等重采樣技術在一定程度上緩解此問題,因此本文也對Drebin數據集采取了同樣的過采樣方案(詳見4.1節)。但隨著過采樣樣本數的遞增,此類樣本對模型帶來的收益將迅速遞減,針對此問題,本文引用了文獻[16]中的重加權方案:在模型訓練中加入類別平衡損失函數CB Loss,根據不同類別樣本的有效樣本數對損失函數進行重新加權。
有效樣本數(effective number of samples)的定義為樣本的期望體積(expected volume),即樣本能夠覆蓋的特征空間體積。以經過數據增強后的Drebin為例,對于原型樣本較少的惡意家族類別,大部分樣本都是在原型樣本的基礎上使用過采樣等數據增強的方式得到,樣本中存在較大的特征重疊可能性,故有效樣本數較少。而原型樣本較多的家族重疊樣本少,故存在更多的有效樣本數。
Softmax交叉信息熵(Cross-Entropy, CE)損失函數適用于本文的惡意家族多分類問題,其計算式如下:
實驗服務器的配置如下:Ubuntu 16.04操作系統,32 GB運行內存,CPU為Intel i9-10920X,使用NVIDIA 3090顯卡搭配Cuda 11.1,深度學習框架選擇PyTorch 1.6。實驗中模型使用以ResNet-50為骨干網絡的STResNeSt-50,對參數進行以下設置:學習率設為1E, Batch Size設為16,采用Adam作為優化器,使用CB Softmax Loss損失函數,CB Loss中的參數設為0.99。實驗中對每個家族采用按比例抽取的方式分為80%的訓練集與20%的測試集,實驗結果取五折交叉驗證后的平均值。
本文數據來自公開數據集Drebin,此數據集包括了178個家族在內的5 560個惡意樣本。考慮到多數家族樣本數較少,如數據集中有46個家族僅包含1個樣本,故本文選取了樣本數排名前10的家族,共計4 020個帶家族標簽的惡意樣本。考慮到這些樣本存在嚴重的不平衡性,不同家族間樣本數比最大可達1∶10,因此本文采取了表2中的數據增強方法對樣本進行擴增,新樣本通過對原始樣本的隨機旋轉、平移、裁減等一系列結構性操作得到。為保證實驗結果的準確性,擴增的樣本僅被添加進訓練集中,測試集仍由原始樣本構成。再結合使用3.3節中的類別平衡損失函數,盡最大可能減少樣本不平衡引發的過擬合現象。數據增強前后的數據情況如表3所示。

表2 數據增強參數值Tab. 2 Parameter values of data augmentation

表3 實驗數據集Tab. 3 Experimental dataset
本文模型除ST Block以外的部分始均使用了ResNeSt-50在ImageNet已訓練好的參數,ST Block參數為隨機標準化參數。將未訓練過的STResNeSt-50與遷移學習后的STResNeSt-50進行了對比,圖6為兩個網絡在30個epoch上的訓練準確率、訓練損失值、測試準確率與測試F1值對比。
實驗結果表明,在惡意代碼圖像識別上使用經過ImageNet訓練后的網絡有以下優勢:
1)網絡收斂快。在預測準確率上的表現為:遷移學習后的網絡在第一個epoch后就達到了接近95%,而未經訓練的網絡只有80%,更快的收斂能夠極大縮短訓練時長。
2)提升了預測效果。遷移學習后的網絡相較未經訓練的網絡在準確率上提升了約1.2個百分點,在F1值上也有近1.8個百分點的提升。
3)改善了穩定性。圖6中的虛線代表為未經訓練的網絡,不難發現其震蕩幅度較大,而代表遷移學習網絡的實線則更加平穩。
由此可見,雖然ImageNet多用于對象識別與目標檢測的訓練與評估,其數據庫中的圖像特征與代碼圖像存在區別,但是當一個網絡經過ImageNet訓練后,已經具備了一定的對圖形信息的理解能力,即使應用在惡意代碼圖像識別中,這部分能力依然能夠得到保留。

圖6 遷移學習前后的網絡對比Fig. 6 Comparison of networks before and after transfer learning
為了檢驗不同插值算法對惡意代碼圖像分類精度的影響,本文對不同算法的性能進行了實驗對比,結果如表4所示,其中還給出了使用不同算法進行插值縮放的耗時。
首先關注不同算法在時間效率上的差距。其中,Nearest因僅對最鄰近的一個點插值采樣,故計算速度最快,僅耗費了1.64 s。Bilinear和Bicubic分別為4點采樣與16點采樣,故時間效率呈遞減狀。Box與Lanczos為窗口采樣,因Box窗口值較小,故在時間效率上領先于窗口較值大的Lanczos。
在精度上,Nearest的對最鄰近采樣策略導致其采樣樣本不足,精度上低于實驗中其他算法;Box的采樣窗口小,與Nearest相比僅在下采樣時具備優勢,導致精度也較低;Lanczos算法在上采樣時具備優勢,但實驗數據集內的DEX與JAR文件普遍較大,導致多數插值情況為下采樣插值,故準確率低于Bilinear與Bicubic。

表4 不同插值算法的性能對比Tab. 4 Performance comparison of different interpolation algorithms
接下來將Bilinear與Bicubic進行對比,Bicubic采樣點為Bilinear的4倍,但在實驗中并沒有呈現出應有的優勢,原因可能在于插值后生成的圖像尺寸小、清晰度低,并不能發揮Bicubic算法的優勢。為驗證以上猜想,將圖像放大至再對二者進行對比。考慮到STResNeSt結構參數是在基礎上設計,輸入更大尺寸圖像需要重新修改模型結構,也增加了訓練時長,因此在輕型網絡EfficientNet-B4[29]上進行驗證。表4中的實驗結果表明,在的代碼圖像上,Bicubic相較Bilinear算法提高了1.13個百分點的準確率和1.27個百分點的F1值,表明Bicubic算法在更大尺寸圖像上具有優勢。但在本文方法中仍將選擇與模型適配度高的Bilinear算法進行插值縮放。
為驗證樣本不平衡對分類精度造成的影響,本文首先將原始數據與經過數據增強的數據進行對比。表5中數據顯示,數據增強后的數據在分類精度上無顯著提升,原因在于在數據增強過程中雖然樣本數增加,但有效樣本數并無明顯上升;同時,旋轉、平移等結構變化的過程也可能使樣本損失部分特征。

表5 不同樣本均衡方法的性能對比Tab. 5 Performance comparison of different sample balancing methods
之后將訓練中的損失函數替為CB Loss,但依然使用原始數據集。可見經過CB Loss訓練后的模型在F1值上有了0.19個百分點的小幅提升,表明在損失函數中為不同類別賦予不同的權重能夠緩解數據不平衡造成的影響。即便如此,較少的樣本量依然限制了模型的效果。而將數據增強與CB Loss相結合后,可以看到其F1值達到了98.81%,在原數據的基礎上實現了0.66個百分點的領先。
圖7為不同家族的F1值在使用數據增強與CB Loss前后的不同表現,其中左側的豎軸為F1值,右側的豎軸為該家族樣本在原始數據中的數量。從圖7中能夠看出,不同家族的F1值經過樣本不均衡處理后都有了或多或少的提升。值得注意的是,樣本數原本較少的家族如Geinimi、Iconosys等漲幅更為明顯,Geinimi家族的F1值達到了約2.4個百分點的漲幅。
實驗結果表明,數據增強能夠增加樣本多樣性,降低模型對某些屬性的依賴。類別均衡損失函數又能根據有效樣本數為不同類別賦予相應的權重,有效降低了樣本不均衡導致的負面影響。

圖7 不同家族的F1值Fig. 7 F1 scores of different families
表6給出了基于ResNet改進的各類殘差結構網絡在惡意代碼合成圖像中的性能對比。

表6 不同殘差網絡的性能對比Tab. 6 Performance comparison of different residual networks
不難發現,雖然不同殘差神經網絡表現不一,但在代碼圖像合成方法上都取得了較好的效果,均達到了97%以上的準確率與F1值。
對比實驗中ResNet準確率最低,因為其作為表6中所有網絡的骨干網絡,只采用了基本的殘差結構。ResNeXt使用了Inception[30]中的網絡結構,在ResNet中進行分組卷積,故效果優于ResNet。SENet則是通過引入了通道注意力提升網絡的特征識別能力,在50結構上準確率上領先ResNet約0.31個百分點。SKNet[5]與ResNeSt結構類似,都在ResNeXt和SENet的基礎上設計而來,均采用了多分支結構與注意力思想,但得益于ResNeSt中的Split Attention模塊化的設計,ResNeSt在控制了參數量的情況下依然提升了準確率。STResNeSt與ResNeSt相比增加了軟閾值去噪模塊,針對代碼圖像中的噪聲進行處理,增強了模型的特征選擇能力,在惡意軟件家族的分類準確率達到了98.97%,相較于ResNet實現了1.1個百分點的領先。
本文中還將50層結構與101層結構進行了對比。雖然101結構使用了更多的基礎模塊,但在代碼圖像上并沒有展現出相較50結構的優勢,原因在于代碼圖像與自然場景圖像存在差異,代碼圖像的特征僅利用局部的梯度、邊緣等信息就可判斷,故101結構中的高層語義信息難以發揮其作用。
從JAR文件中篩選可見字符串是代碼圖像合成前的步驟之一。將字符串篩選前后的JAR文件進行對比,將兩個文件分別轉換為RGB圖,輸入模型中進行訓練。由表7可見,篩選后的JAR文件相較原始的JAR文件在準確率上提升了約1.04個百分點。

表7 不同代碼圖像生成方法的性能對比Tab.7 Performance comparison of different code image generation methods
接下來測試XML與DEX文件生成的代碼圖像。表7中的DEX圖像生成方法分為DEX(灰度圖)和DEX兩種:前者為文獻[11]中的方法,即將整個文件直接轉換為一維灰度圖;后者對DEX文件進行簡單三維折疊后生成RGB圖像,此方法被文獻[12]與文獻[13]采用。
將合成代碼圖像與上述代碼圖像進行對比,結果如表7所示,相較于XML和可見JAR文件的RGB圖像,合成后的RGB惡意代碼圖像在準確率上分別提升了2.05個百分點和2.96個百分點,在與DEX(灰度圖)、DEX的對比上也分別保持了2.93個百分點和1.88個百分點的優勢,同時在F1值上的表現也最為出色。由此可見,合成的代碼圖像融合了多類文件的特征信息,提升了分類效果。
為優化安卓惡意代碼圖像的分類效果,本文提出了代碼圖像的合成方法,并研究了代碼圖像生成中的圖像比例與插值縮放問題,分類模型上將軟閾值算法與Split-Attention相結合提出了STResNeSt,最后使用了數據增強與CB Loss處理數據不平衡。實驗結果表明:1)合成后的代碼圖像為模型提供了更為豐富的代碼特征,得到了更優秀的分類效果;2)Bilinear插值算法在代碼圖像上的精度表現優于同類算法,同時保持了較低的算法復雜度;3)引入了去噪模塊的STResNeSt具備更強的特征選擇能力,其分類精度高于同類殘差結構網絡;4)數據增強技術與CB Loss相結合有效減輕了不平衡數據給模型訓練帶來的負面影響,顯著提高了小樣本家族的分類精度。
本文對惡意代碼圖像化識別的思路進行了新的探索,但仍然存在一些不足之處,優化模型、降低復雜度以及在更多的樣本中驗證并改進本文方法是未來需要完善的工作。
[1] LI M B, WANG W, WANG P, et al. LibD: scalable and precise third-party library detection in Android markets [C]// Proceedings of the 2017 IEEE/ACM 39th International Conference on Software Engineering. Piscataway: IEEE, 2017: 335-346.
[2] HE K M, ZHANG X Y, REN S Q, et al. Deep residual learning for image recognition [C]// Proceedings of the 2016 IEEE Conference on Computer Vision and Pattern Recognition. Piscataway: IEEE,2016: 770-778.
[3] HU J, SHEN L, SUN G. Squeeze-and-excitation networks [C]// Proceedings of the 2018 IEEE/CVF Conference on Computer Vision and Pattern Recognition. Piscataway: IEEE, 2018: 7132-7141.
[4] XIE S N, GIRSHICK R, DOLLáR P, et al. Aggregated residual transformations for deep neural networks [C]// Proceedings of the 2017 IEEE Conference on Computer Vision and Pattern Recognition. Piscataway: IEEE, 2017: 5987-5995.
[5] LI X, WANG W H, HU X L, et al. Selective kernel networks [C]// Proceedings of the 2019 IEEE/CVF Conference on Computer Vision and Pattern Recognition. Piscataway: IEEE, 2019: 510-519.
[6] ZHANG H, WU C R, ZHANG Z Y, et al. ResNeSt: split-attention networks [EB/OL]. [2021-03-02]. https://arxiv.org/pdf/2004. 08955.pdf.
[7] SANTOS I, BREZO F, NIEVES J, et al. Idea: opcode-sequence-based malware detection [C]// Proceedings of the 2010 International Symposium on Engineering Secure Software and Systems, LNCS 5965. Berlin: Springer, 2010:35-43.
[8] WANG W, WANG X, FENG D W, et al. Exploring permission-induced risk in Android applications for malicious application detection [J]. IEEE Transactions on Information Forensics and Security, 2014, 9(11): 1869-1882.
[9] GRINI L S, SHALAGINOV A, FRANKE K. Study of soft computing methods for large-scale multinomial malware types and families detection [M]// ZADEH L A, YAGER R R, SHAHBAZOVA S N, et al. Recent Developments and the New Direction in Soft-Computing Foundations and Applications, STUDFUZZ 361. Cham: Springer, 2018: 337-350.
[10] QIU J Y, ZHANG J, LUO W, et al. A3CM:automatic capability annotation for Android malware [J]. IEEE Access, 2019,7: 147156-147168.
[11] 張晨斌,張云春,鄭楊,等.基于灰度圖紋理指紋的惡意軟件分類[J].計算機科學,2018,45(6A):383-386.(ZHANG C B, ZHANG Y C, ZHENG Y, et al. Malware classification based on texture fingerprint of gray-scale images [J]. Computer Science, 2018, 45(6A): 383-386.)
[12] HUANG T T H D, KAO H Y. R2-D2: color-inspired Convolutional Neural Network (CNN)-based Android malware detections [C]// Proceedings of the 2018 IEEE International Conference on Big Data. Piscataway: IEEE, 2018: 2633-2642.
[13] VASAN D, ALAZAB M, WASSAN S, et al. IMCFN: image-based malware classification using fine-tuned convolutional neural network architecture [J]. Computer Networks, 2020, 171: Article No.107138.
[14] 高楊晨,方勇,劉亮,等.基于卷積神經網絡的Android惡意軟件檢測技術研究[J].四川大學學報(自然科學版),2020,57(4):673-680.(GAO Y C,FANG Y, LIU L, et al. Android malware detection technology based on deep convolutional neural network [J]. Journal of Sichuan University (Natural Science Edition), 2020, 57(4): 673-680.)
[15] ZHAO M H, ZHONG S S, FU X Y, et al. Deep residual shrinkage networks for fault diagnosis [J]. IEEE Transactions on Industrial Informatics, 2020, 16(7): 4681-4690.
[16] CUI Y, JIA M L, LIN T Y, et al. Class-balanced loss based on effective number of samples [C]// Proceedings of the 2019 IEEE/CVF Conference on Computer Vision and Pattern Recognition. Piscataway: IEEE, 2019: 9260-9269.
[17] NATARAJ L, KARTHIKEYAN S, JACOB G, et al. Malware images: visualization and automatic classification [C]// Proceedings of the 2011 8th International Symposium on Visualization for Cyber Security. New York; ACM, 2011: Article No.4.
[18] CUI Z H, XUE F, CAI X J, et al. Detection of malicious code variants based on deep learning [J]. IEEE Transactions on Industrial Informatics, 2018, 14(7): 3187-3196.
[19] 孫博文,張鵬,成茗宇,等.基于代碼圖像增強的惡意代碼檢測方法[J].清華大學學報(自然科學版),2020,60(5):386-392.(SUN B W, ZHANG P,CHENG M Y, et al. Malware detection method based on enhanced code images [J]. Journal of Tsinghua University (Science and Technology), 2020, 60(5): 386-392.)
[20] ARP D, SPREITZENBARTH M, HüBNER M, et al. Drebin: efficient and explainable detection of Android malware in your pocket [C]// Proceedings of the 2014 Annual Network and Distributed System Security Symposium. Reston: Internet Society, 2014: 1-12.
[21] PRESS W H, TEUKOLSKY S A, VETTERLING W T, et al. Numerical Recipes: the Art of Scientific Computing [M]. 3rd ed. New York: Cambridge University Press, 2007: 123-128.
[22] KEYS R. Cubic convolution interpolation for digital image processing [J]. IEEE Transactions on Acoustics, Speech, and Signal Processing, 1981, 29(6): 1153-1160.
[23] TURKOWSKI K. Filters for common resampling tasks [M]// GRASSNER A S. Graphics Gems. Waltham: Academic Press, 1990: 147-165.
[24] LAWRENCE N D, SCH?LKOPF B. Estimating a kernel fisher discriminant in the presence of label noise [C]// Proceedings of the 2001 18th International Conference on Machine Learning. San Francisco: Morgan Kaufmann Publishers Inc., 2001: 306-313.
[25] XIA S Y, WANG G Y, CHEN Z Z, et al. Complete random forest based class noise filtering learning for improving the generalizability of classifiers [J]. IEEE Transactions on Knowledge and Data Engineering, 2019, 31(11): 2063-2078.
[26] WU P X, ZHENG S Z, GOSWAMI M, et al. A topological filter for learning with label noise [EB/OL]. [2021-03-02]. https://arxiv.org/pdf/2012.04835.pdf.
[27] HE H B, BAI Y, GARCIA E A, et al. ADASYN: adaptive synthetic sampling approach for imbalanced learning [C]// Proceedings of the 2008 IEEE International Joint Conference on Neural Networks (IEEE World Congress on Computational Intelligence). Piscataway: IEEE, 2008: 1322-1328.
[28] ZOU Y, YU Z D, VIJAYA KUMAR B V K, et al. Unsupervised domain adaptation for semantic segmentation via class-balanced self-training [C]// Proceedings of the 2018 European Conference on Computer Vision, LNCS 11207. Cham: Springer, 2018:297-313.
[29] TAN M X, LE Q. EfficientNet: rethinking model scaling for convolutional neural networks [C]// Proceedings of the 2019 36th International Conference on Machine Learning. New York: JMLR.org,2019: 6105-6114.
[30] SZEGEDY C, VANHOUCKE V, IOFFE S, et al. Rethinking the inception architecture for computer vision [C]// Proceedings of the 2016 IEEE Conference on Computer Vision and Pattern Recognition. Piscataway: IEEE, 2016: 2818-2826.
Android malware family classification method based on code image integration
LI Mo, LU Tianliang*, XIE Ziheng
(School of Information and Cyber Security,People’s Public Security University of China,Beijing100038,China)
Code visualization technology is rapidly popularized in the field of Android malware research once it was proposed. Aiming at the problem of insufficient representation ability of code image converted from single DEX (classes.dex)file, a new Android malware family classification method based on code image integration was proposed. Firstly, the DEX, XML (androidManifest.xml) and decompiled JAR (classes.jar) files in the Android application package were converted to three gray-scale images, and the Bilinear interpolation algorithm was used for the scaling of gray images in different sizes. Then, the three gray-scale images were integrated into a three-dimensional Red-Green-Blue (RGB) image for training and classification. In terms of classification model, the Soft Threshold (ST) Block+ResNeSt(STResNeSt) was proposed by combining the soft threshold denoising block with Split-Attention based ResNeSt. The proposed model has the strong anti-noise ability and is able to pay more attention to the important features of code image. To handle the long-tail distribution of data in the training process, Class Balance Loss (CB Loss) was introduced after data augmentation,which provided a feasible solution to the over-fitting caused by the imbalance of samples. On the Drebin dataset, the accuracy of integrated code image is 2.93 percentage points higher than that of DEX gray-scale image, the accuracy of STResNeSt is improved by 1.1 percentage points compared with the Residual Neural Network (ResNet), the scheme of data augmentation combined with CB Loss improves the F1 score by up to 2.4 percentage points. Experimental results show that, the average classification accuracy of the proposed method reaches 98.97%, which can effectively classify the Android malware family.
Android malware family; code image; transfer learning; Convolution Neural Network (CNN); channel attention
TP309.5
A
1001-9081(2022)05-1490-10
10.11772/j.issn.1001-9081.2021030486
2021?03?31;
2021?06?23;
2021?06?25。
2021年公共安全行為科學實驗室開放課題(2020SYS06)。
李默(1995—),男,江西贛州人,碩士研究生,主要研究方向:惡意代碼檢測、機器學習; 蘆天亮(1985—),男,河北保定人,副教授,博士,CCF會員,主要研究方向:網絡空間安全、惡意代碼檢測; 謝子恒(1999—),男,浙江寧波人,主要研究方向:網絡攻防、惡意代碼檢測。
This work is partially supported by 2021 Open Project of Public Security Behavioral Science Lab (2020SYS06).
LI Mo, born in 1995, M. S. candidate. His research interests include malware detection, machine learning.
LU Tianliang, born in 1985, Ph. D., associate professor. His main research interests include cyber security, malware detection.
XIE Ziheng, born in 1999. His research interests include cyber-attack and defense, malware detection.