王方偉,柴國(guó)芳,李青茹,王長(zhǎng)廣
1.河北師范大學(xué)河北省網(wǎng)絡(luò)與信息安全重點(diǎn)實(shí)驗(yàn)室,河北 石家莊 050024;
2.河北師范大學(xué)計(jì)算機(jī)與網(wǎng)絡(luò)空間安全學(xué)院,河北 石家莊 050024
惡意軟件指能夠影響系統(tǒng)的完整性、保密性和功能性的惡意代碼[1]。隨著因特網(wǎng)與物聯(lián)網(wǎng)的蓬勃發(fā)展,惡意軟件數(shù)量劇增,惡意軟件成為網(wǎng)絡(luò)安全的 主要威脅 之一[2]。AV-TEST(AntiVirus-Test,反病毒測(cè)評(píng)機(jī)構(gòu))數(shù)據(jù)顯示,每天新增惡意軟件數(shù)量巨大。截至2021年4月,已經(jīng)出現(xiàn)12億多個(gè)惡意軟件,與2011年相比,增長(zhǎng)了近1 800%,因此需要研究者提出更為有效的方法來檢測(cè)惡意軟件。惡意軟件根據(jù)其功能的不同可分為蠕蟲、后門、木馬、病毒等。另外,攻擊者通過代碼變換、代碼插入、子程序重排等構(gòu)建了惡意軟件的許多變種。所以,為了檢測(cè)惡意軟件的變種,需要不斷提高惡意軟件的檢測(cè)能力。傳統(tǒng)方法大多采用基于特征技術(shù)來檢測(cè)惡意軟件[3]。但是,結(jié)合多態(tài)等技術(shù)的惡意軟件很容易逃避基于特征的安全設(shè)備的檢測(cè)。目前,惡意軟件分析及檢測(cè)技術(shù)主要分為三類:靜態(tài)分析、動(dòng)態(tài)分析、混合方法[4]。靜態(tài)分析主要通過對(duì)惡意軟件二進(jìn)制文件進(jìn)行反匯編提取其靜態(tài)特征[5,6],如操作碼,系統(tǒng)調(diào)用等,混淆技術(shù)的出現(xiàn)導(dǎo)致無法檢測(cè)未知惡意軟件及其變種;而動(dòng)態(tài)分析主要通過虛擬環(huán)境如沙箱來分析惡意軟件的行為[7,8],但該方法擴(kuò)展性不足,計(jì)算資源消耗大且費(fèi)時(shí)。Natraj等[9]提出了可視化特征檢測(cè),將惡意二進(jìn)制文件轉(zhuǎn)換為灰度圖進(jìn)行特征提取,結(jié)果表明該方法相比提取文本特征來檢測(cè)惡意軟件的方法更準(zhǔn)確。還有學(xué)者使用支持向量機(jī)、K近鄰、隨機(jī)森林、神經(jīng)網(wǎng)絡(luò)等機(jī)器學(xué)習(xí)方法來分類惡意軟件[10,11]。目前,深度學(xué)習(xí)已成為檢測(cè)惡意軟件的主流方法[12~16],該類方法使用包含多個(gè)隱含層的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)來檢測(cè)和分類惡意軟件,但在提取特征時(shí)需要更高的運(yùn)算能力和足夠的樣本。
針對(duì)小樣本的存在而導(dǎo)致分類準(zhǔn)確性低的問題,本文提出了一種基于參數(shù)優(yōu)化元學(xué)習(xí)和困難樣本挖掘的惡意軟件檢測(cè)方法。該方法通過簡(jiǎn)單淺層神經(jīng)網(wǎng)絡(luò)來提取樣本(灰度圖)特征,并使用基于參數(shù)優(yōu)化的元學(xué)習(xí)方法訓(xùn)練模型。同時(shí),為了提高模型的分類精度,使用困難樣本挖掘的方法,將分類準(zhǔn)確率低的類作為困難類,再次參與模型訓(xùn)練,使模型具有更好的泛化能力,最后進(jìn)行分類測(cè)試。
將惡意軟件可視化,進(jìn)而提取特征并用于惡意軟件分類的方法,具有直觀、有效等優(yōu)點(diǎn)受到業(yè)界的廣泛關(guān)注。惡意軟件的特征可視化的檢測(cè)方法分為基于機(jī)器學(xué)習(xí)和基于深度學(xué)習(xí)兩大類。
該類方法先將可執(zhí)行惡意軟件反編譯得到二進(jìn)制文件,進(jìn)而轉(zhuǎn)化為灰度圖,再通過提取可視化特征進(jìn)行分類。Nataraj等[9]首次提出使用灰度圖進(jìn)行惡意軟件分類。該方法先將惡意軟件的二進(jìn)制信息轉(zhuǎn)化為圖像,然后提取GIST(generalized search trees)特征,最后使用K近鄰分類技術(shù)進(jìn)行分類。該方法在包含25類的數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn),準(zhǔn)確率高達(dá)0.971 8。Makandar等[17]使用相同的特征提取方法,并且使用人工神經(jīng)網(wǎng)絡(luò)(artificial neural network,ANN)進(jìn)行分類。在8類1 719個(gè)樣本上實(shí)驗(yàn),準(zhǔn)確率為0.980 0;在24類3 131個(gè)樣本上實(shí)驗(yàn),準(zhǔn)確率為0.963 0。Narayanan等[18]使用主成分分析(principal component analysis,PCA)技術(shù)進(jìn)行特征提取,用K最近鄰分類算法,在8類10 000個(gè)樣本上進(jìn)行實(shí)驗(yàn),準(zhǔn)確率為0.960 0。上述分類方法在對(duì)惡意軟件進(jìn)行紋理分析時(shí)需要消耗大量時(shí)間。
深度學(xué)習(xí)已經(jīng)廣泛地應(yīng)用在多個(gè)領(lǐng)域,并取得了很好的效果。Kalash等[19]將惡意軟件轉(zhuǎn)化為灰度圖,并使用卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural networks,CNN)結(jié)構(gòu)的模型在數(shù)據(jù)集Malimg[9]和Microsoft Malware[20]進(jìn) 行 分 類,其 準(zhǔn) 確 率 分 別 為0.985 2和0.999 7。Tobiyama等[21]使用循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN)提取惡意軟件行為特征,再用提取的特征訓(xùn)練CNN并進(jìn)行分類。為了減少分類的錯(cuò)誤率,數(shù)據(jù)不平衡問題成為研究的重點(diǎn),Cui等[22]提出使用蝙蝠算法來處理數(shù)據(jù)不平衡,并使用CNN來分類,在25類9 339個(gè)樣本上準(zhǔn)確率為0.945 0。Rafique等[23]提出利用不同的CNN提取不同的空間特征,然后構(gòu)建一個(gè)混合的特征空間,再用支持向量機(jī)進(jìn)行分類,在BIG-2015數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn),準(zhǔn)確率為0.975 6。Vasan等[14]將二進(jìn)制執(zhí)行文件轉(zhuǎn)化為彩圖并使用數(shù)據(jù)增強(qiáng)處理數(shù)據(jù)不平衡問題,微調(diào)已經(jīng)訓(xùn)練好的CNN模型檢測(cè)和分類惡意軟件。該方法在Malimg數(shù)據(jù)集(9 435個(gè)樣本)上的準(zhǔn)確率為0.988 2。此外,在深度學(xué)習(xí)的基礎(chǔ)上,一些學(xué)者開始考慮使用遷移學(xué)習(xí)。遷移學(xué)習(xí)是先用一個(gè)帶有大量標(biāo)記的自然圖像數(shù)據(jù)集訓(xùn)練CNN去學(xué)習(xí)通用的圖像特征,然后微調(diào)該網(wǎng)絡(luò)將其應(yīng)用于惡意軟件的圖像分類。但通過遷移學(xué)習(xí)學(xué)到的特征是自然圖像的特征不是惡意圖像的特征,且網(wǎng)絡(luò)結(jié)構(gòu)比較復(fù)雜。
困難樣本是預(yù)測(cè)時(shí)與真值標(biāo)簽誤差較大的樣本,通過對(duì)困難樣本的再訓(xùn)練可使模型有更高的魯棒性和更好的分類準(zhǔn)確率。困難樣本挖掘最早是被Shrivastava等[24]提出用于目標(biāo)檢測(cè)任務(wù),而對(duì)于分類網(wǎng)絡(luò)來說就是將困難樣本加入到下一次取樣的任務(wù)中,重新去訓(xùn)練模型。本文使用基于參數(shù)優(yōu)化元學(xué)習(xí)的方法在多個(gè)任務(wù)上訓(xùn)練模型,使模型能快速學(xué)習(xí)到較好的初始化參數(shù),且在此參數(shù)的基礎(chǔ)上能快速適應(yīng)于新任務(wù)。同時(shí),為了提高模型分類準(zhǔn)確率,使用困難樣本挖掘的方法,將分類準(zhǔn)確率低的類別重新取樣再訓(xùn)練模型。本文所使用的模型簡(jiǎn)單,所需樣本量小,對(duì)于惡意軟件家族分類有良好表現(xiàn)。
本文的方法主要分為三個(gè)步驟:惡意軟件預(yù)處理,模型訓(xùn)練,模型測(cè)試。其中,所用的模型為淺層神經(jīng)網(wǎng)絡(luò),特征提取器包括四個(gè)卷積塊,每個(gè)卷積塊的卷積核數(shù)量逐漸增多;分類器為L(zhǎng)inear層。
1)生成惡意軟件圖像。圖1是將二進(jìn)制文件轉(zhuǎn)化為灰度圖的過程。轉(zhuǎn)化后所有圖像的寬度都是固定的,而高度則是根據(jù)文件的大小來確定。屬于同一家族的圖像在布局和風(fēng)格上很相似而不同的家族紋理特征明顯不同。如圖2(a)為Agent.FYI家族灰度圖,3個(gè)文件大小不同,擁有相似的紋理特征,而圖2(a)~(c)中三個(gè)不同的惡意軟件家族紋理線條是明顯不同的。比如Agent.FYI家族的上部有一個(gè)明顯的黑色區(qū)塊而其他兩個(gè)家族沒有。因此,可以將惡意軟件家族分類的問題轉(zhuǎn)化為圖像分類問題。
圖1 惡意軟件圖像生成過程Fig.1 Malware image generation process
圖2 惡意軟件家族樣本Fig.2 Malware family samples
2)惡意軟件圖像歸一化。為了數(shù)據(jù)處理的方便,也為了加快程序運(yùn)行時(shí)的收斂速度,需要利用歸一化將灰度圖調(diào)整為統(tǒng)一的尺寸,本文統(tǒng)一調(diào)整尺寸為80×80像素。歸一化不僅有利于提高網(wǎng)絡(luò)訓(xùn)練速度還降低了圖像在降維過程中丟失一些重要的特征的風(fēng)險(xiǎn)。在歸一化的過程中,惡意軟件圖像的紋理特征幾乎沒有變化。如圖3(a)所示,Lolyda.AT家族的一個(gè)變體的原始尺寸是64×385像素,經(jīng)過歸一化為80×80像素后,可以看到,其特征沒有因此而丟掉。又如圖3(b)所示,Adialer.C家族的一個(gè)變體的原始尺寸是512×410像素,經(jīng)過歸一化之后,其特征仍然保留。
圖3 惡意軟件圖像歸一化Fig.3 Malware image normalization
模型訓(xùn)練過程如圖4所示。在訓(xùn)練集上隨機(jī)抽取任務(wù),在卷積神經(jīng)網(wǎng)絡(luò)(CNN)上進(jìn)行特征提取,通過基于參數(shù)優(yōu)化的元學(xué)習(xí)訓(xùn)練模型,經(jīng)過兩次梯度下降,使模型學(xué)到初始化參數(shù)。同時(shí)在訓(xùn)練的過程中,根據(jù)分類樣本準(zhǔn)確率選擇困難樣本,將困難樣本和下一輪選擇的任務(wù)組成新的任務(wù)一起訓(xùn)練模型,直到損失函數(shù)收斂,結(jié)束模型訓(xùn)練,輸出分類結(jié)果、模型以及學(xué)習(xí)到的初始參數(shù)。
圖4 模型訓(xùn)練過程Fig.4 Model training process
1)基于參數(shù)優(yōu)化的元學(xué)習(xí)訓(xùn)練。將惡意軟件數(shù)據(jù)集按照比例劃分為訓(xùn)練集Dmetatrain和測(cè)試集Dmetatest,分別用于元學(xué)習(xí)訓(xùn)練和元測(cè)試。在元學(xué)習(xí)訓(xùn)練階段,首先,初始化模型M及其參數(shù)?;然后,從Dmetatrain中隨機(jī)取出一批任務(wù)進(jìn)行訓(xùn)練。其中,對(duì)于每個(gè)任務(wù),從已有的類別中抽取N個(gè)類,每個(gè)類隨機(jī)抽取K個(gè)樣本(共N×K個(gè)樣本)組成支持集Dsupport,再?gòu)倪@N個(gè)類別剩余的樣本中隨機(jī)抽取一批樣本作為查詢集Dquery。這樣用少量樣本構(gòu)建分類任務(wù)稱為N-wayK-shot分類問題[25]。在每個(gè)任務(wù)的Dsupport上計(jì)算參數(shù)的梯度并保存更新后參數(shù)。本文使用交叉熵?fù)p失函數(shù)來計(jì)算,計(jì)算公式如下
其中,xi和yi是從任務(wù)中取出的樣本?標(biāo)簽對(duì),f?是初始化參數(shù)為?的神經(jīng)網(wǎng)絡(luò)模型;lTi是交叉熵?fù)p失函數(shù),θ′i是第i個(gè)任務(wù)Dsupport的惡意軟件樣本計(jì)算的一次參數(shù)更新,α為學(xué)習(xí)率,?lTtr(f?(x,y))是損失函數(shù)對(duì)初始化參數(shù)的梯度。以第一次更新參數(shù)θ′i為初始參數(shù),使用Dquery中的惡意軟件樣本學(xué)習(xí)模型參數(shù),使損失函數(shù)之和最??;以第一次更新參數(shù)θ′i為模型參數(shù),以任務(wù)中惡意軟件樣本的損失函數(shù)總和為目標(biāo)函數(shù),優(yōu)化模型參數(shù)。模型參數(shù)更新方法為
其中,β為學(xué)習(xí)率,Ti為第i個(gè)任務(wù)為Dquery上的任務(wù)對(duì)初始參數(shù)的梯度,?為模型經(jīng)過訓(xùn)練更新后的參數(shù)。
2)困難樣本挖掘。在惡意軟件家族分類時(shí),存在一些分類準(zhǔn)確率較低的家族樣本,所以在訓(xùn)練模型時(shí),結(jié)合困難樣本挖掘的方法有目的地選擇訓(xùn)練樣本以提高模型的分類準(zhǔn)確率,如圖4所示。在第一次梯度下降后,根據(jù)準(zhǔn)確率這一指標(biāo)來判斷困難類,本文選擇當(dāng)前任務(wù)中準(zhǔn)確率最低的類作為困難類。當(dāng)一批任務(wù)訓(xùn)練完后,得到這批任務(wù)中的所有困難類,在進(jìn)行下一輪訓(xùn)練時(shí),就從這些類中選取樣本。這里需要注意的是:①在選擇困難類時(shí),本文根據(jù)當(dāng)前任務(wù)中準(zhǔn)確率的高低進(jìn)行排序來選擇困難類;②在選擇困難樣本時(shí),本文選擇對(duì)困難類進(jìn)行重新取樣而不是選擇當(dāng)前任務(wù)中所取的樣本。
模型微調(diào)和測(cè)試的過程如圖5所示,與訓(xùn)練的過程大致相同。模型微調(diào)和測(cè)試不同的有以下幾個(gè)方面:1)測(cè)試不再使用隨機(jī)化的初始參數(shù),而是使用在模型訓(xùn)練時(shí)學(xué)到的初始參數(shù)?的基礎(chǔ)上進(jìn)行迭代;2)在測(cè)試集Dmetatest上隨機(jī)抽取多個(gè)任務(wù),任務(wù)中的支持集Dsupport用來微調(diào)模型,查詢集Dquery用來測(cè)試模型;3)在模型微調(diào)的過程中,不再使用困難樣本挖掘;4)對(duì)最后的測(cè)試結(jié)果進(jìn)行平均,從而避免極端情況。
圖5 模型微調(diào)和測(cè)試過程Fig.5 Process of model fine-tuning and testing
使用兩個(gè)基準(zhǔn)惡意數(shù)據(jù)集Malimg數(shù)據(jù)集和BIG-2015數(shù)據(jù)集來評(píng)價(jià)本文的方法。Malimg數(shù)據(jù)集中包括25個(gè)惡意家族共9 339個(gè)惡意樣本,BIG-2015包括9個(gè)惡意家族共21 741個(gè)樣本,詳細(xì)信息如表1和表2所示。在進(jìn)行樣本分類的時(shí)候,本文采用灰度圖作為網(wǎng)絡(luò)的輸入,將BIG-2015數(shù)據(jù)集中十六進(jìn)制PE文件(portable executable)轉(zhuǎn)化為灰度圖,并且做歸一化處理。Malimg數(shù)據(jù)集原始文件提供的就是灰度圖,所以只需進(jìn)行歸一化處理即可。在Malimg數(shù)據(jù)集上使用25個(gè)類進(jìn)行訓(xùn)練和測(cè)試,將數(shù)據(jù)集中的2/3用來訓(xùn)練,1/3用來測(cè)試。元學(xué)習(xí)訓(xùn)練時(shí),每次隨機(jī)在每類取300個(gè)樣本,如果該類沒有300個(gè)樣本,則用數(shù)據(jù)增強(qiáng)方法補(bǔ)足樣本。在BIG-2015數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn)時(shí)采取和Malimg數(shù)據(jù)集相同的取樣操作。
表1 Malimg數(shù)據(jù)集Table 1 Malimg dataset
表2 BIG-2015數(shù)據(jù)集Table 2 BIG-2015 dataset
本文使用淺層神經(jīng)網(wǎng)絡(luò)作為目標(biāo)模型,如圖6所示。該模型只包含四個(gè)卷積塊和一個(gè)線性層,其中特征提取器使用四個(gè)卷積塊,每個(gè)卷積塊包括一個(gè)卷積層,一個(gè)BatchNorm層和一個(gè)ReLU非線性層,每一塊的卷積核個(gè)數(shù)逐漸增大,每個(gè)卷積塊之后是一個(gè)2×2的最大池化層(Max Pooling),用來縮小模型的尺寸,提高計(jì)算速度和所提取特征的魯棒性。分類器是一個(gè)Linear層。從模型的深度來講,本文使用的結(jié)構(gòu)只有四個(gè)卷積塊和一個(gè)Linear層;從模型的寬度來講,每個(gè)卷積塊卷積核的個(gè)數(shù)依次為6,16,32,32。所以,從模型的設(shè)計(jì)上來說模型計(jì)算量少。本文使用交叉熵?fù)p失函數(shù)(cross entropy loss),優(yōu)化器使用Adam優(yōu)化器,學(xué)習(xí)率為0.000 1,使用Pytorch框架。
圖6 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)Fig.6 Neural network structure
本文使用準(zhǔn)確率(Accuracy)、精確率(Preci?sion)、召回率(Recall)和F1值(F1-score)4個(gè)評(píng)價(jià)指標(biāo)去評(píng)價(jià)分類器的性能。這些評(píng)價(jià)指標(biāo)已被廣泛應(yīng)用在各個(gè)研究領(lǐng)域。這4個(gè)指標(biāo)的詳細(xì)計(jì)算公式如下
其中,TP指本來是正樣本,分類成正樣本,分類正確個(gè)數(shù);TN指本來是負(fù)樣本,分類成負(fù)樣本,分類正確個(gè)數(shù);FP指本來是負(fù)樣本,被分類成正樣本,分類錯(cuò)誤個(gè)數(shù);FN指本來是正樣本,被分類成負(fù)樣本,分類錯(cuò)誤個(gè)數(shù)。
元學(xué)習(xí)通過在多個(gè)任務(wù)上訓(xùn)練模型,可使模型有一個(gè)表現(xiàn)較好的初始化參數(shù)。當(dāng)新任務(wù)再進(jìn)入模型時(shí),只需簡(jiǎn)單微調(diào)就可使模型更好地適應(yīng)現(xiàn)有任務(wù)。我們通過比較以元學(xué)習(xí)的方式(隨機(jī)抽取任務(wù))訓(xùn)練模型和普通深度學(xué)習(xí)的方式(隨機(jī)抽取樣本)訓(xùn)練模型來分析元學(xué)習(xí)對(duì)分類效果的影響。在Malimg數(shù)據(jù)集上進(jìn)行以下的實(shí)驗(yàn):
1)5-way 1-shot分類(簡(jiǎn)稱5分類)。每類隨機(jī)取1個(gè)樣本,有5類,則支持集有5個(gè)樣本;查詢集隨機(jī)取15個(gè)樣本,則共有75個(gè)樣本。這樣一個(gè)任務(wù)共有80個(gè)樣本,每次取16個(gè)任務(wù)進(jìn)行訓(xùn)練和測(cè)試。
2)20-way 1-shot分類(簡(jiǎn)稱20分類)。每類隨機(jī)取1個(gè)樣本,有20類,則支持集有20個(gè)樣本。每類隨機(jī)取15個(gè)樣本,則查詢集有300個(gè)樣本,一個(gè)任務(wù)共有320個(gè)樣本,每次取8個(gè)任務(wù)進(jìn)行訓(xùn)練和測(cè)試。
3)25-way 5-shot分類(簡(jiǎn)稱25分類)。每類隨機(jī)取5個(gè)樣本,有25類,則支持集有125個(gè)樣本;每類隨機(jī)取15個(gè)樣本,則查詢集共有375個(gè)樣本,一個(gè)任務(wù)共有500個(gè)樣本,每次取8個(gè)任務(wù)進(jìn)行訓(xùn)練和測(cè)試。
在BIG-2015數(shù)據(jù)集上進(jìn)行了9-way 5-shot分類(簡(jiǎn)稱9分類)。每類隨機(jī)取5個(gè)樣本,有9類,則支持集有45個(gè)樣本,每類隨機(jī)取10個(gè)樣本,則查詢集有90個(gè)樣本,一個(gè)任務(wù)有135個(gè)樣本,每次隨機(jī)取15個(gè)任務(wù)進(jìn)行模型的訓(xùn)練和測(cè)試。
圖7所示(a)~(c)分別是在Malimg數(shù)據(jù)集上進(jìn)5分類、20分類和25分類的實(shí)驗(yàn)結(jié)果。其中,CNN是指只使用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行分類的結(jié)果,CNN+Meta Learning是指在卷積神經(jīng)網(wǎng)絡(luò)上使用元學(xué)習(xí)訓(xùn)練模型。在沒有使用元學(xué)習(xí)的情況下,5分類平均分類準(zhǔn)確率為0.966 7,20分類的平均分類準(zhǔn)確率為0.972 3,25分類的平均分類準(zhǔn)確率為0.874 4。從圖7中的(a)~(c)可看出,CNN+Meta Learning的分類準(zhǔn)確率更高??梢姡迷獙W(xué)習(xí)的方法能夠提高模型的分類性能。在BIG-2015數(shù)據(jù)集上進(jìn)行同樣實(shí)驗(yàn),取樣的過程和Malimg數(shù)據(jù)集一樣,實(shí)驗(yàn)結(jié)果如圖7(d)(e)所示。進(jìn)行多次試驗(yàn),取模型的平均準(zhǔn)確率,5分類的平均準(zhǔn)確率為0.962 7,9分類的平均準(zhǔn)確率為0.966 1,CNN+Meta Learning模型的分類性能也高于CNN。這是因?yàn)樵獙W(xué)習(xí)是基于任務(wù)進(jìn)行模型訓(xùn)練,通過在多個(gè)任務(wù)上學(xué)習(xí)找到一個(gè)較好的初始值,然后在該初始值的基礎(chǔ)上,再通過少量任務(wù)的訓(xùn)練,使模型具有更好的效果。
圖7 兩種數(shù)據(jù)集上元學(xué)習(xí)對(duì)分類準(zhǔn)確率的影響Fig.7 Effect of meta-learning on classification accuracy on two dataset
3.4節(jié)只使用元學(xué)習(xí)進(jìn)行模型訓(xùn)練,元訓(xùn)練批次是由隨機(jī)抽樣的任務(wù)組成的。當(dāng)在元學(xué)習(xí)基礎(chǔ)上結(jié)合困難樣本挖掘方法訓(xùn)練模型時(shí),任務(wù)由分類準(zhǔn)確率低的樣本和隨機(jī)抽樣的樣本共同構(gòu)成。由于5分類和20分類的準(zhǔn)確率已經(jīng)非常高,利用困難樣本挖掘的方法對(duì)分類準(zhǔn)確率的影響不明顯,所以這里重點(diǎn)討論該方法對(duì)Malimg數(shù)據(jù)集上25分類和BIG-2015數(shù)據(jù)集上9分類的影響。實(shí)驗(yàn)結(jié)果如圖8所示,其中Meta Learning是指只使用元學(xué)習(xí)訓(xùn)練模型,CL+Meta Learning是指在卷積神經(jīng)網(wǎng)絡(luò)上既使用元學(xué)習(xí)又使用困難樣本訓(xùn)練模型。圖8(a)是在BIG-2015數(shù)據(jù)集上9分類的準(zhǔn)確率;圖8(b)是在Malimg數(shù)據(jù)集上進(jìn)行25分類的準(zhǔn)確率??梢钥吹皆谶@兩種數(shù)據(jù)集上,CL+Meta Learning都比Meta Learning的分類性能好。
圖8 困難樣本的選擇對(duì)模型分類結(jié)果的影響Fig.8 Effect of the selection of hard samples on the classification results of the model
圖9是在BIG-2015數(shù)據(jù)集上進(jìn)行5類、9類,在Malimg數(shù)據(jù)集上進(jìn)行5類、20類、25類分類時(shí)的損失。可以看到隨著訓(xùn)練epoch的增加損失值逐漸減小并趨于穩(wěn)定。
圖9 兩個(gè)數(shù)據(jù)集上進(jìn)行不同分類時(shí)的損失Fig.9 The loss for different classifications on two datasets
為了驗(yàn)證方法的有效性,將本文提出的方法與傳統(tǒng)的機(jī)器學(xué)習(xí)方法[9,23]以及最近提出的基于圖像的深度學(xué)習(xí)方法[13,22,26]進(jìn)行比較,結(jié)果如表3所示。
從表3中可以看到,本文提出的方法分類準(zhǔn)確率和分類精準(zhǔn)率均高于文獻(xiàn)已有值。Nataraj等[9]將二進(jìn)制文轉(zhuǎn)化為灰度圖,然后通過機(jī)器學(xué)習(xí)方法提取GIST特征,最后使用KNN進(jìn)行分類。Rafique等[23]提出利用不同的CNN去提取不同的特征空間特征,然后構(gòu)建一個(gè)混合的特征空間,再用支持向量機(jī)進(jìn)行分類。這些傳統(tǒng)的機(jī)器學(xué)習(xí)方法大多數(shù)都是基于紋理相似度來提取特征,而提取惡意圖像復(fù)雜的紋理特征需要耗費(fèi)大量的計(jì)算量。所以在大數(shù)據(jù)集的處理上,這種方法需要耗費(fèi)大量的時(shí)間。Cui等[22]用BAT(蝙蝠)算法解決數(shù)據(jù)不平衡的問題來提高模型的性能,但該算法需要大量時(shí)間來生成樣本。Vasan等[13]提出IMCFN微調(diào)CNN去分類惡意軟件并提出使用數(shù)據(jù)增強(qiáng)解決數(shù)據(jù)不平衡問題。Finn等[26]將預(yù)訓(xùn)練好的模型進(jìn)行微調(diào),并使用下采樣的方法解決數(shù)據(jù)不平衡問題,這種方法會(huì)造成大量數(shù)據(jù)的浪費(fèi)和丟失。相比以上方法,本文提出的基于參數(shù)優(yōu)化元學(xué)習(xí)惡意軟件檢測(cè)方法,通過抽取不同的任務(wù)訓(xùn)練模型使其能夠?qū)W習(xí)到較好的初始參數(shù),并且在該參數(shù)的基礎(chǔ)上,新任務(wù)只需經(jīng)過少量的迭代就可以快速的適應(yīng)。不同于文獻(xiàn)[9,13,22,23,26]是基于大量的樣本來訓(xùn)練模型,本文是基于少量樣本多任務(wù)的基礎(chǔ)上去訓(xùn)練模型,可以避免數(shù)據(jù)不平衡問題。同時(shí)結(jié)合困難樣本挖掘方法來再訓(xùn)練模型,所以淺層網(wǎng)絡(luò)就可得到很高的準(zhǔn)確度。
表3 不同分類方法的比較Table 3 Comparison of different classification methods
為有效減小惡意軟件及其變種對(duì)已有網(wǎng)絡(luò)應(yīng)用的破壞并解決因小樣本的存在導(dǎo)致分類準(zhǔn)確性低的問題,本文提出了一個(gè)基于參數(shù)優(yōu)化元學(xué)習(xí)和困難樣本挖掘的惡意軟件分類方法。首先,使用了淺層神經(jīng)網(wǎng)絡(luò)模型,其結(jié)構(gòu)簡(jiǎn)單,計(jì)算成本少,而且不需要任何的特征工程知識(shí);其次,訓(xùn)練網(wǎng)絡(luò)模型,采用的是基于元學(xué)習(xí)的方式,通過多個(gè)任務(wù)訓(xùn)練模型;同時(shí),對(duì)于分類準(zhǔn)確率低的類,提出使用困難樣本挖掘的方法重新采樣再訓(xùn)練網(wǎng)絡(luò)模型;最后,在兩個(gè)惡意軟件數(shù)據(jù)集上進(jìn)行大量的實(shí)驗(yàn)。結(jié)果顯示本文提出的惡意軟件家族分類方法,優(yōu)于已有算法。后續(xù)工作中,將在改進(jìn)元學(xué)習(xí)方法的同時(shí)改進(jìn)神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu),提高模型的分類性能。