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