高宇航,彭國軍,楊秀璋,宋文納,呂楊琦
空天信息安全與可信計(jì)算教育部重點(diǎn)實(shí)驗(yàn)室,武漢大學(xué)國家網(wǎng)絡(luò)安全學(xué)院,湖北 武漢 430072
網(wǎng)絡(luò)空間正在成為現(xiàn)代戰(zhàn)爭(zhēng)中的第五戰(zhàn)場(chǎng),作為國家之間博弈重要方式的高級(jí)持續(xù)性威脅(ad?vanced persistent threat,APT)攻擊出現(xiàn)得越發(fā)頻繁。360互聯(lián)網(wǎng)安全中心在2021年發(fā)布的APT研究報(bào)告[1]中指出:2020年全球APT攻擊活動(dòng)異常活躍,全年公開報(bào)告數(shù)量687篇,其中被披露的組織為132個(gè),越來越多的未知APT組織開始涌現(xiàn)。APT組織從開發(fā)成本角度考慮,往往會(huì)采取代碼復(fù)用技術(shù),即同一團(tuán)隊(duì)的攻擊者在已有的惡意代碼基礎(chǔ)上進(jìn)行修改生成新的惡意代碼而不是重新開發(fā)。這就導(dǎo)致相同家族的惡意代碼往往存在許多相似性和共同點(diǎn),比如代碼執(zhí)行流程、代碼風(fēng)格或者相同的代碼片段。對(duì)惡意代碼進(jìn)行家族分類,將有助于研究人員發(fā)現(xiàn)同類型的變異代碼,進(jìn)而對(duì)未知惡意代碼進(jìn)行有針對(duì)性地防御。
PowerShell是Windows平臺(tái)特有的可執(zhí)行腳本語言,在Windows7及以后的版本中默認(rèn)安裝。由于PowerShell[2]簡(jiǎn)單易用且與Windows平臺(tái)交互方便,被廣泛應(yīng)用于Windows平臺(tái)的自動(dòng)化運(yùn)維,但同樣因?yàn)樗谋憬菪裕蛊涑蔀锳PT攻擊鏈中不可缺少的角色,PowerShell惡意代碼的身影頻繁出現(xiàn)。據(jù)安全公司McAfee在2020年7月發(fā)布的網(wǎng)絡(luò)安全威脅報(bào)告[3]數(shù)據(jù)顯示:與上一季度相比,2020年第一季度新型PowerShell惡意軟件數(shù)量增長了689%。利用PowerShell可以輕易完成:下載攻擊載荷至內(nèi)存運(yùn)行、修改注冊(cè)表、操作文件、執(zhí)行定時(shí)任務(wù)以及與命令和控制(command and control)服務(wù)器通信等常見的惡意行為,并且運(yùn)行環(huán)境的差異性不會(huì)對(duì)其產(chǎn)生影響。
傳統(tǒng)的可執(zhí)行文件(portable execute,PE)惡意代碼檢測(cè)技術(shù)采用的指紋庫、特征庫、黑名單等方式難以實(shí)現(xiàn)高準(zhǔn)確率、高召回率和低誤報(bào)率的效果。因此出現(xiàn)了大量利用機(jī)器學(xué)習(xí)與深度學(xué)習(xí)對(duì)PE惡意代碼進(jìn)行檢測(cè)與家族分類的方法。但是,在PowerShell檢測(cè)領(lǐng)域,大部分已有工作和主流的殺毒軟件都只對(duì)PowerShell代碼進(jìn)行惡意性判定,缺乏對(duì)PowerShell惡意代碼的家族分類。近年來爆炸式增長的惡意PowerShell代碼同樣具備傳統(tǒng)PE惡意軟件的代碼復(fù)用問題,并且攜帶PowerShell惡意代碼的APT攻擊已對(duì)全球眾多的國家和企業(yè)造成巨大影響,對(duì)PowerShell惡意代碼進(jìn)行家族分類具有重要意義。
目前,在PowerShell惡意代碼家族分類領(lǐng)域的相關(guān)研究較少,而結(jié)合機(jī)器學(xué)習(xí)與深度學(xué)習(xí)的PowerShell惡意代碼判定方法以及針對(duì)PE惡意代碼的家族分類方法對(duì)PowerShell惡意代碼家族分類具有一定的參考性。
在PowerShell惡意代碼判定方面,目前較多的工作都結(jié)合了自然語言處理與深度學(xué)習(xí)。2018年,Hendler等[4]提出了一種基于深度神經(jīng)網(wǎng)絡(luò)的PowerShell惡意代碼檢測(cè)方法,通過動(dòng)態(tài)分析提取PowerShell命令后,利用n-gram分詞工具進(jìn)行特征提取,使用4層卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)實(shí)現(xiàn)惡意性判定。2020年,Hendler等[5]又提出了一種基于上下文詞嵌入的PowerShell惡 意 代 碼 檢 測(cè) 方 法,利 用Word2Vec[6]、FastText[7]等詞嵌入工具獲取代碼上下文詞嵌入信息作為惡意特征,輸入卷積神經(jīng)網(wǎng)絡(luò)、循環(huán)神經(jīng)網(wǎng)絡(luò)等模型實(shí)現(xiàn)惡意代碼判定。Tajiri等[8]提出了利用Doc2Vec[9]提取上下文詞嵌入信息,并利用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行分類的方法,其中Doc2Vec無需將完整的代碼進(jìn)行分割,能夠保留更加完整的上下文信息。
在惡意代碼家族分類方面,大部分都是針對(duì)PE文件的惡意代碼進(jìn)行分類的工作。基于灰度圖像的家族分類方法是目前國內(nèi)外研究PE惡意代碼家族同源判定的主要方法,Nataraj等[10]于2011年發(fā)現(xiàn)將惡意代碼的二進(jìn)制文件(PE文件)按字節(jié)讀取為8位無符號(hào)整數(shù)向量后,恰好滿足256級(jí)灰度,因此可將PE惡意文件轉(zhuǎn)化為灰度圖表示并進(jìn)行惡意代碼家族同源分析。此后,越來越多的深度學(xué)習(xí)方法被使用。Kim[11]于2017年提出在灰度圖的基礎(chǔ)上將卷積神經(jīng)網(wǎng)絡(luò)算法應(yīng)用于惡意數(shù)據(jù)集的分類。陳小寒等[12]提出一種基于卷積神經(jīng)網(wǎng)絡(luò)的PE惡意代碼家族分類模型,將PE惡意代碼轉(zhuǎn)化為灰度圖像后,結(jié)合CNN自主學(xué)習(xí)灰度圖像相關(guān)特征實(shí)現(xiàn)家族分類。盡管基于CNN的靜態(tài)檢測(cè)方法解決了動(dòng)態(tài)檢測(cè)的資源耗費(fèi)以及耗時(shí)問題,但是CNN忽略了特征序列的先后順序,無法解決長距離依賴以及梯度爆炸等問題。因此,王國棟等[13]提出了一種基于CNN-BiLSTM(convolutional neural networkbidirectional long short-term memory)網(wǎng)絡(luò)的靜態(tài)惡意代碼檢測(cè)方法,旨在解決長距離依賴以及上下文特征捕獲的問題。該方法通過將PE惡意代碼轉(zhuǎn)換為灰度圖像,然后通過CNN-BiLSTM網(wǎng)絡(luò)模型對(duì)惡意代碼進(jìn)行家族分類。但是相對(duì)于同樣作為循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN)的變體門 控 循 環(huán) 網(wǎng) 絡(luò)(gate recurrent unit,GRU)來 說,BiLSTM模型參數(shù)過多,收斂速度慢。此外,結(jié)合灰度圖的檢測(cè)方法局限于PE等格式較為固定的惡意代碼,PowerShell惡意代碼格式靈活,轉(zhuǎn)化為灰度圖像后并不存在明顯的區(qū)段劃分。在PowerShell惡意代碼家族分類方面,Rusak等[14]使用機(jī)器學(xué)習(xí)對(duì)PowerShell惡意代碼進(jìn)行家族分類,該方法通過抽取樣本抽象語法樹(abstract syntax tree,AST)的高度與節(jié)點(diǎn)數(shù)量作為家族分類的特征,在4 079個(gè)Power?Shell惡意代碼數(shù)據(jù)集上獲得85%的分類精確度。
為了解決已有惡意代碼分類工作主要集中于PE文件分析,針對(duì)PowerShell惡意代碼家族分類存在精度較低、耗時(shí)較長,缺乏對(duì)PowerShell惡意代碼功能層面的深入挖掘等問題,本文從PowerShell代碼的功能角度出發(fā),提出一種基于注意力機(jī)制、代碼語義特征和雙向門控循環(huán)網(wǎng)絡(luò)(bidirectional gated recurrent unit,BiGRU)的PowerShell惡意代碼家族分類方法AA-PSFC(abstract syntax tree and attention based BiGRU for PowerShell malware family classification)。該方法通過捕捉抽象語法樹的上下文語義及局部特征,忽略無關(guān)信息,實(shí)現(xiàn)對(duì)PowerShell惡意代碼家族的高效分類。
AA-PSFC整體框架如圖1所示,AA-PSFC由預(yù)處理、詞嵌入、BiGRU網(wǎng)絡(luò)、注意力機(jī)制、分類器組成。AA-PSFC model工作流程如算法1所示。
圖1 AA-PSFC模型Fig.1 AA-PSFC model
?
AA-PSFC的執(zhí)行步驟如下:首先,將各家族的PowerShell惡意代碼與對(duì)應(yīng)標(biāo)簽輸入模型,通過預(yù)處理提取各樣本的抽象語法樹序列,同時(shí)利用Word2Vec進(jìn)行詞向量訓(xùn)練,隨后將詞向量與樣本輸入詞嵌入層,獲得每個(gè)樣本的向量表示;其次,將樣本的向量組合與標(biāo)簽作為feedDict同時(shí)輸入前向GRU網(wǎng)絡(luò)與后向GRU網(wǎng)絡(luò)獲取上下文特征,并將它們的輸出進(jìn)行拼接以獲得BiGRU網(wǎng)絡(luò)層的完整輸出h,再融合注意力機(jī)制捕獲樣本各節(jié)點(diǎn)的局部特征,賦予BiGRU網(wǎng)絡(luò)輸出h對(duì)應(yīng)的權(quán)重后傳入全連接層;最后,利用Softmax分類器計(jì)算當(dāng)前樣本對(duì)應(yīng)的家族標(biāo)簽,從而實(shí)現(xiàn)PowerShell惡意代碼的家族分類任務(wù)。
2.1.1 生成抽象語法樹
PowerShell的抽象語法樹作為代碼的語義表達(dá),以多叉樹的形式表示腳本功能的邏輯結(jié)構(gòu),保留了代碼上下文的特征并剔除無關(guān)的參數(shù)干擾,是分析功能類似的PowerShell代碼的有效方法。Windows為PowerShell提供了訪問腳本AST的接口[15],使用內(nèi)置接口獲取的AST結(jié)構(gòu)如圖2所示。
圖2 AST的結(jié)構(gòu)Fig.2 The structure of AST
本文采用后序遍歷的方式序列化AST,以便進(jìn)行下一步的詞向量訓(xùn)練。
圖2序列化的結(jié)果如下所示:
由于復(fù)用的代碼結(jié)構(gòu)類似,會(huì)根據(jù)攻擊目標(biāo)設(shè)置不同的參數(shù),例如硬編碼路徑、加密密鑰、定時(shí)任務(wù)時(shí)間、遠(yuǎn)程服務(wù)器地址等參數(shù),通過該方式能有效去除相似代碼的參數(shù)差異,僅保留代碼的結(jié)構(gòu)特征,從而提升家族分類的效果。
2.1.2 詞向量訓(xùn)練
深度學(xué)習(xí)無法直接對(duì)AST節(jié)點(diǎn)序列進(jìn)行訓(xùn)練,本文采用Google于2013年提出的一款詞向量工具Word2Vec進(jìn)行特征映射。Word2Vec作為一種神經(jīng)網(wǎng)絡(luò)模型,通過將輸入的語料轉(zhuǎn)化為K維空間向量,再利用向量來計(jì)算文本之間的相似性。該模型具備兩種訓(xùn)練模式,分別是連續(xù)詞袋(continuous bag of words,CBOW)模型和Skip-gram模型。CBOW模型根據(jù)中心詞“w(t)”周圍的詞生成中心詞的詞向量,而Skip-gram模型則是根據(jù)中心詞“w(t)”的詞向量預(yù)測(cè)鄰近詞的詞向量。雖然前者的效率更高,但是當(dāng)其遇到低頻詞的時(shí)候,準(zhǔn)確率大大下降。Skip-gram模型彌補(bǔ)了上述缺點(diǎn),在本文處理的AST節(jié)點(diǎn)序列中,提取的節(jié)點(diǎn)類型出現(xiàn)頻率從幾十次到幾千次不等。圖3顯示了本文用于訓(xùn)練的數(shù)據(jù)中低頻語法樹節(jié)點(diǎn)類型的出現(xiàn)情況。從圖3中可知,不同家族類型的低頻節(jié)點(diǎn)交錯(cuò)出現(xiàn),各家族類型的低頻節(jié)點(diǎn)主要集中在10~30頻次區(qū)域。為了能夠更好地處理低頻的語法節(jié)點(diǎn),本文采用Skip-gram模型作為Word2Vec的訓(xùn)練模型。
圖3 低頻語法樹節(jié)點(diǎn)的出現(xiàn)頻率Fig.3 Frequency of occurrence of low-frequency syntax tree nodes
RNN能夠挖掘數(shù)據(jù)中的時(shí)序信息與語義信息,但是傳統(tǒng)的RNN在計(jì)算當(dāng)前輸出時(shí),依賴于過去每一個(gè)時(shí)刻的隱藏狀態(tài),所以當(dāng)其處理超長序列時(shí),簡(jiǎn)單的RNN幾乎喪失了學(xué)習(xí)長期依賴關(guān)系的能力,同時(shí)衍生出梯度消失與梯度爆炸的問題。為了解決上述問題,Chung等[16]提出了RNN的變體循環(huán)單元門GRU,旨在解決傳統(tǒng)RNN的梯度消失問題與長期依賴問題,本文使用的GRU基本單元[17]如圖4(a)所示。
GRU通過引入重置門rt(reset gate)和更新門zt(update gate)改進(jìn)了傳統(tǒng)RNN計(jì)算前向隱藏狀態(tài)的方式,它們的輸入均為當(dāng)前時(shí)間步t的輸入xt與前一時(shí)間步t-1的隱藏層狀態(tài)ht-1。rt與zt的輸出計(jì)算方法如下
其中,α為激活函數(shù)sigmoid,wxr、whr、wxz、whz為對(duì)應(yīng)激活函數(shù)的權(quán)重矩陣,br與bz為偏差值。通過(1)式獲得重置的輸出后,GRU通過(3)式中的激活函數(shù)tanh計(jì)算當(dāng)前準(zhǔn)隱藏層狀態(tài)
其中,wxh與whh為激活函數(shù)對(duì)應(yīng)的權(quán)重矩陣,bh為偏差參數(shù)。最后結(jié)合更新門輸出zt通過(4)式計(jì)算當(dāng)前隱藏層狀態(tài),其中?為Hadamard乘積運(yùn)算符。
通過(1)~(4)式,GRU單元能夠在每個(gè)時(shí)間步保存上文的信息,但是它忽略了下文的信息。所以本文采用BiGRU同時(shí)保存每個(gè)節(jié)點(diǎn)的上下文信息。BiGRU由前向?qū)樱╢orward layer)與后向?qū)樱╞ack?ward layer)兩組GRU單元組成,如圖4(b)所示。其中,前向隱藏層與后向隱藏層第i個(gè)單詞在時(shí)間步t的狀態(tài)分別通過下式計(jì)算
圖4 GRU單元與BiGRU模型Fig.4 GRU unit and BiGRU model
最后通過(7)式整合加權(quán)狀態(tài)
注意力(Attention)機(jī)制[18]是模仿人類注意力提出的一種用于從大量信息中快速提取高價(jià)值信息的方法,通過對(duì)輸入的每個(gè)元素計(jì)算不同的權(quán)重,將局部重點(diǎn)信息放大,并且忽略干擾信息。AST序列的節(jié)點(diǎn)中,并不是每一個(gè)節(jié)點(diǎn)都對(duì)當(dāng)前腳本的家族類型產(chǎn)生相同的影響,例如每個(gè)腳本都存在用來標(biāo)識(shí)腳本開始與結(jié)束位置的節(jié)點(diǎn)“Script?Block Ast”,所以本文使用注意力機(jī)制來提取對(duì)腳本家族類型產(chǎn)生較大影響的節(jié)點(diǎn),并賦予它們更高的權(quán)重,突出它們的重要性。本文模型使用的注意力機(jī)制通過以下步驟完成計(jì)算。
首先使用tanh函數(shù)對(duì)當(dāng)前單詞的hit與權(quán)重矩陣ww的乘積結(jié)果進(jìn)行非線程變換,得到hit對(duì)應(yīng)的隱藏層表示uit,如(8)式所示
然后利用softmax函數(shù)計(jì)算當(dāng)前序列每個(gè)節(jié)點(diǎn)的權(quán)重
其中,uw為當(dāng)前序列的上下文詞向量,代表整個(gè)序列的語義。依(10)式可獲得第i個(gè)樣本的向量表示
將yi輸入全連接層后獲得每個(gè)家族類型的概率,并利用softmax分類器獲得最終的分類結(jié)果。
本文采用的數(shù)據(jù)集由3部分組成:①White[19]在Github上的開源數(shù)據(jù)集,該數(shù)據(jù)集中的樣本已被分類為不同的家族;②利用HyBrid開放API下載的惡意PowerShell腳本;③從AnyRun下載與PowerShell相關(guān)的惡意腳本。對(duì)于從Hy Brid與AnyRun中收集的樣本,它們的標(biāo)簽采用與Jeff White樣本集相同的分類規(guī)則標(biāo)注。基于不同家族的樣本數(shù)量考慮,經(jīng)過數(shù)據(jù)清洗及人工標(biāo)注,樣本總計(jì)4 658個(gè),分為6個(gè)家族類型,包括AMSIBypass、BITS Jobs、Down?loader、RemoveAV、Scheduled Task、Shellcode Inject,各家族的數(shù)量分布如圖5所示。由圖5可知,Shellcode Inject與Downloader家族的樣本數(shù)量較多,分別為1 932和1 430個(gè);Scheduled Task家族的數(shù) 量 居 中,為756個(gè);AMSI Bypass、BITS Jobs、RemoveAV 3個(gè)家族的樣本數(shù)量較少,分別為135、189、216個(gè)。由于各家族樣本數(shù)量分布不均,所以后文在計(jì)算模型的性能指標(biāo)時(shí)需要根據(jù)各個(gè)家族的數(shù)量占比賦予不同的權(quán)重。
圖5 惡意PowerShell腳本的家族分布情況Fig.5 Family distribution of malicious PowerShell scripts
實(shí)驗(yàn)環(huán)境的CPU為Intel(R)Xeon CPU@E5-2678v3@2.50 GHz,GPU為NVDIA Tesla K80,內(nèi)存8 GB。編程語言為Python3.7,采用Py Torch、Sklearn等工具對(duì)本文提出的方法進(jìn)行實(shí)現(xiàn)與測(cè)試。
為評(píng)估本文分類方法的效果,采用分類算法中4個(gè)常用的指標(biāo)評(píng)判模型的有效性。對(duì)于一個(gè)標(biāo)簽,分別定義:
a)真陽性(true positive,TP),真實(shí)標(biāo)簽為A,預(yù)測(cè)標(biāo)簽為A;
b)假陽性(false positive,F(xiàn)P),真實(shí)標(biāo)簽為其他,預(yù)測(cè)標(biāo)簽為A;
c)真陰性(true negative,TN),真實(shí)標(biāo)簽為其他,預(yù)測(cè)標(biāo)簽為其他;
d)假陰性(false negative,F(xiàn)N),真實(shí)標(biāo)簽為A,預(yù)測(cè)標(biāo)簽為其他。
標(biāo)簽i的準(zhǔn)確率、精確率、召回率、F1值4個(gè)指標(biāo)的定義如下:
a)準(zhǔn)確率(accuracy,ACC):分類結(jié)果中,被正確分類的樣本數(shù)占總樣本數(shù)的百分比,用于評(píng)估檢測(cè)模型整體性能的評(píng)價(jià)指標(biāo),計(jì)算式如下
b)精確率(precision,PRE):分類結(jié)果中,被正確分類為惡意樣本的惡意樣本數(shù)量占被分類為惡意樣本總數(shù)的占比,計(jì)算式如下
c)召回率(Recall):分類結(jié)果中,屬于A標(biāo)簽的樣本中,被正確分類的樣本占比,計(jì)算式如下
d)F1值(F1-score):精確率和召回率的調(diào)和平均數(shù),計(jì)算式如下
由于本文研究的是多分類任務(wù),且樣本類別數(shù)量分布不均衡,因此對(duì)于上述的準(zhǔn)確率、精確率、召回率、F1值采用(15)~(18)式進(jìn)行加權(quán)計(jì)算。
其中,權(quán)重wi為標(biāo)簽i的樣本數(shù)量在總體樣本數(shù)量中的占比。
3.4.1 分類效果評(píng)估
為驗(yàn)證本文方法的有效性,本文選取了CNN[12]、CNN-BiLSTM[13],以及RNN、LSTM、FastText等常見的深度神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)模型與本文提出的AA-PSFC模型在同一數(shù)據(jù)集上進(jìn)行家族分類效果對(duì)比。圖6顯示了各個(gè)模型在同一環(huán)境下測(cè)試得到的指標(biāo)。AA-PSFC模型的準(zhǔn)確率、精確率、召回率、F1值 分 別 為96.47%、96.25%、96.74%、96.11%,均高于其他模型。
圖6 不同深度學(xué)習(xí)模型的效果對(duì)比Fig.6 Comparison of the effects of different deep learning models
為進(jìn)一步驗(yàn)證雙向網(wǎng)絡(luò)機(jī)制與注意力機(jī)制對(duì)模型性能提升的作用,將AA-PSFC與單向GRU、BiGRU在同一環(huán)境下進(jìn)行對(duì)比實(shí)驗(yàn),結(jié)果如表1所示。由表1可知,BiGRU的各項(xiàng)指標(biāo)相對(duì)于單向GRU,至少提高了0.76%,因?yàn)榍罢咴诓东@上文語義的基礎(chǔ)上,同時(shí)捕獲了下文語義,能夠更好地提取出一個(gè)語法節(jié)點(diǎn)的特征。而同時(shí)融合了雙向網(wǎng)絡(luò)機(jī)制與注意力機(jī)制的AA-PSFC模型各項(xiàng)指標(biāo)均達(dá)到最優(yōu),相對(duì)于BiGRU模型,準(zhǔn)確率、精確率、召回率、F1值分別提高了1.18%、1.24%、1.45%、1.28%。因?yàn)樽⒁饬C(jī)制能夠?qū)Σ糠钟行Ч?jié)點(diǎn)賦予更大權(quán)重,因此提升了有效節(jié)點(diǎn)對(duì)分類結(jié)果的影響。
表1 雙向機(jī)制與注意力機(jī)制效果對(duì)比Table1 Comparison of the effects of the two-way mechanism and the Attention mechanism%
由于F1值能夠較好地體現(xiàn)模型的綜合性能,本文給出了3種模型的F1值變化趨勢(shì)。如圖7所示,在0~100輪的訓(xùn)練過程中,AA-PSFC的F1值提升迅速,達(dá)到91.2%,相對(duì)于BiGRU與GRU,分別提高3.05%、7.45%。在300輪后,AA-PSFC逐漸趨于穩(wěn)定,達(dá)到95%及以上,收斂快于GRU與BiGRU。結(jié)果表明BiGRU能夠更好地處理具備時(shí)序性的語法節(jié)點(diǎn)序列,有效捕獲前后時(shí)序特征以及長距離依賴,后序的注意力機(jī)制能夠進(jìn)一步提升分類效果。
圖7 3種模型F1值對(duì)比Fig.7 Comparison of F1 values of three models
為進(jìn)一步衡量本文模型的分類效果,選取檢測(cè)效果與本文模型較接近的文獻(xiàn)[12]中的CNN、文獻(xiàn)[13]中的CNN-BiLSTM以及RNN作為對(duì)照,評(píng)估它們對(duì)各個(gè)家族的分類結(jié)果,計(jì)算的混淆矩陣如圖8所示。由圖8可知,在所有家族的分類結(jié)果中,AA-PSFC模型準(zhǔn)確分類的樣本數(shù)量均為最多。為了更直觀地辨別模型分類結(jié)果,基于混淆矩陣計(jì)算出的分類誤報(bào)率如表2所示。由表2知,雖然CNN總體分類效果很接近于本文提出的AA-PSFC,但在面對(duì)AMSIBypass、BITS Jobs、RemoveAV等數(shù)量較少的家族時(shí),AA-PSFC誤報(bào)率比CNN至少下降20%。
表2 家族分類誤報(bào)率Table 2 False alarm rate of family classification%
圖8 不同模型混淆矩陣對(duì)比Fig.8 Confusion matrix comparison of different models
3.4.2 模型時(shí)間性能分析
本文將AA-PSFC與文獻(xiàn)[12]的CNN、文獻(xiàn)[13]的CNN-BiLSTM、RNN及LSTM前500輪每一輪的訓(xùn)練時(shí)間對(duì)比,進(jìn)行了詳細(xì)的時(shí)間性能分析。如圖9所示,CNN的每輪訓(xùn)練時(shí)間最長,平均每輪訓(xùn)練時(shí)間約為30.0 s;AA-PSFC的每輪訓(xùn)練時(shí)間最短,平均約為5.0 s;LSTM、RNN、CNNBiLSTM等的每輪訓(xùn)練時(shí)間約為11.0、6.0、5.6 s。雖然CNN的檢測(cè)性能與本文提出的AA-PSFC較為接近,但是平均每輪訓(xùn)練時(shí)間大于AA-PSFC;CNN-BiLSTM的每輪訓(xùn)練時(shí)間雖然與AA-PSFC較為接近,但準(zhǔn)確率、精確率、F1值均較低。
圖9 各模型的訓(xùn)練時(shí)間Fig.9 Training time of each model
上述實(shí)驗(yàn)表明,AA-PSFC相對(duì)于已有模型,在提高檢測(cè)性能的同時(shí),有著較短的訓(xùn)練時(shí)間。
本文提出一種融合代碼抽象語法樹和深度神經(jīng)網(wǎng)絡(luò)的PowerShell惡意代碼家族分類方法AAPSFC。該方法通過BiGRU網(wǎng)絡(luò)提取語法樹每個(gè)節(jié)點(diǎn)的上下文特征,融合注意力機(jī)制放大局部重點(diǎn)特征,實(shí)現(xiàn)了PowerShell惡意代碼的家族分類,準(zhǔn)確率、召回率較高,時(shí)間損耗較低。但本文工作也存在一定的局限性,如模型的分類對(duì)象局限于簡(jiǎn)單功能的PowerShell命令,基于抽象語法樹的線性序列形式過于單一等。隨著APT攻擊的發(fā)展,基于PowerShell的攻擊樣本勢(shì)必會(huì)更加復(fù)雜,未來將考慮添加抽象語法樹本身的樹特征進(jìn)行惡意家族分類。