楊春雨,徐 洋,張思聰,李小劍
貴州師范大學貴州省信息與計算科學重點實驗室,貴州 貴陽 550001
近年來,互聯(lián)網(wǎng)的發(fā)展極大地推動了國家和社會發(fā)展,但也產(chǎn)生了許多網(wǎng)絡(luò)安全問題,各種形式的網(wǎng)絡(luò)犯罪頻頻發(fā)生,新型網(wǎng)絡(luò)攻擊方式和惡意軟件呈指數(shù)級增長。根據(jù)國家互聯(lián)網(wǎng)應(yīng)急中心發(fā)布的《2020年中國互聯(lián)網(wǎng)網(wǎng)絡(luò)安全報告》[1]可知,2020年捕獲的惡意程序總量超過4 200萬個,涉及約34.8萬個惡意程序家族,境內(nèi)被攻擊的IP數(shù)約占我國IP總數(shù)的14.2%,約有531萬臺主機被境外的5.2萬個左右惡意程序服務(wù)器控制。惡意軟件給國家和社會帶來了極大的危害。
傳統(tǒng)的惡意軟件識別方法是通過簽名來識別惡意軟件的。但是該方法完全依賴于數(shù)據(jù)庫的容量,無法應(yīng)對新型惡意軟件。新型惡意軟件通過簡單的冗余代碼插入,就能逃避傳統(tǒng)檢測技術(shù)[2,3]。機器學習和深度學習的出現(xiàn)很好地解決了這類問題。這兩種技術(shù)能夠自動學習已有特征中存在的模式,利用模式對未知特征進行預測。因此,國內(nèi)外許多研究專注于提高機器學習或者深度學習的模型性能和特征的有效性。
惡意軟件分析方法主要可以分為靜態(tài)方法、動態(tài)方法、動靜混合方法。近年來,對惡意軟件的靜態(tài)分析取得了很多成果。研究者們通過數(shù)據(jù)挖掘技術(shù)發(fā)現(xiàn)了惡意軟件的許多靜態(tài)特征,如PE(porta?ble executable)特征,反編譯文件中包含的段和Opcode特征,惡意軟件的字節(jié)特征和灰度圖像特征等。其中,惡意軟件的灰度圖像特征是一種靜態(tài)特征,自2011年提出后被廣泛應(yīng)用到惡意軟件的各種研究中。2018年,F(xiàn)u等[4]將PE文件中的段信息結(jié)合原始字節(jié)流生成惡意軟件的RGB圖像,然后提取RGB圖像的灰階共生矩陣(gray-level co-occur?rence matrix)和顏色矩(color moments)作為惡意軟件的全局紋理特征,再融合惡意軟件的局部特征使用機器學習算法對惡意軟件進行分類。2019年,任卓君等[5]提取惡意軟件字節(jié)Bigram,并將字節(jié)Big?ram轉(zhuǎn)化成灰度圖像,使用字節(jié)Bigram圖像對Kag?gle惡意軟件數(shù)據(jù)集的分類準確率達到98.45%。孫博文等[6]提取惡意軟件原始字節(jié)流、字符信息和樣本的PE信息,分別填充圖像的3個通道生成惡意軟件的RGB圖像。王博等[7]提取惡意軟件原始字節(jié)流,將原始字節(jié)流生成惡意軟件的RGB圖像,對Malimg惡意軟件數(shù)據(jù)集進行分類,準確率達到96.16%。
在以上研究中,F(xiàn)u等[4]的方法存在不能直接對RGB圖像進行分類、需要額外時間用于圖像特征提取、PE文件中分段和合并復雜等問題。任卓君等[5]、孫博文等[6]、王博等[7]的分類方法存在模型參數(shù)量大、訓練時間長、未考慮到調(diào)參開銷等問題,且文獻[5,7]使用的是單一類型特征構(gòu)成的惡意軟件三通道圖像,易受到混淆技術(shù)的影響。
針對上述問題,本文將惡意軟件反編譯生成Lst反編譯文件,收集惡意軟件字節(jié)Bigram,并對傳統(tǒng)惡意軟件圖像表示方法進行改進,將惡意軟件、字節(jié)Bigram、Lst文件使用Bin2Pixel算法生成3種灰度圖像,組合成三通道彩色圖像進行分類,使彩色圖像相比單通道圖像包含更多的信息。在訓練階段,使用EfficientNet模型結(jié)合遷移學習中的微調(diào)技術(shù)對惡意軟件圖像進行訓練,通過微調(diào),大幅加快EfficientNet的收斂速度,提高EfficientNet對本文惡意軟件數(shù)據(jù)集的泛化能力。
本文對傳統(tǒng)的惡意軟件圖像化進行了改進。首先生成惡意軟件、字節(jié)Bigram、Lst文件3種不同類型的惡意軟件灰度圖像,再將3種灰度圖像合成惡意軟件的三通道彩色圖像,提高惡意軟件圖像包含的信息量。在訓練階段引入微調(diào)技術(shù),再進行訓練,達到縮短模型收斂時間,提高分類準確率的效果。
圖1所示為三通道圖像的生成過程。首先提取惡意軟件的字節(jié)流,然后收集字節(jié)Bigram并使用下列公式
圖1 三通道圖像生成過程Fig.1 Three-channel image generation process
標準化到[0,255]范圍。其中,X是原始字節(jié)Bigram,Xnew是標準化后的字節(jié)Bigram。雖然單純的字節(jié)Bigram并不表達特殊的意思,但是根據(jù)同一惡意軟件家族具有代碼和數(shù)據(jù)相似性的特點可知,從同一家族提取的字節(jié)Bigram也應(yīng)該存在一定的相似性。
然后,使用IDA_Pro反編譯原始惡意軟件后生成Lst文件。Lst文件包含了每一行匯編代碼的段信息。Lst文件的內(nèi)容如圖2所示,每一行內(nèi)容顯示了段、地址、匯編代碼、寄存器、數(shù)據(jù)以及關(guān)鍵字等信息。其中,.bss段包含的是初始化為0的變量或者未初始化的變量,.text和.code是代碼段,.rsrc是資源數(shù)據(jù)段,.tls是線程本地存儲段;push是數(shù)據(jù)操作匯編指令,inc是算數(shù)/邏輯匯編指令,eax是通用寄存器。
圖2 Lst文件內(nèi)容Fig.2 Content of Lst file
再將惡意軟件、字節(jié)Bigram、Lst文件使用Bin2Pixel算法轉(zhuǎn)化成灰度圖像。Bin2Pixel算法是Nataraj等[8]在2011年提出來的一種將惡意軟件圖像化的算法。該算法能夠根據(jù)惡意軟件的大小將其轉(zhuǎn)化成不同尺寸的灰度圖像,其偽代碼如Algorithm1所示,其過程是將目標文件以二進制形式打開,以8位二進制數(shù)為一個無符號整數(shù)作為一個像素點,像素點值的范圍是[0,255]。樣本參考width_Dict的key設(shè)定圖像初始寬度,圖像高度根據(jù)樣本大小自適應(yīng),將樣本轉(zhuǎn)化成灰度圖。最后,將3種類型的灰度圖像統(tǒng)一縮放到224×224像素。
?
惡意軟件、字節(jié)Bigram、Lst文件灰度圖像如圖3~5所示。圖3(a)中virut家族灰度圖像有比較清晰的層次結(jié)構(gòu),圖3(b)中virlock家族灰度圖像則是偏向于馬賽克形狀的結(jié)構(gòu)。圖4中字節(jié)Bigram灰度圖像大多數(shù)區(qū)域呈現(xiàn)出黑色。圖4(a)中virut家族的灰度圖像紋理主要是分布比較散的白色和灰色點,圖4(b)中virlock家族灰度圖像的紋理是在右下角有十字交叉的兩根白線。分析圖4的灰度圖像紋理較少原因,初步判斷是由于不同字節(jié)Bigram特征相差較大,使得將字節(jié)Bigram標準化到[0,255]范圍時大多數(shù)值很小,導致字節(jié)Bigram灰度圖像的大多數(shù)區(qū)域呈現(xiàn)黑色。圖5(a)中virut家族灰度圖像有明顯的豎狀黑白相間紋理,圖5(b)中virlock家族灰度圖像有波浪線形狀的黑白相間紋理。圖3惡意軟件的灰度圖像具有更好的結(jié)構(gòu)特征,是因為惡意軟件的二進制流更能夠體現(xiàn)樣本的原始結(jié)構(gòu),而圖5中Lst文件灰度圖像包含大量格式化的數(shù)據(jù),導致灰度圖像由一些重復的紋理構(gòu)成。
圖3 惡意軟件灰度圖像Fig.3 Grayscale image of malware
圖4 惡意軟件字節(jié)Bigram灰度圖像Fig.4 Grayscale image of malware bytes bigram
圖5 惡意軟件Lst文件灰度圖像Fig.5 Grayscale image of malware Lst file
本文屬于靜態(tài)分析,使用單一類型特征往往容易受到混淆和攻擊,通常需要結(jié)合多特征進行分類。因此,將圖3~5中3種灰度圖像合并,使用惡意軟件灰度圖像填充紅色通道,字節(jié)Bigram灰度圖像填充綠色通道,Lst文件灰度圖像填充藍色通道,組成三通道圖像,效果如圖6所示。其中,紅色通道包含惡意軟件灰度圖像的紋理,綠色通道包含字節(jié)Bigram灰度圖像的紋理,藍色通道包含Lst文件灰度圖像的紋理。
圖6 惡意軟件三通道圖像Fig.6 Malware three-channel image
圖7所示為本文模型的訓練過程,首先從惡意軟件、Lst文件、字節(jié)Bigram灰度圖像和彩色圖像中選擇一個作為惡意軟件數(shù)據(jù)集,對EfficientNet模型進行預訓練或者微調(diào)訓練,得到惡意軟件圖像分類模型。微調(diào)時,EfficientNet模型加載其在ImageNet數(shù)據(jù)集已經(jīng)訓練好的權(quán)重,再進行訓練。微調(diào)是遷移學習實現(xiàn)的一種方式,該方式使模型首先加載在其他數(shù)據(jù)集上訓練好的權(quán)重,再進行訓練,能夠幫助模型在較短周期內(nèi)適應(yīng)新的數(shù)據(jù)[9,10],使模型能夠輸出理想的結(jié)果。獲得權(quán)重的方式通常有兩種,一種是模型在ImageNet數(shù)據(jù)集上采用Noisy Student訓練[11]得到,另一種方式是在該數(shù)據(jù)上通過預訓練得到。微調(diào)比預訓練具有在最少的Epoch內(nèi)收斂、對小型數(shù)據(jù)集非常友好的優(yōu)點。
圖7 模型的訓練過程Fig.7 Training process of the model
EfficientNet[12]是2019年由Google提出來的新型神經(jīng)網(wǎng)絡(luò)模型,依據(jù)網(wǎng)絡(luò)規(guī)模可以分為B0~B7版本(以下用B0~B7代表EfficientNet的7個版本)。該模型在遙感、生物、醫(yī)學方面都得到了很好的應(yīng)用[13~15]。
本文運用遷移學習中的微調(diào)技術(shù)對Efficient?Net模型進行改造,將其全連接層的輸出改為20,表示惡意軟件數(shù)據(jù)集家族種類數(shù),輸入圖像分辨率固定為224×224×3像素。改造后分類效果最好的EfficientNetB0模型結(jié)構(gòu)如圖8所示。其結(jié)構(gòu)主要由MBConv[16](mobile inverted bottleneck conv)組成,MBConv后面的數(shù)字代表每個模塊一開始對輸入卷積時的圖像通道擴張倍數(shù)以及Depthwise的卷積核大小。圖像經(jīng)過一系列的MBConv、卷積、池化操作,最后輸出圖像屬于每一類的概率。
圖8 改造后的EfficientNetB0模型的結(jié)構(gòu)Fig.8 Structure of the modified EfficientNetB0 model
本文實驗數(shù)據(jù)集下載自Virustotal,主要包含2019年收集的32位Windows平臺下擴展名為EXE的惡意軟件樣本和Virustotal對樣本的Json報告。惡意軟件的名字是其Sha256值,共計35 552個。采用AVClass工具結(jié)合Json報告為惡意軟件標記。篩選出20個惡意軟件家族的16 439個樣本和Json報告作為本文的數(shù)據(jù)集。惡意軟件的分布如圖9所示。
圖9 惡意軟件家族分布Fig.9 Malware family distribution
由于B4以上模型規(guī)模,更大分類性能并未變得更好,且隨著這些模型的深度和寬度遞增,訓練的計算、內(nèi)存、時間開銷遞增,因此選取B0、B1、B2、B3四種深度學習模型。訓練集和測試集的比例為7∶3,設(shè)置stratify參數(shù)為true,使測試集和訓練集的各類數(shù)據(jù)之間的比例保持不變,設(shè)Epoch為20。實驗電腦的配置:CPU為i710700K,GPU為2080Ti。
惡意軟件、字節(jié)Bigram、Lst文件灰度圖像和彩色圖像在實驗結(jié)果討論中分別用Ori、Bigram、Lst、Fusion表示。EfficientNet的B0版本在Lst上運行的模型命名為B0-lst,如使用ImageNet數(shù)據(jù)集預訓練的權(quán)重,簡稱ImageNet微調(diào),模型命名為B0-ima?genetlst,其他命名類似。
如表1所示,在預訓練下,模型使用隨機初始化的權(quán)重進行訓練,B0模型使用Lst數(shù)據(jù),準確率、F1值、召回率、精確率均達到最高值。出現(xiàn)這種單通道圖像分類效果優(yōu)于三通道圖像的情況,推斷是由于在預訓練下,模型在較短Epoch內(nèi)不能較好地學習字節(jié)Bigram圖像特征和三通道所包含的三倍特征所造成的。
表1 3種訓練方式、4種數(shù)據(jù)、4種模型的結(jié)果Table 1 Results of 3 types of tr aining methods,4 types of data,4 types of model%
在ImageNet微調(diào)方式下,B0模型使用Fusion數(shù)據(jù),準確率、F1值、精確率均達到最高值;B1模型使用Ori數(shù)據(jù)達到最高召回率96.81%。B0模型最高準確率97.22%相較預訓練的94.36%提升了2.86%。這說明從ImageNet數(shù)據(jù)集學習的知識能夠很好地遷移并應(yīng)用到本文的數(shù)據(jù)集,且通過微調(diào)模型能夠使訓練過程快速收斂。
在Noisy Student微調(diào)方式下,B3模型使用Fusion數(shù)據(jù),準確率、F1值、召回率、精確率均達到最高值。雖然Noisy Student微調(diào)的最高準確率97.20%相比ImageNet微調(diào)97.22%略低,模型B3相比ImageNet微調(diào)模型B0規(guī)模大,計算、內(nèi)存、時間開銷也大,但是前者召回率和F1值比ImageNet微調(diào)略高,且在Noisy Student微調(diào)方式下使用Lst數(shù)據(jù)和Bigram數(shù)據(jù)的4種指標均高于ImageNet微調(diào)。這從另一個角度說明,雖然Noisy Student微調(diào)沒有ImageNet微調(diào)準確率好,但是Noisy Student微調(diào)在ImageNet微調(diào)效果不好的數(shù)據(jù)集上魯棒性更好。因此,Noisy Student微調(diào)使模型具有更強的魯棒性以及對部分數(shù)據(jù)具有更強的泛化能力。
綜上所述,3種訓練方式下最好的3種模型是B0-lst、B0-imagenetfusion、B3-studentfusion。
將B0-lst、B0-imagenetfusion、B3-studentfusion模型分別用于20種惡意家族軟件的分類,精確率、召回率、F1值指標結(jié)果如圖10所示。圖10中的橫坐標對應(yīng)20種惡意軟件,從0開始到19??梢钥闯觯瑢τ诿恳环N指標,整體來看B0-imagenetfusion和B3-studentfusion兩種微調(diào)曲線位于預訓練曲線B0-lst的上方。B0-imagenetfusion模型分類的精確率和召回率達到100%的家族數(shù)均為7個,F(xiàn)1值達到100%的家族數(shù)為5個,而B3-studentfusion模型分類的精確率、召回率、F1值達到100%的分別為5個、7個、3個;B0-imagenetfusion和B3-studentfusion模型的訓練時間分別是1 628 s和3 248 s,B0-ima?genetfusion節(jié)省了近一半的時間;且B3-studentfu?sion模型的參數(shù)量大于B0-imagenetfusion模型。所以,對20種惡意家族軟件分類取得最好效果的是B0-imagenetfusion模型。上述結(jié)果還說明,微調(diào)能夠很好地利用已有的圖像分類“知識”,使模型快速適應(yīng)新的圖像數(shù)據(jù)集,達到最好的效果。
圖10 3種模型的精確率、召回率、F1值Fig.10 Precision,recall,F1 value of the three models
圖11是3個模型在20個Epoch內(nèi)的訓練準確率??梢钥闯?,在第0 Epoch的時候B0-imagenetfu?sion和B3-studentfusion兩種微調(diào)模型的訓練準確率分別達到了87.54%和84.22%,大幅高于預訓練模型B0-lst準確率53.90%。圖12則是訓練的損失曲線,在第0 Epoch的時候B0-imagenetfusion和B3-studentfusion兩種微調(diào)模型的訓練損失分別為0.432 3和0.567 6,低于預訓練的2.105 1??梢钥闯?,20個Epoch中微調(diào)的準確率曲線一直位于預訓練之上,而微調(diào)的損失曲線一直位于預訓練之下。從圖11和圖12還可以看出微調(diào)曲線在3個Epoch后都趨于平滑,而預訓練則至少在5個Epoch后曲線才趨于平滑。因此,3種模型中訓練效果最好的是B0-imagenetfusion模型。
圖11 3種模型的訓練準確率Fig.11 T raining accuracy of the three models
圖12 3種模型的訓練損失Fig.12 Training loss of the three models
由上述實驗結(jié)果可知準確率最高的是使用ImageNet微調(diào)的B0-imagenetfusion達到的97.22%,因此在對比微調(diào)效果的時候選取其他模型使用ImageNet微調(diào)進行對比。表2是B0-imagenetfusion和B0-fusion與其他常用6種模型在ImageNet微調(diào)和預訓練的對比。在預訓練方式下,分類效果最好是Xception而非B0-fusion,Xception的準確率、F1值、召回率、精確率均達到最高。在ImageNet微調(diào)方式下,B0-imagenetfusion、ResNet50[17]、ResNet152[17]、Xception[18]、InceptionV 3[19]、MobileNet[20]準確率較預訓練分別提高了3.83%、2.15%、3.89%、0.22%、1.63%、0.59%,增幅最大的是ResNet152(3.89%)。在預訓練中準確率最低的B0-fusion通過ImageNet微調(diào)取得了最高的準確率。但在VGG16模型[21]上出現(xiàn)了反常的情況,微調(diào)后它的準確率僅為14.96%,說明該模型不適合在惡意軟件數(shù)據(jù)上進行微調(diào)。精確率最高的模型是B0-imagenetfusion,達到96.46%,召回率和F1值最高的模型是ResNet152,分別達到97.10%和96.59%;除VGG16以外的所有模型的準確率均大于等于96.80%,最高的是B0-imagenetfusion的97.22%。
表2 在Fusion上不同模型對比Table 2 Comparison of different models on fusion%
綜上所述,在ImageNet微調(diào)方式下,B0-image?netfusion達到了最好的分類效果。
表3是B0-imagenetfusion和6種模型的訓練時間、參數(shù)量、浮點運算數(shù)(floating point operations,F(xiàn)LOPs)的對比。
表3 不同模型的性能對比Table 3 Perfor mance comparison of differ ent models
參數(shù)量是模型尺寸的一種體現(xiàn),可以看出B0-imagenetfusion的參數(shù)量是4.06 M個,在7種模型中數(shù)量較少,而參數(shù)量最多的是VGG16,達到了134.34 M個。在FLOPs上,B0-imagenetfusion在7種模型中最低,為702.64 M次,最高值出現(xiàn)在VGG16模型,為30 938.62 M次。在訓練時間上,B0-imagenetfusion的訓練時間高于MobileNet在預訓練方式下最低的976 s,但是B0-imagenetfusion的最高準確率比MobileNet高出0.34%(表2)。
表4是本文提取的RGB圖像與文獻[4]、[7]中的RGB圖像分類效果的對比。實驗顯示,在預訓練方式下Fusion和Bytes的準確率均達到93.39%,F(xiàn)usion的F1值、召回率、精確率均達到最高值;在ImageNet微調(diào)方式下,3種圖像的分類準確率分別得到了3.83%、5.10%,3.75%的提升,且Fusion的準確率和精確率達到了最高的97.22%和96.46%。Bytes在ImageNet微調(diào)方式下的F1值和召回率分別達到最高的96.58%、97.00%。結(jié)果表明,本文提取圖像的方法是有效的,ImageNet微調(diào)對惡意軟件圖像分類有提升作用。
表4 不同RGB圖像對比Table 4 Compar ison of different RGB images%
本文針對傳統(tǒng)惡意軟件采用圖像分類方法準確率不高、抗混淆能力弱、模型訓練收斂慢的缺點,提出對惡意軟件圖像的改進方法。首先生成惡意軟件、字節(jié)Bigram、Lst文件3種不同類型的灰度圖像,再使用3種不同類型的單通道灰度圖像分別填充圖像的紅、綠、藍通道生成新的惡意軟件彩色圖像。然后,使用遷移學習中的微調(diào)技術(shù)通過已有的ImageNet數(shù)據(jù)集分類權(quán)重加快EfficientNet在惡意軟件圖像上訓練的收斂速度,加強其惡意軟件分類的泛化能力。實驗結(jié)果顯示,微調(diào)后的EfficientNet對20種惡意軟件的三通道圖像分類準確率達到97.22%,同時收斂速度加快,體現(xiàn)了微調(diào)和惡意軟件彩色圖像的有效性。
本文在實驗中發(fā)現(xiàn),效果最好的B0-imagenet?fusion模型對hematite家族惡意軟件的精確率只有74.19%,召回率只有89.15%,F(xiàn)1值只有80.99%。我們分析造成這種結(jié)果的原因可能為該家族的變種數(shù)太多,而本文對該家族數(shù)據(jù)樣本的采集數(shù)量不足,導致模型不能學習到該家族全部變種的特征。未來會收集更多該家族樣本驗證我們的推斷。雖然用靜態(tài)特征進行分析本文已取得了很好的分類效果,但靜態(tài)特征并不能完全體現(xiàn)出惡意軟件的真實意圖和全部行為,未來將采用動靜結(jié)合的分類方法,發(fā)揮靜態(tài)方法和動態(tài)方法的優(yōu)點,把惡意軟件彩色圖像與動態(tài)特征融合,進一步提升整體分類效果。