曹耀彬
關(guān)鍵詞:PowerShell;多標(biāo)簽分類器;深度神經(jīng)網(wǎng)絡(luò);惡意代碼;混淆;加密
0 引言
網(wǎng)絡(luò)空間是現(xiàn)代戰(zhàn)爭(zhēng)中重要戰(zhàn)場(chǎng),高級(jí)持續(xù)性威脅攻擊(Advanced Persistent Threat,APT) 是一種復(fù)雜且持久的網(wǎng)絡(luò)攻擊,通常為有組織的攻擊者發(fā)起,旨在獲取敏感信息、竊取知識(shí)產(chǎn)權(quán)或破壞目標(biāo)系統(tǒng)。APT攻擊的目標(biāo)通常是政府機(jī)構(gòu)、大型企業(yè)、關(guān)鍵基礎(chǔ)設(shè)施和研究機(jī)構(gòu)等具有高價(jià)值數(shù)據(jù)和資產(chǎn)的實(shí)體。這些APT具有重大威脅,因?yàn)樗鼈兛梢杂糜诟鞣N惡意活動(dòng),包括數(shù)據(jù)泄露、遠(yuǎn)程訪問和系統(tǒng)入侵等。在所有APT攻擊活動(dòng)中,由于PowerShell的多功能性、隱蔽性和執(zhí)行復(fù)雜命令的能力,成為網(wǎng)絡(luò)犯罪分子的首選工具之一。攻擊者可以使用PowerShell來執(zhí)行各種惡意活動(dòng),如植入后門、竊取憑據(jù)、下載和執(zhí)行惡意軟件等。同時(shí),PowerShell的廣泛應(yīng)用和混淆加密技術(shù)的不斷演進(jìn),使得其在目標(biāo)系統(tǒng)上的活動(dòng)更難以被發(fā)現(xiàn)和阻止。深度混淆的腳本更是能夠輕松地繞過現(xiàn)有的防御措施,因此,當(dāng)前迫切需要一種更先進(jìn)的技術(shù)來準(zhǔn)確高效地檢測(cè)深度混淆的惡意PowerShell代碼。近年來,多標(biāo)簽分類器在解決惡意PowerShell檢測(cè)的復(fù)雜性方面顯示出巨大的潛力,多標(biāo)簽分類將多個(gè)標(biāo)簽分配給輸入樣本,以識(shí)別PowerShell腳本中存在的各種混淆[1]加密技術(shù)。與傳統(tǒng)的單標(biāo)簽分類相比,多標(biāo)簽分類允許每個(gè)樣本關(guān)聯(lián)多個(gè)標(biāo)簽,可以同時(shí)識(shí)別多種混淆加密的復(fù)雜模式和特征,并且多標(biāo)簽分類器[2](Multi-label Classification, MLC) 能夠根據(jù)訓(xùn)練數(shù)據(jù)自適應(yīng)地學(xué)習(xí)新的混淆加密技術(shù)。如今,隨著APT攻擊的發(fā)展,基于PowerShell的攻擊樣本已經(jīng)變得更加復(fù)雜多樣,鑒于多標(biāo)簽更適用于惡意Power?Shell代碼檢測(cè),并結(jié)合深度學(xué)習(xí)算法的優(yōu)勢(shì),本文提出了一種新的基于深度神經(jīng)網(wǎng)絡(luò)的多標(biāo)簽分類器(Deep Neural Network Multi-label Classification,DNNMLC) 。
1 多標(biāo)簽分類
多標(biāo)簽分類器在現(xiàn)實(shí)世界的許多應(yīng)用中發(fā)揮著重要作用。例如,在圖像識(shí)別中,一幅圖像可能包含多個(gè)對(duì)象,因此需要將圖像分配到多個(gè)標(biāo)簽類別,如“行人”“紅綠燈”和“汽車”等。在自然語(yǔ)言處理中,文本可以具有多個(gè)主題或情感,因此需要將文本分配到適當(dāng)?shù)臉?biāo)簽類別,如“體育”“政治”和“娛樂”等。多標(biāo)簽分類器還可以應(yīng)用于推薦系統(tǒng)、醫(yī)學(xué)診斷和情感分析等領(lǐng)域。深度學(xué)習(xí)中的多標(biāo)簽分類器通?;谏窠?jīng)網(wǎng)絡(luò)模型,如卷積神經(jīng)網(wǎng)絡(luò)(CNN) 、循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN) 或Transformer等,這些模型能夠自動(dòng)學(xué)習(xí)輸入數(shù)據(jù)的特征,并通過多個(gè)輸出節(jié)點(diǎn)對(duì)每個(gè)標(biāo)簽類別進(jìn)行預(yù)測(cè)。對(duì)于每個(gè)數(shù)據(jù)點(diǎn),多標(biāo)簽分類器會(huì)將其被分配到多個(gè)類別中的一個(gè)或多個(gè),其數(shù)學(xué)模型如下:給定一個(gè)m 維輸入空間X={X1, X2,…, Xm},輸出標(biāo)簽為Y={ Y1, Y2,…, Yn },其中n>1。
多標(biāo)簽分類器的學(xué)習(xí)主要分為以下三種類型:?jiǎn)栴}轉(zhuǎn)換法[3](Problem Transformation Methods) 是將多標(biāo)簽分類問題轉(zhuǎn)化為多個(gè)單標(biāo)簽分類問題,然后使用單標(biāo)簽分類器來解決每個(gè)子問題;算法適應(yīng)法[4](Algorithm Adaptation Methods) 是通過修改現(xiàn)有的單標(biāo)簽分類算法,使其能夠處理多標(biāo)簽分類問題;深度學(xué)習(xí)方法(Deep Learning Methods) 指使用深度學(xué)習(xí)技術(shù)對(duì)具有多個(gè)標(biāo)簽的數(shù)據(jù)進(jìn)行分類。在實(shí)際應(yīng)用中,多標(biāo)簽分類問題往往涉及高維稀疏數(shù)據(jù)、標(biāo)簽之間的相關(guān)性以及樣本不平衡等問題,這對(duì)多標(biāo)簽分類算法的性能提出了更高的要求,深度學(xué)習(xí)的興起使得多標(biāo)簽分類在處理數(shù)據(jù)時(shí)具有了更強(qiáng)的表現(xiàn)力和擴(kuò)展性。
2 PowerShell 特征設(shè)計(jì)
使用不同的混淆加密技術(shù)可使PowerShell具有不同的字符分布,即使輕微的變化也能夠逃避傳統(tǒng)的檢測(cè)方法,為判定混淆加密類型,本文設(shè)計(jì)的字符分布特征向量主要構(gòu)成有如下四個(gè)方面。
2.1 字符頻率
基于字符分布的特征是指通過統(tǒng)計(jì)PowerShell中各種字符出現(xiàn)頻率,生成一組特征向量,用來訓(xùn)練深度學(xué)習(xí)模型。字符頻率特征可以更全面精確地描述PowerShell命令中字符的數(shù)量和分布情況。
2.2 字符種類
不同的混淆加密方法,文本會(huì)有不同的字符種類,本文并沒有通過對(duì)PowerShell進(jìn)行預(yù)處理來消除或規(guī)范化冗余的標(biāo)記或字符,而是從 PowerShell可打印字符中收集了97種字符作為輸入向量一部分。
2.3 字符長(zhǎng)度
基于編碼方案的混淆通常比基于字符串的操作和壓縮要長(zhǎng)得多,字符長(zhǎng)度是指PowerShell中字符的數(shù)量。通常來說,惡意PowerShell的字符長(zhǎng)度要比正常的PowerShell長(zhǎng),因?yàn)閻阂饷钔ǔ0嗟拇a和注釋。
2.4 信息熵
一個(gè)字符串的信息熵[5]越高,說明該字符串中包含的字符更為隨機(jī),沒有明顯的規(guī)律可循,也就是說,這個(gè)字符串更加難以被預(yù)測(cè)和識(shí)別,對(duì)于惡意代碼分類任務(wù),字符串的信息熵可以作為一種特征來衡量惡意代碼的混淆程度和字符分布的復(fù)雜性。
3 DNNMLC 設(shè)計(jì)與實(shí)現(xiàn)
3.1 DNNMLC 設(shè)計(jì)
深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Network,DNN) 是一種由多個(gè)隱藏層組成的前饋神經(jīng)網(wǎng)絡(luò)模型,通過層層堆疊的方式學(xué)習(xí)數(shù)據(jù)的抽象特征表示。DNN 的優(yōu)勢(shì)在于其強(qiáng)大的擬合能力和表達(dá)能力,通過設(shè)計(jì)合理的網(wǎng)絡(luò)結(jié)構(gòu),選擇適當(dāng)?shù)募せ詈瘮?shù)和損失函數(shù),并采用反向傳播算法對(duì)網(wǎng)絡(luò)參數(shù)進(jìn)行優(yōu)化,其可以適應(yīng)惡意PowerShell復(fù)雜的字符代碼分布和模式。
而多標(biāo)簽分類器的任務(wù)主要是學(xué)習(xí)輸入特征與多個(gè)標(biāo)簽之間的關(guān)聯(lián)性,標(biāo)簽可以代表不同的混淆加密,例如字符串混淆、變量替換、代碼拼接等。本文設(shè)計(jì)的DNNMLC 如表1 所示,其中優(yōu)化算法為 Adam(Adaptive Moment Estimation) ,Adam算法通過估計(jì)每個(gè)參數(shù)的一階矩(平均梯度)和二階矩(平均梯度的平方)來自適應(yīng)調(diào)整每個(gè)參數(shù)的學(xué)習(xí)率,從而可以在處理大量數(shù)據(jù)和高維空間時(shí)提高訓(xùn)練效率。前5層激活函數(shù)選擇ReLU(Rectified Linear Unit) 以增加網(wǎng)絡(luò)的非線性表達(dá)能力,輸出層使用激活函數(shù)Sigmoid,它可以將每個(gè)標(biāo)簽的輸出映射到0~1的概率值。
4 實(shí)驗(yàn)設(shè)計(jì)與分析
4.1 數(shù)據(jù)集
本文使用的PowerShell數(shù)據(jù)集由兩部分組成,一是在Github 下載的開源腳本5 000個(gè),二是在由JeffWhite分享的4 100個(gè)標(biāo)記分類的惡意PowerShell。9100 個(gè)PowerShell 腳本在數(shù)據(jù)預(yù)處理環(huán)節(jié)全部被Invoke-Obfuscation代碼混淆工具中各種不同程度的混淆加密模式偽裝。如圖1所示,整個(gè)實(shí)驗(yàn)中,數(shù)據(jù)集中的80%用于模型訓(xùn)練,20%用于測(cè)試。
4.2 評(píng)估指標(biāo)
在實(shí)驗(yàn)中多標(biāo)簽分類器使用了分類算法常用的4 種指標(biāo)來評(píng)判模型有效性,定義如下:
1) 真陽(yáng)性(True Positive, TP),分類結(jié)果為惡意樣本, 真實(shí)為惡意樣本的數(shù)量。
2) 假陽(yáng)性(False Positive, FP),分類結(jié)果為惡意樣本, 真實(shí)為正常樣本的數(shù)量。
3) 真陰性(True Negative, TN),分類結(jié)果為正常樣本, 真實(shí)為正常樣本的數(shù)量。
4) 假陰性(False Negative, FN),分類結(jié)果為正常樣本, 真實(shí)為惡意樣本的數(shù)量。
本文設(shè)計(jì)的多標(biāo)簽器采用準(zhǔn)確率和召回率2種指標(biāo)來評(píng)估分類性能:
4.3 對(duì)比實(shí)驗(yàn)分析
為了驗(yàn)證本文所提方法的有效性,分別對(duì)采用不同學(xué)習(xí)算法模型的多標(biāo)簽分類器進(jìn)行了實(shí)驗(yàn)對(duì)比分析。其中對(duì)問題轉(zhuǎn)化法中的支持向量機(jī)(Support Vec?tor Machine,SVM)和隨機(jī)森林(Random Forest,RF),算法適用法中K近鄰(K-Nearest Neighbors,KNN)與決策樹(Decision Tree,DT) 全部進(jìn)行了實(shí)現(xiàn),參數(shù)設(shè)計(jì)如表2 所示,分類效果對(duì)比如圖2所示
最終通過實(shí)驗(yàn)發(fā)現(xiàn),本文設(shè)計(jì)實(shí)現(xiàn)的基于DNN的多標(biāo)簽分類器,在檢測(cè)20%數(shù)據(jù)集時(shí),即使腳本被深度混淆,DNNMLC也能準(zhǔn)確檢測(cè)出各種混淆加密的復(fù)雜過程,并且整體的準(zhǔn)確率能達(dá)到98%,召回率能達(dá)到96%。而傳統(tǒng)的SVM、RF、KNN和DT的準(zhǔn)確率與召回率普遍都在90%以下,其中遺漏比較多的是深度混淆的惡意PowerShell。DNNMLC檢測(cè)出PowerShell混淆加密類型同時(shí),就可以使用相應(yīng)的正則表達(dá)式解混淆PowerShell腳本,然后調(diào)用微軟的反惡意軟件掃描接口AMSI[6](Anti-Malware Scan Interface)對(duì)相應(yīng)的解混淆代碼進(jìn)行掃描[7],檢測(cè)惡意PowerShell的意圖,進(jìn)而被系統(tǒng)的殺毒軟件或Windows安全中心攔截,最大限度地阻攔惡意PowerShell繞過[8]系統(tǒng)的各種安全防御措施。
5 結(jié)論
PowerShell混淆加密技術(shù)通常對(duì)代碼進(jìn)行各種形式的修改,為了能夠在較短的時(shí)間內(nèi)快速響應(yīng)和防止惡意行為, DNNMLC將PowerShell代碼的解混淆任務(wù)看作一個(gè)多標(biāo)簽分類問題,將每一個(gè)特征看作一個(gè)標(biāo)簽。實(shí)驗(yàn)結(jié)果表明,本文設(shè)計(jì)實(shí)現(xiàn)的DNNMLC在檢測(cè)惡意PowerShell混淆加密類型時(shí),即使對(duì)于多重深度混淆的腳本也具有很高的檢測(cè)精度、自適應(yīng)性和可擴(kuò)展性。DNNMLC 能夠有效阻攔惡意PowerShell 的執(zhí)行,給系統(tǒng)提供增強(qiáng)的惡意軟件防護(hù)功能。