HOME > 解決方案

通過機器學習在攻擊數據中檢測網路安全

2021/10/06

作為Splunk威脅研究團隊(STRT)的新成員,我們找到了一個獨特的機會,以更具影響力的方式訓練機器學習模型。 我們專注於自然語言處理和深度學習的應用,以建立安全分析。 我們被其他數據科學家、藍色團隊成員、反向工程師和前SOC分析師包圍著,他們有著共同的激情和遠見,致力於推動網路防禦領域的先進水準。 STRT已經收集了真實世界和類比的攻擊數據,讓我們不僅使用機器學習發現攻擊活動,但確定如何將見解轉化為檢測,以造福於我們的客戶

最近使用機器學習 (ML) 在 Windows 審核日誌中搜索威脅的練習,其中包含後漏洞利用工具包的痕跡,這表明即使是少量的攻擊數據也能創造新的分析機會。 我們想探索哪些兩用公用事業(即靠傳統工具為生)被利用,利用工具包Meterpreter和科迪奇Koadic來執行發現、橫向運動和其他操作。  Rod Soto,一個多產的威脅工程師和Splunker,策劃了一個包含Windows日誌的數據集,捕獲了這些工具的特徵(例如過程創建,徽標)。

作為一名數據科學家,創建一個指導最少的模型並查看出現哪些異常是很誘人的,因為某些類型的模型(如深度神經網路)提供了一定程度的功能工程,在磨練模型時可能不需要專家直覺。 然而,這是無果而終的調查的良方,尤其是對最終使用者而言。 在機器操作的正常過程中,不乏異常事件序列。 因此,我們需要為模型提供一些指導,但不要過於規範和錯過檢測機會。

我們利用 Rod 對分析哪些日誌和操作的指導(徽標過程建立),將模型集中在投資回報率最高的子數據集上。 我們稱之為已知未知搜索:我們知道攻擊發生的時間以及哪些日誌可能包含攻擊的文物,但不一定包含攻擊的出現方式(如果有的話)。 我們訓練了一個深度學習異常探測器,從 Windows 系統資料夾(例如. C:[Windows])中查找不同尋常的過程創建集合。 我使用的特定模型稱為自動編碼器,它學習壓縮輸入數據,在這種情況下,過程創建計數,進入一個低維空間,然後重新創建原始輸入,使重建盡可能接近原始。 在這些期間,異常收集的過程計數,如過量的icacls.exe調用,最好由攻擊操作而不是正常的操作系統活動來解釋。 我們完成此任務的主要工具是TensorFlow、Jupyter和 Python。 我們的安全內容存儲庫上有一個示例筆記本。 下面是包含我們調查的筆記本的截圖。



Jupyter笔记本的快照。上述细胞发现最异常的活动窗口。在此时间,我们观察了许多从 C:\Windows 推出的可执行程序。请注意,我们看到许多可执行的可执行性被攻击者利用(msiexec、net、icacls、rundll 等)。
 

該模型很快識別出這些工具在過程創建方面的兩種非常不尋常的行為。 首先,我們發現這些工具創建並執行了來自 Windows Temp 的過多過程。 其次,由於Meterpreter和科迪奇Koadic居住在記憶中,他們的許多行動都需要啟動任務主持。 我們確認,從 Windows Temp 創建的流程數量或利用工具包的taskhost和taskhostex調用次數明顯多於我們研究正常 Windows 活動時觀察到的數量。






我們從這次練習中學走了一些關鍵學問。 如果數據集專注於攻擊視窗,並且您對要查找的內容有一般但不精確的想法,則無人監督的機器學習任務(如安全異常檢測)可以既強大又高效。 數據科學家不斷與噪音作鬥爭,嘗試這些技術,很少監督大量的機器沒有已知的攻擊肯定會導致大量的誤報,因為異常發生。 以攻擊數據為起點,然後概括以發現新威脅可能更為有效。 因此,我們不是派SOC分析師去追逐小流氓,而是專注於調查真正的威脅。 我們將繼續利用我們的攻擊數據集進行基於ML的搜索,並定期在我們的博客上發佈有趣的發現。 再見