鄭中一,李賽飛,江曉峰
(1.西南交通大學(xué) 計(jì)算機(jī)與人工智能學(xué)院,四川 成都 611756;2.西南交通大學(xué) 信息科學(xué)與技術(shù)學(xué)院,四川 成都 611756)
日志分析技術(shù)以網(wǎng)絡(luò)環(huán)境中各類設(shè)備產(chǎn)生的記錄為目標(biāo),通過(guò)自動(dòng)化分析網(wǎng)絡(luò)中的各類改變以發(fā)現(xiàn)網(wǎng)絡(luò)威脅并及時(shí)發(fā)出警報(bào),可顯著提高計(jì)算機(jī)系統(tǒng)的防護(hù)能力。目前成熟的日志分析技術(shù)已經(jīng)能夠準(zhǔn)確地檢測(cè)出漏洞利用、病毒植入或異常系統(tǒng)行為等事件。然而,隨著高級(jí)持續(xù)性威脅(Advanced Persistent Threat,APT)的出現(xiàn)[1],傳統(tǒng)日志分析技術(shù)的局限性也隨之體現(xiàn):一方面,其主要信息來(lái)源為日志數(shù)據(jù),維度相對(duì)單一;另一方面,其難以表示數(shù)據(jù)中異常事件的關(guān)聯(lián)性。
為提升關(guān)聯(lián)能力,研究人員開(kāi)始將圖的思想融入日志分析。相比于文本數(shù)據(jù),將日志中的事件和關(guān)系轉(zhuǎn)換為節(jié)點(diǎn)和邊以構(gòu)成圖結(jié)構(gòu)能直觀體現(xiàn)出數(shù)據(jù)間的關(guān)聯(lián)性。Diederichsen等人[2]針對(duì)網(wǎng)絡(luò)日志文件提出一種方法,將日志實(shí)體材料化為圖結(jié)構(gòu),并通過(guò)Neo4j數(shù)據(jù)庫(kù)驅(qū)動(dòng)以提供查詢和可視化。朱元慶等人[3]基于系統(tǒng)日志的派生關(guān)系將日志轉(zhuǎn)化為無(wú)向圖,并應(yīng)用XGBoost算法優(yōu)化圖中各邊的權(quán)重值。但該工作構(gòu)建的日志圖中關(guān)系較為單一。薛見(jiàn)新[4]分析了基于終端側(cè)、系統(tǒng)日志和應(yīng)用程序日志的關(guān)聯(lián)、網(wǎng)絡(luò)側(cè)和終端側(cè)的關(guān)聯(lián)3個(gè)維度的攻擊溯源日志圖構(gòu)建技術(shù)。余真奇[5]提出了一種按起源圖思想構(gòu)建系統(tǒng)日志圖的方法。
為豐富信息來(lái)源,研究人員將圖進(jìn)一步擴(kuò)展為圖譜。圖結(jié)構(gòu)除能建模日志中的復(fù)雜事件和關(guān)系外,也能有效地處理多源數(shù)據(jù)的集成和關(guān)聯(lián),即形成圖譜。MITRE組織構(gòu)建了一個(gè)知識(shí)圖譜“CyGraph[6]”,其將網(wǎng)絡(luò)設(shè)施、安全態(tài)勢(shì)、威脅和任務(wù)依賴知識(shí)與日志數(shù)據(jù)融合為一個(gè)全局模型。Nimbalkar等人[7]討論了一種通過(guò)語(yǔ)義表示將日志實(shí)體鏈接到外部知識(shí)的方法,但并未包含威脅情報(bào)這一外部知識(shí)。Narayanan等人[8]的研究較好地彌補(bǔ)了這一不足。他們提出一種能夠集成多源威脅情報(bào)的網(wǎng)絡(luò)安全知識(shí)圖譜,并以日志數(shù)據(jù)為對(duì)象進(jìn)行了推理分析。Kurniawan等人[9]提出了一種基于知識(shí)圖譜的日志分析框架,其基于語(yǔ)義網(wǎng)融入了多種威脅檢測(cè)技術(shù),并提供了內(nèi)部系統(tǒng)知識(shí)和外部安全知識(shí)的上下文關(guān)聯(lián)。陶源等人[10]提出網(wǎng)絡(luò)安全等級(jí)保護(hù)日志分析圖譜模型,構(gòu)建了幾種將等保測(cè)評(píng)數(shù)據(jù)與系統(tǒng)日志相融合的理論分析框架。
目前圖譜相關(guān)研究大多用其構(gòu)建的模型直接對(duì)原始日志或經(jīng)過(guò)簡(jiǎn)單關(guān)聯(lián)的日志圖進(jìn)行分析。我們認(rèn)為,前述兩個(gè)方向的研究思路可以進(jìn)行有效結(jié)合,以形成更加完整的圖譜模型。為驗(yàn)證此觀點(diǎn),本文提出了一種基于圖數(shù)據(jù)庫(kù)的系統(tǒng)日志圖譜模型。一方面,其對(duì)系統(tǒng)日志內(nèi)部的多種關(guān)系進(jìn)行建模,將文本數(shù)據(jù)轉(zhuǎn)換為更直觀易懂的圖數(shù)據(jù);另一方面,該模型實(shí)現(xiàn)了日志與外部多維知識(shí)的有效融合,便于分析人員以全局視角研究網(wǎng)絡(luò)安全事件。
知識(shí)圖譜是一種結(jié)構(gòu)化的語(yǔ)義知識(shí)庫(kù),用于描述現(xiàn)實(shí)世界中的概念及其相互關(guān)系。其基本組成單位是“實(shí)體—關(guān)系—實(shí)體”三元組[11]。
如圖1所示,基于一篇綜述網(wǎng)絡(luò)安全知識(shí)圖譜應(yīng)用場(chǎng)景的文獻(xiàn)[12]提出的4維圖譜結(jié)構(gòu),本章將以行為數(shù)據(jù)維度為核心,輔以安全知識(shí)、威脅情報(bào)和環(huán)境數(shù)據(jù)3個(gè)維度,設(shè)計(jì)并構(gòu)建日志圖譜模型。
圖1 通用網(wǎng)絡(luò)安全知識(shí)圖譜結(jié)構(gòu)
安全知識(shí)庫(kù)通常是為個(gè)人、政府、安全產(chǎn)品和服務(wù)社區(qū)開(kāi)發(fā)特定威脅模型和方法的基礎(chǔ)。在本模型中,其作用是從抽象層面描述或標(biāo)記系統(tǒng)日志所代表的行為。
2020年,來(lái)自麻省理工學(xué)院的研究團(tuán)隊(duì)構(gòu)建了一個(gè)綜合網(wǎng)絡(luò)安全知識(shí)圖模型,并命名為“BRON[13]”。如圖2所示(圖中數(shù)字代表實(shí)體內(nèi)的節(jié)點(diǎn)數(shù)量),BRON將對(duì)抗戰(zhàn)術(shù)技術(shù)和常識(shí)矩陣(Adversarial Tactics Techniques and Common Knowledge,ATT&CK)、通用攻擊模式枚舉和分類(Common Attack Pattern Enumeration and Classification,CAPEC)、通用弱點(diǎn)枚舉(Common Weakness Enumeration,CWE)以及通用漏洞披露(Common Vulnerabilities and Exposures,CVE)等知識(shí)庫(kù)依次關(guān)聯(lián),形成一種由高維戰(zhàn)術(shù)至低維漏洞的層次結(jié)構(gòu)。鑒于BRON已經(jīng)開(kāi)源,本文圖譜模型直接將其作為“安全知識(shí)”這一維度的知識(shí)。
圖2 BRON知識(shí)圖內(nèi)部結(jié)構(gòu)
威脅情報(bào)(Cyber Threat Intelligence,CTI)是一種基于證據(jù)的知識(shí),包括上下文、機(jī)制、標(biāo)示、含義和建議,這些知識(shí)與資產(chǎn)所面臨的威脅或危害相關(guān),可用于指導(dǎo)應(yīng)對(duì)威脅或危害的決策[14]。在本模型中,它的作用是在理論層面指導(dǎo)基于日志的異常事件關(guān)聯(lián)。
由于威脅情報(bào)的提取和分析并非本文的研究重點(diǎn),故我們?cè)谠囼?yàn)圖譜模型時(shí)引入了若干常見(jiàn)攻擊的“戰(zhàn)術(shù)技術(shù)過(guò)程(Tactics Techniques Procedures,TTPs)”描述作為威脅情報(bào)。
環(huán)境數(shù)據(jù)是指圖譜模型具體應(yīng)用環(huán)境的數(shù)據(jù)。一般以目標(biāo)系統(tǒng)的網(wǎng)絡(luò)拓?fù)鋱D為基礎(chǔ),加入設(shè)備對(duì)應(yīng)的操作系統(tǒng)、IP地址等屬性構(gòu)成。其在本模型中的作用是以對(duì)目標(biāo)系統(tǒng)的物理組成與結(jié)構(gòu)進(jìn)行建模。本文實(shí)驗(yàn)環(huán)境的網(wǎng)絡(luò)拓?fù)鋵⒃诘?章中給出。
行為數(shù)據(jù)是目標(biāo)系統(tǒng)在實(shí)際工作過(guò)程中產(chǎn)生行為的記錄。本文模型的行為數(shù)據(jù)由Sysmon生成,其是一款由微軟開(kāi)發(fā)的日志傳感器,能監(jiān)控系統(tǒng)的動(dòng)態(tài)行為并記錄于日志。Sysmon日志是由多種字段信息構(gòu)成的結(jié)構(gòu)化數(shù)據(jù),我們從中篩選出圖結(jié)構(gòu)化所需的主要字段,如表1所示。
表1 Sysmon日志主要字段信息
將文本格式的日志轉(zhuǎn)換為圖數(shù)據(jù)結(jié)構(gòu)的關(guān)鍵在于梳理日志中的關(guān)聯(lián)關(guān)系。除較為明顯的時(shí)間關(guān)系外,我們還挖掘出了另外3種關(guān)聯(lián)關(guān)系:進(jìn)程—日志、進(jìn)程—進(jìn)程、父進(jìn)程—子進(jìn)程。基于這些關(guān)系,我們可以有效地構(gòu)建出Sysmon日志圖。
(1)日志—日志(Syslog-Syslog)?!叭罩尽罩尽标P(guān)系可基于日志的生成時(shí)間進(jìn)行構(gòu)建。我們首先根據(jù)Hostname字段對(duì)日志分類,然后按時(shí)間順序?qū)⑷罩竟?jié)點(diǎn)進(jìn)行串聯(lián),如圖3所示。
圖3 “日志—日志”關(guān)系內(nèi)部結(jié)構(gòu)
(2)進(jìn)程—日志(Process-Syslog)?!斑M(jìn)程—日志”關(guān)系隱藏在日志的ProcessGuid字段內(nèi)容中。實(shí)際上,一個(gè)進(jìn)程包含多條日志,同一進(jìn)程下的日志有著相同的ProcessGuid。為更清楚地表示該關(guān)系,我們將“進(jìn)程”這一抽象概念進(jìn)行了實(shí)體化:首先提取出所有ProcessGuid,并創(chuàng)建對(duì)應(yīng)數(shù)量的“進(jìn)程”節(jié)點(diǎn)進(jìn)行一一綁定;之后將每個(gè)進(jìn)程所包含的日志節(jié)點(diǎn)與之相連,形成圖4所示的“進(jìn)程—日志”關(guān)系。這樣一個(gè)進(jìn)程內(nèi)的所有日志便可通過(guò)一個(gè)節(jié)點(diǎn)統(tǒng)一表示,大大減少了后續(xù)構(gòu)建進(jìn)程間關(guān)系時(shí)的連線數(shù)量。
圖4 “進(jìn)程—日志”關(guān)系內(nèi)部結(jié)構(gòu)
(3)進(jìn)程—進(jìn)程(Process-Process)?!斑M(jìn)程—進(jìn)程”關(guān)系包含在EventID為“10”的日志中。根據(jù)Sysmon對(duì)事件編號(hào)的定義,10號(hào)事件為“進(jìn)程訪問(wèn)”,當(dāng)一個(gè)進(jìn)程訪問(wèn)另一個(gè)進(jìn)程時(shí)便會(huì)產(chǎn)生這類日志。具體而言,10號(hào)事件日志獨(dú)有SourceProcessGuid和TargetProcessGuid兩個(gè)字段,分別用于記錄源進(jìn)程和目標(biāo)進(jìn)程的ProcessGuid,據(jù)此可以構(gòu)建進(jìn)程間的訪問(wèn)關(guān)系。
同時(shí),由于10號(hào)事件日志自身沒(méi)有Process-Guid,故無(wú)法與進(jìn)程實(shí)體相連。為避免其成為孤立節(jié)點(diǎn),我們?cè)O(shè)計(jì)了圖5所示結(jié)構(gòu),即將其插入到“進(jìn)程—進(jìn)程”關(guān)系中間。
圖5 “進(jìn)程—進(jìn)程”關(guān)系內(nèi)部結(jié)構(gòu)
(4)父進(jìn)程—子進(jìn)程(Parentp-Chidp)。“父進(jìn)程—子進(jìn)程”關(guān)系包含在EventID為“1”的日志中。根據(jù)Sysmon對(duì)事件編號(hào)的定義,1號(hào)事件為“進(jìn)程創(chuàng)建”,當(dāng)一個(gè)進(jìn)程創(chuàng)建另一個(gè)新進(jìn)程時(shí)便會(huì)產(chǎn)生這類日志。具體而言,1號(hào)事件日志獨(dú)有ParentProcessGuid字段,記錄了創(chuàng)建該進(jìn)程的父進(jìn)程的ProcessGuid,據(jù)此可以構(gòu)建進(jìn)程間的父子關(guān)系,如圖6所示。
圖6 “父進(jìn)程—子進(jìn)程”關(guān)系內(nèi)部結(jié)構(gòu)
此外,為探究“父進(jìn)程—子進(jìn)程”關(guān)系是否包含于“進(jìn)程—進(jìn)程”關(guān)系,我們通過(guò)統(tǒng)計(jì)兼具兩種關(guān)系的進(jìn)程組的數(shù)量,分別計(jì)算出兩組日志數(shù)據(jù)集中兩種關(guān)系的重疊率。表2數(shù)據(jù)表明,這兩種關(guān)系僅有少量重疊,應(yīng)被視為獨(dú)立的兩種關(guān)系,分別進(jìn)行建模。
表2 “父進(jìn)程—子進(jìn)程”與“進(jìn)程—進(jìn)程”重疊情況
前四節(jié)分別探討論述了圖譜中各個(gè)維度的內(nèi)部關(guān)系。本節(jié)我們定義了表3所示的維度間關(guān)系對(duì)各維度進(jìn)行關(guān)聯(lián),以構(gòu)成完整的圖譜模型。
表3 圖譜模型維度間的關(guān)聯(lián)關(guān)系
本文圖譜模型的完整結(jié)構(gòu)如圖7所示(BRON的內(nèi)部結(jié)構(gòu)在此省略),其呈現(xiàn)出分層結(jié)構(gòu),旨在實(shí)現(xiàn)高維威脅情報(bào)與低維設(shè)備資產(chǎn)(Asset)之間的相互映射。模型中實(shí)體與關(guān)系的數(shù)據(jù)庫(kù)文件的具體編寫(xiě)將在第4章中舉例說(shuō)明。
圖7 網(wǎng)絡(luò)安全日志圖譜模型結(jié)構(gòu)
本文實(shí)驗(yàn)的靶場(chǎng)主要由3個(gè)部分組成,其拓?fù)湫畔⑷鐖D8所示。
圖8 實(shí)驗(yàn)靶場(chǎng)網(wǎng)絡(luò)拓?fù)鋱D
(1)數(shù)據(jù)生成區(qū)。數(shù)據(jù)生成區(qū)以服務(wù)器為物理基礎(chǔ),由服務(wù)器上運(yùn)行的若干虛擬機(jī)具體組成。其中每臺(tái)虛擬機(jī)均安裝了日志傳感器Sysmon和日志轉(zhuǎn)發(fā)軟件Nxlog。此外,“服務(wù)器1”所管轄的局域網(wǎng)被特別配置為了“域”,可由域管理員賬號(hào)統(tǒng)一訪問(wèn)和管理。
(2)攻擊端。攻擊端設(shè)定為一臺(tái)已接入服務(wù)器3所管轄局域網(wǎng)內(nèi)的Kali Linux主機(jī)。
(3)數(shù)據(jù)匯總分析端。數(shù)據(jù)匯總分析端由一臺(tái)通過(guò)軟件防火墻與實(shí)驗(yàn)環(huán)境相隔離的主機(jī)構(gòu)成,是本文圖譜模型的實(shí)際部署位置。
本文實(shí)驗(yàn)的日志數(shù)據(jù)集中包含兩種攻擊,主要步驟如表4、表5所示。
表4 橫向移動(dòng)(Lateral movement)攻擊步驟
在實(shí)際開(kāi)發(fā)過(guò)程中,可通過(guò)圖數(shù)據(jù)庫(kù)來(lái)驅(qū)動(dòng)日志圖譜模型。圖數(shù)據(jù)庫(kù)一般由“實(shí)體”和“關(guān)系”兩種文件組成,文件中的每行代表實(shí)體的一個(gè)節(jié)點(diǎn)或關(guān)系的一條邊,每列代表實(shí)體或關(guān)系的一種屬性。
本文選擇ArangoDB圖數(shù)據(jù)庫(kù)來(lái)驅(qū)動(dòng)模型的構(gòu)建與實(shí)驗(yàn)。以“威脅情報(bào)”為例,圖7中實(shí)體“CTI”的部分實(shí)現(xiàn)如圖9所示。其中“_key”屬性是數(shù)據(jù)庫(kù)規(guī)定的節(jié)點(diǎn)唯一標(biāo)識(shí)符,其余如戰(zhàn)術(shù)名和攻擊指令模板等為自定義實(shí)體屬性;圖7中實(shí)體內(nèi)關(guān)系“CTI-CTI”和實(shí)體間關(guān)系“CTI-TTP”的部分實(shí)現(xiàn)如圖10所示。其中規(guī)定“_from”和“_to”屬性分別用于記錄邊的開(kāi)始和結(jié)束節(jié)點(diǎn),格式為“實(shí)體名/節(jié)點(diǎn)標(biāo)識(shí)符”。
圖9 圖譜模型實(shí)體文件編寫(xiě)
圖10 圖譜模型關(guān)系文件編寫(xiě)
本文圖譜的層次結(jié)構(gòu)代表其有著較大的深度,此時(shí)基于廣度優(yōu)先搜索(Breadth-First Search,BFS)的圖遍歷算法具備更好的適用性和搜索效率,故我們基于該算法進(jìn)行相關(guān)實(shí)驗(yàn)。算法流程如下:
以“橫向移動(dòng)”為例,攻擊過(guò)程中,某主機(jī)的安全軟件將數(shù)據(jù)集中17465號(hào)日志記錄的命令行操作(向外發(fā)送了一個(gè)未知應(yīng)用程序)定義為異常事件,于是我們以該日志節(jié)點(diǎn)為遍歷起點(diǎn)進(jìn)行事件關(guān)聯(lián)。關(guān)聯(lián)過(guò)程分為3步,結(jié)果如圖11所示。
圖11 “橫向移動(dòng)”攻擊事件關(guān)聯(lián)結(jié)果
(1)日志層向上遍歷至CTI層。該步驟旨在將異常日志映射到相應(yīng)的攻擊過(guò)程上。設(shè)定BFS深度為3,搜索路徑為“Syslog-TTP”“Technique-Mitigation”(BRON內(nèi)部關(guān)系)和“CTI-TTP”關(guān)系。遍歷結(jié)果顯示,該日志與44號(hào)ATT&CK技術(shù)有映射關(guān)系。該技術(shù)屬于遠(yuǎn)程服務(wù)利用技術(shù),可設(shè)置11號(hào)等緩解措施進(jìn)行防御。并且CTI中記錄的橫向移動(dòng)攻擊的第2步也使用了該技術(shù)。
(2)CTI層橫向遍歷。該步驟旨在獲取CTI中對(duì)應(yīng)的完整攻擊過(guò)程。設(shè)定BFS深度為1,搜索路徑為“CTI-CTI”關(guān)系。遍歷結(jié)果顯示,CTI中橫向移動(dòng)相關(guān)的攻擊過(guò)程共有3步。
(3)CTI層向下遍歷至資產(chǎn)層。該步驟旨在關(guān)聯(lián)攻擊事件,還原攻擊全貌。設(shè)定BFS深度為6,搜索路徑依次為“CTI-TTP”“Technique-Mitigation”“Syslog-TTP”“Process-Syslog”“Parentp-Childp”和“Asset-Process”關(guān)系。遍歷結(jié)果顯示,黑客在CTC備機(jī)(asset/9)和主機(jī)(asset/8)間進(jìn)行了橫向移動(dòng)。
通過(guò)分析關(guān)聯(lián)結(jié)果中的詳細(xì)信息得出,由于CTC主備機(jī)同屬一個(gè)域內(nèi),橫向移動(dòng)第1步通過(guò)網(wǎng)絡(luò)共享發(fā)現(xiàn)CTC主機(jī)(asset/8);第2步利用網(wǎng)絡(luò)共享服務(wù)從CTC備機(jī)(asset/9)向主機(jī)發(fā)送代理程序文件;第3步通過(guò)備機(jī)(asset/9)遠(yuǎn)程運(yùn)行代理程序,建立攻擊端與主機(jī)間的代理連接,實(shí)現(xiàn)橫向移動(dòng)。此外,還發(fā)現(xiàn)CTC備機(jī)上與攻擊事件相關(guān)的3個(gè)進(jìn)程(process/741,894,1055)均來(lái)自同一個(gè)父進(jìn)程(process/884),經(jīng)驗(yàn)證該父進(jìn)程是建立CTC備機(jī)與攻擊端之間代理連接的進(jìn)程,即黑客初始接入的位置。
對(duì)圖進(jìn)行評(píng)估可以幫助我們了解和描述圖的特征和性質(zhì),從而更好地理解和分析圖數(shù)據(jù)。本文從基本指標(biāo)和查詢性能兩個(gè)方面對(duì)圖譜模型進(jìn)行評(píng)估。
(1)基本指標(biāo)。圖譜的基本指標(biāo)如表6所示。這些指標(biāo)可幫助我們了解圖的整體特征、規(guī)模大小、關(guān)聯(lián)程度和信息傳遞方式等,為進(jìn)一步的分析、挖掘和算法設(shè)計(jì)提供基礎(chǔ)。
表6 本文圖譜模型的基本指標(biāo)
(2)查詢性能。我們使用本文模型分別在兩套數(shù)據(jù)集中查詢兩種攻擊涉及的日志(重復(fù)5次),同時(shí)在基于Elasticsearch引擎的日志分析平臺(tái)上對(duì)兩套數(shù)據(jù)集執(zhí)行類似操作,以比較查詢性能。測(cè)試環(huán)境為一臺(tái)搭載了Intel Core i7-9700 3.00 GHz CPU和64 GB RAM的主機(jī)。
表7數(shù)據(jù)顯示,鑒于圖譜模型在日志數(shù)據(jù)間構(gòu)建了關(guān)聯(lián)關(guān)系,相較于日志分析平臺(tái)的逐條查詢方式,其擁有更高的查詢效率。然而,測(cè)試數(shù)據(jù)也體現(xiàn)出圖數(shù)據(jù)庫(kù)的查詢效率受數(shù)據(jù)集大小影響更為明顯,說(shuō)明當(dāng)數(shù)據(jù)量過(guò)大時(shí),應(yīng)考慮搭建分布式圖數(shù)據(jù)庫(kù)以保證其查詢性能。
表7 查詢耗時(shí)記錄
隨著網(wǎng)絡(luò)攻擊的不斷進(jìn)化,傳統(tǒng)日志分析技術(shù)已經(jīng)難以滿足日益增加的網(wǎng)絡(luò)安全需求,將新的智能技術(shù)與日志分析技術(shù)融合已經(jīng)成為安全領(lǐng)域的研究熱點(diǎn)。本文提出的模型有效彌補(bǔ)了傳統(tǒng)日志分析技術(shù)信息來(lái)源單一和難以關(guān)聯(lián)異常事件的不足,并表現(xiàn)出優(yōu)秀的查詢性能。未來(lái),基于本模型的研究工作可借助實(shí)體抽取等技術(shù)引入更加豐富的威脅情報(bào),可融入網(wǎng)絡(luò)流量數(shù)據(jù)以更全面地描述系統(tǒng)行為,還可利用知識(shí)推理技術(shù)挖掘圖譜中的隱藏信息,進(jìn)一步提升模型的分析能力。