DARPA提出的建議是公共入侵檢測(cè)框架(CIDF),最早由加州大學(xué)戴維斯分校安全實(shí)驗(yàn)室主持起草工作。1999年6月,IDWG就入侵檢測(cè)也出臺(tái)了一系列草案。但是,這兩個(gè)組織提出的草案或建議目前還正處于逐步完善之中,尚未被采納為廣泛接受的國(guó)際標(biāo)準(zhǔn)。不過(guò),它們?nèi)允侨肭謾z測(cè)領(lǐng)域最有影響力的建議,成為標(biāo)準(zhǔn)只是時(shí)間問(wèn)題。
入侵檢測(cè)工作組(IDWG)
IDWG的任務(wù)是:定義數(shù)據(jù)格式和交換規(guī)程,用于入侵檢測(cè)與響應(yīng)(IDR)系統(tǒng)之間或與需要交互的管理系統(tǒng)之間的信息共享。IDWG提出的建議草案包括三部分內(nèi)容:入侵檢測(cè)消息交換格式(IDMEF)、入侵檢測(cè)交換協(xié)議(IDXP)以及隧道輪廓(Tunnel Profile)。
一、IDMEF
IDMEF描述了表示入侵檢測(cè)系統(tǒng)輸出信息的數(shù)據(jù)模型,并解釋了使用此模型的基本原理。該數(shù)據(jù)模型用XML實(shí)現(xiàn),并設(shè)計(jì)了一個(gè)XML文檔類(lèi)型定義。自動(dòng)入侵檢測(cè)系統(tǒng)可以使用IDMEF提供的標(biāo)準(zhǔn)數(shù)據(jù)格式對(duì)可疑事件發(fā)出警報(bào),提高商業(yè)、開(kāi)放資源和研究系統(tǒng)之間的互操作性。IDMEF最適用于入侵檢測(cè)分析器(或稱(chēng)為“探測(cè)器”)和接收警報(bào)的管理器(或稱(chēng)為“控制臺(tái)”)之間的數(shù)據(jù)信道。
1.IDMEF的數(shù)據(jù)模型
IDMEF數(shù)據(jù)模型以面向?qū)ο蟮男问奖硎咎綔y(cè)器傳遞給控制臺(tái)的警報(bào)數(shù)據(jù),設(shè)計(jì)數(shù)據(jù)模型的目標(biāo)是為警報(bào)提供確定的標(biāo)準(zhǔn)表達(dá)方式,并描述簡(jiǎn)單警報(bào)和復(fù)雜警報(bào)之間的關(guān)系。
IDMEF數(shù)據(jù)模型各個(gè)主要部分之間的關(guān)系如圖1所示。
所有IDMEF消息的最高層類(lèi)是IDMEF-Message,每一種類(lèi)型的消息都是該類(lèi)的子類(lèi)。IDMEF目前定義了兩種類(lèi)型的消息:Alert(警報(bào))和Heartbeat(心跳),這兩種消息又分別包括各自的子類(lèi),以表示更詳細(xì)的消息。
需要注意的是,IDMEF數(shù)據(jù)模型并沒(méi)有對(duì)警報(bào)的分類(lèi)和鑒別進(jìn)行說(shuō)明。例如,對(duì)一個(gè)端口的掃描,一個(gè)分析器可能將其確定為一個(gè)多目標(biāo)的單一攻擊,而另一個(gè)分析器可能將其確定為來(lái)自同一個(gè)源的多次攻擊。只有一個(gè)分析器決定了發(fā)送的警報(bào)類(lèi)型,數(shù)據(jù)模型才能規(guī)定怎樣對(duì)這個(gè)警報(bào)進(jìn)行格式化。
IDMEF數(shù)據(jù)模型是用統(tǒng)一建模語(yǔ)言(UML)描述的。UML用一個(gè)簡(jiǎn)單的框架表示實(shí)體以及它們之間的關(guān)系,并將實(shí)體定義為類(lèi)。IDMEF包括的主要類(lèi)有IDMEF-Message類(lèi)、Alert類(lèi)、Heartbeat類(lèi)、Core類(lèi)、Time類(lèi)和Support類(lèi),這些類(lèi)還可以再細(xì)分為許多子類(lèi)。
2.使用XML描述IDMEF文檔標(biāo)記
IDWG最早曾提出兩個(gè)建議實(shí)現(xiàn)IDMEF:用SMI(管理信息結(jié)構(gòu))描述一個(gè)SNMP MIB和使用DTD(文檔類(lèi)型定義)描述XML文檔。IDWG 在1999年9月和2000年2月分別對(duì)這兩個(gè)建議進(jìn)行了評(píng)估,認(rèn)為XML最能符合IDMEF的要求,于是,在2000年2月的會(huì)議上決定采用XML方案。
XML是SGML(標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言)的簡(jiǎn)化版本,是ISO 8879標(biāo)準(zhǔn)對(duì)文本標(biāo)記說(shuō)明進(jìn)行定義的一種語(yǔ)法。作為一種表示和交換網(wǎng)絡(luò)文檔及數(shù)據(jù)的語(yǔ)言,XML能夠有效地解決HTML面臨的許多問(wèn)題,所以獲得了業(yè)界的普遍青睞。1998年10月,WWW聯(lián)盟(W3C)將XML作為一項(xiàng)建議公布于眾。此后不久,WWW聯(lián)盟又發(fā)布了一份建議,定義了XML文檔中的名字空間。
XML是一種元語(yǔ)言——即一個(gè)描述其他語(yǔ)言的語(yǔ)言,它允許應(yīng)用程序定義自己的標(biāo)記,還可以為不同類(lèi)型的文檔和應(yīng)用程序定義定制化的標(biāo)記語(yǔ)言。
XML DTD(文檔類(lèi)型定義)可用來(lái)聲明文檔所用的標(biāo)記,它包括元素(文檔包括的不同信息部分)、屬性(信息的特征)和內(nèi)容模型(各部分信息之間的關(guān)系)。
二、IDXP
IDXP(入侵檢測(cè)交換協(xié)議)是一個(gè)用于入侵檢測(cè)實(shí)體之間交換數(shù)據(jù)的應(yīng)用層協(xié)議,能夠?qū)崿F(xiàn)IDMEF消息、非結(jié)構(gòu)文本和二進(jìn)制數(shù)據(jù)之間的交換,并提供面向連接協(xié)議之上的雙方認(rèn)證、完整性和保密性等安全特征。IDXP是BEEP的一部分,后者是一個(gè)用于面向連接的異步交互通用應(yīng)用協(xié)議,IDXP的許多特色功能(如認(rèn)證、保密性等)都是由BEEP框架提供的。IDXP模型如下:
1.建立連接
使用IDXP傳送數(shù)據(jù)的入侵檢測(cè)實(shí)體被稱(chēng)為IDXP的對(duì)等體,對(duì)等體只能成對(duì)地出現(xiàn),在BEEP會(huì)話(huà)上進(jìn)行通信的對(duì)等體可以使用一個(gè)或多個(gè)BEEP信道傳輸數(shù)據(jù)。
對(duì)等體可以是管理器,也可以是分析器。分析器和管理器之間是多對(duì)多的關(guān)系,即一個(gè)分析器可以與多個(gè)管理器通信,同樣,一個(gè)管理器也可以與多個(gè)分析器通信;管理器與管理器之間也是多對(duì)多的關(guān)系,所以,一個(gè)管理器可以通過(guò)多個(gè)中間管理器接收來(lái)自多個(gè)分析器的大量警報(bào)。但是,IDXP規(guī)定,分析器之間不可以建立交換。
入侵檢測(cè)實(shí)體之間的IDXP通信在BEEP信道上完成。兩個(gè)希望建立IDXP通信的入侵檢測(cè)實(shí)體在打開(kāi)BEEP信道之前,首先要進(jìn)行一次BEEP會(huì)話(huà),然后就有關(guān)的安全特性問(wèn)題進(jìn)行協(xié)商,協(xié)商好BEEP安全輪廓之后,互致問(wèn)候,然后開(kāi)始IDXP交換。
圖2是兩個(gè)入侵檢測(cè)實(shí)體“Alice”和“Bob”之間建立IDXP通信的過(guò)程:
注意:IDXP對(duì)等實(shí)體之間可能有多個(gè)代理,這些代理可能是防火墻,也可能是將公司每個(gè)部門(mén)分析器的數(shù)據(jù)轉(zhuǎn)發(fā)給總管理器的代理。隧道輪廓描述了使用代理時(shí)的IDXP交換。
2.傳輸數(shù)據(jù)
一對(duì)入侵檢測(cè)實(shí)體進(jìn)行BEEP會(huì)話(huà)時(shí),可以使用IDXP輪廓打開(kāi)一個(gè)或多個(gè)BEEP信道,這樣就可以使用額外的信道建立額外的BEEP會(huì)話(huà)。但是,大多數(shù)情況下,額外信道都應(yīng)在已有的BEEP會(huì)話(huà)上打開(kāi),而不是用IDXP輪廓打開(kāi)一個(gè)包含額外信道的新BEEP會(huì)話(huà)。
在每個(gè)信道上,對(duì)等體都以客戶(hù)機(jī)/服務(wù)器模式進(jìn)行通信,BEEP會(huì)話(huà)發(fā)起者為客戶(hù)機(jī),而收聽(tīng)者則為服務(wù)器。
圖3描述了一個(gè)分析器將數(shù)據(jù)傳送給一個(gè)管理器的簡(jiǎn)單過(guò)程。
在一次BEEP會(huì)話(huà)時(shí),使用多個(gè)BEEP信道有利于對(duì)在IDXP對(duì)等體之間傳輸?shù)臄?shù)據(jù)進(jìn)行分類(lèi)和優(yōu)先權(quán)設(shè)置。例如,一個(gè)管理器M1在向另一個(gè)管理器M2傳送警報(bào)數(shù)據(jù)時(shí),可以用不同的信道傳送不同類(lèi)型的警報(bào)數(shù)據(jù),在每個(gè)信道上管理器M1的作用都相當(dāng)于一個(gè)客戶(hù)器,而M2則對(duì)不同信道上的數(shù)據(jù)作出相應(yīng)的處理,如圖4所示。
3.?dāng)嚅_(kāi)連接
在有些情況下,一個(gè)IDXP對(duì)等體可以選擇關(guān)閉某個(gè)IDXP信道。在關(guān)閉一個(gè)信道時(shí),對(duì)等體在0信道上發(fā)送一個(gè)“關(guān)閉”元素,指明要關(guān)閉哪一個(gè)信道。一個(gè)IDXP對(duì)等體也可以通過(guò)在0信道上發(fā)送一個(gè)指明要“關(guān)閉”0信道的元素,來(lái)關(guān)閉整個(gè)BEEP會(huì)話(huà)。
在上面這個(gè)模型中, IDXP對(duì)等實(shí)體之間采用了一個(gè)BEEP安全輪廓實(shí)現(xiàn)端到端的安全,而無(wú)需通過(guò)中間的代理建立安全信任,因此,只有IDXP對(duì)等體之間是相互信任的,而代理是不可信的。
公共入侵檢測(cè)框架(CIDF)
CIDF所做的工作主要包括四部分:IDS的體系結(jié)構(gòu)、通信機(jī)制、描述語(yǔ)言和應(yīng)用編程接口API。
一.CIDF的體系結(jié)構(gòu)
CIDF在IDES和NIDES的基礎(chǔ)上提出了一個(gè)通用模型,將入侵檢測(cè)系統(tǒng)分為四個(gè)基本組件:事件產(chǎn)生器、事件分析器、響應(yīng)單元和事件數(shù)據(jù)庫(kù)。結(jié)構(gòu)如圖5所示。
在這個(gè)模型中,事件產(chǎn)生器、事件分析器和響應(yīng)單元通常以應(yīng)用程序的形式出現(xiàn),而事件數(shù)據(jù)庫(kù)則往往是文件或數(shù)據(jù)流的形式,很多IDS廠商都以數(shù)據(jù)收集部分、數(shù)據(jù)分析部分和控制臺(tái)部分三個(gè)術(shù)語(yǔ)來(lái)分別代替事件產(chǎn)生器、事件分析器和響應(yīng)單元。
CIDF將IDS需要分析的數(shù)據(jù)統(tǒng)稱(chēng)為事件,它可以是網(wǎng)絡(luò)中的數(shù)據(jù)包,也可以是從系統(tǒng)日志或其他途徑得到的信息。
以上四個(gè)組件只是邏輯實(shí)體,一個(gè)組件可能是某臺(tái)計(jì)算機(jī)上的一個(gè)進(jìn)程甚至線程,也可能是多個(gè)計(jì)算機(jī)上的多個(gè)進(jìn)程,它們以GIDO(統(tǒng)一入侵檢測(cè)對(duì)象)格式進(jìn)行數(shù)據(jù)交換。GIDO是對(duì)事件進(jìn)行編碼的標(biāo)準(zhǔn)通用格式(由CIDF描述語(yǔ)言CISL定義),GIDO數(shù)據(jù)流在圖5中以虛線表示,它可以是發(fā)生在系統(tǒng)中的審計(jì)事件,也可以是對(duì)審計(jì)事件的分析結(jié)果。
1.事件產(chǎn)生器
事件產(chǎn)生器的任務(wù)是從入侵檢測(cè)系統(tǒng)之外的計(jì)算環(huán)境中收集事件,并將這些事件轉(zhuǎn)換成CIDF的GIDO格式傳送給其他組件。例如,事件產(chǎn)生器可以是讀取C2級(jí)審計(jì)蹤跡并將其轉(zhuǎn)換為GIDO格式的過(guò)濾器,也可以是被動(dòng)地監(jiān)視網(wǎng)絡(luò)并根據(jù)網(wǎng)絡(luò)數(shù)據(jù)流產(chǎn)生事件的另一種過(guò)濾器,還可以是SQL數(shù)據(jù)庫(kù)中產(chǎn)生描述事務(wù)的事件的應(yīng)用代碼。
2.事件分析器
事件分析器分析從其他組件收到的GIDO, 并將產(chǎn)生的新GIDO再傳送給其他組件。分析器可以是一個(gè)輪廓描述工具,統(tǒng)計(jì)性地檢查現(xiàn)在的事件是否可能與以前某個(gè)事件來(lái)自同一個(gè)時(shí)間序列; 也可以是一個(gè)特征檢測(cè)工具,用于在一個(gè)事件序列中檢查是否有已知的濫用攻擊特征;此外,事件分析器還可以是一個(gè)相關(guān)器,觀察事件之間的關(guān)系,將有聯(lián)系的事件放到一起,以利于以后的進(jìn)一步分析。
3.事件數(shù)據(jù)庫(kù)
用來(lái)存儲(chǔ)GIDO,以備系統(tǒng)需要的時(shí)候使用。
4.響應(yīng)單元
響應(yīng)單元處理收到的GIDO,并據(jù)此采取相應(yīng)的措施,如殺死相關(guān)進(jìn)程、將連接復(fù)位、修改文件權(quán)限等。
由于CIDF有一個(gè)標(biāo)準(zhǔn)格式GIDO,所以這些組件也適用于其他環(huán)境,只需要將典型的環(huán)境特征轉(zhuǎn)換成GIDO格式,這樣就提高了組件之間的消息共享和互通。
二、CIDF的通信機(jī)制
為了保證各個(gè)組件之間安全、高效的通信,CIDF將通信機(jī)制構(gòu)造成一個(gè)三層模型:GIDO層、消息層和協(xié)商傳輸層。
要實(shí)現(xiàn)有目的的通信,各組件就必須能正確理解相互之間傳遞的各種數(shù)據(jù)的語(yǔ)義,GIDO層的任務(wù)就是提高組件之間的互操作性,所以GIDO就如何表示各種各樣的事件做了詳細(xì)的定義。
消息層確保被加密認(rèn)證消息在防火墻或NAT等設(shè)備之間傳輸過(guò)程中的可靠性。消息層只負(fù)責(zé)將數(shù)據(jù)從發(fā)送方傳遞到接收方,而不攜帶任何有語(yǔ)義的信息;同樣,GIDO層也只考慮所傳遞信息的語(yǔ)義,而不關(guān)心這些消息怎樣被傳遞。
單一的傳輸協(xié)議無(wú)法滿(mǎn)足CIDF各種各樣的應(yīng)用需求,只有當(dāng)兩個(gè)特定的組件對(duì)信道使用達(dá)成一致認(rèn)識(shí)時(shí),才能進(jìn)行通信。協(xié)商傳輸層規(guī)定GIDO在各個(gè)組件之間的傳輸機(jī)制。
CIDF的通信機(jī)制主要討論消息的封裝和傳遞,主要分為四個(gè)方面:
1. 配對(duì)服務(wù)
配對(duì)服務(wù)采用了一個(gè)大型目錄服務(wù)LDAP(輕量級(jí)目錄訪問(wèn)協(xié)議),每個(gè)組件都要到此目錄服務(wù)進(jìn)行注冊(cè),并通告其他組件它所使用或產(chǎn)生的GIDO類(lèi)型。在此基礎(chǔ)上,組件才能被歸入它所屬的類(lèi)別中,組件之間才能互相通信。
配對(duì)服務(wù)還支持一些安全選項(xiàng)(如公鑰證書(shū)、完整性機(jī)制等),為各個(gè)組件之間安全通信、共享信息提供了一種統(tǒng)一的標(biāo)準(zhǔn)機(jī)制,大大提高了組件的互操作性,降低了開(kāi)發(fā)多組件入侵檢測(cè)與響應(yīng)系統(tǒng)的難度。
2. 路由
組件之間要通信時(shí),有時(shí)需經(jīng)過(guò)非透明的防火墻,發(fā)送方先將數(shù)據(jù)包傳遞給防火墻的關(guān)聯(lián)代理,然后再由此代理將數(shù)據(jù)包轉(zhuǎn)發(fā)到目的地。CIDF采用了兩種路由:源路由和絕對(duì)路由。
3. 消息層
消息層要實(shí)現(xiàn)的功能包括:
(1)提供一個(gè)開(kāi)放的體系結(jié)構(gòu)。
(2)使消息獨(dú)立于操作系統(tǒng)、編程語(yǔ)言和網(wǎng)絡(luò)協(xié)議。
(3)簡(jiǎn)化向CIDF中增添新組件的過(guò)程。
(4)支持鑒定與保密等安全需求。
(5)同步(封鎖進(jìn)程與非封鎖進(jìn)程)。
4. 消息層處理
消息層處理規(guī)定了消息層消息的處理方式,它包括四個(gè)規(guī)程:標(biāo)準(zhǔn)規(guī)程、可靠傳輸規(guī)程、保密規(guī)程和鑒定規(guī)程。
三、CIDF語(yǔ)言
CIDF的總體目標(biāo)是實(shí)現(xiàn)軟件的復(fù)用和IDR(入侵檢測(cè)與響應(yīng))組件之間的互操作性。首先,IDR組件基礎(chǔ)結(jié)構(gòu)必須是安全、健壯、可伸縮的,CIDF的工作重點(diǎn)是定義了一種應(yīng)用層的語(yǔ)言CISL(公共入侵規(guī)范語(yǔ)言),用來(lái)描述IDR組件之間傳送的信息,以及制定一套對(duì)這些信息進(jìn)行編碼的協(xié)議。CISL可以表示CIDF中的各種信息,如原始事件信息(審計(jì)蹤跡記錄和網(wǎng)絡(luò)數(shù)據(jù)流信息)、分析結(jié)果(系統(tǒng)異常和攻擊特征描述)、響應(yīng)提示(停止某些特定的活動(dòng)或修改組件的安全參數(shù))等。
CISL使用了一種被稱(chēng)為S表達(dá)式的通用語(yǔ)言構(gòu)建方法,S表達(dá)式可以對(duì)標(biāo)記和數(shù)據(jù)進(jìn)行簡(jiǎn)單的遞歸編組,即對(duì)標(biāo)記加上數(shù)據(jù),然后封裝在括號(hào)內(nèi)完成編組,這跟LISP有些類(lèi)似。S表達(dá)式的最開(kāi)頭是語(yǔ)義標(biāo)識(shí)符(簡(jiǎn)稱(chēng)為SID),用于顯示編組列表的語(yǔ)義。例如下面的S表達(dá)式:
(HostName ‘first.example.com’)
該編組列表的SID是HostName,它說(shuō)明后面的字符串“first.example.com”將被解釋為一個(gè)主機(jī)的名字。
有時(shí)侯,只有使用很復(fù)雜的S表達(dá)式才能描述出某些事件的詳細(xì)情況,這就需要使用大量的SID。SID在CISL中起著非常重要的作用,用來(lái)表示時(shí)間、定位、動(dòng)作、角色、屬性等,只有使用大量的SID,才能構(gòu)造出合適的句子。CISL使用范例對(duì)各種事件和分析結(jié)果進(jìn)行編碼,把編碼的句子進(jìn)行適當(dāng)?shù)姆庋b,就得到了GIDO。
GIDO的構(gòu)建與編碼是CISL的重點(diǎn)。
四、CIDF的API接口
CIDF的API負(fù)責(zé)GIDO的編碼、解碼和傳遞,它提供的調(diào)用功能使得程序員可以在不了解編碼和傳遞過(guò)程具體細(xì)節(jié)的情況下,以一種很簡(jiǎn)單的方式構(gòu)建和傳遞GIDO。
GIDO的生成分為兩個(gè)步驟:第一,構(gòu)造表示GIDO的樹(shù)型結(jié)構(gòu);第二,將此結(jié)構(gòu)編成字節(jié)碼。
在構(gòu)造樹(shù)形結(jié)構(gòu)時(shí),SID被分為兩組:一組把S表達(dá)式作為參數(shù)(即動(dòng)詞、副詞、角色、連接詞等),另一組把單個(gè)數(shù)據(jù)或一個(gè)數(shù)據(jù)陣列作為參數(shù)(即原子),這樣就可以把一個(gè)完整的句子表示成一棵樹(shù),每個(gè)SID表示成一個(gè)節(jié)點(diǎn),最高層的SID是樹(shù)根。因?yàn)槊總€(gè)S表達(dá)式都包含一定的數(shù)據(jù),所以,樹(shù)的每個(gè)分支末端都有表示原子SID的葉子。
由于編碼規(guī)則是定義好的,所以對(duì)樹(shù)進(jìn)行編碼只是一個(gè)深度優(yōu)先遍歷和對(duì)各個(gè)節(jié)點(diǎn)依次編碼的過(guò)程。在這種情況下,我們可以先對(duì)V編碼,然后對(duì)R1子樹(shù)編碼,再對(duì)R2子樹(shù)編碼。如果上面的句子是一個(gè)連接句的一部分,那么,每個(gè)成分句都可以從中完好地提取出來(lái)。也就是說(shuō),如果句子事先已經(jīng)編碼,在插入到一個(gè)連接句時(shí)無(wú)須再進(jìn)行編碼。
將字節(jié)碼進(jìn)行解碼跟上面的過(guò)程正好相反,在SID碼的第一個(gè)字節(jié)里有一個(gè)比特位顯示其需要的參數(shù):是基本數(shù)據(jù)類(lèi)型,還是S表達(dá)式序列。然后語(yǔ)法分析器再對(duì)后面的字節(jié)進(jìn)行解釋。CIDF的API并不能根據(jù)樹(shù)構(gòu)建邏輯GIDO,但提供了將樹(shù)以普通GIDO的S表達(dá)式格式進(jìn)行打印的功能。
CIDF的API為實(shí)現(xiàn)者和應(yīng)用開(kāi)發(fā)者都提供了很多的方便,它分為兩類(lèi):GIDO編碼/解碼API和消息層API。


