溯源圖技術在入侵檢測與威脅分析中的應用
現代信息系統中存在的眾多漏洞一直是攻擊者進行攻擊的“關鍵”突破點,因此漏洞檢測已經成為防守方的一門必修課。但常見的漏洞檢測方法中,模糊測試覆蓋率不足,基于符號執行程序的驗證方法又對檢測設備的性能有較高要求,此外漏洞發現后的補洞過程也極為耗時。
入侵檢測與威脅分析系統的研發為對抗攻擊提供了更直接、更快速的新方法, 能很大程度緩解上述問題。然而,現有的入侵檢測系統大多依賴于提取自已有攻擊的攻擊特征,如入侵指標(Indicator of Compromise,IoC)等,其作為檢測依據并未真正把握到攻擊的要點,使得防御者總是落后一步。攻擊者總是可以通過找到新的攻擊面,構造多階段多變的復雜攻擊來繞此類檢測。因此,安全研究人員和從業人員亟需重新考慮傳統的入侵檢測方案,設計出新一代更加通用和魯棒的入侵檢測機制來檢測各種不斷變化的入侵方式。
圖1.痛苦金字塔(The Pyramid of Pain)模型
David Bianco很早便提出了入侵檢測的 “痛苦金字塔模型”(如圖1所示) ,研究指出相對于 “Hash 值”、“IP 地址”等底層入侵指標,“攻擊工具” 和 “攻擊策略、技術、流程(TTPs)” 等高層特征在入侵檢測中有更大的價值,也更難以分析和改變。這是因為底層的入侵指標的出現更具偶然性,因此攻擊者很容易改變這些指標來逃避檢測。此外,無文件攻擊和 “Live-off-the-Land” 攻擊等攻擊技術的出現,使得攻擊行為涉及的底層特征與正常行為完全無法區分。而高層次特征中帶有豐富的語義信息(包括攻擊的方法、目標、利用的技術等),更具魯棒性。對于攻擊者而言,攻擊策略、技術、流程(TTPs)與其最終的攻擊目標直接相關,很難被真正的改變,因此對入侵檢測更有意義。同時,語義信息可以很好的幫助安全分析人員理解攻擊,包括入侵的途徑、可能的損失等,從而針對性地做出對應的止損和彌補措施。
系統溯源圖介紹
2015 年,美國國防部高級研究計劃署(DARPA)啟動的一項名為 “透明計算(Transparent Computing)” 的科研項目為上述問題的解決提供了可能性。該項目旨在通過將目前不透明的計算系統變得透明,輔助海量的系統日志建模,從而為后續的高層次程序行為分析和高效地入侵檢測提供支持。具體來說,該項目將開發一套數據收集與建模系統來記錄和建模所有系統和網絡實體(包括進程、文件、網絡端口等)及其之間的互動和因果關系(Causal Dependency)。這些實體和關系可以以圖的形式表示,如圖2所示,一般被稱為 “溯源圖(Provenance Graph)” 或者 “因果圖(Causality Graph)”。
圖2.Firefox漏洞入侵溯源例
上圖是一個利用Firefox漏洞進行入侵的溯源圖例子:攻擊者從x.x.x.x:80發起攻擊,利用Firefox的漏洞創建并啟動了mozillanightly瀏覽器插件,該插件通過cmd執行環境信息獲取命令獲取敏感信息后回傳到x.x.x.x:443,最后創建burnout.bat清除所有入侵痕跡。(箭頭方向代表數據流或者控制流方向)
溯源圖是一個帶有時間信息的有向圖,兩個節點之間可能有多條不同屬性(包括時間和具體操作等)的邊。該圖準確的記錄了系統實體間的交互關系,包含豐富的信息。前文提到的攻擊圖可以看作溯源圖中提取并抽象后的,與攻擊直接相關的部分子圖。但需要指出的是,溯源圖記錄的并不是細粒度的數據流和控制流,而是可能的因果控制關系,因此在進行多跳的分析時會引入錯誤的依賴,導致核心的依賴爆炸問題,這也是基于溯源圖入侵檢測的核心問題。
基于系統溯源圖的入侵檢測框架
圖3.基于系統溯源圖的入侵檢測系統框架及關鍵技術
溯源圖能很好地還原系統中的各種行為,使其成為了近年來入侵檢測領域熱門有潛力的研究方向。安全研究者在其基礎上設計了多種模型來進行系統中惡意行為地檢測與分析,包括 “數據采集、解析和壓縮”,“數據存儲與壓縮”,和 “入侵檢測和溯源分析” 在內的許多具體研究問題。我們整理了威脅分析與檢測系統的整體框架,如圖3所示。以下,我們將具體討論框架的三個模塊并對其中技術進行分析:
01數據收集模塊
數據收集是所有檢測和分析系統的基礎。一般而言,基于溯源圖的威脅檢測系統會收集系統日志作為數據源,包括 Windows 的內置日志系統 Event Tracing for Windows(ETW)、Linux 的日志系統 Auditd等。基于依賴分析的方法的一個普遍的挑戰是 “依賴爆炸問題”。錯誤的依賴會導致后續分析的開銷與誤報指數型增長,導致分析的失敗,而細粒度的數據收集可以從根本上緩解這一問題。
02數據管理模塊
系統日志為威脅分析提供了大量有價值的信息,然而其巨大的數據量給數據的存儲和分析帶來了很大的壓力。因此在數據管理模塊中,我們一方面需要提供合理的數據存儲模型來存儲海量的數據并提供高效的查詢分析接口,另一方面要嘗試通過壓縮和剪枝去除冗余的數據。
數據存儲模型 利用圖結構存儲溯源圖是一種解決思路,但受溯源圖規模限制,將圖完全存儲在內容內存中是不現實的,只能在小規模的實驗中使用,無法大規模部署。因此,研究者們提出了將圖中所有邊視為數據流,每個邊只處理一次,并利用節點上標簽記錄計算過程的方案。為了加以區分,我們將用圖數據存儲圖的方案稱為 “緩存圖”,流式處理的方案為“流式圖”。流式圖方案存在優勢的原因在于溯源圖中邊的數量遠遠大于節點數量,因此查詢節點的屬性效率比查詢邊的效率高得多。類似地,一些研究以節點作為鍵,邊為值,將溯源圖存儲在查詢效率更高的關系型數據庫中,我們稱之為 “節點數據庫”。
圖4.對邊數據的壓縮算法
圖5.對節點數據的壓縮算法
數據壓縮算法 溯源圖上的數據壓縮算法可以大致分為兩類:一類是通用的壓縮算法,盡可能地保持了溯源圖的信息;另一類與檢測和分析算法耦合,使用有較大的局限性,而本文主要分析前者。
通用的壓縮算法又可以分為對節點數據的壓縮和對邊數據的壓縮兩類,分別如圖4和圖5所示。基于的節點算法效果浮動較大,在程序初始化比較頻繁的場景(如數據分析等)效果較好。為壓縮邊數據,研究者們先提出了語義保持的不同定義,包括 “因果保持”等與對應的壓縮算法。整體而言,由于溯源圖中邊的基數更大,對邊的壓縮算法往往整體的壓縮率更高。但是,這些通用的壓縮方法不能從根本上解決依賴爆炸問題,在處理大規模的、實體間依賴關系復雜的溯源圖時作用十分有限。
03威脅檢測與分析模塊
表1.現有基于系統溯源圖的入侵檢測系統的分類
溯源圖提供了豐富的語義信息,支持多種檢測分析方案,如表1所示。這些檢測方案考慮了不同的攻擊模型,針對不同攻擊模型提出來不同的檢測模型,大致可以分為幾類:
第一類,也是最直觀的一種方法是子圖匹配,在溯源圖中定位攻擊行為抽象出的攻擊圖。準確的圖匹配的開銷過大,因此研究者提出了幾種模糊匹配方法,包括:基于威脅情報的圖對齊、基于圖嵌入的機器學習匹配等。
第二類方法是用節點標簽緩存計算結果,并用標簽的傳遞代替復雜的圖計算的 “標簽傳播(TagPropagation)算法”。這類算法一般使用流式圖作為數據模型,避免了大量的數據讀寫操作,因此整體效率最高, 但也對檢測和分析算法作出了更多的限制。
第三類是異常檢測模型。已有的溯源圖上的異常檢測模型一般先尋找局部的異常點,并通過依賴分析關聯異常點,從而作出全局的判斷。