胡啟宬,何樹(shù)果,朱 震
(北京升鑫網(wǎng)絡(luò)科技有限公司 青藤云安全人工智能實(shí)驗(yàn)室,北京101111)
政府和企業(yè)日益采用復(fù)雜和龐大的信息系統(tǒng),如何確保其自身的網(wǎng)絡(luò)空間安全成為重要課題。入侵檢測(cè)是一類(lèi)通過(guò)事件分析,對(duì)可疑或具有潛在威脅的行為進(jìn)行檢測(cè),并及時(shí)主動(dòng)地發(fā)出警告的安全保障技術(shù)。傳統(tǒng)的入侵檢測(cè)技術(shù)有基于模式匹配、狀態(tài)匹配、統(tǒng)計(jì)特征、啟發(fā)式簽名規(guī)則等多個(gè)分類(lèi),新一代技術(shù)更是融入了機(jī)器學(xué)習(xí)、異常檢測(cè)等人工智能等相關(guān)方法,檢測(cè)效果得以大幅提升。
信息系統(tǒng)的入侵者在實(shí)施攻擊的時(shí)候,一般會(huì)采取包含信息偵察、橫向移動(dòng)、憑證獲取、權(quán)限提升等一系列戰(zhàn)術(shù),這些戰(zhàn)術(shù)又對(duì)應(yīng)數(shù)百種多變的攻擊技術(shù)[1]。如果使用基于模式匹配或者啟發(fā)式簽名的方法進(jìn)行入侵檢測(cè),會(huì)高度依賴威脅情報(bào)收集和安全專家知識(shí)的轉(zhuǎn)化,既緩慢且成本高昂;基于機(jī)器學(xué)習(xí)和異常檢測(cè)的方法則可以在一定程度上降低這一成本,既能對(duì)已知威脅達(dá)到較高的檢測(cè)準(zhǔn)確率,還能對(duì)未知威脅進(jìn)行檢測(cè)。
根據(jù)互聯(lián)網(wǎng)工程任務(wù)組對(duì)通用入侵檢測(cè)框架的定義[2],入侵檢測(cè)系統(tǒng)中應(yīng)當(dāng)包含如下組件:事件產(chǎn)生器、事件分析器、響應(yīng)單元和事件數(shù)據(jù)庫(kù)。事件產(chǎn)生器在計(jì)算機(jī)上按照給定的粒度收集系統(tǒng)中發(fā)生的事件,并向事件分析器和事件數(shù)據(jù)庫(kù)提供事件。常見(jiàn)的事件產(chǎn)生器,例如記錄內(nèi)核層面跟蹤日志并將其發(fā)送至指定服務(wù)器的事件探針,其使用的數(shù)據(jù)結(jié)構(gòu)一般為日志序列,諸如使用模式匹配、啟發(fā)式簽名等方法進(jìn)行預(yù)定義規(guī)則的匹配。同時(shí),使用日志序列處理存在一些缺點(diǎn),如可提供日志關(guān)聯(lián)性少、強(qiáng)順序約束不抗混淆等,導(dǎo)致檢測(cè)效果的降低。使用圖作為事件數(shù)據(jù)的載體,則能夠緩解上述問(wèn)題,以起源圖為代表的圖數(shù)據(jù)結(jié)構(gòu)和相關(guān)算法正被廣泛討論[3]。
本文提出將日志序列轉(zhuǎn)化為圖結(jié)構(gòu),即系統(tǒng)日志對(duì)象連接圖,并對(duì)該圖中的頂點(diǎn)尋找向量形式嵌入表示,具體編碼方法基于圖神經(jīng)網(wǎng)絡(luò)思想;以進(jìn)程對(duì)應(yīng)頂點(diǎn)的嵌入表示為對(duì)象,訓(xùn)練異常檢測(cè)模型,為計(jì)算機(jī)進(jìn)程行為尋找基線,提供新的進(jìn)程行為嵌入數(shù)據(jù)點(diǎn)異常評(píng)分機(jī)制;此外,通過(guò)單獨(dú)分離出進(jìn)程間的派生信息,在嵌入表示空間內(nèi)建立狀態(tài)概率轉(zhuǎn)移模型,描述計(jì)算機(jī)進(jìn)程行為之間的相聯(lián)關(guān)系。本文的主要貢獻(xiàn)有:
(1)提出系統(tǒng)日志對(duì)象連接圖和將日志序列轉(zhuǎn)化為該圖的方法;
(2)提出在系統(tǒng)日志對(duì)象連接圖(多重有向?qū)傩詧D)中的頂點(diǎn)尋找向量形式嵌入標(biāo)識(shí)的編碼方法;
(3)提出在上述嵌入表示的向量空間內(nèi)建立多階狀態(tài)轉(zhuǎn)移和異常檢測(cè)模型,以描述系統(tǒng)內(nèi)進(jìn)程行為基線;
(4)提出一種異常評(píng)分機(jī)制,在上述進(jìn)程行為基線的基礎(chǔ)上,通過(guò)計(jì)算相對(duì)于基線的偏離程度進(jìn)行入侵檢測(cè)。
圖作為一種能夠高效地表達(dá)實(shí)體之間關(guān)聯(lián)關(guān)系的數(shù)據(jù)結(jié)構(gòu),在入侵檢測(cè)、威脅發(fā)現(xiàn)、攻擊溯源等信息安全相關(guān)領(lǐng)域內(nèi)被廣泛研究和討論。文獻(xiàn)[4]、[5]的研究中提出使用量化數(shù)據(jù)流圖描述系統(tǒng)中邏輯實(shí)體之間的數(shù)據(jù)流動(dòng)情況,并分別使用啟發(fā)式一階邏輯謂詞和提取統(tǒng)計(jì)特征的方法有監(jiān)督地訓(xùn)練分類(lèi)模型,從而檢測(cè)出惡意進(jìn)程。Ning等人[6]提出的超警報(bào)關(guān)聯(lián)圖將“表象-前提-結(jié)果”三元組組成的超警報(bào)類(lèi)型以因果關(guān)系關(guān)聯(lián)起來(lái),文獻(xiàn)[7]在此基礎(chǔ)上更進(jìn)一步,通過(guò)歸約和轉(zhuǎn)化提取出攻擊策略圖,并提出相似性度量方案以測(cè)量攻擊策略之間的相似程度。Fredj等人[8]提出將告警事件按序列順序建立狀態(tài)轉(zhuǎn)移圖,并以此建立吸收馬爾可夫鏈模型,從而依據(jù)鏈上的關(guān)鍵節(jié)點(diǎn)自動(dòng)發(fā)現(xiàn)入侵者的攻擊策略。文獻(xiàn)[9]、[10]提出內(nèi)核對(duì)象依賴圖,并在此基礎(chǔ)上分別使用加權(quán)公共行為圖、關(guān)鍵路徑和無(wú)監(jiān)督聚類(lèi)算法以識(shí)別惡意軟件,并將其分類(lèi)為某一惡意軟件家族。Liu等人[11]提出了一種將日志條目作為圖的頂點(diǎn),順序關(guān)聯(lián)作為邊緣的圖,并提出了在該圖上運(yùn)行的頂點(diǎn)嵌入算法,該嵌入算法以邊緣的權(quán)重為概率進(jìn)行隨機(jī)游走,并通過(guò)類(lèi)似于Word2vec的方式為每一條日志條目尋找向量嵌入,以此發(fā)現(xiàn)異常的日志事件。文獻(xiàn)[12]首次提出起源圖概念,并且作者以此提出了一種攻擊溯源算法。Liu等人[13]提出了一種運(yùn)行在起源圖上的自動(dòng)優(yōu)先排序的因果關(guān)系跟蹤器,用于攻擊溯源,該溯源算法通過(guò)事件在因果關(guān)系和拓?fù)渖系南∮行源_定其優(yōu)先級(jí),以更低的代價(jià)識(shí)別攻擊軌跡。Hossain等人[14]針對(duì)數(shù)據(jù)泄露和數(shù)據(jù)破壞類(lèi)的攻擊行為提出了溯源模型,該模型通過(guò)為起源圖中的實(shí)體分別定義信任度和保密度標(biāo)簽,并定義標(biāo)簽的初始化和繼承策略,用一系列啟發(fā)式規(guī)則進(jìn)行威脅檢測(cè)。在文獻(xiàn)[15]中,作者為起源圖中的實(shí)體分配主體標(biāo)簽或數(shù)據(jù)標(biāo)簽,計(jì)算和檢測(cè)包括惡意軟件執(zhí)行、特權(quán)提升、數(shù)據(jù)導(dǎo)出等一系列攻擊行為。
上述的方法在一定的范圍內(nèi)擁有良好的檢測(cè)效果,但是仍然存在一些不足之處。例如,依賴于有標(biāo)簽的數(shù)據(jù)集完成模型的訓(xùn)練或者算法的初始化,獲取代價(jià)十分昂貴;僅能夠檢測(cè)已知的威脅,主要是出現(xiàn)在訓(xùn)練集中的樣本,即使部分模型有一定的泛化能力,但仍無(wú)法檢測(cè)出未知的威脅。
系統(tǒng)日志對(duì)象連接圖是用于表示計(jì)算機(jī)系統(tǒng)內(nèi)部邏輯對(duì)象及之間關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)。邏輯對(duì)象包括進(jìn)程、文件、網(wǎng)絡(luò)套接字等,在系統(tǒng)日志對(duì)象連接圖中表示為頂點(diǎn);而對(duì)象之間的關(guān)系則在系統(tǒng)日志對(duì)象連接圖中表示為兩頂點(diǎn)之間的邊緣。形式化定義系統(tǒng)日志對(duì)象連接圖G=<V,E>,其中V為頂點(diǎn)的集合,E為邊緣的集合;此外,定義一屬性函數(shù)Attr(e,f),為圖中的元素e(可以是頂點(diǎn)或邊)的屬性字段f賦值。
在系統(tǒng)日志對(duì)象連接圖中,頂點(diǎn)v∈V的類(lèi)型Attr(v,′type′)和邊緣e∈E的類(lèi)型Attr(e,′type′)由事件產(chǎn)生器所能捕獲的事件類(lèi)型而決定。在本文的實(shí)驗(yàn)中使用的事件發(fā)生器運(yùn)行在Linux系統(tǒng)上,其支持的事件所導(dǎo)出的頂點(diǎn)和邊緣的類(lèi)型如下:Attr(v,′type′)∈{進(jìn)程,文件/管道,文件系統(tǒng),網(wǎng)絡(luò)套接字,服務(wù),內(nèi)核模塊},Attr(e,′type′)∈{進(jìn)程派生,進(jìn)程訪問(wèn),文件/管道創(chuàng)建,文件讀寫(xiě),文件屬性修改,文件軟硬鏈接創(chuàng)建,掛載文件系統(tǒng),從/向套接字讀取/寫(xiě)入數(shù)據(jù),修改系統(tǒng)服務(wù)狀態(tài),加載/卸載內(nèi)核模塊};對(duì)于事件生成器生成的日志條目,將日志中事件的主體和客體轉(zhuǎn)化為對(duì)象頂點(diǎn),將事件中的行為動(dòng)作轉(zhuǎn)化為將主客體對(duì)象頂點(diǎn)連接起來(lái)的行為邊緣。例如,日志條目“于t時(shí)刻,進(jìn)程p從文件m中讀取了一段數(shù)據(jù)”可以轉(zhuǎn)化為進(jìn)程對(duì)應(yīng)的頂點(diǎn)p和文件對(duì)應(yīng)的頂點(diǎn)m之間的一條邊緣r,且Attr(r,′type′)=t,如果兩頂點(diǎn)間已經(jīng)存在邊,則需建立一條新的邊(多重邊)。
表1 中詳細(xì)地列舉了系統(tǒng)日志對(duì)象連接圖中的對(duì)象頂點(diǎn)和行為邊緣的屬性字段和各個(gè)字段所對(duì)應(yīng)的取值范圍的說(shuō)明。
表1 系統(tǒng)日志對(duì)象連接圖屬性和取值
根據(jù)2.1節(jié)中所描述的方法,將時(shí)間窗口內(nèi)的日志序列轉(zhuǎn)化為系統(tǒng)日志對(duì)象連接圖,定義系統(tǒng)日志對(duì)象連接圖中類(lèi)型的頂點(diǎn)為主體,其他類(lèi)型的頂點(diǎn)為客體,可以得到直觀的結(jié)論,即一個(gè)主體與若干個(gè)主體及客體相連接,而客體則僅與主體相連接;描述主體行為需要使用與主體相連接的若干階鄰居節(jié)點(diǎn)的屬性,即主體頂點(diǎn)的嵌入向量應(yīng)當(dāng)與其n階鄰域中的頂點(diǎn)相關(guān)。為達(dá)到進(jìn)程行為向量化描述的目的,需要對(duì)圖中的每個(gè)頂點(diǎn),尤其是進(jìn)程對(duì)應(yīng)的頂點(diǎn),尋找與其鄰居節(jié)點(diǎn)的嵌入相關(guān)的向量化嵌入,即:
式中,hu為頂點(diǎn)u的向量化嵌入表示為頂點(diǎn)u的k階鄰域節(jié)點(diǎn)集合,F(xiàn)為嵌入函數(shù),該嵌入函數(shù)將頂點(diǎn)u的k階領(lǐng)域內(nèi)的頂點(diǎn)和邊緣中包含的信息進(jìn)行聚合,以獲得頂點(diǎn)u的嵌入表示;當(dāng)頂點(diǎn)u的類(lèi)型為進(jìn)程的時(shí)候,hu即為該對(duì)應(yīng)進(jìn)程行為的向量化嵌入表示。因此,需要進(jìn)一步尋找和確定式(1)中的嵌入函數(shù)F。
圖神經(jīng)網(wǎng)絡(luò)是一類(lèi)支持圖數(shù)據(jù)結(jié)構(gòu)的深度學(xué)習(xí)方法。傳統(tǒng)的深度學(xué)習(xí)方法諸如CNN、RNN等需要使用規(guī)律排列的數(shù)據(jù)(例如圖像和字符序列);而圖神經(jīng)網(wǎng)絡(luò)GNN使用并不規(guī)律排列的結(jié)構(gòu)信息和特征信息,為圖中的頂點(diǎn)產(chǎn)生嵌入向量。圖神經(jīng)網(wǎng)絡(luò)中的消息傳遞神經(jīng)網(wǎng)絡(luò)(Message Passing Neural Network,MPNN)[16]框架和GN[17]框架都基于Weisfeiler-Lehman圖核[18]中設(shè)計(jì)的迭代式標(biāo)簽傳遞的思想,即每經(jīng)過(guò)一次消息傳遞的迭代,節(jié)點(diǎn)的嵌入中就多包含一階鄰域的信息。MPNN定義的消息傳遞與更新步驟可以分別表示如下:
式(2)中M(i)為第i次迭代使用的消息聚合函數(shù),該函數(shù)將頂點(diǎn)u的k階鄰域內(nèi)的頂點(diǎn)嵌入和頂點(diǎn)對(duì)組成的有效邊緣(u,v)∈E的信息進(jìn)行聚合,并輸出對(duì)于頂點(diǎn)u的第i+1代消息;式(3)中U(i)為第i次迭代使用的消息更新函數(shù),該函數(shù)以頂點(diǎn)u的i代嵌入向量和第i+1代消息作為輸入,輸出為頂點(diǎn)u的i+1代嵌入向量對(duì)于頂點(diǎn)的初始嵌入向量應(yīng)當(dāng)包含頂點(diǎn)u的′type′、′loc′和′perm′屬性的信息,邊緣攜帶的信息e(u,v)應(yīng)當(dāng)包括邊緣(u,v)的′type′、′flow′和′stat′屬性;例如將上述屬性字段按照其邏輯含義和數(shù)據(jù)類(lèi)型分別進(jìn)行獨(dú)熱編碼、skip-gram編碼、字典映射編碼、top-N編碼等。
常用的圖神經(jīng)網(wǎng)絡(luò)模型例如GCN[19]、Graph-SAGE[20]、LGCN[21]等可視為由MPNN框架通過(guò)選擇不同消息聚合函數(shù)M和消息更新函數(shù)U實(shí)例化而來(lái)。一般來(lái)說(shuō),消息聚合函數(shù)會(huì)選擇例如求和、求平均、拼接、求最大值、隨機(jī)游走并按期望排列、長(zhǎng)短期記憶網(wǎng)絡(luò)(Long Short-Term Memory,LSTM)、集合池化、Janossy池化[22]等,并同時(shí)附以點(diǎn)乘權(quán)重矩陣和歸一化等步驟;而消息更新函數(shù)會(huì)選擇例如向量拼接、線性加和、取最大值、跳躍連接,并同時(shí)附以歸一化、點(diǎn)乘公共的可訓(xùn)練權(quán)重矩陣、按照度區(qū)分點(diǎn)乘不同的可訓(xùn)練權(quán)重矩陣、使用非線性激活函數(shù)等。
本文在MPNN框架上進(jìn)行泛化,將嵌入函數(shù)F定義為類(lèi)似公式(2)、(3)描述的迭代式聚合更新的過(guò)程:
式(4)中,每次迭代使用相同的消息傳遞函數(shù),該函數(shù)在本文中定義為向量拼接函數(shù)(用“⊕”代表)。同理,每次迭代使用相同的消息更新函數(shù),該函數(shù)在本文中定義為取平均函數(shù)Λ,W(i)為第i次迭代中的權(quán)重矩陣,如果將該矩陣設(shè)置為可訓(xùn)練矩陣,則可以在有監(jiān)督信號(hào)的情況下通過(guò)反向傳播進(jìn)行類(lèi)似常規(guī)深度學(xué)習(xí)的訓(xùn)練;反之將其固定,則可以進(jìn)行無(wú)監(jiān)督信號(hào)的編碼,一次消息聚合和更新過(guò)程為一次迭代,記為函數(shù)f。式(5)表明了迭代n次的過(guò)程,即每次迭代的輸出作為下一次迭代過(guò)程的輸入,所需的嵌入函數(shù)F則為更新過(guò)程f的n次復(fù)合函數(shù)。
使用2.2節(jié)中提出的嵌入函數(shù),將系統(tǒng)日志對(duì)象連接圖中的進(jìn)程頂點(diǎn)根據(jù)其行為嵌入為向量形式,在向量空間內(nèi),行為相似的進(jìn)程嵌入到舉例相近的位置,行為相差較大的進(jìn)程則距離較遠(yuǎn)。
為了給穩(wěn)定運(yùn)行的計(jì)算機(jī)系統(tǒng)建立一個(gè)描述其常規(guī)行為模式的模型,即行為基線,本文提出在嵌入向量空間中建立類(lèi)似馬爾可夫模型的p階狀態(tài)轉(zhuǎn)移模型,能夠刻畫(huà)嵌入向量在該空間中的分布情況以及進(jìn)程間的關(guān)聯(lián)模式,如派生模式等。對(duì)于穩(wěn)定運(yùn)行的系統(tǒng)中的進(jìn)程行為,本文有如下假設(shè):進(jìn)程本身的行為應(yīng)當(dāng)與同源進(jìn)程(具有相同′loc′屬性的進(jìn)程)的行為一致,并且應(yīng)當(dāng)頻繁出現(xiàn);頻繁出現(xiàn)的進(jìn)程行為在整個(gè)嵌入空間內(nèi)應(yīng)當(dāng)具有穩(wěn)定的分布,即隨著時(shí)間推移不會(huì)突變;進(jìn)程之間的關(guān)聯(lián)關(guān)系應(yīng)當(dāng)是穩(wěn)定的,表現(xiàn)為從同源進(jìn)程間轉(zhuǎn)移的概率不隨時(shí)間推移而變化。
給定m個(gè)進(jìn)程u1,u2,…,um,以及它們?cè)谙蛄靠臻g中的嵌入h1,h2,…,hm,使用基于密度的聚類(lèi)算法,如具有噪聲的基于密度的聚類(lèi)方法(Density-Based Spatial Clustering of Applications with Noise,DBSCAN)將向量嵌入聚為t個(gè)簇C1,C2,…,Ct,注意有部分嵌入不被包含在任意一個(gè)類(lèi)中,因?yàn)樗鼈儽痪垲?lèi)算法標(biāo)記為噪聲點(diǎn);對(duì)于有關(guān)聯(lián)關(guān)系的進(jìn)程ur和us,例如ur是us的父進(jìn)程,或者ur訪問(wèn)us,記ur|→us;定義向量A與矩陣B:
式(6)中,向量A的t個(gè)分量依次記錄了C1,C2,…,Ct在嵌入空間內(nèi)的取值概率,前文提到假設(shè)頻繁出現(xiàn)的進(jìn)程行為在整個(gè)嵌入空間內(nèi)應(yīng)當(dāng)具有穩(wěn)定的分布,向量A則描述了這種分布情況;式(7)中,矩陣B的i行j列對(duì)應(yīng)的數(shù)值是具有關(guān)聯(lián)關(guān)系ur|→us的數(shù)量占任意關(guān)聯(lián)關(guān)系ur|→*的數(shù)量的比例,前文所假設(shè)的進(jìn)程之間的關(guān)聯(lián)關(guān)系應(yīng)當(dāng)是穩(wěn)定的,而矩陣B則描述了這種關(guān)聯(lián)關(guān)系。在此基礎(chǔ)上定義p階狀態(tài)轉(zhuǎn)移矩陣:
式中,T(p)矩陣中包含的元素代表p階的進(jìn)程關(guān)聯(lián)關(guān)系樹(shù)中的轉(zhuǎn)移概率,特別地,當(dāng)p=0時(shí),T(0)=A,是進(jìn)程行為嵌入本身的概率分布;當(dāng)p=1時(shí),T(1)=BA,代表長(zhǎng)度為1的進(jìn)程鏈的概率分布。p階狀態(tài)轉(zhuǎn)移模型通過(guò)多階的進(jìn)程關(guān)聯(lián)情況來(lái)描述系統(tǒng)中的進(jìn)程基線行為。
為了達(dá)到檢測(cè)入侵的目的,在2.3節(jié)中所述三個(gè)假設(shè)的前提下,使用偏離行為基線的程度作為檢測(cè)入侵行為的量化指標(biāo);本節(jié)提出一個(gè)相對(duì)基線偏離程度的評(píng)分機(jī)制,作為入侵檢測(cè)在異常行為方面的參考依據(jù)。
對(duì)于進(jìn)程行為嵌入分布(p=0)來(lái)說(shuō),其偏離基線的程度應(yīng)當(dāng)取決于其是否處于任意一個(gè)簇C1,C2,…,Ct之內(nèi);在基于密度的聚類(lèi)算法中,可以發(fā)現(xiàn)離群點(diǎn),例如根據(jù)DBSCAN中的掃描半徑和最小包含點(diǎn)數(shù)兩個(gè)參數(shù),可以導(dǎo)出周邊密度小于預(yù)設(shè)的噪聲點(diǎn);或者可以在向量嵌入空間中直接使用基于距離的異常檢測(cè)算法,例如局部異常因子(Local Outlier Factor,LOF)算法,該算法根據(jù)局部可達(dá)密度導(dǎo)出離群因子。
對(duì)于進(jìn)程行為關(guān)聯(lián)關(guān)系(p≥1)來(lái)說(shuō),其偏離基線的程度應(yīng)當(dāng)取決于相對(duì)低階的狀態(tài)轉(zhuǎn)移矩陣。例如,對(duì)于一個(gè)具有連續(xù)關(guān)聯(lián)關(guān)系的進(jìn)程序列、u1|→u2、u2|→u3、…um-11|→um,需 要 使 用p=m-1階 狀 態(tài) 轉(zhuǎn) 移模型刻畫(huà),與之對(duì)應(yīng)的m-1個(gè)狀態(tài)轉(zhuǎn)移矩陣分別為T(mén)(1),…,T(m-1),可以在此基礎(chǔ)上定義該進(jìn)程序列的偏離分?jǐn)?shù)S:
在操作系統(tǒng)為CentOS的服務(wù)器上部署對(duì)應(yīng)的事件探針作為事件生成器,并且使用2.1節(jié)中描述的方法將事件日志序列轉(zhuǎn)化為系統(tǒng)日志對(duì)象連接圖。在事件收集階段,服務(wù)器上正常運(yùn)行Redis服務(wù)和MySQL服務(wù),并在實(shí)驗(yàn)條件下確保相對(duì)隔離。事件收集結(jié)束后,在系統(tǒng)日志對(duì)象連接圖上運(yùn)行2.2節(jié)中的進(jìn)程行為嵌入方法,模型中參數(shù)選擇為n=1、W固定為恒等變換I,其他參數(shù)選擇詳見(jiàn)2.2節(jié)中的敘述;接著使用如2.3節(jié)所述的模型為系統(tǒng)中進(jìn)程的行為建立基線,其中參數(shù)選擇為p=0;同時(shí),在該進(jìn)程行為嵌入數(shù)據(jù)集上訓(xùn)練LOF模型,參數(shù)選擇鄰居數(shù)量為20、距離函數(shù)為歐氏距離,該模型在測(cè)試階段為新的嵌入向量偏離基線的程度進(jìn)行打分。
實(shí)驗(yàn)?zāi)M入侵者向上述服務(wù)器發(fā)起攻擊,其中使用預(yù)裝若干滲透測(cè)試工具的Kali Linux,以CentOS服務(wù)器為目標(biāo),模擬如下一系列攻擊場(chǎng)景:
(1)SSH口令暴力破解:使用hydra工具配合口令字典,向服務(wù)器的ssh端口連續(xù)發(fā)起登錄;
(2)未授權(quán)登錄:利用Redis的漏洞,向服務(wù)器存儲(chǔ)公鑰的目錄下寫(xiě)入準(zhǔn)備好的公鑰,保存后入侵者可以直接登錄該服務(wù)器;
(3)Redis主從復(fù)制遠(yuǎn)程代碼執(zhí)行:利用Redis的漏洞,使用redis-rogue-getshell工具向服務(wù)器運(yùn)行Redis的端口發(fā)起遠(yuǎn)程代碼執(zhí)行攻擊;
(4)添加后門(mén)賬戶:在服務(wù)器上使用useradd添加惡意賬戶,使用輸出重定向添加賬戶口令,以便入侵者的后續(xù)登錄;
(5)權(quán)限提升:準(zhǔn)備LinPEAS的攻擊載荷,并在命令行中使用Python調(diào)用執(zhí)行。
在此期間,使用在模型訓(xùn)練階段得到的嵌入函數(shù)和LOF模型,為實(shí)時(shí)產(chǎn)生的系統(tǒng)日志對(duì)象連接圖中的進(jìn)程頂點(diǎn)實(shí)行嵌入和偏離基線程度打分,并做出告警。
在入侵測(cè)試階段,五個(gè)攻擊場(chǎng)景因進(jìn)程與行為基線有較大偏差而全部被檢測(cè)出來(lái)。對(duì)于每個(gè)場(chǎng)景的具體解釋如下:
(1)Sshd進(jìn)程與同源進(jìn)程的歷史行為不同,因?yàn)榕缮捅慌缮闆r與基線不一致;
(2)Redis-server進(jìn)程建立了與基線行為不同的網(wǎng)絡(luò)連接(與攻擊者機(jī)器的網(wǎng)絡(luò)連接),且異常地將寫(xiě)入工作目錄下的文件移動(dòng)到/root/.ssh目錄;
(3)Redis-server進(jìn)程出現(xiàn)了與其歷史基線不同的行為,即派生了被遠(yuǎn)程命令執(zhí)行調(diào)用的進(jìn)程;
(4)Useradd進(jìn)程本身在基線中沒(méi)有頻繁出現(xiàn),與Useradd有相似行為的進(jìn)程沒(méi)有對(duì)/etc下的多個(gè)文件進(jìn)行創(chuàng)建文件硬鏈接和刪除文件等操作;
(5)Python進(jìn)程出現(xiàn)與同源進(jìn)程的歷史基線不一致的行為,包括進(jìn)行了異常的網(wǎng)絡(luò)連接、向磁盤(pán)不常用位置寫(xiě)入文件、派生bash進(jìn)程以及使用了該寫(xiě)入的文件。
為了更加直觀地表現(xiàn)進(jìn)程行為嵌入基線和在測(cè)試中進(jìn)程行為偏離基線的情況,本文將進(jìn)程嵌入向量進(jìn)行降維和可視化:首先使用增量主成分分析(Incremental Principle Component Analysis,IPCA)算法將嵌入向量降至16維,然后使用t分布隨機(jī)鄰居嵌入算法(t-distributed Stochastic Neighbor Embedding,t-SNE),接著將其降至2維以便在平面上展示,繪制結(jié)果如圖1所示。圖中的圓點(diǎn)代表訓(xùn)練階段的進(jìn)程向量嵌入降維后的分布情況,可以發(fā)現(xiàn),行為相似的進(jìn)程的嵌入所對(duì)應(yīng)的二維數(shù)據(jù)點(diǎn)較為明顯地聚在相近的位置,反之行為差異較大的進(jìn)程之間的距離較遠(yuǎn),整體來(lái)看,這些圓點(diǎn)組成了系統(tǒng)在訓(xùn)練期間的進(jìn)程行為基線;圖中的“X”形點(diǎn)代表在入侵測(cè)試階段被告警的異常進(jìn)程,即五個(gè)與攻擊相關(guān)的進(jìn)程在降維后的空間內(nèi)所在的位置??梢园l(fā)現(xiàn),這些數(shù)據(jù)點(diǎn)都距離基線中的任何一個(gè)簇的距離都較遠(yuǎn),周邊點(diǎn)的密度都較小,從而佐證了其偏離基線的結(jié)論。
圖1 進(jìn)程行為嵌入降維后的分布情況
本文提出并驗(yàn)證了一種使用圖神經(jīng)網(wǎng)絡(luò)思想的入侵檢測(cè)方法,提出將日志序列轉(zhuǎn)化為系統(tǒng)日志對(duì)象連接圖這一數(shù)據(jù)結(jié)構(gòu)的方法。使用消息傳遞神經(jīng)網(wǎng)絡(luò)框架定義了嵌入函數(shù),從而對(duì)系統(tǒng)日志對(duì)象連接圖中的頂點(diǎn)進(jìn)行向量形式嵌入,以達(dá)到向量化描述進(jìn)程行為的目的。根據(jù)向量化的進(jìn)程行為,使用多階轉(zhuǎn)移模型來(lái)描述主機(jī)上的進(jìn)程行為模式,即行為基線,并在該基線上定義了偏離程度分?jǐn)?shù)來(lái)進(jìn)行入侵檢測(cè)。在實(shí)驗(yàn)階段,通過(guò)在一臺(tái)服務(wù)器上訓(xùn)練模型,并且使用多種不同的攻擊手段攻擊該服務(wù)器,成功驗(yàn)證了本文方法的有效性。