溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何利用深度學(xué)習(xí)檢測惡意PowerShell

發(fā)布時(shí)間:2021-12-18 10:04:36 來源:億速云 閱讀:247 作者:小新 欄目:網(wǎng)絡(luò)安全

這篇文章主要介紹如何利用深度學(xué)習(xí)檢測惡意PowerShell,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

深度學(xué)習(xí)(deep learning)是機(jī)器學(xué)習(xí)大框架下的一類算法,在圖像和文本分類等任務(wù)上,深度學(xué)習(xí)方法明顯優(yōu)于傳統(tǒng)方法。隨著發(fā)展,利用深度學(xué)習(xí)建立新的威脅檢測方法具有很大的潛力。

機(jī)器學(xué)習(xí)算法使用數(shù)字模型,因此圖像、文檔或電子郵件等對象通過特征工程的步驟轉(zhuǎn)換為數(shù)字形式,在傳統(tǒng)的機(jī)器學(xué)習(xí)方法中,這需要大量的人力。通過深度學(xué)習(xí),算法可以在相對原始的數(shù)據(jù)上進(jìn)行操作,無需人工干預(yù)即可提取特征。

在本文中,我們提供了一個(gè)深度學(xué)習(xí)技術(shù)的示例,該技術(shù)最初是為自然語言處理(NLP)開發(fā)的,現(xiàn)在被采用并應(yīng)用于檢測惡意powershell腳本。

自然語言處理中的詞嵌入模型

我們的目標(biāo)是對powershell腳本進(jìn)行分類,我們簡要介紹在自然語言處理領(lǐng)域中如何處理文本分類。

一個(gè)重要的步驟是將單詞轉(zhuǎn)換成機(jī)器學(xué)習(xí)算法可以使用的向量(數(shù)字元組)。首先為詞匯表中的每個(gè)單詞指定一個(gè)唯一的整數(shù),然后將每個(gè)單詞表示為0的向量,其中1位于對應(yīng)于該單詞的整數(shù)索引處。盡管在許多情況下都很有用,但有明顯的缺陷。所有的詞之間都是等距的,詞與詞之間的語義關(guān)系并沒有反映在對應(yīng)向量之間的幾何關(guān)系中。

上下文嵌入模型是一種較新的方法,它通過從數(shù)據(jù)中學(xué)習(xí)單詞的上下文關(guān)系來克服這些限制。上下文嵌入模型是在像維基百科這樣的大型文本數(shù)據(jù)集上訓(xùn)練的。word2vec算法是該技術(shù)的一個(gè)實(shí)現(xiàn),它不僅能將詞的語義相似度轉(zhuǎn)化為向量的幾何相似度,而且能保持詞之間的極性關(guān)系。例如,在word2vec表示中:

如何利用深度學(xué)習(xí)檢測惡意PowerShell

嵌入powershell腳本

由于訓(xùn)練一個(gè)好的模型需要大量的數(shù)據(jù),我們使用了一個(gè)由386k個(gè)不同的未標(biāo)記powershell腳本組成的大型多樣的語料庫。word2vec算法通常與人類語言一起使用,當(dāng)應(yīng)用于powershell語言時(shí),它提供了類似的結(jié)果。我們將powershell腳本拆分為令牌,然后使用word2vec算法為每個(gè)令牌分配一個(gè)矢量表示。

圖1顯示了5000個(gè)隨機(jī)選擇的令牌的矢量表示的二維可視化,其中一些重要令牌高亮顯示。注意語義相似的標(biāo)記是放置在彼此附近的。例如,表示-eq、-ne和-gt的向量(在powershell中分別是“equal”、“not equal”和“greater than”的別名)聚集在一起。類似地,表示allsigned、remotesigned、bypass和unrestricted令牌的向量(它們都是powershell中執(zhí)行策略設(shè)置的有效值)被聚集在一起。

如何利用深度學(xué)習(xí)檢測惡意PowerShell

通過檢查標(biāo)記的向量,我們發(fā)現(xiàn)了一些其他關(guān)系。

令牌相似性:使用令牌的word2vec表示,我們可以識別powershell中具有別名的命令。在許多情況下,最接近給定命令的標(biāo)記是其別名。例如,令牌調(diào)用表達(dá)式Invoke-Expression及其別名IEX的表示形式彼此最接近。這種現(xiàn)象的另外兩個(gè)例子是invoke webrequest及其別名iwr,以及get childitem命令及其別名gci。

我們還測量了幾組標(biāo)記之間的距離。例如,考慮四個(gè)標(biāo)記$i、$j、$k和$true(請參見圖2的右側(cè))。前三個(gè)通常用于表示數(shù)值變量,最后一個(gè)表示布爾常量。正如預(yù)期的那樣,$ true令牌與其他令牌不匹配 ,它是距離群組中心最遠(yuǎn)的(使用歐幾里德距離)。

更具體地說,對于網(wǎng)絡(luò)安全中powershell的語義,我們檢查了令牌的表示:繞過、正常、最小化、最大化和隱藏(參見圖2的左側(cè))。雖然第一個(gè)標(biāo)記是powershell中executionpolicy標(biāo)志的合法值,但其余是windowstyle標(biāo)志的合法值。正如預(yù)期的那樣,bypass矢量表示距離相比其他四個(gè)標(biāo)記的矢量的距離更遠(yuǎn)。

如何利用深度學(xué)習(xí)檢測惡意PowerShell

線性關(guān)系:由于word2vec保留線性關(guān)系,所以計(jì)算向量表示的線性組合會得到語義上有意義的結(jié)果。以下是我們發(fā)現(xiàn)的一些關(guān)系:

如何利用深度學(xué)習(xí)檢測惡意PowerShell

在上述每個(gè)表達(dá)式中,符號≈表示右側(cè)的矢量與作為左側(cè)計(jì)算結(jié)果的矢量最接近(在表示詞匯表令牌的所有矢量中)。

利用深度學(xué)習(xí)檢測惡意powershell腳本

我們使用前一節(jié)介紹的powershell語言的word2vec嵌入模型來訓(xùn)練能夠檢測惡意powershell腳本的深入學(xué)習(xí)模型。

分類模型使用標(biāo)記為“clean”或“malicious”的powershell腳本數(shù)據(jù)集進(jìn)行訓(xùn)練和驗(yàn)證,而嵌入模型則使用未標(biāo)記的數(shù)據(jù)進(jìn)行訓(xùn)練。流程如圖3所示。

如何利用深度學(xué)習(xí)檢測惡意PowerShell

在Microsoft Azure中使用GPU計(jì)算,我們嘗試了各種深度學(xué)習(xí)和傳統(tǒng)ML模型。 與傳統(tǒng)ML模型相比,性能最佳的深度學(xué)習(xí)模型將覆蓋范圍提高了22個(gè)百分點(diǎn)。 該模型如圖4所示,結(jié)合了幾個(gè)深度學(xué)習(xí)構(gòu)建模塊,如卷積神經(jīng)網(wǎng)絡(luò)(CNN)和長短期記憶遞歸神經(jīng)網(wǎng)絡(luò)(LSTM-RNN)。

如何利用深度學(xué)習(xí)檢測惡意PowerShell

應(yīng)用深度學(xué)習(xí)來檢測惡意PowerShell

自首次部署以來,深度學(xué)習(xí)模型高精度地檢測到許多惡意和紅色團(tuán)隊(duì)PowerShell活動。 通過PowerShell獲得的信號與各種ML模型和Microsoft Defender ATP信號相結(jié)合,可以檢測網(wǎng)絡(luò)攻擊。

以下是深度學(xué)習(xí)可以檢測但對其他檢測方法具有一定困難的惡意PowerShell腳本的示例:

如何利用深度學(xué)習(xí)檢測惡意PowerShell

以上是“如何利用深度學(xué)習(xí)檢測惡意PowerShell”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI