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