孫偉,張鵬,何永全,3,邢麗超,3
(1.北京交通大學(xué)計算機(jī)與信息技術(shù)學(xué)院,北京 100044;2.中國科學(xué)院信息工程研究所,北京 100093;3.中國科學(xué)院大學(xué)網(wǎng)絡(luò)空間安全學(xué)院,北京 100049)
網(wǎng)絡(luò)空間測繪技術(shù)應(yīng)用于網(wǎng)絡(luò)空間的多個領(lǐng)域,對網(wǎng)絡(luò)空間的高效管理、資源的合理分配及有效的安全監(jiān)測和防護(hù)都有著十分重要的意義。美國國家安全局(NSA,National Security Agency)和英國政府通訊總部(GCHQ,the Government Communications Headquarters)聯(lián)合開展的“藏寶圖”計劃,聚焦于邏輯層捕獲路由及自治系統(tǒng)的數(shù)據(jù),試圖繪制出一張“近乎實時的、交互式的全球互聯(lián)網(wǎng)地圖”。Spring 等[1]的Rocket Fuel 首次全面探測了大型互聯(lián)網(wǎng)服務(wù)提供商(ISP,Internet service provider)拓?fù)?,在掃描工具方面有業(yè)內(nèi)常用的功能強(qiáng)大的Nmap[2]。由著名安全專家John Matherly 于2009 年創(chuàng)建的Shodan,是全球第一個網(wǎng)絡(luò)空間安全搜索引擎。Shodan 每月在大約5 億個服務(wù)器上不停地搜集信息,主要針對服務(wù)器、網(wǎng)絡(luò)攝像頭、交換機(jī)、路由器等網(wǎng)絡(luò)基礎(chǔ)設(shè)備進(jìn)行掃描。
網(wǎng)絡(luò)空間測繪不僅在傳統(tǒng)互聯(lián)網(wǎng)上應(yīng)用前景廣闊,在內(nèi)部網(wǎng)絡(luò)中應(yīng)用價值也很高。本文的內(nèi)部網(wǎng)絡(luò)主要是指某行業(yè)依托政務(wù)外網(wǎng)建設(shè)的系統(tǒng)網(wǎng)和與互聯(lián)網(wǎng)邏輯隔離的大型企業(yè)網(wǎng)。內(nèi)部網(wǎng)絡(luò)的組件數(shù)量可以達(dá)到40 萬臺,會產(chǎn)生大量基于網(wǎng)絡(luò)事件的數(shù)據(jù),包括來自防火墻和入侵檢測系統(tǒng)的警報、各種軟件系統(tǒng)的日志文件、來自互聯(lián)網(wǎng)的路由信息等,這些數(shù)據(jù)可被收集用于網(wǎng)絡(luò)安全分析。由于網(wǎng)絡(luò)具有分布式的特性,攻擊網(wǎng)絡(luò)及其資源的證據(jù)常常嵌入在分散的事件之中。此外,對網(wǎng)絡(luò)的攻擊可能涉及多個步驟。因此,攻擊的證據(jù)也通常隨時間推移而分散。隨著大量分布式的事件不斷產(chǎn)生,一個關(guān)鍵的挑戰(zhàn)是如何跨空間和時間去關(guān)聯(lián)這些分布的事件以檢測和跟蹤各種攻擊場景。
傳統(tǒng)的入侵檢測系統(tǒng)僅使用單個事件作為檢測攻擊的特征,產(chǎn)生了較高的誤報率。從大量的網(wǎng)絡(luò)事件中挖掘更多的證據(jù)以獲得更高的檢測精度是十分必要的。為此,本文提出利用貝葉斯網(wǎng)絡(luò)模型進(jìn)行跨空間的事件關(guān)聯(lián)和利用卡爾曼濾波器線性模型進(jìn)行跨時間的事件關(guān)聯(lián)的方法?;谠摲椒▽崿F(xiàn)了一個進(jìn)程查詢系統(tǒng),該系統(tǒng)可以根據(jù)用戶的高層過程描述來掃描和關(guān)聯(lián)分布的網(wǎng)絡(luò)事件。本文的主要貢獻(xiàn)如下。
1)使用結(jié)合了空間和時間的聯(lián)合事件場景特征來描述和區(qū)分各種攻擊,而不是使用單個事件作為特征。隨著更多的證據(jù)從分布式事件中挖掘出來,該方法能夠提高檢測準(zhǔn)確度,尤其是在一個有噪聲的網(wǎng)絡(luò)環(huán)境中。
2)提出了為各種攻擊場景構(gòu)建場景特征的方法。該方法采用2 種技術(shù):一種是基于因果關(guān)系分析,使用專家知識來構(gòu)建場景特征的技術(shù);另一種是使用數(shù)據(jù)挖掘從大量訓(xùn)練數(shù)據(jù)中提取特征的技術(shù)。
3)基于上述方法實現(xiàn)了一個進(jìn)程查詢系統(tǒng)。實驗分析表明,該系統(tǒng)在不明顯增加計算開銷的情況下,能夠顯著減少內(nèi)網(wǎng)攻擊檢測的誤報率。
計算機(jī)網(wǎng)絡(luò)由許多組件組成,如路由器、交換機(jī)、Web 服務(wù)器、郵件服務(wù)器、數(shù)據(jù)庫服務(wù)器、DNS(domain name server)服務(wù)器、IDS(intrusion detection system)和防火墻等。此外,計算機(jī)網(wǎng)絡(luò)是動態(tài)的系統(tǒng),每隔一段時間,這些組件就會產(chǎn)生大量基于事件的數(shù)據(jù)。一般而言,所有這些事件都可以由網(wǎng)絡(luò)數(shù)據(jù)分析中心收集,而攻擊的痕跡通常分散在這些事件中。如果沒有高效的關(guān)聯(lián)算法,在這個龐大且充滿噪聲的事件空間中識別攻擊的蹤跡基本上是很難的。與其他模式識別問題一樣,需要一個攻擊場景特征(或模式)來將這個攻擊與其他攻擊和正常網(wǎng)絡(luò)活動區(qū)分開。檢測的準(zhǔn)確性取決于提取場景特征的準(zhǔn)確性以及收集到事件的準(zhǔn)確性。因此,一個關(guān)鍵的挑戰(zhàn)是如何描述各種各樣的攻擊場景。
圖1 說明了一個攻擊的證據(jù)是如何在空間和時間上分布的?;谝蚬P(guān)系,一個攻擊可以同時影響多個觀測空間的事件。例如CodeRed 和Nimda等蠕蟲會生成和掃描隨機(jī)IP 地址,以搜索IP 空間中易受攻擊的目標(biāo)。由于許多IP 地址未分配給網(wǎng)絡(luò)或未被網(wǎng)絡(luò)使用,這種主動探測過程可能在網(wǎng)絡(luò)路由中生成大量ICMP(Internet control message protocol)不可達(dá)的分組[3],密集的蠕蟲傳播過程也會影響互聯(lián)網(wǎng)的延遲情況。此外,蠕蟲攻擊可能導(dǎo)致不穩(wěn)定的Internet 邊界網(wǎng)關(guān)協(xié)議路由(BGP,border gateway protocol)[4]。基于這些因果關(guān)系,至少有3 個獨立的觀測空間來感知蠕蟲攻擊:ICMP 不可達(dá)分組的數(shù)量、網(wǎng)絡(luò)延遲、BGP 路由穩(wěn)定性。因此,本文使用這3 個指標(biāo)作為組合特征,而不是使用單個事件進(jìn)行蠕蟲攻擊檢測,從而在空間上關(guān)聯(lián)事件并檢測蠕蟲攻擊。
圖1 時間和空間上攻擊的證據(jù)分布
此外,攻擊也會影響跨時間的事件。例如,蠕蟲按傳染病模型在互聯(lián)網(wǎng)上傳播時,其生命周期中經(jīng)歷多個階段:突破、傳播、消除。在此動態(tài)過程中,ICMP 不可達(dá)分組的數(shù)量遵循時間模式,而該時間模式可用作蠕蟲檢測的時間特征。實際上,上面討論的每個觀測空間都可以通過其特定的時間模式獨立地感知蠕蟲攻擊。因此,本文將使用一個過程模型來描述時間特征[5],通過將每個觀測空間中的時間事件與過程模型相關(guān)聯(lián)來檢測攻擊。下面,分別介紹基于空間序列和基于時間序列的分布網(wǎng)絡(luò)事件關(guān)聯(lián)方法。
關(guān)聯(lián)的速度和準(zhǔn)確度是事件關(guān)聯(lián)系統(tǒng)中2 個重要的性能。事件關(guān)聯(lián)的一種經(jīng)典方法是基于規(guī)則的分析,即關(guān)聯(lián)系統(tǒng)不斷使用一組預(yù)定義規(guī)則集來評估到來的觀察結(jié)果,直到得出結(jié)論。因此,關(guān)聯(lián)能力僅取決于規(guī)則集的深度和規(guī)模。設(shè)計正確的規(guī)則集需要大量的專業(yè)知識。遵循規(guī)則集的嚴(yán)格路徑,觀察結(jié)果需要對照眾多條件邏輯檢查,導(dǎo)致基于規(guī)則的系統(tǒng)通常不能很好地擴(kuò)展。同時,基于規(guī)則的系統(tǒng)本質(zhì)上是無狀態(tài)的,并且不能很好地處理動態(tài)數(shù)據(jù)的關(guān)聯(lián)。下面將討論如何提高事件關(guān)聯(lián)的速度和準(zhǔn)確度。
基于空間序列的關(guān)聯(lián)將同時來自多個觀測空間或傳感器的事件關(guān)聯(lián)起來,以檢測攻擊場景。將一個攻擊場景表示為s,假設(shè)有一組包含m個攻擊場景的集合S={s1,s2,…,sm}和一組包含n個觀測空間的集合O={o1,o2,…,on}。每個觀測空間都可以作為攻擊場景中一個獨立的指標(biāo)?;诳臻g序列的事件關(guān)聯(lián)是關(guān)于如何關(guān)聯(lián)n個指標(biāo)來檢測和區(qū)分m個攻擊場景。
圖2 表示具有3 個攻擊場景和4 個觀測空間的因果關(guān)系圖,其中有向邊表示因果關(guān)系。例如,如果發(fā)生攻擊s1,則會導(dǎo)致o1和o3中的異常觀察結(jié)果,然而這種攻擊不會影響o2和o4中的觀測結(jié)果?;谶@些因果關(guān)系,構(gòu)建如表1 所示的codebook相關(guān)矩陣,其中1 和0 分別表示用特定閾值分類的“異?!焙汀罢!庇^察。因此,本文可以將來自多個觀測空間的事件與相關(guān)矩陣進(jìn)行比較,以檢測和區(qū)分這些攻擊。每個攻擊場景必須在此相關(guān)矩陣中具有可區(qū)分的場景特征,需要專家知識來構(gòu)建場景特征和相關(guān)矩陣。相關(guān)矩陣的大小可以減小,但是為了達(dá)到區(qū)分的目的,場景特征相距必須是最小漢明距離[6]。
圖2 事件的因果關(guān)系
表1 事件的相關(guān)矩陣
將相關(guān)矩陣定義為OS={osij}是該矩陣的元素,其中1≤i≤n且1≤j≤m。在codebook 方法中,osij=1 或0,即觀察結(jié)果分為“異?!被颉罢!?。這種二進(jìn)制表示沒有提供太多關(guān)于“異?!庇^察結(jié)果強(qiáng)度的信息。相反,osij可能是一個實值,例如ICMP不可達(dá)分組的數(shù)量或特定系統(tǒng)調(diào)用osij的數(shù)量。在這種情況下,認(rèn)為關(guān)聯(lián)問題可以表示為如式(1)所示的整數(shù)規(guī)劃問題。
其中,H=(h1,h2,…,hm)T是假設(shè)向量,VO=(v1,v2,…,vm)T是來自m個觀察空間的觀測向量。上面的整數(shù)規(guī)劃問題是關(guān)于如何組合攻擊場景,以便解釋真實的觀察。例如,H=(0,1,1,0,…,0)T表示攻擊場景s2和s3同時發(fā)生,碼本方法無法檢測這種攻擊場景的組合問題。如果本文將一個觀測空間視為一條信號通道,則觀察到的事件通常包括來自攻擊的信號和來自網(wǎng)絡(luò)環(huán)境的噪聲信號。本文的整數(shù)規(guī)劃方法可以同時檢測多個攻擊場景實例,并且可以在觀察的信噪比強(qiáng)的環(huán)境中工作。盡管如此,仍需要專家知識來獲取osij值,并且這些值必須在各種攻擊場景進(jìn)行標(biāo)準(zhǔn)化。
如上所述,確定性方法在有噪聲的環(huán)境中不能很好地工作,網(wǎng)絡(luò)噪聲源自正常的網(wǎng)絡(luò)活動。例如,主要路由器故障可能會生成許多ICMP 不可達(dá)的分組,忘記密碼可能導(dǎo)致多次登錄失敗的警報。問題是如何根據(jù)有所偏倚的觀察結(jié)果來檢測攻擊情景。將在觀測空間op中的觀測值表示為vi(1≤i≤n),op屬于觀測空間集合O。根據(jù)專家知識和統(tǒng)計數(shù)據(jù),假設(shè)先驗概率已知,如式(2)所示。
其中,1≤j≤m,1≤i≤n。也就是說,由攻擊引起的觀察值的分布是已知的。根據(jù)貝葉斯定理,可以計算出后驗概率,如式(3)所示。
現(xiàn)在的問題是如何關(guān)聯(lián)來自多個觀測空間的觀測結(jié)果。本文使用op和oq分別表示2 個觀測空間,它們均屬于觀測空間集合O,并且有來自op和oq的觀察,可以得到聯(lián)合后驗概率,如式(4)所示。
如果觀測空間op和oq是相互獨立的,也就是說,一個觀測空間中的事件不會導(dǎo)致另一個觀測空間中的事件,反之亦然,則式(4)可以寫成式(5)所示形式。
實際上,如果只想識別導(dǎo)致當(dāng)前觀測的最可能的攻擊,可以使用式(6)來比較不同攻擊場景的可能性。
然而,在大多數(shù)情況下,p(sj)和p(sl)這樣的概率是未知的,并且必須假設(shè)它們具有相同的分布。在該假設(shè)下,將選定的閾值與式(6)中的先驗概率的比值相評估,以確定攻擊場景?;诖碎撝担琋eyman-Pearson 檢測理論[5]可用于得出相關(guān)的誤報率和誤檢率。如果增加觀察空間的數(shù)量,本文方法可以使攻擊場景更加容易區(qū)別。
事件的多層因果關(guān)系可以用貝葉斯網(wǎng)絡(luò)表示[7]。貝葉斯網(wǎng)絡(luò)是有向無環(huán)圖,其中,節(jié)點是隨機(jī)變量,邊表示源點對終點施加的直接因果影響。在貝葉斯網(wǎng)絡(luò)中,聯(lián)合概率作為因素計入一組條件概率集中,該條件概率可以沿網(wǎng)絡(luò)中的因果關(guān)系路徑順序地計算。例如Benferhat 等[8]已經(jīng)使用貝葉斯網(wǎng)絡(luò)模型來檢測分布式拒絕服務(wù)(DDoS,distributed denial of service)攻擊??臻g關(guān)聯(lián)的另一種方法是使用Dempster-Shafer 理論,該理論可以結(jié)合來自多個觀測空間的可信度。
基于概率的關(guān)聯(lián)方法可以在有噪聲的環(huán)境中很好地工作。然而,獲得先驗概率和條件概率存在困難,這使該方法實際上不如確定性關(guān)聯(lián)方法可行。
在時間上,許多攻擊涉及多個步驟,攻擊的證據(jù)往往分散在事件中。計算機(jī)網(wǎng)絡(luò)本身是動態(tài)系統(tǒng),網(wǎng)絡(luò)事件是其動態(tài)活動的可觀測量。攻擊或正常網(wǎng)絡(luò)行為的時間特征可以被描述為確定的或隨機(jī)的動態(tài)過程。過程模型描述了對象的狀態(tài)轉(zhuǎn)換,該狀態(tài)轉(zhuǎn)換根據(jù)特定的已知定律隨時間演變。例如,可以用狀態(tài)轉(zhuǎn)移方程、馬爾可夫模型、有限狀態(tài)機(jī)等來描述過程模型?!盃顟B(tài)”是基于時間關(guān)聯(lián)中一個重要概念。
基于時間序列的關(guān)聯(lián)致力于及時關(guān)聯(lián)觀察到的事件以檢測攻擊,并且可以將其形式化為一個目標(biāo)跟蹤問題。來自雷達(dá)和聲納信號處理的目標(biāo)跟蹤算法可以應(yīng)用于基于時間序列的事件關(guān)聯(lián)。如果已知攻擊的動態(tài)過程,則基于時間序列的關(guān)聯(lián)可以通過跟蹤事件是否遵循該攻擊過程來檢測此攻擊。如果已知正常網(wǎng)絡(luò)行為的過程,則基于時間序列的關(guān)聯(lián)可以通過跟蹤事件是否遵循正常網(wǎng)絡(luò)行為的過程來檢測未知攻擊,也被稱為“攻擊檢測”。
以前的許多工作都使用有限狀態(tài)機(jī)來描述攻擊或軟件行為的確定性過程,根據(jù)狀態(tài)轉(zhuǎn)換序列評估事件以檢測攻擊。文獻(xiàn)[9]使用狀態(tài)轉(zhuǎn)換圖來精確識別侵入階段,并僅顯示成功侵入所必須發(fā)生的關(guān)鍵事件。文獻(xiàn)[10]使用有色Petri-Nets 來描述攻擊的時間特征。這些方法都模擬了攻擊的時間特征或侵入過程。
目前,許多異常檢測工作已經(jīng)模擬了正常軟件行為或網(wǎng)絡(luò)行為的過程以檢測未知攻擊。文獻(xiàn)[11]使用運(yùn)行程序執(zhí)行的短序列系統(tǒng)調(diào)用作為時間特征來檢測異常軟件行為。文獻(xiàn)[12]使用審計日志來捕獲程序的行為,并將該規(guī)范用作檢查行為的oracle。眾所周知,程序執(zhí)行的80%通常只發(fā)生在其代碼的20%中,程序中的熱路徑通常代表該程序的主要行為。
已知攻擊的動態(tài)過程的檢測方法需要攻擊的專家知識來構(gòu)建時間特征。已知正常網(wǎng)絡(luò)行為的過程的檢測方法可以基于訓(xùn)練過程自動構(gòu)建軟件行為的時間特征,但是這種方法無法檢測攻擊的具體類型。
在確定性相關(guān)中,動態(tài)過程的狀態(tài)是在沒有噪聲的環(huán)境下被觀察和跟蹤的。在有噪聲的環(huán)境中,觀測結(jié)果通常會被網(wǎng)絡(luò)噪聲污染。將動態(tài)過程的狀態(tài)表示為x,觀察結(jié)果表示為r。將從開始到時間t的狀態(tài)x表示為x1:t=x1,x2,…,xt,相關(guān)的觀察結(jié)果r表示為r1:t=r1,r2,…,rt。由于動態(tài)過程中的幾個狀態(tài)可能導(dǎo)致相同的觀察結(jié)果并且存在噪聲,狀態(tài)本身也是不可觀察的,因此只能基于觀察結(jié)果來估計狀態(tài)。在時間t,基于時間序列的關(guān)聯(lián)的一個任務(wù)是將直到t的觀察結(jié)果相關(guān)聯(lián)來估計當(dāng)前狀態(tài)xt,即p(xt|r1:t)。用貝葉斯濾波器[13]遞歸地計算這個后驗概率,有
如果關(guān)于該過程的以下假設(shè)成立:1)過程模型的狀態(tài)轉(zhuǎn)換具有馬爾可夫性質(zhì),即當(dāng)前狀態(tài)xt僅依賴于先前狀態(tài)xt-1而不依賴于任何更早的狀態(tài);2)觀察結(jié)果rt僅取決于當(dāng)前狀態(tài)xt,但不依賴于任何早期狀態(tài)和觀察。
線性卡爾曼濾波器[14]模型和隱馬爾可夫模型(HMM,hidden Markov model)[15]是滿足這2 個假設(shè)的強(qiáng)大模型。對于這些特定模型,諸如卡爾曼濾波器和維特比算法等有效的關(guān)聯(lián)算法可以從式(7)導(dǎo)出。卡爾曼濾波器中使用的線性模型的描述如式(8)和式(9)所示。
其中,w和z是高斯噪聲,D和L是常數(shù)矩陣??柭鼮V波器使用觀察到的r1:t來估計潛在的未知xt。在離散情況下,隱馬爾可夫模型使用一個狀態(tài)轉(zhuǎn)移矩陣和一個發(fā)射矩陣分別代替式(8)和式(9)。
將攻擊場景表示為s,并假設(shè)有一組m個攻擊過程模型的集合S={s1,s2,…,sm}。這里的檢測問題是確定哪個攻擊正在產(chǎn)生這些觀察結(jié)果r1:t=r1,r2,…,rt。基于式(6)的分析,比較各種攻擊情形的可能性p(r1:t|sj),并用式(10)所示的不等式識別攻擊。
其中,A和B是2 個閾值。如果rt大于A,得出攻擊是sj的結(jié)論;如果rt小于B,得出攻擊是sk的結(jié)論;如果rt小于A但大于B,將繼續(xù)接收新的觀察結(jié)果,直到rt超過閾值A(chǔ)或B。雖然概率p(r1:t|sj)可以遞歸計算并從式(7)導(dǎo)出,但在大多數(shù)情況下并不知道概率分布的分布公式(例如,如何計算p(r1:t|sj),在文獻(xiàn)[12]中被稱為HMM 的“問題1”)。因此,不能使用Neyman-Pearson檢測理論來得出相關(guān)的誤報率和誤檢率。將誤報率表示為α=ps=sk(rt>A),即攻擊是sk但是rt>A。類似地,將誤報率表示為β=ps=sj(rt<B)。根據(jù)順序分析的結(jié)果[16],得到不等式1?β≥Aα和β≤ (1?α)B。
卡爾曼濾波器線性模型和HMM 都已應(yīng)用于模擬動態(tài)攻擊過程或正常軟件行為。基于傳染病模型和對快速傳播的蠕蟲觀察數(shù)據(jù),文獻(xiàn)[17]使用線性模型來描述蠕蟲傳播的動態(tài)過程,并使用卡爾曼濾波器實時預(yù)測蠕蟲傳播。文獻(xiàn)[18]使用訓(xùn)練數(shù)據(jù)學(xué)習(xí)HMM,表示正常的軟件行為。然而,在通常情況下,獲得這些模型的準(zhǔn)確參數(shù)是比較困難的,因此,本文的方法是基于無參數(shù)的時間序列模型。
由于內(nèi)網(wǎng)攻擊的證據(jù)通常分散在跨空間和時間分布的事件上,單純依賴基于空間序列或者時間序列的事件關(guān)聯(lián)都存在不足,因此將空間和時間事件關(guān)聯(lián)集成在一起進(jìn)行入侵檢測非常重要。假設(shè)一個攻擊過程可以在3 個觀測空間觀察。每個觀察空間都可以沿著時間序列將其事件與過程模型相關(guān)聯(lián)。在每個時間t,來自這3 個觀測空間的事件應(yīng)該在空間上相關(guān),則有以下2 種方法可以對時空序列的事件進(jìn)行關(guān)聯(lián)。
如圖3 所示,多個觀察空間可以獨立地沿時序關(guān)系關(guān)聯(lián)事件。每個時序關(guān)聯(lián)的結(jié)果可以指示該特定觀察空間的“正常”或“異?!毙袨?。利用來自多個觀測空間的結(jié)果,如第3 節(jié)所述,可以使用一種碼本或整數(shù)規(guī)劃方法在空間上將這些時間關(guān)聯(lián)結(jié)果相關(guān)聯(lián)。
圖3 事件的時空相關(guān)性
動態(tài)過程中的幾個狀態(tài)可能導(dǎo)致相同的觀察結(jié)果。因此,隱藏狀態(tài)是無法觀察的。例如,HMM具有發(fā)射矩陣。在基于時間序列的關(guān)聯(lián)中,觀察序列可能源自隱藏狀態(tài)序列的多個假設(shè)。通過多個觀測空間,在每個時間t,理論上本文可以使用碼本方法來區(qū)分隱藏狀態(tài)而不是攻擊場景。只要在表1所示的相關(guān)矩陣中添加足夠的具有可區(qū)分特征的觀測空間,就可以使每個狀態(tài)都可觀察到。在這種情況下,一個時間關(guān)聯(lián)過程可以直接將觀察序列映射到狀態(tài)序列。但是,在大多數(shù)情況下,不需要對每個觀察結(jié)果區(qū)分出每個狀態(tài),因為可以根據(jù)過程模型的狀態(tài)轉(zhuǎn)移性質(zhì)來得出隱藏狀態(tài)的序列。
將動態(tài)攻擊過程的狀態(tài)表示為x,并將到時間t的狀態(tài)x表示為x1,x2,…,xt。假設(shè)有2 個觀測空間op和oq來檢測這個攻擊過程,將op直至?xí)r間t的觀測結(jié)果表示為rp1:t=(rp1,rp2,…,rpt),并且將oq直至?xí)r間t的觀測結(jié)果表示為rq1:t=(rq1,rq2,…,rqt)。如果具有后驗概率p(st|rp1:t,rp1:t),則在每個時間t,空間上分布和時間上分布的事件可以相互關(guān)聯(lián)在一起。根據(jù)式(4)和式(7),通常很難計算聯(lián)合概率。但如果2 個觀測空間是獨立的,則通過以下3 個步驟計算p(st|rp1:t,rp1:t)。
步驟1在每個時間t,對于每個觀測空間,根據(jù)式(7),關(guān)聯(lián)時間事件并分別計算p(st|rp1:t)和p(st|rq1:t)。
步驟2根據(jù)式(5),本文關(guān)聯(lián)空間事件,并用步驟1得出的p(st|rp1:t)和p(st|rq1:t)計算p(st|rp1:t,rq1:t),其中p(st)可以遞歸計算。
步驟 3p(st|rp1:t,rq1:t)代替p(st|rq1:t)和p(st|rq1:t)。令t=t +1并轉(zhuǎn)到步驟1。
理論上,即使觀測空間op和oq是依賴的,也可以在式(9)所示的測量方程中增加另一個維度,并通過一個時間關(guān)聯(lián)過程來關(guān)聯(lián)事件,即
其中,H如式(1)所示。在離散的情況下,正如5.1節(jié)所述,多個觀測空間可以幫助區(qū)分隱藏狀態(tài)并導(dǎo)出HMM 中的稀疏發(fā)射矩陣。對于檢測問題,可以使用式(10)中討論的方法。
隨著從分布式事件中挖掘出更多的證據(jù),本文利用時間和空間模式的聯(lián)合特征提升檢測準(zhǔn)確性并降低誤報率。這種方法需要足夠的知識來建立聯(lián)合特征,為此本文實現(xiàn)了一個進(jìn)程查詢系統(tǒng)來掃描和關(guān)聯(lián)分布的事件。進(jìn)程查詢系統(tǒng)允許用戶在高抽象級別上精細(xì)過程特征,并將特征作為查詢提交給關(guān)聯(lián)系統(tǒng)。系統(tǒng)根據(jù)特征實時掃描和關(guān)聯(lián)分布式事件,當(dāng)前的進(jìn)程查詢系統(tǒng)僅支持基于時間序列的關(guān)聯(lián)。如圖4 所示,進(jìn)程查詢系統(tǒng)由以下3 個主要組件組成:用戶界面、關(guān)聯(lián)引擎和面向消息的中間件(MOM,message oriented middleware)。主題包括事件發(fā)布主題和事件訂閱主題,其中事件以主題發(fā)布到MOM 中,例如網(wǎng)絡(luò)延遲。通過前端用戶界面,用戶可以定義具有高級抽象的過程特征,例如隱馬爾可夫模型。
圖4 進(jìn)程查詢系統(tǒng)架構(gòu)
事件訂閱以主題方式將MOM 消息提交給后端關(guān)聯(lián)引擎。關(guān)聯(lián)引擎解析查詢并使用用戶在MOM中訂閱的事件。用戶定義的過程模型調(diào)用多假設(shè)跟蹤算法以掃描和關(guān)聯(lián)傳入事件。在事件關(guān)聯(lián)期間,該算法遞歸地計算新的事件與現(xiàn)有事件假設(shè)相關(guān)的概率。新的事件被添加到具有最大似然的假設(shè)中,并且更新假設(shè)集。提交的過程模型用于計算新的事件與現(xiàn)有事件假設(shè)相關(guān)的條件概率。
在由異構(gòu)的服務(wù)器和工作站組成的測試床上對該系統(tǒng)進(jìn)行實驗。測試床是一個隔離區(qū)(DMZ,demilitarized zone),由4 個服務(wù)器(host1~host4)組成,每個服務(wù)器運(yùn)行RedHat Linux 系統(tǒng)和Apache HTTP server。在另一個網(wǎng)絡(luò)上的第五臺服務(wù)器充當(dāng)外部攻擊主機(jī),它發(fā)起一個拒絕服務(wù)(DoS,denial of service)攻擊。每個服務(wù)器都配備了一個連續(xù)運(yùn)行的用戶空間傳感器。該傳感器除了收集系統(tǒng)狀態(tài)外,它還監(jiān)視httpd、bash 和sh 進(jìn)程。傳感器的狀態(tài)提取模塊每4 s 輪詢一次所有被監(jiān)控的進(jìn)程和系統(tǒng)指標(biāo)。傳感器的評估模塊在5 個樣本的窗口上平滑這些連續(xù)的指標(biāo)數(shù)據(jù)。
系統(tǒng)運(yùn)行在一臺本地Sun Fire 210 服務(wù)器上,服務(wù)器上有雙核1 GHz UltraSPARC III 處理器和Solaris 9,并且通過TCP socket 監(jiān)聽主機(jī)的觀察結(jié)果。進(jìn)程查詢引擎還監(jiān)聽來自網(wǎng)絡(luò)入侵檢測傳感器(Snort)的觀察結(jié)果,Snort 監(jiān)視DMZ 上的網(wǎng)絡(luò)流量。因此,實驗中有2 個獨立的觀測空間。
系統(tǒng)向Web 用戶界面實時報告結(jié)果,該界面顯示觀察結(jié)果和相關(guān)的分?jǐn)?shù)的軌跡。分?jǐn)?shù)是一種定量度量,它介于0.0~1.0 之間,反映了一個提交的進(jìn)程模型被攻擊的概率。因此,分?jǐn)?shù)是對與事件關(guān)聯(lián)模型相關(guān)的每個主機(jī)狀態(tài)間接的和實時的度量。通過提交多個流程模型,可以有效地監(jiān)控多個場景中的每個主機(jī)。
監(jiān)控過程會記錄每個被監(jiān)控主機(jī)的分?jǐn)?shù)和相應(yīng)進(jìn)度條的變化,其根本目標(biāo)是評估在多階段攻擊中系統(tǒng)減少誤報的能力,方法是將來自雙方空間的觀察結(jié)果關(guān)聯(lián)起來,并計算反映每個主機(jī)相對狀態(tài)的跟蹤分?jǐn)?shù)。
實驗利用Apache Web 服務(wù)器版本2.0.40~2.0.52 中的一個漏洞,該漏洞允許攻擊者通過向服務(wù)器大量發(fā)送專門制作的HTTP GET 請求來引發(fā)DoS。這會導(dǎo)致大量CPU 和內(nèi)存的消耗,并可能使整個服務(wù)器癱瘓,最終導(dǎo)致DoS。因為Apache 服務(wù)器在受到攻擊時從不關(guān)閉連接,所以如果及時阻止父服務(wù)器進(jìn)程httpd,并使用備份的Web 服務(wù)器,那么可以通過短時間的中斷來阻止攻擊。模擬攻擊序列如下。
1)攻擊者使用nmap 從外部攻擊主機(jī)發(fā)起對4臺DMZ 服務(wù)器的非對稱隱身端口掃描,以識別潛在的易受攻擊的目標(biāo)。
2)攻擊者等待所有掃描結(jié)果,并注意到每個服務(wù)器都在監(jiān)聽端口8 000。
3)攻擊者等待30 s,并對一臺服務(wù)器(host3)發(fā)起Apache DoS 攻擊,監(jiān)聽端口8 000。
4)攻擊者等待30 s 并終止攻擊。
在這個實驗中,系統(tǒng)只加載時空事件關(guān)聯(lián)模型,場景特征的構(gòu)建方法在上述模擬攻擊序列下,并且未進(jìn)行任何干涉,模擬攻擊200 次,收集200臺受攻擊主機(jī)和600 臺未受攻擊而正常運(yùn)行的計算機(jī)隨時間演化的狀態(tài)序列集合,人工分析這個演化序列集合來構(gòu)建正常主機(jī)和受到攻擊主機(jī)的場景特征。
通過傳感器的數(shù)據(jù)收集和在線分析得到場景特征后,本實驗使用進(jìn)程查詢系統(tǒng)來進(jìn)行攻擊檢測實驗。圖5 中的時間序列顯示了在大約10 min 內(nèi),每個主機(jī)的最高分?jǐn)?shù)的變化。縱坐標(biāo)是受攻擊的可能性,由事件關(guān)聯(lián)模型為每個服務(wù)器確定。
圖5 顯示了模型在模擬人工DoS 攻擊前、攻擊中和攻擊后的分類和識別性能。本文將服務(wù)器狀態(tài)區(qū)分為平常狀態(tài)、可疑狀態(tài)和受攻擊狀態(tài)。其中,平常狀態(tài)下服務(wù)器正常運(yùn)行;可疑狀態(tài)下服務(wù)器仍在正常運(yùn)行但疑似已經(jīng)受到攻擊,即其受攻擊可能性開始增長,且增長速度較快;受攻擊狀態(tài)表示服務(wù)器受到攻擊并且無法正常運(yùn)行,受攻擊可能性超過了0.9。最初,每個服務(wù)器的狀態(tài)估計是平常狀態(tài)。掃描啟動后不久(實驗開始280 s),每個服務(wù)器都轉(zhuǎn)換到可疑狀態(tài)。當(dāng)396 s 向host3發(fā)起DoS 攻擊時,其分?jǐn)?shù)突然增加,迅速將其轉(zhuǎn)移到受攻擊狀態(tài)。其他3 個服務(wù)器繼續(xù)正常運(yùn)行,并保持在可疑狀態(tài)。在415 s,也就是DoS 攻擊開始19 s 后,host3被攻擊的可能性增加到0.95。在此階段,管理員或自主修復(fù)機(jī)制可以通過終止相關(guān)的httpd 進(jìn)程來降低host3被攻擊的程度。
圖5 進(jìn)程查詢系統(tǒng)評估4 臺服務(wù)器受攻擊的可能性
圖6 顯示了同一時間段內(nèi)報告給進(jìn)程查詢引擎的主機(jī)觀測結(jié)果的累計增長情況。從圖6 可以看出,在實際DoS 攻擊開始之前,這4 個服務(wù)器如何生成類似級別的主機(jī)觀察結(jié)果。最明顯的是,攻擊發(fā)起后不久,受攻擊服務(wù)器(host3)的累計的主機(jī)觀察值突然顯著增加。圖5 對這一趨勢的識別顯示了簡單的、短期的主機(jī)行為異常與可疑的網(wǎng)絡(luò)偵察活動之間存在明顯的相關(guān)性。在這次實驗中,傳感器提供了重要的指標(biāo),這些指標(biāo)驅(qū)動受攻擊服務(wù)器的狀態(tài)評估為受攻擊狀態(tài),從而能夠在攻擊仍在進(jìn)行時將其快速檢測出來。
關(guān)于場景特征的構(gòu)建問題,系統(tǒng)提供了基于專家知識和基于數(shù)據(jù)挖掘這2 種方法,并分別使用這2 種場景特征來進(jìn)行攻擊檢測實驗,模擬攻擊方法如上所述。
圖6 由每個被監(jiān)控主機(jī)的傳感器生成的主機(jī)觀察結(jié)果,并報告給進(jìn)程查詢引擎
對于基于數(shù)據(jù)挖掘的方法,系統(tǒng)不僅使用上述收集到的狀態(tài)序列集合,還使用了這600 臺主機(jī)和對應(yīng)網(wǎng)絡(luò)的資源隨時間變化的情況,其中收集方法為從開始到700 s 內(nèi),每10 s 收集一次。對于某次攻擊模擬在400 s 時收集的資源情況如表2 所示。通過使用數(shù)據(jù)挖掘系統(tǒng),得到具有時間和空間模式的聯(lián)合特征。
表2 某次攻擊模擬在400 s 時的資源分布情況
系統(tǒng)分別使用上述2 種特征,設(shè)置報警閾值為0.95(即受攻擊的可能性超過0.95),誤報率和漏報率如表3 所示。
表3 誤報率和漏報率
由表3 可知,使用這2 種特征構(gòu)建方法,進(jìn)程查詢系統(tǒng)在誤報率上相差不是很大。而對于漏報率,基于數(shù)據(jù)挖掘的方法比基于專家知識的方法低很多。因此,可以證明隨著從分布式事件中挖掘出更多的證據(jù),使用具有時間和空間模式的聯(lián)合特征可以降低誤報率和漏報率。
本文提出了基于時空事件關(guān)聯(lián)的內(nèi)網(wǎng)攻擊檢測方法,并基于該方法實現(xiàn)了一個可以根據(jù)用戶對動態(tài)進(jìn)程的高層描述對大量分布的事件進(jìn)行關(guān)聯(lián)查詢的進(jìn)程查詢系統(tǒng)。實驗表明,該系統(tǒng)在不增加明顯計算開銷的情況下,能夠顯著減少內(nèi)網(wǎng)攻擊檢測的誤報率。未來會在更大的網(wǎng)絡(luò)范圍來評估該系統(tǒng)運(yùn)行時的穩(wěn)定性和檢測性能。