冷濤,蔡利君,于愛民,2,朱子元,2,馬建剛,李超飛,2,牛瑞丞,2,孟丹,2
(1.中國科學(xué)院信息工程研究所,北京 100093;2.中國科學(xué)院大學(xué)網(wǎng)絡(luò)空間安全學(xué)院,北京 100049;3.四川警察學(xué)院智能警務(wù)四川省重點(diǎn)實(shí)驗(yàn)室,四川 瀘州 646000)
當(dāng)前,政府和企業(yè)面臨著高級(jí)持續(xù)性威脅(APT,advanced persistent threat)[1]。震網(wǎng)攻擊、極光漏洞先后發(fā)生,世界各國開始重視APT 攻擊。傳統(tǒng)的APT 攻擊檢測方法主要聚焦單步攻擊檢測,無法捕獲系統(tǒng)長期運(yùn)行行為,而APT 攻擊大量應(yīng)用零日漏洞,導(dǎo)致威脅檢測困難。2015 年,美國國防部高級(jí)研究計(jì)劃局提出4 年透明計(jì)算計(jì)劃[2],希望找到一種高保真和可視化的方法來抽象出系統(tǒng)中的攻擊活動(dòng)。研究人員發(fā)現(xiàn)依靠系統(tǒng)監(jiān)控日志數(shù)據(jù)構(gòu)造具有較強(qiáng)抽象表達(dá)能力的溯源圖進(jìn)行因果關(guān)系分析,能有效表達(dá)威脅事件的起因、攻擊路徑和攻擊影響,為威脅發(fā)現(xiàn)和取證分析提供較高的檢測效率和穩(wěn)健性[3]。Han 等[3]介紹了基于溯源圖的入侵檢測的機(jī)遇和挑戰(zhàn)。Zafar 等[4]描述了安全溯源的生命周期,提出了現(xiàn)有安全溯源方案的分類方法,并指出了它們的優(yōu)缺點(diǎn)。Tan 等[5]討論了網(wǎng)絡(luò)攻擊溯源中數(shù)據(jù)源優(yōu)化和數(shù)據(jù)關(guān)系分析兩類文獻(xiàn),并圍繞安全性、有效性(效能)、效率進(jìn)行對(duì)比分析。Li 等[6]側(cè)重討論利用系統(tǒng)級(jí)溯源圖構(gòu)建攻擊模型,進(jìn)行威脅檢測和調(diào)查。潘亞峰等[7]重點(diǎn)綜述了APT 攻擊場景重構(gòu)方法。本文重點(diǎn)綜述了基于溯源圖的數(shù)據(jù)采集、數(shù)據(jù)管理(圖構(gòu)建、圖縮減、圖存儲(chǔ)和圖查詢)、數(shù)據(jù)分析(威脅檢測、威脅狩獵、取證分析)等工作。
本文貢獻(xiàn)可概括為:1) 提出了基于溯源圖的威脅發(fā)現(xiàn)和取證分析框架;2) 總結(jié)了多種場景下日志采集、數(shù)據(jù)縮減和存儲(chǔ)方案;3) 分類總結(jié)了威脅檢測、威脅狩獵、取證分析的研究方法和模型;4) 展望了下一步研究方向。
管理員通過系統(tǒng)審計(jì)或配置服務(wù)器可以獲得多個(gè)層級(jí)的日志事件,如應(yīng)用程序級(jí)、網(wǎng)絡(luò)級(jí)、指令級(jí)和系統(tǒng)級(jí)[8]。應(yīng)用程序級(jí)日志是應(yīng)用程序產(chǎn)生的日志,如網(wǎng)站服務(wù)器等應(yīng)用程序產(chǎn)生的日志。網(wǎng)絡(luò)級(jí)日志可通過監(jiān)控系統(tǒng)的網(wǎng)絡(luò)訪問獲得,如Zeek捕獲網(wǎng)絡(luò)流量日志。指令級(jí)日志是指機(jī)器指令產(chǎn)生的日志,可提供完整信息,但很難理解。系統(tǒng)級(jí)日志是一串按時(shí)間順序排列的事件元組,表示不同時(shí)間某進(jìn)程(或線程)訪問某個(gè)文件或網(wǎng)絡(luò)連接的方式。Auditd、ETW 等內(nèi)核級(jí)框架審計(jì)工具可獲取系統(tǒng)調(diào)用事件日志。研究者將系統(tǒng)級(jí)日志事件抽象為溯源圖表示[8]。
定義1溯源圖。設(shè)定溯源圖G=,其中,S表示主體(進(jìn)程或線程)的集合,主體屬性包括進(jìn)程id、pid、命令行、所有者、代碼和數(shù)據(jù)的標(biāo)簽等;O表示客體(如文件、管道、網(wǎng)絡(luò)連接等)集合,客體屬性包括名字、類型、所有者和標(biāo)簽;E表示系統(tǒng)調(diào)用事件方式集合,如read、write、fork、open、create 等,指實(shí)體(主體和客體)間的信息流;T表示時(shí)間戳,指主客體的訪問時(shí)間。在溯源圖中,主體和客體用頂點(diǎn)表示,事件類型用邊表示,在不同的時(shí)間,2 個(gè)頂點(diǎn)之間可以有多條邊。這種表示實(shí)體(主體和客體)間關(guān)系方向的圖被稱為溯源圖。由于溯源圖表達(dá)了系統(tǒng)日志的起源,有些文獻(xiàn)也將溯源圖翻譯為起源圖或依賴圖,本文統(tǒng)一稱為溯源圖。事件日志與溯源圖如圖1 所示,其中,A、B、E 進(jìn)程表示存活狀態(tài),F(xiàn) 進(jìn)程狀態(tài)表示死亡狀態(tài)。
圖1 事件日志與溯源圖
圖1(a)表示事件日志,圖1(b)表示通過事件日志形成的溯源圖。頂點(diǎn)代表系統(tǒng)中的實(shí)體,連接2 個(gè)頂點(diǎn)的邊代表時(shí)間類型,箭頭代表2 個(gè)實(shí)體之間的數(shù)據(jù)內(nèi)容或控制信息的流動(dòng),邊上的數(shù)字代表操作發(fā)生的時(shí)間(數(shù)字越小,事件發(fā)生越早)。
威脅檢測用于分析整個(gè)安全生態(tài)系統(tǒng),識(shí)別可能危及網(wǎng)絡(luò)的任何惡意活動(dòng)。威脅檢測方法主要包括基于誤用的檢測和基于異常的檢測[9]?;谡`用的檢測通過構(gòu)建惡意樣本特征進(jìn)行檢測,只能檢測已知攻擊;基于異常的檢測通過構(gòu)建合理行為的邊界設(shè)置異常閾值,超過閾值則判斷為異常。雖然基于異常的檢測可判斷未知攻擊,但也導(dǎo)致了較高的誤報(bào)率。APT 攻擊是一種復(fù)雜攻擊,跨度時(shí)間長,一般潛伏期可達(dá)半年,具有多步、隱蔽性等特點(diǎn),單步檢測效果不佳,研究者探索基于系統(tǒng)日志構(gòu)造溯源圖,利用規(guī)則、異常和學(xué)習(xí)等方法實(shí)現(xiàn)APT攻擊威脅檢測。
徐嘉涔等[10]將威脅狩獵定義為主動(dòng)持續(xù)地在網(wǎng)絡(luò)中搜索可以繞開安全檢測或產(chǎn)生危害的威脅的過程。Valentina[11]將威脅狩獵定義為人為活動(dòng),通過反復(fù)搜索組織環(huán)境(網(wǎng)絡(luò)、端點(diǎn)和應(yīng)用程序)的妥協(xié)指標(biāo)(IoC,indicator of compromise),以縮短停留時(shí)間并最大限度地減少入侵對(duì)組織的影響。常見的妥協(xié)指標(biāo)包括惡意文件/進(jìn)程名、病毒特征、僵尸網(wǎng)絡(luò)的IP 地址和域名等。停留時(shí)間是指攻擊侵入系統(tǒng)到被檢測發(fā)現(xiàn)的時(shí)間。威脅狩獵的方法包括數(shù)據(jù)驅(qū)動(dòng)、情報(bào)驅(qū)動(dòng)、實(shí)體驅(qū)動(dòng)、戰(zhàn)略?技術(shù)?過程(TTP,tactic technique procedure)驅(qū)動(dòng)、混合驅(qū)動(dòng)5 種類型[12]。數(shù)據(jù)驅(qū)動(dòng)是指查看已有數(shù)據(jù)來尋找內(nèi)容,如利用代理日志查看不常見用戶代理發(fā)現(xiàn)異常。情報(bào)驅(qū)動(dòng)是指分析師利用威脅情報(bào)數(shù)據(jù)集,通過搜索和匹配威脅指標(biāo)。實(shí)體驅(qū)動(dòng)是指搜索關(guān)鍵知識(shí)產(chǎn)權(quán)和網(wǎng)絡(luò)資源等高風(fēng)險(xiǎn)、高價(jià)值實(shí)體。TTP 驅(qū)動(dòng)是指通過了解攻擊者使用的戰(zhàn)略、技術(shù)和過程,搜索已知的TTP,實(shí)現(xiàn)威脅狩獵?;旌向?qū)動(dòng)是上述方法的融合。圖2 展示了威脅狩獵的過程[13],其目的是縮短攻擊停留的時(shí)間。
圖2 威脅狩獵的過程
取證分析概念包含的內(nèi)涵較廣,本文所述取證分析是指用戶在發(fā)現(xiàn)其遭受網(wǎng)絡(luò)攻擊后,調(diào)查人員根據(jù)告警或攻擊特征進(jìn)行攻擊溯源和攻擊場景重建分析等。基于溯源圖的取證分析的一般過程是在溯源圖上找到攻擊特征節(jié)點(diǎn)并執(zhí)行后向查詢,從而找到攻擊入口點(diǎn),然后根據(jù)攻擊入口點(diǎn)執(zhí)行前向查詢,關(guān)聯(lián)出攻擊事件路徑。此外,取證分析還考慮攻擊場景重構(gòu),即從大量的日志數(shù)據(jù)中,根據(jù)特定的攻擊行為模式和語義知識(shí),通過分析數(shù)據(jù)之間的的關(guān)聯(lián)關(guān)系,還原包含數(shù)據(jù)層攻擊行為的語義信息和攻擊戰(zhàn)略戰(zhàn)術(shù)、過程語義知識(shí)的完整攻擊行為視圖的過程[7]。
定義2后向查詢。邊e的后向查詢是溯源圖G的子圖,表示從溯源圖G 中某頂點(diǎn)執(zhí)行逆向查詢,可到達(dá)的目的頂點(diǎn)的邊的集合。以圖1 為例,假設(shè)進(jìn)程E 被標(biāo)記為可疑的,需要找到進(jìn)程E的流入邊,可以通過后向查詢得到集合 {EBE?6,EDB?5,EDB?4,ECB?3,ECB?2,EAC?1},找到入口點(diǎn)A。注意邊EAD?7不在E頂點(diǎn)的后向溯源邊中,因?yàn)槠浒l(fā)生時(shí)間晚于調(diào)查點(diǎn)E的時(shí)間。
定義3前向查詢。邊e的前向查詢是溯源圖G的子圖,表示從溯源圖G 中某頂點(diǎn)作為源頂點(diǎn),執(zhí)行正向查詢可到達(dá)邊的集合。以圖1 為例,在找到攻擊入口點(diǎn)A 后,如果要找到EAC?1的影響,執(zhí)行前向查詢,得到邊集合為 {EAC?1,ECB?2,ECB?3,EBE?6,ECF?8,EFH?10}。
BackTracker[8]第一次引入溯源圖用于入侵檢測,開辟了終端主機(jī)攻擊溯源的工作,通過定義終端主機(jī)進(jìn)程之間、進(jìn)程與文件之間以及進(jìn)程與文件名之間的依賴關(guān)系來構(gòu)造溯源圖。攻擊入口點(diǎn)是通過給定告警事件后向查詢分析確定的,當(dāng)系統(tǒng)中的一個(gè)實(shí)體被標(biāo)記為可疑時(shí),需要在溯源圖中反復(fù)搜索其他實(shí)體對(duì)目標(biāo)可疑實(shí)體的歷史作用,直到該實(shí)體沒有流入的邊,從而確定攻擊入口點(diǎn)。
基于系統(tǒng)溯源圖的威脅發(fā)現(xiàn)與取證分析包括數(shù)據(jù)采集、數(shù)據(jù)管理、數(shù)據(jù)分析3 個(gè)模塊。數(shù)據(jù)采集模塊包含不同場景下的數(shù)據(jù)采集;數(shù)據(jù)管理模塊包括數(shù)據(jù)預(yù)處理、溯源圖的存儲(chǔ)和查詢可視化;數(shù)據(jù)分析模塊包括威脅檢測、威脅狩獵和取證分析。威脅檢測可應(yīng)用于威脅狩獵的不同框架中,取證分析基于已發(fā)現(xiàn)的威脅開展取證調(diào)查和重建分析,整體研究框架如圖3 所示。下面,詳細(xì)介紹各模塊的內(nèi)容和方法。
圖3 整體研究框架
日志采集主要包括終端側(cè)系統(tǒng)級(jí)日志、應(yīng)用程序日志和網(wǎng)絡(luò)側(cè)日志等。
3.1.1 基于終端側(cè)系統(tǒng)級(jí)日志采集
常見的終端側(cè)系統(tǒng)內(nèi)核級(jí)日志采集工具如Auditd、ETW、Dtrace 等。Lineage[14]是系統(tǒng)級(jí)溯源的首次嘗試,該系統(tǒng)通過修改linux 內(nèi)核調(diào)用,使用戶進(jìn)程從printk 緩沖區(qū)中讀取捕獲的內(nèi)容并存儲(chǔ)到SQL 數(shù)據(jù)庫中。PASS[15]在虛擬文件系統(tǒng)層捕獲溯源數(shù)據(jù),PASSV1[15]提供了進(jìn)程I/O 交互的函數(shù),PASSV2[16]提供了一個(gè)跨語義層溯源集成的應(yīng)用程序接口,但是系統(tǒng)版本的升級(jí)加大了這些方案的擴(kuò)展難度。SPADE[17]是一個(gè)分布式系統(tǒng)日志審計(jì)工具,可支持跨平臺(tái)應(yīng)用。Hi-Fi[18]是第一個(gè)完整的全系統(tǒng)溯源,可收集完整溯源記錄,除了內(nèi)核和應(yīng)用程序行為,還包括網(wǎng)絡(luò)連接等;Hi-Fi 采用LSM HOOK 實(shí)現(xiàn)數(shù)據(jù)監(jiān)控,不支持安全模式堆棧,因此容易受到攻擊。Linux 溯源模塊[19]創(chuàng)建了一個(gè)可信賴的溯源感知執(zhí)行環(huán)境,解決了溯源數(shù)據(jù)可靠性限制,可收集整個(gè)系統(tǒng)的溯源數(shù)據(jù)。Bates 等[20]提出了DAP 捕獲Web 服務(wù)組件的詳細(xì)數(shù)據(jù)源,它是Linux溯源模塊[19]的附加服務(wù)。CamFlow[21]是一個(gè)嚴(yán)格意義上的獨(dú)立框架,實(shí)現(xiàn)了系統(tǒng)級(jí)日志的采集,它使用標(biāo)準(zhǔn)的內(nèi)核功能,并且容易擴(kuò)展。
3.1.2 基于終端側(cè)系統(tǒng)級(jí)日志+應(yīng)用程序日志采集
雖然系統(tǒng)級(jí)日志展現(xiàn)了進(jìn)程、文件、網(wǎng)絡(luò)連接之間的依賴關(guān)系,但與應(yīng)用程序日志相比,系統(tǒng)級(jí)日志從系統(tǒng)層面挖掘系統(tǒng)行為的因果依賴關(guān)系沒有考慮應(yīng)用層語義,存在語義鴻溝問題;對(duì)于攻擊取證分析,應(yīng)用程序日志能提供大量的攻擊相關(guān)信息,如OmegaLog[22]和ALchemist[23]嘗試融合系統(tǒng)級(jí)日志記錄和應(yīng)用程序日志記錄,實(shí)現(xiàn)語義還原。
3.1.3 基于終端側(cè)系統(tǒng)級(jí)日志+網(wǎng)絡(luò)側(cè)日志采集
由于APT 攻擊通??缭蕉鄠€(gè)主機(jī),基于終端側(cè)系統(tǒng)級(jí)日志和應(yīng)用程序日志不能完全捕獲數(shù)據(jù),因此研究者探索將系統(tǒng)監(jiān)控審計(jì)數(shù)據(jù)與網(wǎng)絡(luò)側(cè)數(shù)據(jù)相結(jié)合[24-27]。雖然PASS[15]可以支持使用網(wǎng)絡(luò)文件系統(tǒng)來收集溯源日志,但不支持收集訪問本地機(jī)器的套接字信息。例如PASS 不能記錄通過遠(yuǎn)程攻擊破壞或竊取本地IP 地址和端口號(hào)的行為。PDMS[24]對(duì)PASS 進(jìn)行了擴(kuò)展,通過監(jiān)控和記錄每一個(gè)網(wǎng)絡(luò)會(huì)話,捕獲連接到本地主機(jī)的每一個(gè)網(wǎng)絡(luò)套接字,并將網(wǎng)絡(luò)套接字視為文件對(duì)象,收集文件、管道、進(jìn)程和網(wǎng)絡(luò)套接字之間的依賴關(guān)系,準(zhǔn)確地跟蹤系統(tǒng)的數(shù)據(jù)流入和流出。Haas 等[25]提出了開源平臺(tái)Zeek-Osquery,將操作系統(tǒng)級(jí)日志與網(wǎng)絡(luò)側(cè)日志實(shí)時(shí)關(guān)聯(lián),實(shí)現(xiàn)實(shí)時(shí)入侵檢測,然而這種級(jí)別的跨主機(jī)攻擊溯源依然會(huì)因?yàn)樘捉幼值牟淮_定性而存在大量的錯(cuò)誤關(guān)聯(lián)。Ji 等[26]綜合了多種技術(shù),提出了一種有效的跨主機(jī)追蹤溯源方法RTAG,可以在一定程度上解決當(dāng)前網(wǎng)絡(luò)側(cè)與終端側(cè)數(shù)據(jù)無法關(guān)聯(lián)溯源的問題。
根據(jù)系統(tǒng)級(jí)日志采集數(shù)據(jù)粒度不同,數(shù)據(jù)采集分為粗粒度和細(xì)粒度[5]采集。粗粒度采集是指僅追蹤系統(tǒng)級(jí)對(duì)象(進(jìn)程、文件),是一種進(jìn)程級(jí)調(diào)用監(jiān)控或?qū)?nèi)核模塊安裝鉤子進(jìn)行數(shù)據(jù)攔截的方法。系統(tǒng)級(jí)溯源可通過系統(tǒng)內(nèi)置審計(jì)組件監(jiān)控獲得。細(xì)粒度采集的目標(biāo)是實(shí)現(xiàn)精確依賴關(guān)系,比系統(tǒng)進(jìn)程級(jí)追蹤粒度更細(xì),常采用進(jìn)程執(zhí)行單元分區(qū)[28]、污點(diǎn)分析追蹤變量變化等。一個(gè)進(jìn)程可以被“分割”成多個(gè)單元,每個(gè)單元分區(qū)是一個(gè)進(jìn)程的執(zhí)行段,處理一個(gè)特定的對(duì)象,例如瀏覽器進(jìn)程可根據(jù)打開的網(wǎng)頁窗口進(jìn)行劃分。Lee 等[28]首先提出基于進(jìn)程執(zhí)行單元分區(qū)的方法,由于追蹤變量的污點(diǎn)分析粒度太細(xì),不適合構(gòu)造因果溯源圖,因此提出在進(jìn)程級(jí)粗粒度和變量級(jí)細(xì)粒度之間的“單元”概念。ProTracer[29]利用基于單元的執(zhí)行分區(qū)來提高壓縮率,將程序劃分為多個(gè)單元,以實(shí)現(xiàn)細(xì)粒度的污點(diǎn)跟蹤,其中一個(gè)單元對(duì)應(yīng)一個(gè)循環(huán)模式。MP[30]要求軟件開發(fā)者對(duì)應(yīng)用程序中的重要數(shù)據(jù)結(jié)構(gòu)進(jìn)行注釋,通過注釋實(shí)現(xiàn)單元?jiǎng)澐帧_@些技術(shù)都依賴于源代碼或二進(jìn)制工具[31]。LogGC[32]引入程序工具,輸出細(xì)粒度的依賴信息,不僅可以將一個(gè)進(jìn)程分成多個(gè)可執(zhí)行單元,還可以把一個(gè)數(shù)據(jù)文件分成多個(gè)邏輯數(shù)據(jù)單元,但其對(duì)每個(gè)應(yīng)用程序的定制成本太高。UIScope[33]也借鑒單元分區(qū)的方法實(shí)現(xiàn)了了細(xì)粒度采集日志。
3.3.1 開源數(shù)據(jù)集
研究APT 攻擊檢測和取證分析的常用開源數(shù)據(jù)集有StreamSpot[34]、CERT[35]、LANL[36]、DARPA TC 系列[37-38]、OpTC[39]等。Manzoor 等[34]開源了StreamSpot 數(shù)據(jù)集,該數(shù)據(jù)集包含一個(gè)攻擊和5 個(gè)普通應(yīng)用場景,數(shù)據(jù)集較小,常用于對(duì)比實(shí)驗(yàn)[40]。CERT[35]數(shù)據(jù)集是內(nèi)部威脅檢測數(shù)據(jù)集,該數(shù)據(jù)集模擬惡意內(nèi)部人員實(shí)施系統(tǒng)破壞、信息竊取、內(nèi)部欺詐等攻擊行為數(shù)據(jù)。LANL[36]數(shù)據(jù)集描述了一個(gè)攻擊團(tuán)隊(duì)所進(jìn)行的惡意活動(dòng),該數(shù)據(jù)集在威脅檢測場景中主要用于模擬APT 攻擊檢測[40-43]。OpTC 數(shù)據(jù)集是DARPA TC 數(shù)據(jù)集的最新迭代,SK-Tree[44]使用該數(shù)據(jù)集進(jìn)行測試。DARPA 透明計(jì)算系列提供對(duì)APT的實(shí)時(shí)檢測和取證分析[23,44-53]。目前開源了DARPA TC3和DAPRPA TC5 這2 個(gè)數(shù)據(jù)集。Berrada 等[51]從DARPA TC2和DARPA TC3 中選擇部分?jǐn)?shù)據(jù)構(gòu)造了adaptdata 數(shù)據(jù)集。Benabderrahmane等[52]基于此數(shù)據(jù)集提出基于規(guī)則的高級(jí)威脅檢測方法。DAPT 2020[54]提供了APT 攻擊的詳細(xì)階段,并對(duì)攻擊樣本打了標(biāo)簽,但檢測模型的準(zhǔn)確率很低,需要研究新的檢測模型。
3.3.2 復(fù)現(xiàn)實(shí)驗(yàn)捕獲數(shù)據(jù)集
由于APT 攻擊復(fù)雜,有關(guān)APT 檢測的開源數(shù)據(jù)集較少。以往的研究除了在開源數(shù)據(jù)集上檢測模型,還通過自主設(shè)計(jì)實(shí)驗(yàn)或利用安全企業(yè)采集的數(shù)據(jù)進(jìn)行分析,自主實(shí)驗(yàn)一般復(fù)現(xiàn)APT 攻擊報(bào)告,自主采集日志生成數(shù)據(jù)集。常見的復(fù)現(xiàn)實(shí)驗(yàn)有數(shù)據(jù)竊取、釣魚郵件[23,53,55]、破殼漏洞[56]、后門[29]、文件傳送[57]、哈希傳遞攻擊[53]和錯(cuò)誤配置[29]等。
APT 攻擊潛伏期較長,企業(yè)需要保留半年以上的日志數(shù)據(jù)。據(jù)統(tǒng)計(jì),每天每臺(tái)電腦監(jiān)測產(chǎn)生的日志超過1 GB[58],存儲(chǔ)負(fù)擔(dān)重,不利于后續(xù)查詢和分析工作,因此需要對(duì)數(shù)據(jù)進(jìn)行預(yù)處理,減少數(shù)據(jù)存儲(chǔ),同時(shí)也考慮保證攻擊語義的完整性。
溯源圖縮減主要圍繞邊縮減、頂點(diǎn)縮減、圖縮減、圖形壓縮和語義保留等進(jìn)行研究,溯源圖縮減方法如表1 所示。
表1 溯源圖縮減方法
4.1.1 邊縮減
Xu 等[57]根據(jù)系統(tǒng)事件之間因果關(guān)系的等同性來減少日志條目的數(shù)量,提出了因果關(guān)系保全縮減(CPR,causality preserved reduction)、以進(jìn)程為中心的因果關(guān)系逼近縮減(PCAR,process-centric causality approximation reduction)和基于領(lǐng)域知識(shí)縮減(DOM)的方法。CPR 聚合依賴性相同的事件,雖然能保留圖的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),但會(huì)丟失統(tǒng)計(jì)信息,如訪問頻率等。某些系統(tǒng)行為會(huì)導(dǎo)致對(duì)象和其相關(guān)鄰居形成密集連接的依賴圖,因此該研究提出一種保留因果關(guān)系的單跳圖縮減技術(shù)PCAR,這種方法會(huì)刪除與目標(biāo)文件無關(guān)的重復(fù)讀/寫操作?;陬I(lǐng)域知識(shí)的縮減主要是刪除臨時(shí)文件等。臨時(shí)文件是指在其生命周期中只與一個(gè)進(jìn)程有信息交換,在攻擊取證中也不引入任何明確的信息流,因此可以從數(shù)據(jù)中刪除所有臨時(shí)文件的事件。CPR 保留了語義信息,但縮減效率有限,為進(jìn)一步壓縮,Hossain 等[49]提出了完全依賴保留縮減(FDPR,full dependence preserving reduction)和源依賴保留縮減(SDPR,source dependence preserving reduction)。FDPR 在縮減數(shù)據(jù)的同時(shí)保留完全依賴性,而SDPR 在FDPR基礎(chǔ)上只考慮保留前向依賴關(guān)系,進(jìn)一步提高縮減效率。但FDPR和SDPR 均放寬了因果關(guān)聯(lián)的條件,使更多的重復(fù)事件可以被修剪,同樣當(dāng)查詢有時(shí)間限制時(shí),也可能引入假陰性。
4.1.2 頂點(diǎn)縮減
LogGC[32]關(guān)注對(duì)象的生命周期,引入垃圾收集理念。由于許多應(yīng)用程序在執(zhí)行期間會(huì)產(chǎn)生臨時(shí)文件,這些文件在應(yīng)用程序終止后會(huì)被銷毀,而系統(tǒng)不會(huì)受到這些文件的影響,因此可將這些文件當(dāng)作垃圾進(jìn)行收集以節(jié)省空間。但如果刪除的臨時(shí)文件與網(wǎng)絡(luò)套接字有關(guān),攻擊者所做的滲透攻擊竊取數(shù)據(jù)文件可能會(huì)被遺漏。NodeMerge[59]提出了在線數(shù)據(jù)縮減方法,通過自動(dòng)學(xué)習(xí)固定的庫和運(yùn)行程序的只讀資源集作為模板,并進(jìn)一步使用這些模板來縮減系統(tǒng)事件數(shù)據(jù)。NodeMerge 在大數(shù)據(jù)分析處理等只讀事件多的縮減任務(wù)很有效,但是對(duì)于那些沒有加載很多文件或在初始階段有文件訪問模式的應(yīng)用程序,其縮減效果不明顯。
4.1.3 圖縮減
PrioTracker[55]優(yōu)先考慮異常依賴關(guān)系的邊,NoDoze[53]將該方法推廣到異常路徑而不是單條邊,可將原始圖的大小減小2 個(gè)數(shù)量級(jí),加快了調(diào)查速度,不會(huì)丟失攻擊的重要信息。然而,基于異常的方法需要有代表性的訓(xùn)練數(shù)據(jù),訓(xùn)練數(shù)據(jù)的問題可能導(dǎo)致假陽性、假陰性。Rapsheet[60]提供2 條圖縮減規(guī)則,為保證完成警報(bào)規(guī)則匹配,時(shí)間間隔必須足夠長。該研究提出了可以獲得更好壓縮效果的一般方法,但該壓縮方法需要將整個(gè)依賴圖作為輸入,不能處理實(shí)時(shí)流數(shù)據(jù)。
4.1.4 圖形壓縮
LogGC[32]、FD-SD[49]、CPR[57]和NodeMerge[59]等方法都是采用匹配預(yù)定義的模式去掉日志,實(shí)現(xiàn)有損壓縮,雖然實(shí)驗(yàn)表明其因果關(guān)聯(lián)具備有效性,但不能保證所有任務(wù)都能得到正確結(jié)果。無損壓縮可以保存所有信息并支持因果關(guān)系分析。SEAL[61]通過系統(tǒng)日志生成依賴圖,并對(duì)圖的結(jié)構(gòu)(如頂點(diǎn)和邊)進(jìn)行無損壓縮,然后對(duì)邊的屬性(如時(shí)間戳)進(jìn)行無損壓縮,確保每次查詢都能得到正確的回答,同時(shí)保證查詢效率。
4.1.5 語義保留壓縮
Zhu 等[62]提出基于通用、高效、實(shí)時(shí)的數(shù)據(jù)壓縮方案,包含維護(hù)全局語義(GS,global semantics)和可疑語義(SS,suspicious semantics)2 種壓縮策略。維護(hù)全局語義的數(shù)據(jù)壓縮策略是確定并刪除不影響全局依賴的冗余事件。GS 策略的思想是假設(shè)在源頂點(diǎn)的語義沒有改變的情況下,信息流對(duì)同一目標(biāo)的影響是等價(jià)的,等價(jià)的事件可以作為冗余被刪除,只需保留對(duì)目標(biāo)頂點(diǎn)有影響的第一個(gè)事件。在溯源圖中,一個(gè)頂點(diǎn)沒有傳入邊時(shí),可以認(rèn)為該頂點(diǎn)的語義沒有發(fā)生變化,其傳出邊的語義也沒有發(fā)生變化?;诳梢烧Z義的數(shù)據(jù)壓縮策略是根據(jù)取證分析的目的恢復(fù)攻擊鏈。SS 策略的思想是通過使用實(shí)體上下文,自動(dòng)判斷該事件是否與攻擊有關(guān),與攻擊無關(guān)的事件可以被刪除。SS 策略默認(rèn)維護(hù)2 個(gè)表,一個(gè)是高價(jià)值文件目錄表,另一個(gè)是敏感進(jìn)程命令行表,并定義一套可擴(kuò)展的可疑語義轉(zhuǎn)移規(guī)則。Michael等[58]首次提出了取證有效性度量,形式化定義了無損取證、因果保全取證、攻擊保全取證3 個(gè)衡量標(biāo)準(zhǔn),并提出了針對(duì)攻擊的優(yōu)化近似方法LogApprox。
常見的圖存儲(chǔ)方法主要有圖數(shù)據(jù)庫、內(nèi)存數(shù)據(jù)庫、鍵值數(shù)據(jù)庫和關(guān)系型數(shù)據(jù)庫等。
4.2.1 圖數(shù)據(jù)庫
圖數(shù)據(jù)庫是一種非關(guān)系型數(shù)據(jù)庫,常用來存儲(chǔ)和表示圖的數(shù)據(jù)結(jié)構(gòu)、快速執(zhí)行圖的相關(guān)算法等。Setayeshfar 等[47]和Gao 等[63]使用圖數(shù)據(jù)庫進(jìn)行存儲(chǔ);Gao 等[63]將系統(tǒng)進(jìn)程、文件、網(wǎng)絡(luò)連接存儲(chǔ)為頂點(diǎn),事件存儲(chǔ)為邊,并根據(jù)關(guān)鍵屬性建立索引,提高查詢速度。一般在圖數(shù)據(jù)庫存儲(chǔ)之前需進(jìn)行數(shù)據(jù)縮減,但政府和企業(yè)往往擁有成千上萬臺(tái)計(jì)算機(jī),其原始數(shù)據(jù)量很容易達(dá)到PB 級(jí)別[62],即使經(jīng)過預(yù)處理,溯源圖仍然較大,每次使用時(shí)都需要將保存在圖數(shù)據(jù)庫中的溯源圖加載入內(nèi)存,這會(huì)造成巨大的開銷和內(nèi)存負(fù)載,而且圖數(shù)據(jù)庫支持的算法有限。
4.2.2 內(nèi)存數(shù)據(jù)庫
SLEUTH[45]、HOLMES[48]、FD-SD[49]和POIROT[64]利用內(nèi)存數(shù)據(jù)庫將整個(gè)因果關(guān)系數(shù)據(jù)存儲(chǔ)在主內(nèi)存中進(jìn)行取證分析。SLEUTH[45]采用數(shù)據(jù)壓縮和編碼技術(shù),使用可變長度編碼事件特征,但增加了復(fù)雜性,降低了運(yùn)行效能。HOLMES[48]利用高度緊湊的溯源圖表示方法,審計(jì)日志中的每個(gè)事件平均只需要5 byte 即可表示。FD-SD[49]依靠版本圖和優(yōu)化算法實(shí)現(xiàn)緊湊性,在執(zhí)行圖構(gòu)建任務(wù)時(shí),執(zhí)行速度比SLEUTH[45]快3倍。SWIFT[65]采用分層存儲(chǔ)系統(tǒng),設(shè)計(jì)了一個(gè)異步緩存驅(qū)逐策略,計(jì)算出因果關(guān)系圖中最可疑的部分,并只將該部分緩存在主內(nèi)存中,而將其余部分存儲(chǔ)在磁盤上。KCAL[66]采用了一種內(nèi)核級(jí)緩存,以消除冗余的因果事件,并減少日志從內(nèi)核到用戶空間的傳輸開銷。GrAALF[47]使用內(nèi)存存儲(chǔ)作為事件的緩沖區(qū),然后送入關(guān)系數(shù)據(jù)庫或圖數(shù)據(jù)庫存儲(chǔ),并在內(nèi)存存儲(chǔ)之前提供了不壓縮、無損壓縮、保持取證的準(zhǔn)確性、有損壓縮4 種處理模式。
4.2.3 鍵值數(shù)據(jù)庫
PIDAS[67]使用BerkeleyDB 數(shù)據(jù)庫來存儲(chǔ)縮減后的溯源圖,pnode 號(hào)碼唯一標(biāo)識(shí)每個(gè)對(duì)象,IdentityDB 存儲(chǔ)每個(gè)對(duì)象的身份信息(例如文件節(jié)點(diǎn)號(hào)和進(jìn)程ID),ParentDB和ChildDB 分別存儲(chǔ)一個(gè)對(duì)象與其父節(jié)點(diǎn)和子節(jié)點(diǎn)之間的依賴關(guān)系,NameDB 存儲(chǔ)一個(gè)對(duì)象的名稱和它的pnode 編號(hào)之間的映射關(guān)系,RuleDB 存儲(chǔ)發(fā)生的事件。PDMS[24]采用同樣的存儲(chǔ)方法。Pagoda[68]使用Redis 鍵值數(shù)據(jù)庫存儲(chǔ)。
4.2.4 關(guān)系型數(shù)據(jù)庫
PostgreSQL 是開源關(guān)系型數(shù)據(jù)庫,同時(shí)支持JSON 等非關(guān)系型數(shù)據(jù)類型。Setayeshfar 等[47]、Gao等[63,69]使用PostgreSQL 進(jìn)行后端存儲(chǔ),其中,文獻(xiàn)[63]將從日志提取出的系統(tǒng)實(shí)體和系統(tǒng)事件存儲(chǔ)在不同的表中,文獻(xiàn)[69]還支持Greenplum 開源數(shù)據(jù)庫。
溯源圖的構(gòu)建、存儲(chǔ)為查詢系統(tǒng)的開發(fā)奠定基礎(chǔ),研究者先后開發(fā)了基于溯源圖的查詢系統(tǒng)(如CamQuery[70]、AIQL[71]、SAQL[72]、ThreaRaptor[73]),可視化應(yīng)用(如ThreatRaptor WebUI[63]、AIQL UI[69]、SAQL UI[74]、GrAALF[47])。CamQuery[70]提供了一個(gè)可編程的圖形處理框架,實(shí)現(xiàn)以頂點(diǎn)為中心的查詢API。AIQL、SAQL 都是特定領(lǐng)域的查詢語言,AIQL 建立在現(xiàn)有的監(jiān)測工具和數(shù)據(jù)庫之上,實(shí)現(xiàn)持久性存儲(chǔ),可以支持即時(shí)的攻擊調(diào)查;SAQL 是基于流的查詢系統(tǒng),將企業(yè)中多個(gè)主機(jī)的實(shí)時(shí)事件反饋?zhàn)鳛檩斎?,并提供異常查詢引擎,可?shí)時(shí)檢測基于指定異常模型的異常行為,還可以查詢實(shí)時(shí)攻擊足跡。ThreaRaptor[73]利用開源威脅情報(bào)自動(dòng)構(gòu)建威脅行為圖,實(shí)現(xiàn)威脅狩獵窮舉搜索和可視化。GrAALF[47]實(shí)現(xiàn)了圖形化的取證分析系統(tǒng),可有效加載、存儲(chǔ)、處理、查詢和顯示從系統(tǒng)事件中提取的因果關(guān)系,以支撐取證分析,與類似系統(tǒng)相比,GrAALF[47]提供了關(guān)系數(shù)據(jù)庫、圖數(shù)據(jù)庫和內(nèi)存存儲(chǔ)3 種后端存儲(chǔ)方式,實(shí)現(xiàn)存儲(chǔ)、直觀查詢和實(shí)時(shí)跟蹤更長事件序列的能力。
經(jīng)過采集系統(tǒng)審計(jì)日志,構(gòu)造系統(tǒng)溯源圖,利用各種算法實(shí)現(xiàn)對(duì)溯源圖的縮減,并設(shè)計(jì)數(shù)據(jù)存儲(chǔ)模型完成溯源圖的高效存儲(chǔ)和查詢,下一步將介紹利用系統(tǒng)溯源圖數(shù)據(jù)進(jìn)行數(shù)據(jù)分析,主要包括威脅發(fā)現(xiàn)和取證分析兩大模塊。
基于溯源圖的威脅發(fā)現(xiàn)主要包括威脅檢測和威脅狩獵。威脅檢測覆蓋整個(gè)攻擊階段,是被動(dòng)的檢測;而威脅狩獵假設(shè)攻擊者已經(jīng)進(jìn)入系統(tǒng)還沒有被發(fā)現(xiàn),利用威脅情報(bào)驅(qū)動(dòng)等方法主動(dòng)發(fā)現(xiàn)威脅。
威脅檢測的主要任務(wù)是檢測給定網(wǎng)絡(luò)場景的威脅,觸發(fā)網(wǎng)絡(luò)告警。MITRE ATT &CK 框架提出14 個(gè)階段的APT 知識(shí)庫來描述APT 攻擊戰(zhàn)略。HOLMES[48]根據(jù)APT 攻擊殺傷鏈7 個(gè)階段設(shè)計(jì)了檢測指標(biāo)。Li 等[40]和Xiong 等[75]提出相似的三階段劃分:1) 滲透和惡意代碼執(zhí)行;2) 內(nèi)部偵察和橫向移動(dòng);3) C&C(Command and control)通信和數(shù)據(jù)滲出。APT 攻擊威脅檢測研究較多,如魚叉式釣魚郵件檢測[76]、橫向移動(dòng)檢測[42-43]、利用域名系統(tǒng)(DNS,domain name system)檢測妥協(xié)主機(jī)[40]等。Log2vec[42]和MLTracer[43]通過構(gòu)建異構(gòu)圖,分別利用圖嵌入和圖神經(jīng)網(wǎng)絡(luò)進(jìn)行異常檢測。近年來基于系統(tǒng)溯源圖檢測APT 攻擊成為研究熱點(diǎn),如表2 所示。
表2 威脅檢測研究熱點(diǎn)
5.1.1 基于規(guī)則的檢測
基于規(guī)則的檢測是指根據(jù)已知攻擊制定規(guī)則策略。SLEUTH[45]結(jié)合攻擊者的動(dòng)機(jī)和手段,定義了5 條觸發(fā)警告的規(guī)則,使用基于標(biāo)簽的方法,如果一段數(shù)據(jù)或代碼有未知標(biāo)簽,就是不受信任的源。Morse[46]將本地檢測結(jié)果存儲(chǔ)在標(biāo)簽中,并通過標(biāo)簽在溯源圖中的傳播對(duì)攻擊鏈進(jìn)行關(guān)聯(lián),并定義了二進(jìn)制代碼內(nèi)存執(zhí)行、惡意文件執(zhí)行、進(jìn)程注入、修改文件權(quán)限、文件崩潰、提權(quán)、可信數(shù)據(jù)泄露7 條規(guī)則來實(shí)現(xiàn)攻擊檢測,但是如果對(duì)標(biāo)簽沒有控制,標(biāo)簽會(huì)過度傳播并導(dǎo)致依賴性爆炸問題。HOLMES[48]通過安全專家構(gòu)建的威脅子圖作為知識(shí)圖,采用層次化的策略模板,將底層實(shí)體行為映射為ATT&CK 矩陣中的TTP,并定義了APT 攻擊的7 個(gè)階段和16 條TTP 規(guī)則,然后利用圖匹配算法計(jì)算與系統(tǒng)溯源圖中相匹配的攻擊,實(shí)現(xiàn)語義威脅檢測,并區(qū)分攻擊所處的階段。POIROT[64]利用APT 攻擊報(bào)告手動(dòng)構(gòu)建威脅查詢圖,基于圖對(duì)齊匹配溯源圖檢測威脅。SAQL[72]提供了基于規(guī)則的查詢和利用特定領(lǐng)域語言查詢威脅2 種方式。Patrol[77]通過捕獲操作系統(tǒng)對(duì)象之間的依賴關(guān)系,通過入侵特征執(zhí)行向前搜索和向后搜索,構(gòu)建零日攻擊路徑規(guī)則,識(shí)別出可疑的候選入侵傳播路徑,然后進(jìn)一步識(shí)別路徑中未知漏洞利用的指標(biāo)(如一些內(nèi)核函數(shù)),從而識(shí)別出這些路徑中高度可疑的候選者。對(duì)于APT 攻擊,該方法可以捕獲不同時(shí)間跨度的入侵傳播路徑,但無法將他們關(guān)聯(lián)起來。
5.1.2 基于異常的檢測
異常行為檢測方法首先通過建立正常活動(dòng)的輪廓,然后將違反正?;顒?dòng)的行為判定為異常。SteamSpot[34]建模主機(jī)級(jí)APT 檢測問題為在流異構(gòu)圖中基于聚類的異常檢測任務(wù),考慮了圖中不同子結(jié)構(gòu)出現(xiàn)的頻率,提出了一種基于shingling的帶時(shí)間戳類型圖的相似函數(shù)來表示異構(gòu)有序圖,并設(shè)計(jì)streamhash 維護(hù)這些摘要,采用基于質(zhì)心的在線聚類和異常檢測方案。Pagoda[68]不僅分析單一路徑的異常程度,還分析整個(gè)溯源圖的異常程度。它首先尋找可能導(dǎo)致入侵的入侵路徑,如果找到就不用遍歷整個(gè)溯源圖,否則,將計(jì)算出每條路徑的異常度,再乘以路徑長度,得到每條路徑的權(quán)重值,最后將這些權(quán)重值的總和除以所有路徑的長度之和。這種方法可以快速識(shí)別出入侵過程中只對(duì)系統(tǒng)中的一個(gè)敏感文件或一個(gè)小的文件子集造成損害。Gao 等[72]設(shè)計(jì)了一種特定領(lǐng)域的查詢語言SAQL 分析大規(guī)模的溯源數(shù)據(jù),但需要專家領(lǐng)域知識(shí)來確定與查詢相匹配的元素/模式。FRAPpuccino[78]分析了系統(tǒng)級(jí)溯源圖,為平臺(tái)即服務(wù)的應(yīng)用行為建模,它使用動(dòng)態(tài)滑動(dòng)窗口算法來持續(xù)監(jiān)測和檢查應(yīng)用實(shí)例是否符合所學(xué)模型。PIDAS[67]是一個(gè)基于溯源路徑的入侵檢測和分析系統(tǒng),它使用溯源圖信息作為在線入侵檢測的數(shù)據(jù)源,由于溯源圖代表一個(gè)對(duì)象的歷史,記錄了入侵發(fā)生時(shí)被感染的文件、進(jìn)程和網(wǎng)絡(luò)連接的依賴關(guān)系。通過計(jì)算由一系列依賴關(guān)系組成的一定長度路徑的異常程度,并與預(yù)定的閾值相比較,可以實(shí)時(shí)判斷入侵是否已經(jīng)發(fā)生,但這種方法的缺點(diǎn)在于只使用一條路徑來檢測入侵,不能反映整個(gè)溯源圖的行為。P-Gaussian[79]檢測入侵行為及其打包加密的變體,將入侵行為變體的檢測抽象為比較序列順序或不同序列之間長度的變化。Han 等[80]設(shè)計(jì)了一個(gè)實(shí)時(shí)的異常檢測系統(tǒng)UnicorN 來分析從流式溯源圖,該檢測系統(tǒng)隨著主機(jī)系統(tǒng)的發(fā)展學(xué)習(xí)動(dòng)態(tài)執(zhí)行模型,從而捕捉模型中的行為變化,這種學(xué)習(xí)方法使其適用于檢測長期運(yùn)行的持久性威脅。UNICORN 使用graph sketching 技術(shù),可以在長時(shí)間運(yùn)行的系統(tǒng)中分析包含豐富上下文和歷史信息的溯源圖,從而識(shí)別未知、慢速攻擊。ZePro[81]采用一種概率方法來識(shí)別零日攻擊路徑,通過構(gòu)建一個(gè)基于實(shí)例圖的貝葉斯網(wǎng)絡(luò),利用入侵起源,貝葉斯網(wǎng)絡(luò)可以定量計(jì)算對(duì)象實(shí)例被感染的概率,具有高感染概率的對(duì)象實(shí)例暴露自己并形成零日攻擊路徑。
5.1.3 基于學(xué)習(xí)的檢測
Li 等[40]提出了基于深度自編碼檢測系統(tǒng)異常,在LANL 數(shù)據(jù)集上驗(yàn)證了APT 攻擊檢測的有效性。SIGL[82]是第一個(gè)基于溯源圖的異常軟件安裝檢測系統(tǒng),可以在沒有事先攻擊知識(shí)的情況下保證軟件安裝的安全;SIGL 通過對(duì)圖中的異常進(jìn)程節(jié)點(diǎn)進(jìn)行分流,減輕負(fù)擔(dān)。Ayoade 等[83]提出在線度量學(xué)習(xí)解決零日APT 攻擊檢測問題,首先模擬APT 攻擊,利用CamFlow 記錄日志數(shù)據(jù),然后利用CamQuery將記錄的日志轉(zhuǎn)換為溯源圖,溯源圖過濾后生成只包含系統(tǒng)命令執(zhí)行的子圖,最后構(gòu)造在線度量學(xué)習(xí)分類器檢測區(qū)分新型的APT 攻擊、已存在的APT攻擊和良性事件,在特征提取上,利用圖嵌入方法(node2vec)將圖轉(zhuǎn)化為向量。ProvDetector[84]利用圖嵌入方法,基于概率密度的局部離群因子來檢測隱蔽惡意軟件,使用一種基于稀有度的路徑選擇算法來識(shí)別溯源圖中表示進(jìn)程潛在惡意行為的因果路徑,然后使用doc2vec 嵌入模型和離群檢測模型確定這些路徑是否為惡意的,實(shí)現(xiàn)隱藏的惡意進(jìn)程檢測。
已有基于溯源圖的威脅狩獵主要利用基于威脅情報(bào)驅(qū)動(dòng)和基于TTP 驅(qū)動(dòng)的方法。
5.2.1 基于威脅情報(bào)驅(qū)動(dòng)
開源網(wǎng)絡(luò)威脅情報(bào)(OSCTI,open-source cyber threat intelligence)是一種基于證據(jù)的知識(shí)形式,主要關(guān)注IoC。常見的威脅情報(bào)有結(jié)構(gòu)化的情報(bào)(如STIX 情報(bào))、半結(jié)構(gòu)化的情報(bào)(如MISP和OpenIoC)和非結(jié)構(gòu)化的情報(bào)(如安全博客和APT 報(bào)告)。
1) 威脅情報(bào)提取
POIROT[64]手動(dòng)提取威脅情報(bào),構(gòu)造威脅行為查詢圖,查詢圖的頂點(diǎn)表示進(jìn)程、文件、套接字等,邊表示系統(tǒng)調(diào)用關(guān)系,然后利用圖對(duì)齊算法匹配基于審計(jì)日志構(gòu)造的溯源圖,實(shí)現(xiàn)威脅狩獵。該實(shí)驗(yàn)數(shù)據(jù)集主要來源于STIX、MISP 等結(jié)構(gòu)化或半結(jié)構(gòu)化情報(bào)。非結(jié)構(gòu)化的OSCTI 不僅包含IoC,還描述了它們之間的關(guān)系,如進(jìn)程和文件之間的讀取關(guān)系,這種威脅行為可以與攻擊步驟聯(lián)系起來,因此,ThreatRapter[73]基于OSCTI 提出了無監(jiān)督自然語言處理管道提取結(jié)構(gòu)化威脅行為圖,圖的頂點(diǎn)表示IoC,邊表示IoC 之間的關(guān)系,實(shí)現(xiàn)了初始特征和關(guān)系的自動(dòng)提取,其實(shí)體提取的精確率為96%,召回率為97.3%,F(xiàn)1 值為96.64%;關(guān)系提取的精確率為96%,召回率為89%,F(xiàn)1 值為92%。EXTRACTOR[85]是一種新的文本總結(jié)方法,通過區(qū)分攻擊行為與其他文本,使用語義角色標(biāo)記方法提取攻擊行為和句子的主體、客體和行動(dòng),并以圖的形式呈現(xiàn)攻擊步驟和相關(guān)實(shí)體之間的因果信息流,通過從非結(jié)構(gòu)化APT報(bào)告、公開數(shù)據(jù)集DARPA TC3 以及微軟等公司的CTI 報(bào)告中提取攻擊行為圖,并與報(bào)告的真實(shí)活動(dòng)(威脅行為圖中的邊)進(jìn)行對(duì)比,評(píng)價(jià)精確率、召回率和F1 值,然后采用POIROT 系統(tǒng)驗(yàn)證自動(dòng)生成的攻擊行為圖,結(jié)果證明自動(dòng)生成的攻擊圖可用于威脅狩獵。以上3 種方法提取威脅圖都是為了匹配系統(tǒng)溯源圖或查詢系統(tǒng)日志,實(shí)現(xiàn)威脅狩獵。HINTI[86]框架首次基于多粒度注意的IoC 識(shí)別方法,其IoC 包括攻擊者、漏洞、設(shè)備、平臺(tái)、惡意文件和攻擊類型6 種類型,并從開源網(wǎng)絡(luò)威脅情報(bào)中提取描述IoC的關(guān)系,構(gòu)造異質(zhì)信息網(wǎng)絡(luò)(HIN,heterogeneous information network),提出一個(gè)基于圖卷積網(wǎng)絡(luò)的威脅情報(bào)計(jì)算框架進(jìn)行知識(shí)識(shí)別。HINTI的威脅情報(bào)來源于安全博客、黑客論壇等社交網(wǎng)絡(luò),只對(duì)實(shí)體提取情況進(jìn)行評(píng)估,其準(zhǔn)確率為98.59%,精確率為98.72%,微觀F1 值為98.69%。SecurityKG[87]是一個(gè)自動(dòng)收集和管理OSCTI的系統(tǒng),通過從各種來源收集OSCTI,使用人工智能和自然語言處理技術(shù)來提取威脅行為,并構(gòu)建一個(gè)安全知識(shí)圖,但沒有對(duì)提取的準(zhǔn)確率進(jìn)行評(píng)價(jià),HINTI和SecurityKG 表示了較為豐富的威脅知識(shí),但沒有表示系統(tǒng)底層日志行為,不能直接和系統(tǒng)溯源圖進(jìn)行匹配檢測。
表3 威脅情報(bào)提取模型
2) 基于威脅情報(bào)的圖匹配
POIROT[64]將威脅狩獵建模為一個(gè)不精確的圖模式匹配問題,將STIX、MISP 等格式的威脅情報(bào)轉(zhuǎn)化為攻擊行為查詢子圖,進(jìn)而主要解決威脅情報(bào)子圖與系統(tǒng)級(jí)溯源圖的節(jié)點(diǎn)概念對(duì)齊及匹配問題,其對(duì)齊算法包含節(jié)點(diǎn)對(duì)齊和圖對(duì)齊,通過計(jì)算查詢圖和溯源圖之間的圖形對(duì)齊分?jǐn)?shù),能在包含數(shù)百萬節(jié)點(diǎn)的圖內(nèi)進(jìn)行搜索并根據(jù)查詢圖中的信息流搜索出溯源圖中的對(duì)齊節(jié)點(diǎn),可在幾分鐘內(nèi)準(zhǔn)確定位攻擊。DeepHunter[88]也基于威脅情報(bào)驅(qū)動(dòng)手動(dòng)提取開源報(bào)告中的IoC 關(guān)系,然后基于圖神經(jīng)網(wǎng)絡(luò)將溯源圖數(shù)據(jù)與已知攻擊查詢圖匹配,其網(wǎng)絡(luò)架構(gòu)包括屬性網(wǎng)絡(luò)和圖神經(jīng)網(wǎng)絡(luò),屬性嵌入網(wǎng)絡(luò)考慮了IoC信息,圖嵌入網(wǎng)絡(luò)捕獲了IoC 之間的關(guān)系。5 個(gè)真實(shí)和合成的APT 攻擊場景測試表明,DeepHunter[88]可以檢測所有的攻擊行為,而且其準(zhǔn)確性和穩(wěn)健性超過了POIROT。這2 種方法的局限在于威脅子圖的構(gòu)建需要依賴專家知識(shí),而且對(duì)未知威脅無能為力。
3) 基于威脅情報(bào)的特定領(lǐng)域語言查詢
特定領(lǐng)域語言是一種非過程化語言,研究者先后提出了CyQL[89]、τ-calculus[90]和TBQL(threat behavior query language)[73]等。CyQL 是基于MITRE CyGraph 多源異構(gòu)圖架構(gòu),τ-calculus 是基于IBM威脅情報(bào)計(jì)算時(shí)序圖分析引擎的靜態(tài)圖查詢;Shu等[90]提出威脅情報(bào)計(jì)算的方法,將威脅發(fā)現(xiàn)作為一個(gè)圖計(jì)算問題。ThreatRaptor[73]通過自動(dòng)解析開源威脅情報(bào)提取IoC 實(shí)體和關(guān)系,構(gòu)建威脅行為圖,提出了基于TBQL 對(duì)系統(tǒng)審計(jì)日志進(jìn)行威脅查詢,發(fā)現(xiàn)惡意的系統(tǒng)活動(dòng)。該系統(tǒng)首次通過查詢合成機(jī)制,自動(dòng)合成一個(gè)TBQL 查詢威脅行為,也支持安全分析人員對(duì)威脅查詢行為進(jìn)行修改,攻擊案例評(píng)估結(jié)果證明了其在實(shí)際威脅狩獵中的準(zhǔn)確性(精確率為100%,召回率為96.74%),但該系統(tǒng)不能狩獵針對(duì)Windows 注冊(cè)表項(xiàng)的攻擊;另外,如果自動(dòng)提取的OSCTI 文本不可用或幾乎不包含有用的IoC 信息,將限制其應(yīng)用。WILLE[91]系統(tǒng)利用自然語言處理技術(shù)來自動(dòng)提取和翻譯已知的威脅描述,采用自動(dòng)生成特定領(lǐng)域語言(DSL,domain specific language)進(jìn)行威脅狩獵,并使用基于進(jìn)化論的遺傳編程方法增加IoC的遺傳擾動(dòng),提高IoC的抗干擾能力,以擴(kuò)大識(shí)別威脅的變體家族。
5.2.2 基于TTP 驅(qū)動(dòng)
HOLMES[48]和RapSheet[60]都采用基于TTP驅(qū)動(dòng)的模式,HOLMES 基于攻擊鏈構(gòu)建高級(jí)溯源圖,彌合低級(jí)系統(tǒng)調(diào)用視角和高級(jí)攻擊鏈視角之間的語義差距,構(gòu)建了一個(gè)高級(jí)別場景圖(HSG,high-level scenario graph)作為中間層。HSG 節(jié)點(diǎn)表示TTP 實(shí)體,邊表示TTP 之間的信息流。HOLMES[48]通過專家實(shí)現(xiàn)了由底層日志數(shù)據(jù)到TTP的映射,但是該方法完全依賴于專家領(lǐng)域知識(shí)。Rapsheet[60]從戰(zhàn)術(shù)語義角度實(shí)現(xiàn)構(gòu)建攻擊溯源,通過構(gòu)建攻擊行為到ATT&CK的戰(zhàn)術(shù)映射,實(shí)現(xiàn)攻擊行為戰(zhàn)術(shù)溯源,大大減少溯源圖規(guī)模,基于戰(zhàn)術(shù)容易獲取攻擊意圖。
基于系統(tǒng)溯源圖的取證分析主要方法包括基于因果關(guān)系[92-98]、基于序列學(xué)習(xí)[99-102]、基于特定領(lǐng)域語言查詢[47,56,70-71]和基于語義重建[103-105]的取證分析等。表4 對(duì)比分析了近年基于溯源圖的取證分析相關(guān)研究。其中,ATLAS[102]以節(jié)點(diǎn)和邊為評(píng)價(jià)指標(biāo),評(píng)價(jià)粒度效細(xì),其他文獻(xiàn)以圖為評(píng)價(jià)指標(biāo),評(píng)價(jià)粒度較粗。
表4 取證分析相關(guān)研究
BackTracker[8]首次使用溯源圖分析入侵,以確定入侵的入口點(diǎn),為加速調(diào)查取證分析,提高準(zhǔn)確率和性能,以往研究主要基于2 種思路,一種是通過圖形壓縮和數(shù)據(jù)縮減減少分析日志,4.1 節(jié)已做了詳細(xì)介紹;另一種是解決依賴爆炸和高存儲(chǔ)負(fù)載[50],依賴爆炸問題是由于在因果關(guān)系分析中,當(dāng)一個(gè)長期運(yùn)行的進(jìn)程與許多輸入和輸出對(duì)象相互作用時(shí),每個(gè)輸出對(duì)象都被認(rèn)為是對(duì)所有前面的輸入對(duì)象存在因果依賴。針對(duì)依賴爆炸問題,研究者提出了執(zhí)行單元分區(qū)、污點(diǎn)分析、記錄和重放,模型推斷等多種方法。
6.1.1 執(zhí)行單元分區(qū)
Ma 等[31]基于Windows 事件跟蹤(ETW,event tracing for Windows)審計(jì)日志,并對(duì)ETW 進(jìn)行擴(kuò)展,記錄重要的非系統(tǒng)事件,然后將日志分析和二進(jìn)制程序分析結(jié)合起來,推導(dǎo)出可以用來解析日志到單元的模型。通過單元分區(qū)精確識(shí)別事件之間的因果關(guān)系。ProPatrol[92]系統(tǒng)利用企業(yè)應(yīng)用程序如瀏覽器和郵件開放式分區(qū)設(shè)計(jì),該方法不需要利用源二進(jìn)制工具,而是利用面向互聯(lián)網(wǎng)的應(yīng)用程序設(shè)計(jì)中固有的執(zhí)行分區(qū)來減輕依賴爆炸程度,確定真正的依賴關(guān)系。Mnemosyne[93]基于瀏覽器層級(jí)劃分單元分區(qū)來調(diào)查水坑攻擊。
6.1.2 污點(diǎn)分析
污點(diǎn)分析可以精確追蹤進(jìn)程內(nèi)的信息流,有效防御信息泄露和零日攻擊。Newsome 等[94]提出了自動(dòng)檢測和分析覆蓋攻擊的動(dòng)態(tài)污點(diǎn)分析方法。Yin等[95]提出了全系統(tǒng)細(xì)粒度污點(diǎn)分析,以辨別未知代碼的細(xì)粒度信息訪問和處理行為,然而污點(diǎn)分析也帶來了負(fù)載。Morse[46]針對(duì)依賴爆炸,提出了標(biāo)簽衰減和標(biāo)簽衰變,設(shè)計(jì)構(gòu)建了一個(gè)緊湊的場景圖,可以捕捉絕大多數(shù)攻擊,同時(shí)排除良性背景活動(dòng),使虛警率降低一個(gè)數(shù)量級(jí)以上。
6.1.3 記錄和重放
Rain[96]使用記錄重放技術(shù)實(shí)現(xiàn)按需細(xì)粒度信息流跟蹤,通過合并進(jìn)程內(nèi)溯源分析和進(jìn)程間的分析可以精確追蹤信息流,幫助重建低級(jí)別的攻擊步驟。使用粗粒度采集日志數(shù)據(jù)的方法(如系統(tǒng)調(diào)用)開銷低、準(zhǔn)確度低,而使用細(xì)粒度(如指令執(zhí)行)準(zhǔn)確度高,但開銷大。RTAG[26]綜合二者優(yōu)勢,在記錄程序運(yùn)行時(shí),執(zhí)行高級(jí)別的日志記錄和分析;在重放程序運(yùn)行時(shí),執(zhí)行低級(jí)別的日志記錄和分析,實(shí)現(xiàn)了一種有效的數(shù)據(jù)流標(biāo)記和追蹤機(jī)制,可用于跨主機(jī)環(huán)境下的攻擊調(diào)查。
6.1.4 模型推斷
LDX[97]是一個(gè)雙向執(zhí)行因果推斷模型,通過改變系統(tǒng)調(diào)用的輸入,觀察輸出的狀態(tài)變化來推斷系統(tǒng)調(diào)用的關(guān)系。MCI[98]將可執(zhí)行文件輸入因果推理模型LDX,獲得程序的因果模型,根據(jù)解析后的系統(tǒng)日志和相應(yīng)的模型,得出事件之間的細(xì)粒度依賴關(guān)系,但該方法的壓縮效果取決于大量的軟件模型,而實(shí)際情況下,系統(tǒng)會(huì)運(yùn)行許多未知軟件,使該方法的覆蓋率難以保證,而且軟件更新也可能導(dǎo)致原始模型失效。
6.1.5 通用溯源
PrioTracker[55]和NoDoze[53]是基于統(tǒng)計(jì)特征的攻擊調(diào)查方法,通過對(duì)異常事件和因果依賴進(jìn)行優(yōu)先級(jí)排序,排序度量指標(biāo)包括頻率和拓?fù)涮匦浴rioTracker 通過優(yōu)先探索涉及罕見或可疑事件的路徑,加快前向和后向分析,但PrioTracker 僅僅考慮了單個(gè)事件的異常,優(yōu)先考慮表示異常依賴關(guān)系的邊;NoDoze[53]考慮了整個(gè)事件鏈條的異常,提出識(shí)別目標(biāo)異常路徑的方法,使用統(tǒng)計(jì)低頻路徑挖掘的方法解決依賴爆炸問題,從而更準(zhǔn)確地還原告警產(chǎn)生對(duì)應(yīng)的溯源數(shù)據(jù)子圖,但不能精確定位異常傳輸?shù)腎P 地址,這種基于統(tǒng)計(jì)的方法可能導(dǎo)致不穩(wěn)定的結(jié)果。UIScope[33]利用低層系統(tǒng)事件和UI 事件相關(guān)聯(lián),將系統(tǒng)事件歸結(jié)為單個(gè)UI 元素以避免依賴爆炸。
HERCULE[99]、Tiresias[100]、ATTACK2VEC[101]、ATLAS[102]都使用了機(jī)器學(xué)習(xí)技術(shù)來建模攻擊事件,其中,HERCULE 使用社區(qū)檢測算法來對(duì)攻擊事件進(jìn)行關(guān)聯(lián),通過將多源日志融合,以自動(dòng)化的方式完成異常行為社區(qū)發(fā)現(xiàn),歸并其對(duì)應(yīng)的攻擊步驟;TIRESIAS、ATTACK2VEC、ATLAS 均采用了詞嵌入將文本信息(序列)轉(zhuǎn)換為向量,Tiresias和ATTACK2VEC 僅限于識(shí)別和報(bào)告日志中的單個(gè)日志中的攻擊事件,ATLAS的目標(biāo)是發(fā)現(xiàn)攻擊路徑,基于序列學(xué)習(xí),在已知攻擊癥狀的情況下,通過鄰居圖構(gòu)造序列,經(jīng)過序列學(xué)習(xí)獲得攻擊和非攻擊序列,確定所有的攻擊實(shí)體,重構(gòu)攻擊路徑,但只支持Windows 平臺(tái),而且無法檢測使用類似正常事件序列的隱藏攻擊行為,比如模擬攻擊。
傳統(tǒng)的基于關(guān)系型數(shù)據(jù)庫和圖數(shù)據(jù)庫的查詢系統(tǒng)缺乏語言結(jié)構(gòu)來表達(dá)主要攻擊行為的關(guān)鍵屬性,而且由于語義無關(guān)的設(shè)計(jì)無法利用系統(tǒng)監(jiān)測數(shù)據(jù)的屬性來加速查詢的執(zhí)行,所以往往執(zhí)行查詢的效率很低。CamQuery[70]提供了一個(gè)可編程的圖形處理框架,實(shí)現(xiàn)以頂點(diǎn)為中心的查詢應(yīng)用程序接口;AIQL[71]通過持久性存儲(chǔ)實(shí)現(xiàn)取證查詢,提出了一個(gè)建立在現(xiàn)有監(jiān)測工具和數(shù)據(jù)庫之上的新型查詢系統(tǒng),使攻擊調(diào)查查詢語言(AIQL)支持即時(shí)的攻擊調(diào)查。APTrace[56]利用BDL(backtracking descriptive language)語言,實(shí)現(xiàn)企業(yè)級(jí)因果分析查詢;通過給定安全異常警告,利用BDL 執(zhí)行向后查詢,基于執(zhí)行窗口分區(qū)算法解決依賴爆炸問題,輸出溯源子圖。但基于執(zhí)行窗口分區(qū)的時(shí)間選擇是一個(gè)難點(diǎn),時(shí)間的選擇將影響依賴圖的大小和后續(xù)的分析。GrAALF[47]提供圖形化查詢系統(tǒng),可有效地加載、存儲(chǔ)、處理、查詢和顯示計(jì)算機(jī)取證的系統(tǒng)事件,實(shí)時(shí)追蹤較長事件序列,幫助識(shí)別攻擊。
基于特定領(lǐng)域語言的查詢?nèi)∽C分析可以呈現(xiàn)系統(tǒng)級(jí)的因果關(guān)系,不能完全恢復(fù)從用戶的角度發(fā)生的事情。基于語義還原的取證分析包括常規(guī)語義還原,實(shí)現(xiàn)程序行為動(dòng)作還原,如將審計(jì)日志與應(yīng)用日志相結(jié)合,解決語義鴻溝;在攻擊場景下,識(shí)別告警日志數(shù)據(jù)中的攻擊行為,還原TTP 語義。TGMiner[103]以感興趣的行為中挖掘出辨別性的圖形模式,并將其作為模板來識(shí)別類似行為。HOLMES[48]和RapSheet[60]將多階段攻擊視為符合TTP 規(guī)格的因果事件鏈。WATSON[50]利用基于系統(tǒng)審計(jì)日志知識(shí)圖的上下文信息來實(shí)現(xiàn)語義推斷,通過向量表示不同的行為語義,并利用語義相似行為進(jìn)行聚類,可以準(zhǔn)確抽象出良性和惡意的行為。OmegaLog[22]通過識(shí)別和模擬應(yīng)用層的日志行為,使應(yīng)用事件與系統(tǒng)層訪問準(zhǔn)確協(xié)調(diào),通過攔截應(yīng)用程序的運(yùn)行時(shí)日志活動(dòng),并將這些事件移植到系統(tǒng)層溯源圖上,使調(diào)查人員能夠更精確地推斷攻擊的性質(zhì)。ALchemist[23]將應(yīng)用程序日志和審計(jì)日志結(jié)合起來,基于關(guān)系推理引擎DataLog 推理關(guān)鍵攻擊信息,實(shí)驗(yàn)證明其性能優(yōu)于NoDoze和OmegaLog。UIScope[33]采集用戶界面元素和事件收集器以及系統(tǒng)事件收集器,將低層次的因果關(guān)系分析與高層次的用戶界面元素和事件分析相結(jié)合,以獲得兩者的優(yōu)勢。潘亞峰等[104]提出基于ATT&CK 構(gòu)建APT 攻擊語義規(guī)則,通過將攻擊語義文本中的語義知識(shí)抽象為針對(duì)溯源圖的檢測規(guī)則,實(shí)現(xiàn)底層審計(jì)日志數(shù)據(jù)到上層TTP 語義知識(shí)的映射,在語義規(guī)則匹配過程中設(shè)置了最小路徑長度和最大路徑長度,但該方法只能檢測出APT 攻擊生命周期中的局部行為。RATScope[105]開發(fā)了一個(gè)遠(yuǎn)程訪問木馬取證分析系統(tǒng),由于ETW 不提供任何底層數(shù)據(jù)的輸入?yún)?shù),導(dǎo)致2 個(gè)不同的程序調(diào)用觸發(fā)相同的底層系統(tǒng)調(diào)用行為,為解決這個(gè)語義沖突問題,提出了聚合API樹記錄圖,利用低級(jí)別的系統(tǒng)調(diào)用和高級(jí)別的應(yīng)用程序調(diào)用棧相結(jié)合來建立細(xì)粒度的程序行為,因?yàn)? 個(gè)不同的應(yīng)用程序在應(yīng)用程序調(diào)用棧是明顯不同的,從而可以區(qū)分RAT的潛在惡意功能。
隨著網(wǎng)絡(luò)攻擊的日益復(fù)雜,無文件攻擊等新型攻擊手法越來越隱蔽,從大規(guī)模、多源異構(gòu)日志數(shù)據(jù)中有效識(shí)別復(fù)雜攻擊及其意圖,仍然面臨許多挑戰(zhàn)。
1) 隱蔽性威脅檢測。由于APT 攻擊復(fù)雜多變,開源數(shù)據(jù)集很難獲得,目前常用的是DARPA TC 系列,但文檔并不完善,因此研究具有多種新的APT攻擊、完善文檔的開源數(shù)據(jù)集具有實(shí)際意義。無文件攻擊手法多樣,探索無文件攻擊機(jī)理和實(shí)時(shí)未知威脅檢測方法成為研究熱點(diǎn)。另外,通過多源多模態(tài)事件圖譜構(gòu)建,實(shí)現(xiàn)可解釋的異常檢測與威脅定位也是未來研究的一個(gè)方向。
2) 自動(dòng)化威脅狩獵。威脅情報(bào)提取主要面向結(jié)構(gòu)化和非結(jié)構(gòu)化威脅情報(bào)進(jìn)行提取,已有研究證明了自動(dòng)提取威脅情報(bào)的準(zhǔn)確性和用于威脅狩獵的可行性,但應(yīng)用開源威脅情報(bào)報(bào)告中自動(dòng)提取IoC 及其關(guān)系進(jìn)行威脅狩獵仍然面臨一些問題,如報(bào)告中記錄的結(jié)構(gòu)形式不統(tǒng)一、記錄錯(cuò)誤、省略攻擊詳細(xì)步驟等。面對(duì)由非規(guī)范化格式導(dǎo)致威脅情報(bào)行為提取準(zhǔn)確性低等問題,需要進(jìn)一步研究自然語言處理+語義輔助威脅行為圖的高精度提取,探索基于學(xué)習(xí)的方法識(shí)別一些特定名詞等,進(jìn)一步拓展IoC 實(shí)體提取方法,構(gòu)建更加豐富的威脅行為圖。此外,基于TTP 行為圖的構(gòu)建,生成進(jìn)化的IoC也是可以探索的研究熱點(diǎn)。自動(dòng)化威脅狩獵方法研究中,考慮基于自動(dòng)生成的威脅查詢圖與自動(dòng)生成的系統(tǒng)日志溯源圖的圖節(jié)點(diǎn)對(duì)齊、子圖匹配等新算法的準(zhǔn)確度和效率,以及針對(duì)這些技術(shù)的評(píng)估也是重點(diǎn)。
3) 基于攻擊語義的取證分析。目前,基于系統(tǒng)溯源圖的取證分析主要從縮減日志和減少依賴爆炸2 種思路來開展,已有的基于序列學(xué)習(xí)的取證分析方案需要學(xué)習(xí)大量已知的攻擊序列。針對(duì)底層日志與上層之間的語義鴻溝問題,現(xiàn)有研究探索了系統(tǒng)日志與應(yīng)用日志、UI 日志相結(jié)合;針對(duì)攻擊語義問題,現(xiàn)有研究主要利用TTP 關(guān)聯(lián)系統(tǒng)審計(jì)日志;針對(duì)取證分析結(jié)果的評(píng)價(jià),現(xiàn)有研究大多從告警點(diǎn)出發(fā),基于溯源圖來執(zhí)行后向和前向查詢,評(píng)價(jià)粒度比較粗糙,僅有ATLAS[102]、WATSON[50]和ALchemist[23]的評(píng)價(jià)粒度較細(xì)。由于關(guān)聯(lián)缺失,跨網(wǎng)絡(luò)與終端數(shù)據(jù)難以有效同步日志觸發(fā)條件,導(dǎo)致多源日志之間很難有效關(guān)聯(lián);另外,由于語義缺失,統(tǒng)計(jì)規(guī)律很難反映攻擊者底層的攻擊意圖和戰(zhàn)術(shù)方法。因此,探索知識(shí)圖譜解決語義鴻溝問題,通過知識(shí)圖譜挖掘事件元信息及上下文,進(jìn)而進(jìn)行關(guān)系推理,實(shí)現(xiàn)攻擊路徑溯源與取證,是將來的可探索的方向。此外,取證分析的有效性度量也是一個(gè)重要的考量因素。