當前位置:
首頁 > 新聞 > 如何利用深度神經網路預防惡意軟體

如何利用深度神經網路預防惡意軟體

目前,越來越多的網路安全解決方案都在依靠機器學習(ML)技術,來保護用戶免受惡意軟體的攻擊。雖然基於ML的方法(如FireEye終端安全的MalwareGuard特性)在檢測最新的網路威脅方面做得非常出色,但它們也帶來了大量的研發和維護成本,MalwareGuard就是FireEye的數據科學家花費了兩年時間研究出來的成果。由於創建和策劃大量有用的安全特性需要大量的時間和專業知識,所以只有來自惡意軟體分析師和數據科學家才能做到。請注意,本文中所提到的特性是指可執行文件的屬性或特性,可用於區分良好軟體和惡意軟體。然而,近年來,深度學習方法在自動學習的複雜問題領域(如圖像,語音和文本),取得了令人矚目的成果。FireEye是否可以利用深度學習中的這些技術進步,在成本很小和專業知識很少的情況下檢測出惡意軟體呢?

事實證明,深度學習架構,特別是卷積神經網路(Convolutional Neural Networks, CNN),只需查看Windows可移植可執行文件(PE)文件的原始位元組就可以很好的檢測出惡意軟體。卷積神經網路(Convolutional Neural Networks, CNN)是一類包含卷積計算且具有深度結構的前饋神經網路(Feedforward Neural Networks),是深度學習(deep learning)的代表演算法之一 [1-2] 。由於卷積神經網路能夠進行平移不變分類(shift-invariant classification),因此也被稱為「平移不變人工神經網路(Shift-Invariant Artificial Neural Networks, SIANN)」。

在過去的兩年中,FireEye一直在嘗試用深度學習架構來對惡意軟體進行分類,以及如何預防它們。經過研究,研究人員發現與傳統的基於ML的解決方案相比,深度學習架構具有驚人的準確性,同時還非常高效幾乎不用人工干預。而且其他機構的研究人員也做了類似的研究,檢測惡意軟體的準確率高達96%。

你可能會疑惑,這些深度學習模型為什麼在只關注原始位元組而沒有任何額外的結構、語義或句法上下文的情況下,它們怎麼可能將良性軟體與惡意軟體區分開來?在這篇文章中,我們將通過分析FireEye的基於深度學習的惡意軟體分類器來回答這個問題。

FireEye的深度學習分類器的介紹

1.FireEye的深度學習分類器可以僅使用Windows PE文件的非結構化位元組成功識別惡意軟體。

2.基於導入的特性(如名稱和函數調用指紋),會在分類器的所有級別學習的特性中發揮重要作用。

3.與其他深度學習應用不同,深度學習分類器的低級特性通常就會捕獲所有類的屬性,FireEye的許多低級特性都專註於發現惡意軟體中存在的特定的資料庫數列(sequence)。

4.分類器的端到端分析採用了與人工分析特性非常相似的原理,這足以保證它所捕獲的信息人類可以理解。

在深入分析之前,讓我們首先討論一下CNN分類器對Windows PE文件位元組做了什麼處理。圖1顯示了分類器在從原始可執行數據「學習」時執行的高級操作:

1. CNN分類器是通過向可執行文件的原始位元組表示開始學習的,一開始,它不包含任何結構;

2. 這些原始位元組數列嵌入到一個高維空間,每個位元組被替換為一個n維向量的值;

3.該嵌入步驟允許CNN通過在n維嵌入空間內移動,從而學習離散位元組之間的關係。例如,如果位元組0xe0和0xe2可互換使用,那麼CNN可以在嵌入空間中將這兩個位元組移動得更靠近,這樣用一個位元組替換另一個位元組的成本就很小。接下來,就是執行嵌入的位元組數列;

4.執行卷積,當分類器在整個訓練集中執行此操作時,卷積濾波器開始學習區分良性軟體和惡意軟體的某些數列的特性;

5.簡單來說,分類器會在嵌入的位元組數列上滑動固定長度的窗口,卷積濾波器從這些窗口中學習重要的特性。一旦分類器掃描了整個數列,它就可以彙集數列每個區段中的最佳特性以傳遞到下一個級別。

6.在實踐中,卷積和池化操作以分層方式重複使用,目的就是將許多低級特性聚合成對分類更有用的較少數量的高級特性。最後,分類器使用這些彙集的聚合特性作為一個個參數輸入到神經網路中,該神經網路就會將PE文件樣本分類為良好軟體或惡意軟體。

使用Windows PE文件的原始位元組的卷積神經網路的檢測過程

我們在本文分析分類器的特定深度學習體系結構實際上有5個卷積層和最大池層,它們按照層次結構的方式排列,這允許分類器可以將較低層級學習來的複雜特性也組合到神經網路中。為了有效的訓練這樣一個深度神經網路,分類器必須將輸入數列限制為一個固定長度,如果有的位元組超出此長度,則要裁切多餘的位元組,如果有的位元組太小,則要使用特殊填充符號填充,以達到規定的長度。而本文所講的分類器選擇了100KB的輸入長度,不過FireEye的研究人員已經嘗試過超過1MB的長度。分類器對超過1500萬個Windows PE文件進行了CNN模型的檢測,其中80%是良性軟體,其餘是惡意軟體。對2018年6月至8月在野外觀察到的近900萬份PE文件進行檢測時,分類器的準確率高達95.1%,F1得分為0.96,足見其準確性。

為了弄清楚分類器對惡意軟體的理解程度,研究人員將依次檢查架構的每個組件。在檢查時,研究人員將使用從測試數據中獲取的4000個PE文件的樣本來檢查,或者使用來自NotPetya,WannaCry和BadRabbit勒索軟體系列的6個較小的工件集來檢查特定特性。

(嵌入)空間中的位元組

嵌入空間可以編碼分類器已經了解的關於單個位元組之間的關係,並且確定某些位元組是否因為它們對分類器的決定具有隱含的重要性而被區別對待。為了梳理出這些關係,研究人員將使用兩種方法:(1)MDS(multi-dimensional scaling),多維尺度分析,是一種降維演算法,它試圖找到一個映射將高維空間的數據映射到低維空間中,並且這個映射要儘可能的保持數據點之間的距離不變。(2)DBSCAN聚類,基於密度的方法的特點是不依賴於距離,而是依賴於密度,從而克服基於距離的演算法只能發現「球形」聚簇的缺點。DBSCAN的核心思想是從某個核心點出發,不斷向密度可達的區域擴張,從而得到一個包含核心點和邊界點的最大化區域,區域中任意兩點密度相連。降維技術允許研究人員從高維嵌入空間移動到近似二維空間中,進而將其視覺化,同時仍然保留數據點的整體結構和組織。同時,聚類技術允許研究人員識別密集的點群,以及沒有鄰近點的離群點。離群點會被模型視為「特殊」數據點,因為只有密集的點集群可以互換使用。

使用多維尺度分析(MDS)對位元組嵌入空間進行可視化,然後使用基於層次密度的DBSCAN聚類進行聚類,其中聚類數據點的圖在左和離群數據點的圖在右

在圖2的左側,是位元組嵌入空間的二維表示,其中每個點集群都會被標記,並且離群點群被標記為-1。正如你所看到的,絕大多數位元組都集中在一個點集群中(集群3),而其餘三個點集群每個只有兩個位元組。雖然這些集群中沒有明顯的語義關係,但所包含的位元組本身也很有趣,例如,集群0包含一些特殊填充位元組,這些位元組僅在文件小於固定長度時使用,而集群1包括ASCII字元『r.』。

然而,更讓研究人員感興趣的是那些離群數據點,如圖3右圖所示,一些有趣的趨勢開始出現。例如,0x0到0x6範圍內的每個位元組都存在,這些位元組通常用於短的向前跳轉,或者當寄存器用作指令參數(例如eax,ebx等)時。有趣的是,0x7和0x8在集群2中組合在一起,這可能表明它們在測試數據中可互換使用,這意味著0x7也可以理解為為寄存器參數。另一個明顯的趨勢是在一組離群值中存在一些ASCII字元,包括" n","A","e","s"和"t"。最後,研究人員還會看到幾個操作碼,包括調用指令(0xe8),loop and loopne (0xe0, 0xe2),以及斷點指令(0xcc)。

有了這些發現,研究人員就可以了解到分類器在低級特性中所發現的屬性——ASCII文本和特定類型指令的使用。

低級特性的解讀

首先是檢查第一層卷積濾波器學到的低級特性,卷積是一種運算方法,卷積濾波器就是利用卷積運算的原理來構成濾波器,來提取特性。卷積運算決定了該濾波器的性能。在分類器的體系結構中,研究人員在該層使用了96個卷積濾波器,每個濾波器都學習了基本的構建塊特性,這些特性將在後續層中不斷進行組合,以獲得有用的高級特性。一旦其中一個過濾器發現它可以在當前卷積中學習的位元組模式時,它將產生一個大的激活值分類器就可以使用該值作為識別每個過濾器最有趣位元組的方法。當然,由於分類器會檢查原始位元組數列,這隻會告訴使用者要查看哪些文件偏移量,且其中的原始位元組還無法解釋為人類可以理解的內容。為此,研究人員會使用PEFile解析文件,並將BinaryNinja的反彙編程序應用於可執行區段,以便更容易的識別每個過濾器的學習特性中的常見模式。

由於需要檢查大量過濾器,因此研究人員可以通過了解在4000個Windows PE文件樣本中哪些過濾器具有最強的激活以及這些激活發生在這些文件中的何處來縮小搜索範圍。圖3中顯示了4000個樣本數據集中100個最強激活的位置。這代表了一些很有趣的趨勢,其中一些趨勢是能預測到的。除此之外,研究人員還有一些更驚奇的發現。首先,分類器架構中,該級別的大多數激活都發生在".text"區段,該區段通常包含可執行代碼。當分類器開始比較惡意軟體和良性軟體子集之間的".text"區段時,惡意軟體集的激活明顯更多,這意味著即使在這麼低的級別,似乎某些過濾器已經發現了位於惡意軟體中的特定位元組數列。此外,研究人員還看到了"UNKNOWN"區段,該區段是在PE文件的有效範圍之外發生的激活,這意味著在惡意軟體組中發生的激活比在良性軟體中激活的更多。這就很有意思了,因為許多混淆和逃脫技術都依賴於將數據放置在非標準位置(例如,將PE文件相互嵌入)。

低級激活位置在PE文件標頭和區段之間的分布,激活的總體分布(左)和良好或惡意軟體子集的激活(右), UNKNOWN表示文件有效範圍之外的區域,NULL表示空節名稱

研究人員還可以通過繪製4000個PE文件中每個過濾器的前100個激活來檢查卷積濾波器之間的激活趨勢,如圖4所示。其中一些過濾器與發現的特性都會體現在惡意軟體樣本中。在這種情況下,過濾器57的激活幾乎只發生在惡意軟體集中,因此這將是一個重要的過濾器。從過濾器激活的分布中獲得的另一個主要結論是,該分布趨勢很集中,在分類器的體系結構中,只有兩個過濾器處理該級別的大多數激活。事實上,在分析的4000個文件集中,一些過濾器根本沒有被激活。

96個低級卷積濾波器中的激活分布,激活的總體分布(左)和良好或惡意軟體子集的激活(右)

現在我們已經確定了最有趣和最活躍的過濾器,分類器可以反彙編它們激活位置周圍的代碼。特別是,過濾器83和57,這兩個過濾器在研究人員的基於激活值的模型中都是重要的過濾器,圖5顯示了這些過濾器在幾個勒索軟體工件中的反彙編結果。

在過濾器83中,當研究人員查看位元組的ASCII編碼時,激活的趨勢變得非常清楚,這表明過濾器已經學會了檢測某些類型的導入。如果研究人員仔細觀察激活字元(用"*"表示),它們總是包括像"r","s","t"和"e"這樣的字元,在嵌入分析期間,所有這些字元都被識別為離群值或在它們自己獨特的集群中發現。在過濾器57中,當研究人員看到反彙編的結果時,可以看到一個清晰的攻擊模式,其中過濾器激活包含多個推送指令和調用指令的數列,這本質上是用多個參數識別函數調用。

在某些時候,研究人員可以將過濾器83和57視為檢測相同行為的兩個角度,過濾器83檢測是否有惡意導入,而57檢測這些導入(即通過指紋識別參數的數量和使用)的具體用途。由於卷積濾波器的獨立性質,導入內容與其用途之間的關係(例如,哪些導入內容在哪裡使用)會丟失,並且分類器將這些視為兩個完全獨立的特性。

在勒索軟體中,過濾器83(左)和57(右)的激活示例,以「*」開頭的行包含實際的過濾器激活,其他行用於上下文

除了上面描述的與導入內容相關的特性之外,研究人員在分析中還確定了一些過濾器,這些過濾器對包含利用代碼的函數(如DoublePulsar或EternalBlue)中的特定位元組數列進行了鎖定分析。例如,過濾器94在分析的BadRabbit工件的EternalRomance漏洞利用代碼的區段上激活。請注意,這些低級別過濾器不一定會檢測特定的漏洞利用活動,而是在同一函數中對周圍代碼中的位元組數列進行激活。

這些結果表明分類器已經學習了一些與ASCII文本和指令用法相關的非常具體的位元組數列,這些位元組數列與導入代碼中的導入、函數調用和工件有關。這一發現令人驚訝,因為在其他機器學習領域,例如圖像領域,低級過濾器通常會學習跨所有類的通用的、可重用的特性。

端到端特性分析

雖然CNN分類器的底層似乎已經學會了特定的位元組數列,但更大的問題是,分類器的深度分析和複雜性(即層的數量)是否會幫助分析人員在層次結構向上移動時提取更有意義的屬性?為了回答這個問題,研究人員必須檢查分類器的決策和每個輸入位元組之間的端到端關係。這允許研究人員直接評估輸入數列中的每個位元組(或其片段),並查看分類器是依靠什麼來決策所評估的是惡意軟體或良性軟體。為了完成這種端到端分析,研究人員利用了Lundberg和Lee開發的SHapley Additive exPlanations(SHAP)框架,SHAP值(SHapley Additive exPlanations)可以分解預測以顯示每個特性的影響,換句話說,每個SHAP值測量我們模型中每個特性對每個預測的正面或負面貢獻的程度。另外,研究人員還使用了GradientSHAP方法,該方法結合了許多技術來精確識別每個輸入位元組的貢獻,正SHAP值表示惡意軟體的特性,負SHAP值表示良性軟體的特性。

在將GradientSHAP方法應用于勒索軟體數據集之後,研究人員注意到許多最重要的端到端特性與他們在分類器底層發現的特定位元組數列的類型沒有直接關係。相反,許多端到端特性與傳統ML模型中手工檢測特性密切相關。例如,對勒索軟體樣本進行端到端分析後,研究人員可以在PE標頭的校驗和區段中識別出了幾個惡意特性,這是傳統ML模型中常用的特性。其他值得注意的端到端特性包括是否存在與用於簽署PE文件的證書相關的某些目錄信息,區段表中定義PE文件各個區段屬性的異常,以及特定的導入,這些異常特性(例如,GetProcAddress和VirtualAlloc)通常會由惡意軟體使用。

圖6顯示了WannaCry勒索軟體工件的文件偏移量中SHAP值的分布,此示例中發現的許多最重要的惡意特性都集中在PE標頭結構中,包括前面提到的校驗和與目錄相關的特性。然而,該示例中一個特別有趣的觀察結果是它包含嵌入其中的另一個PE文件,CNN發現了與此相關的兩個端到端特性。首先,它確定了區段表的一個區域,表示「.data」區段的虛擬大小比該區段的規定物理大小大10倍。其次,它在嵌入式PE文件內發現了惡意的導入和導出。總的來說,這些結果表明,FireEye的分類器的深度學習似乎有助於它學習更多的抽象特性,並超越了我們在底層激活中觀察到的特定位元組數列。

WannaCry工件文件偏移量的SHAP值,具有正值的文件偏移量與惡意端到端特性相關聯,而具有負值的偏移量與良性特性相關聯

總結

在這篇文章中,我們深入分析了FireEye分類器基於位元組的深度學習的內部工作原理,以便了解它以及其他類似的深度學習分類器是如何從其非結構化原始位元組中學習惡意軟體內容的。通過我們的分析,我們了解了分類器的操作過程和相關特性:

1.導入特性:導入特性可以讓分類器的所有級別都學習到各個級別所收集的惡意特性。研究人員在嵌入層,低級卷積特性和端到端特性中都發現了基於ASCII的導入特性的證據。

2.低級指令特性: CNN分類器的底層的幾個特性可以捕獲具有特定行為的指令數列,例如特定類型的函數調用或圍繞某些類型的漏洞利用的代碼。在許多情況下,這些特性主要與惡意軟體相關聯,這與CNN在其他領域(如圖像分類)的典型用法相反,在圖像分類中,低級特性會捕獲數據的一般特性。此外,這些低級特性並未出現在惡意的端到端特性中。

3.端到端特性:也許我們分析的最有趣的結果是,許多重要的惡意的端到端特性與傳統ML分類器中常見的手工檢測特性密切相關。例如證書是否存在、是否有明顯錯誤的校驗等特性與我們發現的低層特性沒有明顯的相似之處。相反, CNN分類器的深度學習和複雜性似乎在特定位元組數列的分析特性中起著關鍵作用。

很明顯,深度學習可以在為預防最新惡意軟體供了一條更有效的道路。與此同時,為了創建一個可行的解決方案來解決本文中討論的缺陷,需要進行重大改進。下一步最重要的是改進體系結構,以包含關於可執行文件的結構、語義和語法上下文的更多信息,而不是將其視為非結構化位元組數列。通過將這種專門的領域知識直接添加到深度學習體系結構中,分類器就可以專註於學習每個上下文的相關特性,推斷其相關關係,並創建更強大的端到端特性。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 嘶吼RoarTalk 的精彩文章:

多個安卓牆紙APP運行惡意廣告
通過.NET實現Gargoyle

TAG:嘶吼RoarTalk |