邱曉蕾,張紅梅,嚴(yán)海兵
(桂林電子科技大學(xué)信息與通信學(xué)院,廣西 桂林541004)
邊緣設(shè)備由于資源受限、安全防護(hù)薄弱容易成為黑客的攻擊目標(biāo),其安全威脅日益嚴(yán)重。惡意軟件檢測(cè)是信息系統(tǒng)安全防護(hù)的重要手段,研究邊緣設(shè)備上的惡意軟件檢測(cè)有著重要的現(xiàn)實(shí)意義。
研究人員發(fā)現(xiàn)程序的結(jié)構(gòu)相似性可以體現(xiàn)在程序可視化后的圖片相似性,因而將可視化思想融合進(jìn)惡意軟件的檢測(cè)和分類。Nataraj等[1]首次提出將惡意軟件二進(jìn)制字節(jié)轉(zhuǎn)變成圖片,再通過(guò)圖像分類技術(shù)實(shí)現(xiàn)惡意軟件分類??梢暬椒ㄗ畛踔饕墙Y(jié)合SVM(支持向量機(jī))[2]、KNN(K近鄰)[3]等機(jī)器學(xué)習(xí)方法對(duì)惡意代碼進(jìn)行分類,但是基于機(jī)器學(xué)習(xí)的方法主要通過(guò)人工提取特征,這個(gè)過(guò)程耗時(shí)且費(fèi)力。而深度學(xué)習(xí)方法則能夠自動(dòng)提取特征,同時(shí)也可以提高對(duì)惡意軟件的分類能力。文獻(xiàn)[4]使用深度學(xué)習(xí)比傳統(tǒng)的機(jī)器學(xué)習(xí)SVM、KNN的分類精確度均有所提高。
近年來(lái),卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)被廣泛應(yīng)用于惡意代碼檢測(cè),但是隨著CNN的深度和廣度不斷加深其網(wǎng)絡(luò)結(jié)構(gòu)愈加復(fù)雜。文獻(xiàn)[5]展示了由于GoogleNet和ResNet的網(wǎng)絡(luò)結(jié)構(gòu)不斷加深,使得模型的計(jì)算量和參數(shù)量大大增加,使得深度網(wǎng)絡(luò)很難應(yīng)用在資源受限的邊緣設(shè)備上。
為了解決CNN網(wǎng)絡(luò)中參數(shù)量過(guò)多和計(jì)算量過(guò)大的問(wèn)題,曾[6]等人提出一種輕量級(jí)的神經(jīng)網(wǎng)絡(luò)模型。然而,輕量級(jí)模型的可擴(kuò)展性和集成性較弱,泛化性也較弱[7]。而深度模型壓縮方法可以在不過(guò)多損失精度的情況下,降低對(duì)設(shè)備資源的需求。當(dāng)前主要的模型壓縮方法有網(wǎng)絡(luò)剪枝[8]、低秩分解[9]、網(wǎng)絡(luò)量化[10]和緊湊網(wǎng)絡(luò)設(shè)計(jì)[11]四大類,其中量化方法是目前最直接有效的方法,通過(guò)對(duì)網(wǎng)絡(luò)中參數(shù)進(jìn)行低秩量化,減小網(wǎng)絡(luò)所需的存儲(chǔ)空間,加快運(yùn)算速度[7]。Courbariaux等[12]發(fā)表了BNN(BinaryNeuralNetworks,二值化神經(jīng)網(wǎng)絡(luò))方法,該方法將卷積運(yùn)算轉(zhuǎn)換為同或和位運(yùn)算,轉(zhuǎn)換方式是將浮點(diǎn)型權(quán)重和輸入都量化為+1和-1,毫無(wú)疑問(wèn)這種方法會(huì)較大程度的壓縮并加速了深度網(wǎng)絡(luò)的運(yùn)算,同時(shí)也會(huì)產(chǎn)生嚴(yán)重的精度損失。XNOR-Net算法[13]通過(guò)重建具有單個(gè)比例因子的全精度濾波器,在精度損失較低的情況下,有效地實(shí)現(xiàn)卷積運(yùn)算。2021年,張[14]等發(fā)表HBF-Net(Half-wareGaussianQuantization+BinaryWeightNetworks+Fine-tune Net,半波高斯量化器+二值化權(quán)重網(wǎng)絡(luò)+微調(diào))算法,該方法在精度損失較小的情況下,實(shí)現(xiàn)了理論上30倍的模型壓縮。
基于此,本文結(jié)合HBF-Net方法構(gòu)建了基于量化的VGG(CNN經(jīng)典模型之一)惡意軟件家族分類模型HBF-VGG14-Net,保證精度近乎不損失的情況下,該方法實(shí)現(xiàn)了模型內(nèi)存占用更小,同時(shí)還保證了訓(xùn)練得以加速。
基于量化的VGG14惡意代碼檢測(cè)模型,以惡意代碼的紋理特征為分析對(duì)象,其過(guò)程如圖1所示。
圖1 基于可視化的惡意軟件檢測(cè)方法的流程圖
主要分為5個(gè)部分:①數(shù)據(jù)集可視化,將惡意代碼的APK文件反匯編為二進(jìn)制.bytes文件,將其可視化為灰度圖片,獲得對(duì)應(yīng)的圖片格式數(shù)據(jù)集;②對(duì)數(shù)據(jù)集進(jìn)行預(yù)處理,以適應(yīng)量化后的VGG模型,主要對(duì)數(shù)據(jù)集進(jìn)行了縮放和擴(kuò)充處理;③構(gòu)建HBF-VGG14-net模型,將惡意軟件的灰度圖像數(shù)據(jù)集輸入卷積神經(jīng)網(wǎng)絡(luò)中,并對(duì)卷積神經(jīng)網(wǎng)絡(luò)的輸入值和權(quán)重進(jìn)行量化運(yùn)算;④模型訓(xùn)練與優(yōu)化,根據(jù)訓(xùn)練的分類精度調(diào)整模型的重要參數(shù),并微調(diào)模型的結(jié)構(gòu);⑤特征分類,選擇Softmax分類器,根據(jù)數(shù)據(jù)集紋理相似性對(duì)惡意家族進(jìn)行分類。
惡意代碼轉(zhuǎn)變成灰度圖像能夠?qū)崿F(xiàn)家族分類的原因在于,同一家族中的惡意代碼普遍存在代碼復(fù)用的現(xiàn)象,故相同家族的代碼一般會(huì)有很多相同的二進(jìn)制代碼,表現(xiàn)在圖像上就是相似的紋理圖案。而惡意代碼可視化的過(guò)程可以不受惡意代碼數(shù)量的影響,且實(shí)現(xiàn)簡(jiǎn)單,因此可以用在邊緣設(shè)備上。
圖2為APK文件轉(zhuǎn)為圖像的過(guò)程圖,APK文件反匯編為二進(jìn)制.bytes文件,先將二進(jìn)制比特串按照每8位的子串進(jìn)行劃分,然后遍歷文件,將分好的文件按無(wú)符號(hào)向量進(jìn)行排列,最后將向量轉(zhuǎn)換為二維數(shù)組,即表現(xiàn)為灰度圖。其中八位子串對(duì)應(yīng)十進(jìn)制數(shù)為0到255,這恰好對(duì)應(yīng)了圖像像素點(diǎn)0至255,(0表現(xiàn)為黑色,255表現(xiàn)為白色)。矩陣的寬高根據(jù)文件大小進(jìn)行設(shè)定和調(diào)整。
圖2 二進(jìn)制轉(zhuǎn)灰度圖
本文構(gòu)建了基于HBF-Net方法的VGG14模型,對(duì)惡意代碼進(jìn)行特征提取與分類,HBF-VGG14-Net模型對(duì)模型的輸入和權(quán)重都進(jìn)行了量化,以此達(dá)到在精度近似全精度的前提下,模型的參數(shù)量有所減小的目的。HBF-VGG14-Net的模型壓縮框架如圖3所示。
圖3 模型壓縮框架
h(x)=max(0,x)
(1)
考慮到ReLU的半波整流性,以及防止在正向階段出現(xiàn)過(guò)擬合現(xiàn)象,因此正向近似ReLU的量化函數(shù)Q(x)定義如下
(2)
(3)
2-bit均勻半波高斯量化器則是令m=3,qi+1-qi=△,i=1,2,q2=β則量化后的值只能取0,β-△,β,β+△四個(gè)值。由此可求得qi(i=1,2,3)別為0.375874,1.209144,2.042415,ti(i=1,2,3)分別為0.792509,1.625780,∞。
隨后采取文獻(xiàn)[15]中的BWN網(wǎng)絡(luò)對(duì)權(quán)重部分進(jìn)行量化,同時(shí)為了解決由于同時(shí)對(duì)模型的輸入和權(quán)重進(jìn)行了量化操作,最后每層累計(jì)而成的誤差,造成精度損失較大的問(wèn)題,采用文獻(xiàn)[17]中交替更新的方法對(duì)每一層以及整個(gè)模型進(jìn)行微調(diào)。
本文使用了VGG16架構(gòu),在考慮到數(shù)據(jù)集的數(shù)量,以及灰度圖的紋理特征并不復(fù)雜的情況,為了降低過(guò)擬合的發(fā)生,將VGG16的全連接層(Fully Connected,FC)的三層改為一層,并且將節(jié)點(diǎn)數(shù)由512改為256,用以整合卷積層提取的特征,構(gòu)建了HBF-VGG14-Net模型。
本文實(shí)驗(yàn)環(huán)境中的硬件環(huán)境是8核 Intel(R) Xeon(R) CPUE5-2620 V4 2.10GHz處理器,31G內(nèi)存,GPU為 Ge Force GTX 1080Ti;軟件環(huán)境是64 位的Ubuntu16.04 LTS,CUDA10.0,Pytorch0.3.1,python3.5。
本文實(shí)驗(yàn)數(shù)據(jù)取自2015 年的 Kaggle Microsoft惡意軟件分類挑戰(zhàn)賽中的數(shù)據(jù)集,表1展示了該數(shù)據(jù)集共9個(gè)家族的10868個(gè)惡意軟件樣本,每個(gè)惡意軟件樣本分別包含了反匯編.asm文件和二進(jìn)制.bytes文件。本文隨機(jī)選取樣本.bytes文件的70%作為訓(xùn)練集,其余作為測(cè)試集。
表1 BIG2015數(shù)據(jù)集分類
將二進(jìn)制文件可視化為灰度圖后,為了保證輸入到卷積神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)大小一致,接著利用resize()函數(shù)對(duì)得到的灰度圖進(jìn)行調(diào)整,通過(guò)雙線性插值法實(shí)現(xiàn)縮放處理,將全部灰度圖縮放至32*32大小??s放后的部分圖片示例如表2所示??梢杂^察到兩個(gè)不同的惡意家族里的圖片,紋理具有很大的不同,而同一家族的圖片又高度相似。
表2 BIG2015數(shù)據(jù)集灰度圖部分示例
最后對(duì)數(shù)據(jù)集進(jìn)行擴(kuò)充處理,通過(guò)擴(kuò)展數(shù)據(jù)集使其內(nèi)容更加豐富,從而提高了模型的泛化性。主要包括對(duì)數(shù)據(jù)集實(shí)現(xiàn)隨機(jī)的水平翻轉(zhuǎn)、切割中心點(diǎn)、標(biāo)準(zhǔn)化。其中,標(biāo)準(zhǔn)化需要求出訓(xùn)練數(shù)據(jù)集的均值為0.302、方差為0.225。
將預(yù)處理后的數(shù)據(jù)集導(dǎo)入模型后進(jìn)行訓(xùn)練。因?yàn)槟P蛥?shù)學(xué)習(xí)率lr、迭代次數(shù)epochs以及批次batch size的調(diào)整,都會(huì)影響最終的準(zhǔn)確率。故首先要找出最佳參數(shù),本文通過(guò)隨機(jī)搜索的方式,尋找最優(yōu)參數(shù)。調(diào)優(yōu)過(guò)程中,先調(diào)整學(xué)習(xí)率lr,其余參數(shù)保持默認(rèn)值。
如圖4所示。lr為0.19時(shí),模型的分類精度最高,此時(shí)模型的收斂能力最好。隨后保持lr為0.19,其余參數(shù)為默認(rèn),對(duì)迭代次數(shù)epochs進(jìn)行調(diào)優(yōu),如圖5所示。
圖4 學(xué)習(xí)率對(duì)分類精度的影響
圖5 迭代次數(shù)對(duì)分類結(jié)果的影響
由圖5知,當(dāng)?shù)螖?shù)為220時(shí),分類精度取得最大值,整體上,分類精度隨epochs先增大后減小。當(dāng)epochs較低時(shí),模型沒有足夠強(qiáng)得學(xué)習(xí)能力,而epochs較高時(shí),模型則會(huì)出現(xiàn)過(guò)擬合導(dǎo)致精度降低。隨后保持lr、epochs及其它參數(shù)不變,改變batchsize,如圖6所示。當(dāng)batch-size為110時(shí),分類精度達(dá)到最高。故模型參數(shù)設(shè)置為lr=0.1,epochs=220,batch-size=110時(shí),此時(shí)模型能達(dá)到分類精度96.90%。
圖6 批次大小對(duì)分類結(jié)果的影響
圖7展示了本文方法和全精度方法在訓(xùn)練錯(cuò)誤率上的變化。整體上來(lái)看,隨著epochs的增加,錯(cuò)誤率逐漸減少,在epochs=220的時(shí)候,本文方法接近全精度的錯(cuò)誤率。
圖7 量化與全精度訓(xùn)練錯(cuò)誤率對(duì)比
圖8展示了本文模型與全精度模型的測(cè)試精度,對(duì)輸入和權(quán)重都進(jìn)行了量化,縮減了運(yùn)行時(shí)間的基礎(chǔ)上,本文的測(cè)試精度最終穩(wěn)定在96%附近,與全精度的測(cè)試精度相差不到1%。
圖8 量化與全精度測(cè)試精度對(duì)比
圖9展示了本文模型在訓(xùn)練和測(cè)試上的損失,可以看出,經(jīng)過(guò)220個(gè)epochs,訓(xùn)練和測(cè)試的損失都在下降并趨于穩(wěn)定,并且最終的損失值都非常小,低于0.3。本文模型在內(nèi)存消耗和時(shí)間消耗都大大降低的同時(shí),對(duì)惡意代碼的分類精度基本沒有影響。
圖9 量化訓(xùn)練損失和測(cè)試損失對(duì)比
本文采用了一個(gè)具有加速作用的2-bit均勻半波高斯量化器,能夠把浮點(diǎn)型卷積運(yùn)算轉(zhuǎn)化為簡(jiǎn)單的位運(yùn)算和同或運(yùn)算。由表3知,相對(duì)于全精度,本文在惡意代碼的訓(xùn)練上實(shí)現(xiàn)了30倍的加速。
表3 模型加速對(duì)比
本文將訓(xùn)練集與測(cè)試集設(shè)置為7∶3 的比例,驗(yàn)證不同方法對(duì)于實(shí)驗(yàn)結(jié)果的影響。
圖10記錄了傳統(tǒng)機(jī)器學(xué)習(xí)算法KNN、SVM、RandomForest(隨機(jī)森林)以及本文HBF-net、全精度VGG分類精度對(duì)比。從圖10得知,在使用相同數(shù)據(jù)集的情形下,本文模型的分類效果更好。相比傳統(tǒng)的機(jī)器學(xué)習(xí)方法,本文方法在實(shí)現(xiàn)了自動(dòng)提取特征的同時(shí),又提高了特征的表達(dá)能力,也因此提高了模型的分類性能。
圖10 BIG2015數(shù)據(jù)集在各算法分類準(zhǔn)確性對(duì)比
本文進(jìn)一步統(tǒng)計(jì)了各深度學(xué)習(xí)模型大小以及精確度,考慮到數(shù)據(jù)集大小問(wèn)題,以及防止過(guò)擬合問(wèn)題,選取了模型MobileNetV2[18]、ResNet18[19]作為對(duì)比實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如表4所示。
表4 BIG2015數(shù)據(jù)集在不同模型上的對(duì)比
在表4中,展示了各模型占用內(nèi)存大小,以及對(duì)數(shù)據(jù)集的分類精度。由表4可知,在輸入相同的數(shù)據(jù)集的情況下,本文模型的分類精度與其它模型精度相近的情況下,模型大小明顯減少,本文模型相比全精度,壓縮比達(dá)到28倍,相比ResNet18,壓縮比達(dá)到47倍,相比輕量化模型MobileNetV2,壓縮比達(dá)到10倍。
綜合以上實(shí)驗(yàn)可知,HBF-VGG14-Net模型在時(shí)間消耗和資源消耗都大幅下降的前提下,能夠?qū)崿F(xiàn)自動(dòng)化提取圖片紋理特征,然后進(jìn)行自動(dòng)化惡意代碼家族分類。
本文提出了一種可視化方法結(jié)合基于量化VGG14的惡意代碼分類方法。該方法通過(guò)將二進(jìn)制文件轉(zhuǎn)換成圖像,實(shí)現(xiàn)了惡意代碼的特征可視化;半波高斯算法和BWN網(wǎng)絡(luò)相結(jié)合,將復(fù)雜的乘法運(yùn)算轉(zhuǎn)化為加法和位運(yùn)算。實(shí)驗(yàn)結(jié)果表明,在精度幾乎不變的情況下,模型的內(nèi)存開銷大幅降低,并且對(duì)模型的訓(xùn)練過(guò)程也具有加速作用,因此本文提出的模型可以應(yīng)用在小內(nèi)存的邊緣設(shè)備上。下一步的工作方向?yàn)?1)為擴(kuò)大該方法的應(yīng)用范圍,將考慮收集更多的樣本;2)鑒于灰度圖的特征不夠明顯,考慮將二進(jìn)制文件映射為RGB彩圖。