基于告警關聯的一種多階段攻擊檢測方法
0x01 Intro
首先需要了解的是,隨著攻擊手段及攻擊機制的改進,現在的攻擊者往往會考慮利用分布式攻擊的方式來進攻。最為直觀的便是高級網絡攻擊會包含多個攻擊階段來實現最終目標。而傳統的入侵檢測系統,例如IDS、防火墻等等用于監視網絡情況的工具會在被攻擊期間產生大量告警。雖然這些告警中包含了關聯攻擊者的攻擊線索,但大部分的告警是與攻擊無關的誤報。對于網絡管理人員來說,手動在大量異構的告警中排查梳理出攻擊者的攻擊階段和路線猶如大海撈針。
作者提出并實現了MAAC,一個多階段攻擊告警關聯分析系統,它能夠有效地減少重復的告警,并根據告警的語義和攻擊階段來組合生成可疑的多階段攻擊路徑。本文主要解決了一個問題,即如何了解告警的語義,并通過語義進行聚合和關聯,最終得到可疑主機和攻擊路徑的順序。這個問題主要有三個方面:
- 告警語義:實現的算法應該能夠理解告警的含義,并通過告警語義分析獲得攻擊所屬階段
- 攻擊關聯性:這部分的挑戰在于通過邏輯語義自動關聯告警,而非是通過特征或者手動關聯
- 攻擊路徑發現:作者的目標是建立一個攻擊告警圖并提供可能存在的攻擊路徑,同時對疑似淪陷的主機進行排序
0x02 Method
作者構建了一個威脅模型用于研究,如下圖

攻擊者首先嘗試攻擊辦公網中的兩臺主機,通過釣魚郵件的方式或其他方法,如CVE-2017011882,但僅成功一臺。隨后,攻擊者在這臺電腦上安裝后門,并開始嘗試橫向移動,其通過這臺受控主機進行內網掃描,嘗試利用MS17-010等漏洞直接控制內網其他主機,這時又僅有一臺成功,這臺主機與核心服務器相連,攻擊者便能夠從核心服務中獲取敏感信息。
在整個入侵過程中,邊界和內部網絡入侵檢測系統會分別產生大量的告警,除此之外還有大量由主機端安裝的安全軟件產生的關于惡意文件和后門的告警。這些告警是混亂,且大量重復的。不論是告警的分散性還是重復性都嚴重阻礙了網絡管理人員的排查,增加了攻擊檢測的難度,所以作者聚焦于如何處理告警而不是如何生成告警。以下是MAAC的架構,總結起來主要是五部分:
- 告警解析:規范化不同安全設備和軟件生成的告警,解析成標準化告警
- 告警信息向量化:主要是為了盡可能減少重復的告警的數量,去掉無意義的干擾項
- 告警關聯分析:在精簡了留存了有效告警之后,MAAC將告警關聯起來生成告警圖,包括同一主機上的告警關聯和不同主機之間告警的關聯
- 圖遍歷:在生成告警圖之后,MAAC會遍歷該圖查找具有三個及以上的所有路徑
- 攻擊路徑排名:作者提出了用于計算路徑概率的方程,以獲得最可能的攻擊路徑

Conclusion
在本文中,作者提出并實現了MAAC,這是一種基于語義分析的告警縮減和告警關聯技術,以解決網絡中安全設備告警數量爆炸導致網絡管理人員無法及時有效地排除攻擊者威脅的情況。同時,MAAC能夠給出可能的攻擊路徑及其可疑程度,進一步協助攻擊檢測,它并不需要先驗知識,完全由告警之間的關聯生成。
讀者在讀完這篇文章后主要有兩個疑問:一是數據集的問題,作者在Real-World Evaluation部分中描述了其用于評估的數據集,但這存在一個問題,這些數據集偏舊了,近幾年安全設備的迭代相較于10年初可謂是日新月異,現有的安全設備的告警相較于作者使用的數據集中的有效性應該會高很多,在這種情況下MAAC的關聯分析會不會更加精準一些呢?二是路徑發現問題,僅僅只是找三個節點及以上的路徑是如何確定的呢,短路徑,即一兩步的攻擊路徑為何不考慮呢?也許攻擊者直接一封郵件郵到網絡管理員那里,恰好網絡管理員又在域控呢?不過總的來說,這篇文章站在一個新的角度對內網攻擊,尤其是這種多階段的攻擊檢測提出了一個特別好的檢測思路。