蔣瑞林,覃仁超
(西南科技大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,四川 綿陽 621010)
根據(jù)2021 年中國國家互聯(lián)網(wǎng)應(yīng)急中心給出的互聯(lián)網(wǎng)網(wǎng)絡(luò)安全監(jiān)測數(shù)據(jù)分析報(bào)告,捕獲惡意程序樣本數(shù)量約2 307萬個(gè),日均傳播次數(shù)達(dá)582 萬余次[1]。全球范圍內(nèi),根據(jù)卡巴斯基安全網(wǎng)絡(luò)報(bào)告,在2021 年發(fā)生了1 098 968 315 次針對在線設(shè)備的攻擊和62 577 326 次惡意代碼安全事件[2]。惡意代碼泛濫已經(jīng)造成了巨大的經(jīng)濟(jì)損失,甚至嚴(yán)重威脅到國家安全和社會(huì)穩(wěn)定。在惡意代碼檢測方法不斷迭代的同時(shí),惡意代碼為了規(guī)避檢測產(chǎn)生各種變種,使得目前惡意代碼的檢測難度增大。如何高效檢測惡意代碼及其變種成為惡意代碼檢測領(lǐng)域面臨的主要挑戰(zhàn)。目前惡意代碼檢測技術(shù)主要分為靜態(tài)特征分析技術(shù)和動(dòng)態(tài)模擬運(yùn)行技術(shù)兩個(gè)大類。
靜態(tài)特征分析技術(shù)的原理是對待檢測代碼進(jìn)行逆向分析以確認(rèn)其執(zhí)行邏輯;而動(dòng)態(tài)模擬運(yùn)行技術(shù)的原理是通過安全的沙盒模擬真實(shí)環(huán)境下待檢測代碼運(yùn)行并分析其行為特征。它們都是基于特征的檢測方法,分別面臨代碼混淆和沙盒逃逸等問題,使得檢測誤報(bào)率高,費(fèi)時(shí)費(fèi)力。鑒于上述情況,文獻(xiàn)[3]中提出將惡意代碼圖像化并使用神經(jīng)網(wǎng)絡(luò)分類檢測的方式?;谏窠?jīng)網(wǎng)絡(luò)的惡意代碼檢測技術(shù)是惡意代碼檢測領(lǐng)域的新興方向,該技術(shù)能高效檢測隱藏代碼和混淆惡意軟件,且成本低,是目前惡意代碼檢測的有效手段之一。
傳統(tǒng)神經(jīng)網(wǎng)絡(luò)不斷加深拓寬的網(wǎng)絡(luò)深度和寬度一定程度上可以提高惡意代碼識(shí)別準(zhǔn)確率,但存在梯度爆炸、參數(shù)量劇增等問題,需要耗費(fèi)大量的計(jì)算成本。針對上述問題,本文提出了一種基于深度可分離卷積的多神經(jīng)網(wǎng)絡(luò)惡意代碼檢測模型。本文主要工作如下:
1)基于Stacking 算法與預(yù)測模型原理提出了融合多模型的惡意代碼檢測方法,使用樸素貝葉斯(Naive Bayes)算法作為次級學(xué)習(xí)器融合最終結(jié)果,提高模型檢測準(zhǔn)確率;
2)優(yōu)化了MobileNet、ShuffleNet 和Xception 三個(gè)輕量級神經(jīng)網(wǎng)絡(luò)模型,引入深度可分離卷積來杜絕由于深度和并聯(lián)個(gè)數(shù)過多導(dǎo)致的梯度爆炸和內(nèi)存占用過高問題;
3)基于惡意代碼及其家族代碼復(fù)用性高的原理,提出一種基于LGBM(Light Gradient Boosting Machine)的圖片紋理特征分類惡意代碼的檢測方法,并將其加入檢測模型增加檢測特征提高檢測準(zhǔn)確率。
靜態(tài)特征分析技術(shù)是指將可執(zhí)行程序進(jìn)行反匯編、反編譯,將獲取并分析的代碼特征作為靜態(tài)檢測特征。主流研究常將靜態(tài)特征與機(jī)器學(xué)習(xí)相結(jié)合來檢測惡意代碼。?ahin等[4]提出了一種提取程序權(quán)限調(diào)用特征作為靜態(tài)特征,使用K 最近鄰算法和樸素貝葉斯算法作為分類器的檢測方法;Lu等[5]提出了一種基于敏感權(quán)限許可結(jié)合隨機(jī)森林(Random Forest,RF)分類算法構(gòu)建的雙層檢測模型;Du 等[6]提出了一種基于API 調(diào)用信息和數(shù)據(jù)流信息結(jié)合支持向量機(jī)(Support Vector Machine,SVM)構(gòu)建的靜態(tài)特征檢測模型。靜態(tài)特征分析主要是以權(quán)限調(diào)用為主,而單一的權(quán)限調(diào)用特征并不能描述一個(gè)惡意代碼的全部行為;而且在遇到代碼混淆或代碼加殼逃逸手段時(shí),該技術(shù)自身存在的短板會(huì)導(dǎo)致檢測失效或耗時(shí)過多等問題。
動(dòng)態(tài)模擬運(yùn)行技術(shù)是指對代碼執(zhí)行過程進(jìn)行分析,在沙盒中執(zhí)行待檢測代碼,將代碼運(yùn)行的行為生成日志,包括代碼對系統(tǒng)文件操作信息、上傳下行流量、動(dòng)態(tài)鏈接庫調(diào)用和進(jìn)程訪問情況等,從中提取并分析特征作為動(dòng)態(tài)檢測特征。主流研究常將動(dòng)態(tài)模擬運(yùn)行獲取的動(dòng)態(tài)特征與分類算法結(jié)合來檢測惡意代碼。張東等[7]提出了一種基于動(dòng)態(tài)特征結(jié)合多種機(jī)器學(xué)習(xí)的惡意代碼檢測方式;王寧等[8]提出了一種基于系統(tǒng)函數(shù)調(diào)用信息結(jié)合多種機(jī)器學(xué)習(xí)框架的檢測方式。由于沙盒逃逸技術(shù)、反沙盒檢測和沙盒原生漏洞等,導(dǎo)致該檢測技術(shù)對擁有反沙盒技術(shù)的惡意代碼檢測效率低下。
基于神經(jīng)網(wǎng)絡(luò)的檢測技術(shù)的主要檢測思路是將待檢測代碼轉(zhuǎn)換成矩陣或向量,再映射成圖像,使用神經(jīng)網(wǎng)絡(luò)對圖像進(jìn)行分類。待檢測代碼映射成圖像的方法主要包括:將待檢測代碼的可執(zhí)行文件的二進(jìn)制矩陣映射成灰度圖像[9]、將待檢測代碼在動(dòng)態(tài)模擬運(yùn)行時(shí)API 調(diào)用轉(zhuǎn)換成向量矩陣后映射成圖像[10]等。Xu 等[11]將程序控制流圖(Control Flow Graph,CFG)和數(shù)據(jù)流圖(Data Flow Diagram,DFG)轉(zhuǎn)換成矩陣后映射為圖像,再使用傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)模型微調(diào)后分類;Bakour 等[12]提出將程序函數(shù)聲明字段作為數(shù)據(jù)集,使用自然語言處理模型進(jìn)行分類。除了上述文獻(xiàn)中對經(jīng)典模型的微調(diào)作為分類模型,部分研究人員還提出了融合多個(gè)模型的想法。王國棟等[13]提出的CNN-BiLSTM 檢測模型融合了CNN 和長短期記憶(Long Short-Term Memory,LSTM)經(jīng)典模型;?eponis 等[14]針對目前熱門的融合模型,對7 種融合模型進(jìn)行了對照實(shí)驗(yàn),分析了不同融合模型的優(yōu)劣;Lad 等[15]給出了VGG16、ResNet50、InceptionV3 和Xception 四個(gè)經(jīng)典神經(jīng)網(wǎng)絡(luò)模型與CNN+SVM混合模型的對比;Cui 等[16]結(jié)合CNN 和非支配排序遺傳算法(NSGA-Ⅱ)構(gòu)建分類檢測模型。上述研究結(jié)果表明,多個(gè)模型融合比單神經(jīng)網(wǎng)絡(luò)或機(jī)器學(xué)習(xí)的組合構(gòu)成的檢測模型準(zhǔn)確率更高。文獻(xiàn)[17]中提出并證明:通過并聯(lián)多個(gè)卷積神經(jīng)網(wǎng)絡(luò)同樣可以提高惡意代碼識(shí)別效率,但過多的并聯(lián)也會(huì)導(dǎo)致模型梯度爆炸、參數(shù)量劇增等問題,需要耗費(fèi)大量的計(jì)算成本。
與常規(guī)的卷積操作相比,深度可分離卷積(Depthwise Separable Convolution,DSC)的參數(shù)量和運(yùn)算成本更低,是輕量級神經(jīng)網(wǎng)絡(luò)能高效運(yùn)行的核心因素。DSC 分為逐通道卷積(depthwise convolution)和逐點(diǎn)卷積(pointwise convolution)兩個(gè)過程,卷積內(nèi)部結(jié)構(gòu)如圖1 所示。DSC 過程的計(jì)算量是常規(guī)卷積的1/3。

圖1 深度可分離卷積Fig.1 Depthwise separable convolution
SENet(Squeeze-and-Excitation Network)通道注意力機(jī)制常被用于CNN 中,對圖像中的重要信息部分進(jìn)行可視化[18],SENet 內(nèi)部結(jié)構(gòu)如圖2 所示。

圖2 SENet的結(jié)構(gòu)Fig.2 Structure of SENet
SeNet 通過提高整個(gè)特征層次結(jié)構(gòu)中空間編碼的質(zhì)量來增強(qiáng)CNN 的表示能力,顯式建模通道之間的相互依賴關(guān)系以自適應(yīng)地重新校準(zhǔn)通道特征響應(yīng)。注意力機(jī)制可對特征進(jìn)行校正,校正后的特征可保留有價(jià)值的特征,剔除沒價(jià)值的特征。SENet 通道注意力機(jī)制分為Squeeze 和Excitation 兩個(gè)過程,分別如式(1)、(2)所示。
Squeeze 首先通過全局平均池化(Global Average Pooling,GAP)將輸入的C×H×W的特征圖壓成C×1×1 的特征圖,這個(gè)結(jié)果能表示全局信息。該過程如式(1)所示:
Excitation 對Squeeze 過程的結(jié)果進(jìn)行全連接操作,得到C/r(r為降維參數(shù))維的向量,然后進(jìn)行ReLU 激活,再對激活后的結(jié)果進(jìn)行一次全連接,將C/r維的向量變回C維向量,再進(jìn)行sigmoid 激活,得到權(quán)重矩陣。Excitation 過程如式(2)所示:
MobileNet 是Howard 等[19]提出的一種以輕量化為特點(diǎn)的卷積神經(jīng)網(wǎng)絡(luò)。該網(wǎng)絡(luò)通過NAS(Network Architecture Search)和NetAdapt 算法優(yōu)化全局參數(shù),結(jié)合DSC 發(fā)揮輕量級網(wǎng)絡(luò)主要優(yōu)勢,引入SENet 通道注意力機(jī)制增強(qiáng)神經(jīng)網(wǎng)絡(luò)表述能力。
ShuffleNet 是Ma 等[20]提出的CNN 模型,特點(diǎn)是運(yùn)算高效。ShuffleNet 的設(shè)計(jì)核心為逐點(diǎn)卷積和通道混洗(Channel Shuffle)。通道混洗是指將特征在輸入到GConv 分組卷積之前,按照分組卷積的Group 數(shù)量進(jìn)行分組,并將組間的特征均勻打亂,增加通道間的信息流動(dòng),在保持網(wǎng)絡(luò)精度的情況下提升計(jì)算速度。
Xception 是Chollet[21]提出的基于Inception 啟發(fā)的新型深度卷積神經(jīng)網(wǎng)絡(luò)架構(gòu),使用DSC 替換Inception 中原有的卷積層,能在不增加網(wǎng)絡(luò)復(fù)雜度的前提下提高模型的效果,利用DSC 替代多種依賴人工設(shè)計(jì)的特征提取方式來提升性能。
LGBM 是基于GBDT(Gradient Boosting Decision Tree)算法開發(fā)的支持并行運(yùn)行的訓(xùn)練框架。GBDT 主要思想是利用決策樹(Decision Tree,DT)迭代訓(xùn)練以得到最優(yōu)模型,該模型具有訓(xùn)練效果好、不易過擬合等優(yōu)點(diǎn)。
圖像紋理信息也被稱為圖像的復(fù)雜度,文獻(xiàn)[22]中對此進(jìn)行了詳細(xì)的論述,即從整體角度對圖像的復(fù)雜度進(jìn)行了描述。圖像紋理特征即將圖像整體出現(xiàn)的灰度級情況,各灰度級像素的數(shù)量和單個(gè)像素周圍像素灰度級分布情況等關(guān)鍵信息特征化,其中包括對圖像表面結(jié)構(gòu)的次序排列、整體與局部之間聯(lián)系和結(jié)構(gòu)同質(zhì)現(xiàn)象等視覺特征的描述,是基于內(nèi)容的圖像檢測方法中重要的分類特征?;诨叶裙采仃嚕℅rey Level Co-occurrence Matrix,GLCM)提取紋理特征是通過計(jì)算GLCM 中的相關(guān)值來代表圖像的紋理特征。GLCM 能反映圖像灰度關(guān)于方向、相鄰間隔、變化幅度等綜合信息,是分析圖像紋理分布的主要方法之一。
基于DSC 的多神經(jīng)網(wǎng)絡(luò)惡意代碼檢測模型如圖3 所示,包含4 個(gè)部分:圖像特征提取、多神經(jīng)網(wǎng)絡(luò)分類檢測、紋理特征分類檢測和基于樸素貝葉斯算法的結(jié)果融合。

圖3 基于DSC的多神經(jīng)網(wǎng)絡(luò)惡意代碼檢測模型Fig.3 Multi-neural network malicious code detection model based on DSC
1)圖像特征提取:將二進(jìn)制惡意代碼以8 bit 為單位轉(zhuǎn)化為0~255 像素點(diǎn)生成惡意代碼紋理灰度圖,再將該惡意代碼紋理灰度圖經(jīng)過數(shù)據(jù)預(yù)處理的歸一化變成格式統(tǒng)一的224×224×3 的灰度圖。通過GLCM 計(jì)算出每個(gè)惡意代碼紋理灰度圖樣本中的紋理特征值:能量/角二階矩(Angular Second Moment,ASM)、熵(ENTropy,ENT)、逆方差(Inverse Differential Moment,IDM)和相關(guān)度(CORrelation,COR)。
2)多神經(jīng)網(wǎng)絡(luò)分類檢測:將惡意代碼紋理灰度圖輸入到多神經(jīng)網(wǎng)絡(luò)檢測中,利用MobileNet-small、ShuffleNet-SE 和Xception-SE 對檢測樣本進(jìn)行分類檢測,多神經(jīng)網(wǎng)絡(luò)分類從不同的角度揭示深度可分離卷積的作用。
3)紋理特征分類檢測:將惡意代碼紋理灰度圖的紋理特征值輸入LGBM 分類器中,對檢測樣本進(jìn)行分類。
4)基于樸素貝葉斯算法的結(jié)果融合:多個(gè)初級學(xué)習(xí)器結(jié)果傳入融合層,將初級學(xué)習(xí)器的分類結(jié)果作為特征,輸入基于樸素貝葉斯算法的次級學(xué)習(xí)器,得到模型最終分類結(jié)果。
惡意代碼二進(jìn)制位字符串可以分為多個(gè)長度為8 bit 的子字符串,這些子字符串中的每一位都可以被視為一個(gè)像素,因?yàn)檫@8 bit 可以解釋為0~255 范圍內(nèi)的無符號整數(shù),其中0 為黑色,255 為白色。選取連續(xù)的3 個(gè)子字符串,分別對應(yīng)于彩色圖像中RGB 的3 個(gè)通道,即第1 個(gè)8 bit 字符串轉(zhuǎn)化為R 通道的值,第2 個(gè)8 bit 字符串轉(zhuǎn)化為G 通道的值,第3 個(gè)8 bit 字符串轉(zhuǎn)化為B 通道的值;重復(fù)這一操作使得所有數(shù)據(jù)都被選完(最末段端數(shù)據(jù)量不足3 字符串的,用0 補(bǔ)足)。利用該原理,二進(jìn)制惡意代碼便轉(zhuǎn)化為十進(jìn)制數(shù)字的一維向量,固定256 為行寬向量,高度根據(jù)文件大小變化。最終,惡意代碼被解釋為RGB 圖像。二進(jìn)制轉(zhuǎn)換灰度圖過程如圖4所示。

圖4 二進(jìn)制轉(zhuǎn)換灰度圖過程Fig.4 Transformation process of binary number to grayscale image
多神經(jīng)網(wǎng)絡(luò)分類檢測部分的主要工作分為兩類:加強(qiáng)特征表達(dá)和減小參數(shù)規(guī)模。
1)加強(qiáng)特征方面主要在于池化層的選擇和SENet 通道注意力機(jī)制的引入。在淺層中替換平均池化(AvgPool),使用最大池化(MaxPool)提取特征紋理,網(wǎng)絡(luò)結(jié)構(gòu)最后使用global AvgPool 獲取全局上下文關(guān)系,引入SENet 通道注意力機(jī)制強(qiáng)化識(shí)別過程中的特征圖,加強(qiáng)多網(wǎng)絡(luò)對紋理的識(shí)別能力,確保對不同數(shù)據(jù)集擁有高分類精度的同時(shí)保持檢測的穩(wěn)定性。
2)減小參數(shù)規(guī)模主要在于對部分基礎(chǔ)層的刪減和深度可分離卷積,深度可分離卷積結(jié)構(gòu)能減小多神經(jīng)網(wǎng)絡(luò)的參數(shù)規(guī)模,同時(shí)提高準(zhǔn)確度,解決多卷積神經(jīng)網(wǎng)絡(luò)因不斷加深網(wǎng)絡(luò)深度和寬度而帶來的梯度消失和參數(shù)量加劇問題。
3.3.1 MobileNet-small
相較于MobileNet 結(jié)構(gòu),MobileNet-small 減少了3 層不含SE 的Bneck(Bneck 是MobileNet 模型的基本結(jié)構(gòu)塊),有效減小了模型參數(shù)規(guī)模。MobileNet-small 由三部分組成起始部分:Conv3、批歸一化(Batch Normalization,BN)層、h-switch 激活層,網(wǎng)絡(luò)結(jié)構(gòu)如圖5 所示。

圖5 MobileNet-small的結(jié)構(gòu)Fig.5 Structure of MobileNet-small
3.3.2 ShuffleNet-SE
在ShuffleNet 的基礎(chǔ)單元結(jié)構(gòu)上引入SENet 通道注意力機(jī)制生成ShuffleNet-SE,強(qiáng)化模型識(shí)別特征。ShuffleNet-SE中基本結(jié)構(gòu)塊Block 主要分為兩個(gè)結(jié)構(gòu):stride=1 的Basic unit和stride=2 的Down-sampling unit。ShuffleNet-SE 將Basic unit結(jié)構(gòu)引入SE,加強(qiáng)紋理特征識(shí)別。Down-sampling unit 由于雙通道進(jìn)行Concat 會(huì)使輸出通道變?yōu)檩斎胪ǖ赖? 倍,雙通道都使用DWConv3 降維,提高不同通道之間信息的復(fù)用性。ShuffleNet-SE 結(jié)構(gòu)如圖6 所示。

圖6 ShuffleNet-SE的結(jié)構(gòu)Fig.6 Structure of ShuffleNet-SE
3.3.3 Xception-SE
減少Xeption 原有殘差結(jié)構(gòu),引入SE 后形成Xception-SE,可以在減少參數(shù)的同時(shí)強(qiáng)化特征紋理。Xception-SE 基于對Inception 的充分解耦,從結(jié)構(gòu)上能利用殘差結(jié)構(gòu)對樣本的深層特征進(jìn)行檢測。Xception-SE 將原有12 個(gè)具有線性殘差連接的模塊優(yōu)化至10 個(gè),減少模型參數(shù),在最后一個(gè)Block(Block 是Xception 基本結(jié)構(gòu)塊)之后引入SE,得到特征更加顯著的特征圖,加強(qiáng)紋理特征識(shí)別。Xception-SE 結(jié)構(gòu)如圖7 所示。

圖7 Xception-SE的結(jié)構(gòu)Fig.7 Structure of Xception-SE
紋理特征分類檢測部分,惡意代碼家族及其變種的代碼復(fù)用性高使得所產(chǎn)生的紋理相似度高,基于代碼復(fù)用性原理,該檢測方式使用灰度圖紋理特征值為惡意代碼家族及其變種畫像,達(dá)到分類檢測的目的,紋理特征檢測過程提高了整個(gè)模型的精度和對不同數(shù)據(jù)集分類的穩(wěn)定性。
紋理特征是從灰度共生矩陣中統(tǒng)計(jì)分析惡意代碼圖像數(shù)據(jù)的特征,以此描述惡意圖像灰度的空間分布情況和反映不同惡意代碼家族擁有的不同復(fù)雜度。通過灰度共生矩陣,可提取圖像的以下紋理特征:
1)能量(ASM):表示圖像紋理分布均勻程度的紋理特征。當(dāng)ASM值較小時(shí),說明圖像的圖像紋理規(guī)則,反之不規(guī)則。ASM的計(jì)算如式(3)所示:
2)熵(ent):表示圖像紋理隨機(jī)程度的紋理特征。當(dāng)ent值較大時(shí),圖像紋理分布隨機(jī)程度高,反之隨機(jī)程度不高。ent的計(jì)算如式(4)所示:
3)逆方差(idm):表示圖像紋理局部變化的紋理特征。idm值越大,說明圖像紋理局部越均勻,反之局部不夠均勻。idm的計(jì)算如式(5)所示:
4)相關(guān)度(COR):表示圖像紋理灰度的相關(guān)性特征。當(dāng)COR值較大時(shí),圖像復(fù)雜度較小,反之圖像復(fù)雜度較高。COR的計(jì)算如式(6)所示。
本文基于圖像紋理特征提出分類檢測,分類檢測過程如圖8 所示。

圖8 基于紋理特征的分類檢測過程Fig.8 Classification and detection process based on texture features
結(jié)果融合層使用樸素貝葉斯算法作為分類器,以多神經(jīng)網(wǎng)絡(luò)分類檢測模塊和紋理特征檢測模塊的分類結(jié)果作為輸入數(shù)據(jù),通過貝葉斯分類器分類后輸出模型最終的檢測結(jié)果。如式(7)所示,f1,f2,…,fn為該樣本輸入數(shù)據(jù)中的類別,p(C=c)為類的先驗(yàn)概率,p(Fi=fi|C=c)為類的條件概率。
類的先驗(yàn)概率即分類器將樣本c分類的所有可能性,如式(8)所示,allCategory為輸入的類別數(shù)量:
類的條件概率使用抽取訓(xùn)練集中每類惡意代碼家族的1/3 作為生成分類器對每類惡意代碼檢測的正確概率作為條件概率,如式(9)所示,N為fi分類器判斷C類樣本總數(shù),f為fi分類器判斷C類正確分類樣本個(gè)數(shù)。
本次實(shí)驗(yàn)環(huán)境在Windows 10 系統(tǒng)環(huán)境下進(jìn)行,硬件配置:AMD Ryzen 5 3600 6-Core Processor 3.95 GHz,GPU 型號為NVIDIA GeForce GTX 1660 Ti。軟件平臺(tái)使用anaconda3編程。語言使用Python3.8,訓(xùn)練與測試框架為深度學(xué)習(xí)開源框架PyTorch1.11.0 和Sklearn 1.0.2。
4.2.1 malimg數(shù)據(jù)集
malimg 數(shù)據(jù)集包含大約9 339 張灰度圖像,代表惡意軟件分為25 個(gè)家族。樣本分布不均衡,即每個(gè)家族的樣本數(shù)量不一樣。如圖9 所示,其中包含惡意代碼類型為Worm、PWS、Trojan、TrojanDownloader、Dialer、Rogue、Backdoor。

SR9 malimg數(shù)據(jù)集樣本分布Fig.9 Sample distribution of malimg dataset
4.2.2 MalVis+良性數(shù)據(jù)集
MalVis 數(shù)據(jù)集包含26 個(gè)惡意代碼家族,14 226 個(gè)惡意代碼生成的灰度圖像,該數(shù)據(jù)集由Hacettepe 大學(xué)計(jì)算機(jī)工程多媒體信息實(shí)驗(yàn)室與COMODO 合作收集,如圖10 所示。其中包含 惡意代 碼類型 為Adware、Virus、Worm、Trojan、Backdoor、HackTool。良性數(shù) 據(jù)集由Kaggle 上提供 的Microsoft windows 數(shù)據(jù)集通過Mallook 工具轉(zhuǎn)換而來,該數(shù)據(jù)集包含大約6 313 張灰度圖像。

圖10 MalVis數(shù)據(jù)集樣本分布Fig.10 Sample distribution of MalVis dataset
本文使用準(zhǔn)確率Acc(Accuracy)、精度Pre(Precision)、召回率Rec(Recall)和F1 分?jǐn)?shù)F1(F1-score)作為評估指標(biāo)。指標(biāo)定義如下:
其中:真陽性TP(True Positives)和假陽性FP(False Positives)為被正確和錯(cuò)誤地歸類為惡意的文件樣本數(shù);真陰性TN(True Negatives)和假陰性FN(False Negatives)指被正確和錯(cuò)誤地分類為良性的文件樣本數(shù)。
本文設(shè)計(jì)3 組對照實(shí)驗(yàn),實(shí)驗(yàn)數(shù)據(jù)集按照7∶3 的比例隨機(jī)劃分為訓(xùn)練集和測試集。
第一組紋理特征分類實(shí)驗(yàn)將LGBM 與下列機(jī)器學(xué)習(xí)算法作為對照:支持向量機(jī)(SVM)、決策樹(DT)、隨機(jī)森林(RF)和邏輯回歸(Logistic Regression,LR),以驗(yàn)證本文所提出的圖像紋理特征在檢測惡意代碼上的可行性。
第二組使用MalVis 數(shù)據(jù)集+良性程序圖像特征集組合的混合數(shù)據(jù)集,驗(yàn)證本文模型相較于單一模型在不平衡數(shù)據(jù)集上分類檢測結(jié)果的穩(wěn)定性和準(zhǔn)確性,而且為了進(jìn)一步說明本文模型的輕便型,實(shí)驗(yàn)中給出了本文模型和對照組的參數(shù)量及內(nèi)存占用量。
第三組實(shí)驗(yàn)對比本文與相關(guān)方法在malimg 數(shù)據(jù)集上的分類檢測表現(xiàn)。
4.4.1 紋理特征檢測實(shí)驗(yàn)
本實(shí)驗(yàn)使用malimg 數(shù)據(jù)集作為訓(xùn)練集和測試集,通過灰度共生矩陣(GLCM)獲取數(shù)據(jù)集中圖片的紋理特征值:熵、能量、逆方差和相關(guān)性作為特征,進(jìn)行分類對比實(shí)驗(yàn)。實(shí)驗(yàn)使用機(jī)器學(xué)習(xí)算法:支持向量機(jī)(SVM)、決策樹(DT)、隨機(jī)森林(RF)和邏輯回歸(LR)與LGBM 進(jìn)行對比實(shí)驗(yàn)。實(shí)驗(yàn)中LGBM 參數(shù)設(shè)置為:學(xué)習(xí)率=0.1,森林模型里樹的個(gè)數(shù)n_estimators=50,LGBM 框架下提升樹的類型boosting_type=‘gbdt’,最大樹的深度max_depth=6,樹的最大葉子數(shù)num_leavel=100。分類算法對比結(jié)果如表1 所示。

表1 紋理特征分類實(shí)驗(yàn)結(jié)果對比 單位:%Tab.1 Comparison of texture feature classification experimental results unit:%

表2 LGBM與RF算法的均方差對比Tab.2 LGBM and RF comparison in MSE

表3 MalVis+良性程序的混合數(shù)據(jù)集結(jié)果對比 單位:%Tab.3 Results comparison of hybrid dataset of MalVis+benign data unit:%
由表1 可知,在分類檢測上,LGBM 和RF 的準(zhǔn)確率都超過90%,DT、LR 和SVM 的準(zhǔn)確率遠(yuǎn)低于LGBM 和RF。為了進(jìn)一步驗(yàn)證兩個(gè)分類器的分類效果,實(shí)驗(yàn)增設(shè)均方誤差(Mean Square Error,MSE)來衡量分類器的過擬合程度。在訓(xùn)練集和測試集上分別為Training MSE 和Test MSE,實(shí)驗(yàn)結(jié)果如表4 所示,RF 的Training MSE 與Test MSE 差值比LGBM高3.03,表明RF 在紋理特征分類實(shí)驗(yàn)中存在過擬合的問題,而LGBM 有更好的泛化性。綜合上述實(shí)驗(yàn)可知,本文所提出的圖像紋理特征在檢測惡意代碼上具有可行性,使用LGBM分類檢測方法有更好的檢測結(jié)果。

表4 模型參數(shù)規(guī)模和訓(xùn)練內(nèi)存占用對比Tab.4 Model parameter quantity and training memory usage comparison
4.4.2 混合數(shù)據(jù)集對比實(shí)驗(yàn)
本實(shí)驗(yàn)使用MalVis+良性程序的混合數(shù)據(jù)集作為訓(xùn)練集和測試集,其中MalVis 包含26 類惡意代碼家族及其變種,良性程序數(shù)據(jù)集包含多種常用類型程序。實(shí)驗(yàn)將AlexNet[23]、VGG16、ResNet50 以及模 型子模 塊(MobileNet-small、ShuffleNet-SE 和Xception-SE)作為對照組,模型采取交叉熵?fù)p失函數(shù)來衡量真實(shí)值與預(yù)測值之間的差異,使用224×224作為統(tǒng)一輸入,Epoch 設(shè)置為50,batchsize 設(shè)置為32,采用Adam 優(yōu)化器對網(wǎng)絡(luò)進(jìn)行優(yōu)化,學(xué)習(xí)率選用經(jīng)驗(yàn)值0.005,最終通過激活函數(shù)ReLU 進(jìn)行分類。在50 次迭代過程中,選取測試集中準(zhǔn)確率最高的值為模型的準(zhǔn)確率,相應(yīng)的損失值即為該模型的損失值,分類結(jié)果如表3 所示。為了更進(jìn)一步驗(yàn)證模型參數(shù)和內(nèi)存占用,本文使用專業(yè)工具torchstat 測量各個(gè)模型總參數(shù)量和內(nèi)存占用,結(jié)果如表4 所示。
從表3 中可以看出,本文惡意代碼檢測模型的準(zhǔn)確率為97.43%。綜合表3、4 的結(jié)果可知,相較于AlexNet 模型,本文模型的準(zhǔn)確率提高了14.57 個(gè)百分點(diǎn),但參數(shù)規(guī)模僅為AlexNet 模型的30%,AlexNet 模型訓(xùn)練所需內(nèi)存占用量比本文模型更高;相較于ResNet50 模型,本文模型的準(zhǔn)確率提高了6.19 個(gè)百分點(diǎn),但參數(shù)規(guī)模僅為ResNet50 模型的68%,ResNet50 模型訓(xùn)練所需內(nèi)存占用量比本文模型更高,在相同內(nèi)存成本的情況下,本文模型有更高的準(zhǔn)確率;相較于VGG16 模型,本文模型的準(zhǔn)確率提高了2.29 個(gè)百分點(diǎn),但參數(shù)規(guī)模僅為VGG16 模型的13%,內(nèi)存占用率也只有VGG16的46%,因?yàn)樯疃燃由铍m然能為VGG16 帶來更高的準(zhǔn)確率,但訓(xùn)練成本高,在準(zhǔn)確率相差較小時(shí),本文模型有更小的訓(xùn)練成本。綜合表3、4 實(shí)驗(yàn)結(jié)果可得:相較于傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)模型,本文模型在混合數(shù)據(jù)集上分類檢測結(jié)果準(zhǔn)確率更高、更穩(wěn)定、計(jì)算成本相對較低。
4.4.3 相關(guān)工作對比
本實(shí)驗(yàn)將malimg 數(shù)據(jù)集按7∶3 分為訓(xùn)練集和測試集,該數(shù)據(jù)集包含25 類惡意代碼及其變種。相關(guān)工作檢測結(jié)果對比如表5 所示。由表5 可知,本文模型檢測結(jié)果的準(zhǔn)確率為99.31%,精度、召回率和F1 分?jǐn)?shù)指標(biāo)均超過98%;對比模型分 支MobileNet-small、ShuffleNet-SE 和Xception-SE 的 準(zhǔn)確率為97.77%、98.28%、97.43%,但另外3 項(xiàng)指標(biāo)均低于95%,說明單一的模型不能保證分類結(jié)果的穩(wěn)定性。ResNet50 和VGG16 的準(zhǔn)確率也超過了98%,但精度、召回率和F1 分?jǐn)?shù)指標(biāo)均低于95%。MFF_CNN[25]是利用圖像的多種分辨率作為輸入的融合模型,準(zhǔn)確率為98.10%,且精度、召回率和F1 分?jǐn)?shù)指標(biāo)均比較穩(wěn)定。SPP_CNN[26]通過使用空間金字塔池化原理從神經(jīng)網(wǎng)絡(luò)層面強(qiáng)化特征表達(dá),但相較于本文模型準(zhǔn)確率低2.21 個(gè)百分點(diǎn)。AlexNet[23]和VGGNet[24]為改善模型,在精度、召回率和F1 分?jǐn)?shù)指標(biāo)上擁有較好表現(xiàn),但是單一模型的準(zhǔn)確率低于本文模型。GLCM+SVM[3]是機(jī)器學(xué)習(xí)算法改善模型,模型對于圖片特征檢測能力低于神經(jīng)網(wǎng)絡(luò)模型,準(zhǔn)確率僅為93.20%。綜合表5 實(shí)驗(yàn)結(jié)果可以看出,本文模型在malimg 數(shù)據(jù)集上有更好的檢測結(jié)果。

表5 相關(guān)工作在malimg數(shù)據(jù)集的檢測結(jié)果對比 單位:%Tab.5 Comparison of related work results on malimg dataset unit:%
綜合上述三個(gè)實(shí)驗(yàn)結(jié)果可知,本文提出的基于深度可分離卷積多神經(jīng)網(wǎng)絡(luò)惡意代碼檢測模型在惡意代碼分類上比傳統(tǒng)機(jī)器學(xué)習(xí)算法擁有更高的檢測準(zhǔn)確率,而且在不同數(shù)據(jù)集上的分類效果也更穩(wěn)定。
本文針對以往基于深度學(xué)習(xí)的惡意代碼檢測方法存在的參數(shù)量劇增導(dǎo)致成本過高和檢測結(jié)果不穩(wěn)定等問題,提出了一種基于深度可分離卷積的多神經(jīng)網(wǎng)絡(luò)惡意代碼檢測模型。模型主要由MobileNet-small、ShuffleNet-SE 和Xception-SE 三個(gè)輕量級神經(jīng)網(wǎng)絡(luò)以及基于LGBM 圖片紋理特征的分類方法組成。本文在研究多神經(jīng)網(wǎng)絡(luò)并行的策略上,找到了既能提高準(zhǔn)確率同時(shí)資源占用率又不高的方案:并行三個(gè)基于深度可分離卷積和SENet 通道注意力機(jī)制的輕量級神經(jīng)網(wǎng)絡(luò)。該方法解決了目前神經(jīng)網(wǎng)絡(luò)模型深度和寬度不斷擴(kuò)展造成的常見問題。深度可分離卷積通過逐通道卷積和逐點(diǎn)卷積減少了神經(jīng)網(wǎng)絡(luò)需要的參數(shù)量和計(jì)算量,在特征提取方面SENet 通道注意力機(jī)制強(qiáng)化了圖片特征提高檢測效果。研究發(fā)現(xiàn)利用圖片紋理特征可以為檢測模型提供不同特征,特別是針對良性和惡意分類時(shí)效果最為明顯,該方法也是檢測模型在混合數(shù)據(jù)集中有高準(zhǔn)確率表現(xiàn)的原因。實(shí)驗(yàn)結(jié)果也表明,基于深度可分離卷積多神經(jīng)網(wǎng)絡(luò)惡意代碼檢測模型在檢測效率上優(yōu)于傳統(tǒng)深度學(xué)習(xí)模型。