?

基于GHM可視化和深度學習的惡意代碼檢測與分類

2024-03-12 09:21張淑慧胡長棟王連海徐淑獎
信息安全研究 2024年3期
關鍵詞:字節內存灰度

張淑慧 胡長棟 王連海 徐淑獎 邵 蔚 蘭 田

1(齊魯工業大學(山東省科學院)山東省計算中心(國家超級計算濟南中心) 濟南 250014)

2(算力互聯網與信息安全教育部重點實驗室(齊魯工業大學(山東省科學院)) 濟南 250014)

3(山東省計算機網絡重點實驗室(山東省計算中心(國家超級計算濟南中心)) 濟南 250014)

4(山東省基礎科學研究中心(計算機科學)齊魯工業大學(山東省科學院)) 濟南 250014)

隨著互聯網的廣泛應用,惡意代碼的數量和種類增長迅速[1],AV-TEST研究所每天捕獲到超過45萬個新的惡意程序樣本和潛在的未知應用程序[2].惡意代碼指的是在受害者的計算機或網絡上執行未經授權和有害操作的軟件,包括病毒、蠕蟲、木馬和僵尸程序,導致數據泄露、系統破壞和網絡癱瘓[3].研究者們對惡意代碼檢測技術展開了研究,包括基于簽名的檢測、基于行為的檢測和基于機器學習的檢測方法.

近年來,基于圖像處理的檢測方法[4]用于可視化和惡意軟件分類已經變得越來越受歡迎.由于缺乏有效的預處理,其檢測精度和穩定性并不高.本文構建了一種VLMal神經網絡模型,以訓練和分類預處理的數據.大多數PE文件都是加密和混淆的.然而,運行在內存中的PE文件是已解密和解包的原始數據.為了評估模型的有效性,本文收集了PE文件樣本并在沙盒環境中執行PE文件.然后,使用內存取證技術從內存中提取出PE文件,構建小型內存PE文件數據集.本文的主要工作和貢獻如下:

1) 提出了基于GHM(Gray,HOG,Markov)的PE二進制文件可視化方法,利用圖像轉換、增強和馬爾科夫矩陣等多種技術生成3個灰度圖像,并將這些圖像構建3通道的彩色圖像,保留了PE文件更加詳細的數據特征.

2) 構建了基于CNN(卷積神經網絡)和LSTM(長短期記憶模型)的VLMal分類模型,實現對可視化的圖像進行惡意軟件檢測分類.

3) 構建了1個小型樣本的內存PE文件數據集,以評估本文提出方法的檢測效果,彌補了目前沒有公開內存PE文件數據集的不足.

1 相關工作

在計算機安全領域,惡意軟件的檢測和分類變得越來越重要.為了解決這一問題,研究者們提出靜態分析、動態分析和內存取證分析等多種分析技術.

1.1 靜態分析

Schultz等人[5]提出一種用于識別惡意代碼的初始數據挖掘方法,利用惡意軟件二進制文件的字符串序列、字節序列和PE文件頭部3個不同的靜態特征進行識別.Iwamoto等人[6]使用n-gram技術從Windows二進制文件中提取字節,并使用1對多的分類方法訓練了多個分類器.Zhang等人[7]提出一種基于操作碼序列的勒索軟件分類方法,該方法將勒索軟件樣本的操作碼序列轉換為n-gram序列,然后使用n-gram特征的詞頻值構建特征向量,采用5種機器學習方法對勒索軟件進行分類.Soni等人[8]提出一種利用API調用和操作碼序列信息進行惡意軟件分類的方法,該方法首先提取這些特征,然后使用樸素貝葉斯(NB)、邏輯回歸、隨機森林(RF)和支持向量機(SVM)4種機器學習算法對惡意軟件進行分類.

1.2 動態分析

靜態分析側重于在不執行程序代碼的情況下分析程序代碼,而動態分析是運行軟件并在其執行過程中監視其行為.Anderson等人[9]提出一種基于動態指令跟蹤圖的惡意軟件檢測算法.該方法從收集的數據中構建了馬爾科夫圖,使用SVM(支持向量機)進行分類.Nair等人[10]提出一種基于API調用的動態分析方法檢測惡意軟件,對所有惡意軟件家族生成簽名,并發現同一家族的大多數變異病毒共享相同的基本特征.Bayer等人[11]提出一種可擴展的聚類方法,用于基于相似行為識別和分組的惡意軟件聚類.

1.3 內存取證分析

惡意軟件內存取證是一種分析計算機內存中的惡意軟件行為的技術.Bozkir等人[12]利用內存數據通過計算機視覺和機器學習技術對惡意軟件進行分類.Otsuki等人[13]提出從64位Windows系統內存鏡像中提取堆棧痕跡的方法.Uroz等人[14]提出從注冊表ASEP(auto-start extensibility point)中尋找未知和罕見程序的方法.針對通過內存轉儲獲取的Windows進程和系統庫文件,Martín-Pérez等人[15]提出以文件對象為導向和線性搜索的方法,清除重定位,實現轉儲文件的相似性計算.

相較于之前的惡意軟件分類研究,本文構建了1個3通道彩色圖像.在構建彩色圖像時,本文根據數據集中的稀疏性對每個通道的圖像生成算法進行了改進.

2 方案設計

本節將詳細解釋本文方案整體工作流程(如圖1所示).

2.1 數據集x

本文使用Kaggle公共惡意軟件檢測數據集[16]作為第1個數據集.此外,收集了最新的惡意的和常用的良性PE文件,在沙箱中運行,并在內存中提取PE文件,確保了PE文件是真實的、未加密的數據,并將收集到的樣本構建了小樣本數據集作為本文的第2個數據集.

2.1.1 數據集A

Kaggle發布的微軟惡意軟件分類挑戰數據集包含10868條帶標簽的訓練數據和未標記的測試數據,分為9類.本文提出的檢測方法是一種監督學習方法,因此只使用微軟惡意軟件分類挑戰數據集的訓練集作為本文的數據集.以8∶2的比例將其劃分為新的訓練集和測試集.

2.1.2 數據集B

本文從VirusShare收集樣本作為惡意樣本,并將Windows系統中常用軟件作為良性樣本.通過使用VirusTotal平臺檢測收集的樣本,發現每個反病毒平臺給出的標簽不一致,因此本文將收集到的樣本分為良性和惡意2個類別.之前的研究已經通過在沙箱中運行并以其他格式發布了預處理樣本.文獻[17]給出了1個API數據集,在杜鵑沙盒中執行PE文件,生成報告,提取API調用.然而,沒有在相關文獻中找到提供原始內存PE文件的數據集,只有將內存PE文件轉換為API或圖像格式的數據集.因此,本文在沙盒中運行收集到的靜態樣本,并每隔10min轉儲1次內存鏡像,重復該過程10次,盡可能多地捕獲惡意行為.本文使用volatility[18]和團隊開發的內存取證工具[19]分析這些轉儲的內存鏡像,從而提取exe和dll文件.

2.2 GHM可視化

2.2.1 灰度圖轉化

為了可視化PE文件,需要將它們轉換為向量矩陣從而可視化為灰度圖.然而,由于每個PE文件的數據大小差異較大,將它們轉換成具有相同寬度的2維矩陣會導致較小的文件在放大時其結構遭受損失.因此,在將其轉換為2維向量矩陣時根據文件的大小確定矩陣向量的寬度,如表1所示:

表1 圖像寬度設定表

數據集中每個樣本的大小不均勻,由于訓練神經網絡需要創建大小一致的灰度圖像,本文將不同大小的灰度圖像調整為224×224px.

2.2.2 HOG圖像

為了增強灰度圖像的對比度,采用方向梯度直方圖(HOG)特征提取方法[20],通過提取有用信息并丟棄無關信息構造第2通道的灰度圖像.

HOG中計算梯度g和方向θ的公式如式(1)所示:

(1)

其中

gx=(hx+1,y-hx-1,y+hx+1,y-hx-1,y)/2,

(2)

gy=(hx,y+1-hx,y-1+hx,y+1-hx,y-1)/2.

(3)

本文注意到內存PE文件中數據的稀疏性,并調整梯度g以更清晰地反映數據梯度.具體來說,在計算梯度g和方向θ時,本文使用式(2)(3)計算水平和垂直梯度,然后使用式(1)計算梯度g和方向θ.將梯度g按比例分成9個角度塊,構建初步的梯度方向直方圖.然后,利用L2范數對梯度方向直方圖進行歸一化處理,以減少訓練時的計算量,防止因計算量大而導致數據溢出.

2.2.3 馬爾科夫圖像

本文選擇的PE文件為二進制數據,即字節流數據.取值范圍為0x00~0xff.為了構建字節頻率表,本文創建1個256×256矩陣,并將矩陣中的每個坐標點初始化為0.將PE文件作為序列讀取之后,將滑動窗口大小設置為2,即每2B表示矩陣中的1個坐標點.例如,如果窗口中的2B是0x00和0x01,表示第1行和第2列中的1個坐標點,而這個坐標點的值加1.滑動窗口繼續移動,直到遍歷完整個數據序列,從而構建PE文件的字節頻率表.通過字節頻率表可以計算出字節概率表.具體來說,每個矩陣坐標點的頻率除以每行樣本總數就是該坐標點的概率.

(4)

BFTij表示第i行第j列的頻率分布,Si表示第i行總的頻率.通過遍歷字節頻率表構建了字節概率表.

分析過程中發現,字節頻率分布不均勻,難以充分體現低概率字節的特征.因此,使用對數變換公式構造馬爾科夫圖像:

(5)

其中GIij表示將概率表中的元素轉換為灰度值后得到的像素,p(i,j)表示概率表中的元素值,c表示1個取值為0.1的參數,L表示灰度級的個數.通過遍歷字節頻率表和字節概率表,構建馬爾科夫圖像,得到馬爾科夫圖像的特征信息.

2.2.4 GHM彩色圖像構建

最后,將3種類型的灰度圖像(Gray,HOG,Markov)填充到彩色圖像的3個通道中,以構建樣本數據的最終可視化彩色圖像.此過程的目的是將不同的圖像特征合并到RGB圖像中,使得本文的神經網絡模型能夠更好地理解圖像的特征和內容,如圖2所示.通過使用這些樣本數據,構建和訓練能夠準確分類和識別惡意軟件的神經網絡模型.

圖2 馬爾科夫圖像構建

2.3 VLMal模型

本文對幾個成熟的基于CNN的網絡模型(包括GoogLeNet,ResNet,ResNet)進行了實驗,發現VGG16在選擇的數據集上評估指標最好.考慮到二進制PE文件表現出文本序列的特征,本文在VGG16特征提取后結合LSTM模型進一步突出序列特征.

通過將原始VGG16的1000個類別修改為數據集的9個類別來改進VGG16的分類器.由于本文使用遷移學習加載預訓練模型,在導入預訓練參數時,將參數strict設置為false.在VGG16特征提取后,使用Flatten將數據轉換成1維序列,然后使用LSTM進一步訓練數據,以獲得更好的分類性能.

在數據分析過程中,本文發現數據集的不平衡性.文獻[20]由于不平衡而選擇刪除樣本數量少的類別.針對此問題,本文使用了Focal Loss函數FL(·)平衡權重并將模型的注意力更多地集中在難以分類的類別上.

CE(pt)=-lg(pt),

(6)

FL(pt)=-(1-pt)γlg(pt).

(7)

FL(x)通過增加γ的值,提高了少量樣本類別的分類性能.隨著γ的增加,FL(x)對錯誤分類樣本的懲罰更大,從而強調了少數樣本的重要性.當γ=0時,FL(x)降為標準的交叉熵損失函數CE(x).在模型訓練過程中,樣本的預測概率記為pt.此外,在權重分配過程中,為樣本較少的類別分配更高的權重.

2.4 評估指標

為了檢測惡意代碼類別,本文使用分類的4個評價指標:Accuracy,Precision,F1_score,Recall.F1_score表示可以同時反映準確率和召回率的指標.

(8)

(9)

(10)

(11)

TP表示被模型正確預測為惡意樣本數量;而FP表示被錯誤預測為惡意的樣本數量;TN表示被正確預測為良性樣本數量;FN表示被錯誤預測為良性的樣本數量.

3 惡意軟件分類實驗評估

3.1 環境設置

本文實驗中使用的CPU為Intel?CoreTMi7-11800H處理器,配備2個8GB內存模塊和1個NVIDIA GeForce RTX 3050顯卡.軟件環境包括64位的Windows 10操作系統和VMWare,其中包含Windows 7和Windows XP虛擬機,用于執行惡意樣本.深度學習框架使用Python 3.7,Anaconda conda 4.11.0,PyTorch torch1.10.1構建和執行的.模型學習率設置為0.001,批處理大小為8,epoch為25,使用SGD優化器.

3.2 數據集A

在構建的模型中對3種特征提取方法(Gray,HOG,Markov)和GHM的3通道彩色圖像進行實驗.對不同通道的圖像進行了10折交叉驗證實驗.圖3示出采用不同特征提取方法的Accuracy,Precision,F1_score,Recall指標:

圖3 不同通道圖像實驗結果對比

3.3 數據集B

為了探索本文方法在內存數據上的分類性能,在數據集B上訓練和測試本文的模型.表2給出了GHM的3通道彩色圖像和單通道灰度圖像的實驗結果對比:

表2 數據集B實驗結果對比

4 結 語

本文提出了一種基于GHM-VLMal的惡意代碼檢測與分類方法,并對該方法進行了全面的實驗,取得了良好的效果.

該方法在靜態數據集上表現良好,但在內存數據集上檢測性能下降.通過觀察內存數據,發現其數據是高度稀疏的,這是導致檢測性能下降的原因.

未來,計劃對稀疏內存數據進行進一步的研究,提高檢測性能.還將對跨平臺的惡意軟件檢測和分類進行研究.

猜你喜歡
字節內存灰度
采用改進導重法的拓撲結構灰度單元過濾技術
No.8 字節跳動將推出獨立出口電商APP
外部高速緩存與非易失內存結合的混合內存體系結構特性評測
基于灰度拉伸的圖像水位識別方法研究
“春夏秋冬”的內存
No.10 “字節跳動手機”要來了?
簡談MC7字節碼
基于最大加權投影求解的彩色圖像灰度化對比度保留算法
基于灰度線性建模的亞像素圖像抖動量計算
基于內存的地理信息訪問技術
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合