肖琳琳 王曉輝 李杰
中南大學(xué)信息科學(xué)與工程學(xué)院 湖南 410083
如何檢測(cè)復(fù)合攻擊是當(dāng)前入侵檢測(cè)的熱點(diǎn)問(wèn)題。大量研究圍繞此問(wèn)題展開(kāi),并已經(jīng)取得可觀的成果。由于復(fù)合入侵的靈活性及復(fù)雜性,一般入侵檢測(cè)系統(tǒng)會(huì)產(chǎn)生大量的孤立報(bào)警,但很難確定報(bào)警之間因果關(guān)系,無(wú)法重構(gòu)入侵場(chǎng)景,所以實(shí)用性很低。大多數(shù)關(guān)聯(lián)技術(shù)為離線應(yīng)用而開(kāi)發(fā)的,這些方法的計(jì)算復(fù)雜度和內(nèi)存需求都與已接收到的報(bào)警數(shù)目成線性關(guān)系。在警報(bào)數(shù)目已知道的離線應(yīng)用中,這不成問(wèn)題。但在實(shí)時(shí)的警報(bào)關(guān)聯(lián)中,就會(huì)遇到很大的問(wèn)題。比如,入侵者可以消極等待或者通過(guò)故意制造大量無(wú)關(guān)的試探,避免有因果關(guān)系的報(bào)警被關(guān)聯(lián)。
一般而言,報(bào)警關(guān)聯(lián)引擎接收到新的警報(bào)時(shí)就會(huì)向后搜索以前接收的警報(bào),看是否存在新報(bào)警的前因報(bào)警(存在多個(gè)情況下,選擇最近的報(bào)警)。由于這一過(guò)程對(duì)任意新報(bào)警都要重復(fù),可以斷言隨著報(bào)警數(shù)目的不斷增加,搜索時(shí)間和內(nèi)存需求將無(wú)法負(fù)荷。解決這一問(wèn)題的,直觀方法就是設(shè)置滑動(dòng)窗口,只對(duì)離當(dāng)前警報(bào)最近的一定數(shù)目的報(bào)警進(jìn)行關(guān)聯(lián)。但這種改進(jìn),也有明顯的不足之處。顯然,意識(shí)到窗口存在的攻擊者可以放慢攻擊步驟,使得原本的相關(guān)報(bào)警間產(chǎn)生足夠多的其他報(bào)警,從而避開(kāi)關(guān)聯(lián),甚至也可以主動(dòng)發(fā)動(dòng)干擾攻擊以產(chǎn)生大量的干擾警報(bào)。
圖1 一般的關(guān)聯(lián)方法以及帶時(shí)間窗口的關(guān)聯(lián)方法
許多研究工作圍繞如何自動(dòng)生成攻擊圖展開(kāi),取得了豐富的成果,現(xiàn)已經(jīng)有不少工具能夠自動(dòng)產(chǎn)生攻擊圖。本文基于獲得目標(biāo)網(wǎng)絡(luò)攻擊圖的前提,提出種入侵檢測(cè)關(guān)聯(lián)模型(exploit queue graph,EQG)以及相關(guān)警報(bào)關(guān)聯(lián)算法,能有限免疫慢攻擊和注入垃圾攻擊。
攻擊圖描述了關(guān)于網(wǎng)絡(luò)連接和漏洞間關(guān)系的知識(shí)。目前,攻擊圖的表示方法不一,每種方法各有特點(diǎn)。一般來(lái)說(shuō),攻擊圖可以表示為有兩種頂點(diǎn)類(lèi)型的有向圖,類(lèi)型一表示exploit,圖示為矩形;類(lèi)型二表示security condition,圖示為矩形。本文中,exploit可以表示為(hs,hm,hd,v),意思是從主機(jī)hs經(jīng)過(guò)中間主機(jī)hm利用目標(biāo)主機(jī)hd上的v漏洞,如果沒(méi)有中間主機(jī),則表示為(hs,hd,v)。本機(jī)上的漏洞利用表示為(h,v)。而security condition表示為(h,d,c),意思是源主機(jī)與目標(biāo)主機(jī)之間存在條件c,如果只涉及一臺(tái)主機(jī),則表示為(h,c),例如c可以表示兩臺(tái)主機(jī)之間要存在無(wú)防火墻的鏈接或者一臺(tái)主機(jī)上需要開(kāi)啟ftp服務(wù)。Exploit與condition之間存在兩種有向邊。一種是從exploit指向condition,表示蘊(yùn)含關(guān)系。第二種是從condition指向exploit,表示需求關(guān)系。其中,蘊(yùn)含關(guān)系是析取的,需求關(guān)系是合取的。
定義1 給定exploit的集合E, condition的集合C,需求關(guān)系Rr ?C×E,蘊(yùn)含關(guān)系Ri?E×C,則稱有向圖G(E∪C,Rr∪Ri)為一攻擊圖(E∪C i為頂點(diǎn)集合,Rr∪Ri為邊集)。
本文方法以安全漏洞為中心,首先將接受到的報(bào)警映射為exploit,然后在利用攻擊圖表示的知識(shí)進(jìn)行關(guān)聯(lián)。為了將報(bào)警映射為exploit,我們需要利用域知識(shí)將報(bào)警的事件類(lèi)型屬性映射為exploit的漏洞屬性,例如Snort識(shí)別符與Nessus識(shí)別符之間的對(duì)應(yīng)關(guān)系。為簡(jiǎn)單起見(jiàn),我們用A2P( )表示從報(bào)警集到exploit集的映射。
基于目標(biāo)網(wǎng)絡(luò)的知識(shí),以漏洞為中心的關(guān)聯(lián)途徑可以有效減輕干擾性警報(bào)的負(fù)面影響。例如,某攻擊者對(duì)Windows主機(jī)發(fā)動(dòng)本應(yīng)該是針對(duì) Unix系統(tǒng)的攻擊,這種情況就會(huì)被忽略,而不會(huì)進(jìn)行沒(méi)有必要的關(guān)聯(lián)。
定義2 G(E∪C, Rr∪Ri)為一攻擊圖,其中E ={ei| 1 ≤i≤n},
C = {ci| 1 ≤ i ≤ m},Rr?C×E,and Ri? E ×C.
For k=1, 2… n
——BFSR(k)表示從ek出發(fā)對(duì)G順各有向邊進(jìn)行廣度優(yōu)先進(jìn)行遍歷而得到的邊及集合。
——BFS(k)表示從ek出發(fā)對(duì)G逆各有向邊進(jìn)行廣度優(yōu)先進(jìn)行遍歷而得到的邊集合。
攻擊圖G對(duì)應(yīng)的EQG包含以下部件
ES= = {Qi| 1 ≤ i ≤ n}, n個(gè)長(zhǎng)度為一的exploit隊(duì)列的集合
CS == {vi|1 ≤ i ≤ m} , m個(gè)表示條件的變量的集合第k層向后指針集合
BLk= {<Qj,vi>| (ci, ej)∈ BFS(k)}∪{<vi,Qj> | (ej, ci) ∈BFS(k)}
第k層向前指針集合
FLk={<vi,Qj>| (ci,ej)∈BFSR(k)}∪{<Qj,vi> | (ej,ci)∈
圖2 一個(gè)簡(jiǎn)單攻擊圖對(duì)應(yīng)的EQG示例
直觀來(lái)說(shuō),報(bào)警序列依次流過(guò)EQG,我們通過(guò)搜索EQG來(lái)收集關(guān)聯(lián)結(jié)果。具體過(guò)程:當(dāng)新接收到一個(gè)警報(bào),通過(guò)A2E()映射為對(duì)應(yīng)的exploit,然后讓新警報(bào)進(jìn)入此exploit隊(duì)列,由于隊(duì)列長(zhǎng)度為一,若原本就有警報(bào)在隊(duì)列中,則必須將其出隊(duì)。接著在對(duì)應(yīng)的層中搜索,進(jìn)行關(guān)聯(lián),得到一個(gè)結(jié)果圖。結(jié)果圖Gr有一個(gè)頂點(diǎn)集 V,兩個(gè)邊集 Er和 El。Er的邊表示警報(bào)間的關(guān)聯(lián),而 El中的邊表示和同一 exploit匹配的警報(bào)間的時(shí)間順序關(guān)系。
關(guān)聯(lián)算法Procedure EQG Alert Correlation
Input: A queue graph Qgwith n queues and m variables, the initial result graph Gr(V,Er∪El), and an alert anewsatisfying A2E(anew) = ei(1 ≤ i ≤ n)
Output: The updated result graph Gr(V,Er∪El)
Method:
(1)Insert anewinto V
(2)If Qicontains an alert aold
Insert edge (aold,anew) into El
Dequeue aoldfrom Qi
(3)Enqueue anewinto Qi
(4)For each Qj(1 ≤ j ≤ n) satisfying <Qi, vk> ∈BLi∧<vk,Qj> ∈BLi(1 ≤ k ≤ m)
If Qjcontains an alert aj
Insert (aj,anew) into Er
(5)Return Gr(V,Er∪El)
以下指出EQG模型以及關(guān)聯(lián)算法的優(yōu)越性。
(1)處理每個(gè)新警報(bào)的時(shí)間復(fù)雜度是O(m + n);
(2)算法的空間復(fù)雜度為O(n(n + m));
(3)該方法對(duì)放慢攻擊以及注入垃圾攻擊免疫。
預(yù)測(cè)過(guò)程類(lèi)似于關(guān)聯(lián)過(guò)程,只不過(guò)搜索的方向不同。它是從最新報(bào)警出發(fā),順 FLi中的指針對(duì)攻擊圖進(jìn)行局部的寬度優(yōu)先搜索。預(yù)測(cè)過(guò)程的結(jié)果是非空集合Con1,Con2,…的序若c屬于Coni,則表示攻擊者從當(dāng)前狀態(tài)到滿足條件c必須至少要進(jìn)行i步exploit。
以本文算法為基礎(chǔ)的警報(bào)關(guān)聯(lián)程序,作為為中南大學(xué)鐵道學(xué)院網(wǎng)絡(luò)中心智能網(wǎng)絡(luò)管理系統(tǒng)的子系統(tǒng),為網(wǎng)絡(luò)管理人員提供了大量有效的參考信息。
本文提出的基于入侵圖警報(bào)關(guān)聯(lián)以預(yù)測(cè)方法在時(shí)間復(fù)雜度和空間復(fù)雜度方面較之傳統(tǒng)方法有明顯優(yōu)勢(shì)。而且可以有效的免疫放慢攻擊和諸如垃圾攻擊。但不足之處在于該方法沒(méi)有考慮到報(bào)警可能來(lái)自不同的傳感器,以及網(wǎng)絡(luò)延遲的存在,警報(bào)流存在失序的情況。在這種情況下,無(wú)法準(zhǔn)確關(guān)聯(lián)相關(guān)警報(bào)。這是下一步繼續(xù)研究的目標(biāo)。
[1]P. Ning and D. Xu. Learning attack strategies from intrusion alerts.In Proceedings of the 10thACM Conference on Computer and Communications Security (CCS’03).2003.
[2]R.Lippmann and K.Ingols.An annotated review of past papers on attack graphs. Technical report, MIT Lincoln Laboratory,March 2005.
[3]S. Jajodia, S. Noel, and B. O’Berry. Topological analysis of network attack vulnerability. In V. Kumar, J. Srivastava, and A.Lazarevic, editors,Managing Cyber Threats: Issues, Approaches and Challenges.Kluwer Academic Publisher.2003.