黃子中 韓偉紅 賈焰
摘要:針對(duì)網(wǎng)絡(luò)安全事件不斷增加帶來的手工添加和維護(hù)網(wǎng)絡(luò)安全事件關(guān)聯(lián)規(guī)則的不足,該文提出了一個(gè)基于攻擊流量的網(wǎng)絡(luò)安全規(guī)則自動(dòng)生成系統(tǒng)NSRAG(Network Security Rule Automatically Generation Framework),該框架利用真實(shí)的攻擊流量來觸發(fā)網(wǎng)絡(luò)安全檢測(cè)和監(jiān)控軟件,收集它們產(chǎn)生的告警和目標(biāo)狀態(tài)信息,以此為數(shù)據(jù)源自動(dòng)產(chǎn)生網(wǎng)絡(luò)安全事件關(guān)聯(lián)規(guī)則。NSRAG系統(tǒng)中關(guān)聯(lián)規(guī)則自動(dòng)生成算法有兩種,在攻擊模式已知的情況下采用基于攻擊模式的規(guī)則自動(dòng)生成算法,在攻擊模式未知的情況下采用基于序列挖掘的規(guī)則自動(dòng)生成算法。測(cè)試和實(shí)際應(yīng)用表明,NSRAG可以根據(jù)網(wǎng)絡(luò)攻擊流量自動(dòng)生成網(wǎng)絡(luò)安全事件關(guān)聯(lián)規(guī)則,減少了對(duì)網(wǎng)絡(luò)攻擊知識(shí)的依賴,提高了網(wǎng)絡(luò)安全事件關(guān)聯(lián)規(guī)則增加的效率。
關(guān)鍵詞:網(wǎng)絡(luò)安全事件;關(guān)聯(lián)規(guī)則;攻擊模式;序列模式挖掘
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2015)35-0014-03
Abstract: With the continuously growing of network security incidents, it is becoming insufficient to manually modify and maintain network security event correlation rules. This paper proposes a framework to automatically generate security rule based on network attack traffic, NSRAG (Network Security Rule Automatically Generation Framework). The framework uses real network attack traffic to trigger network security testing and monitoring software, and collects alarms and target state information generated by the software. Then the framework uses these data to automatically generate the network security event correlation rules. There are two algorithms associated to generate rules in NSRAG: attack mode-based automatic generation algorithm for known attack mode, and sequence mode mining-based automatic generation algorithm for unknown attack mode. Test and practical application show that NSRAG can automatically generate rules based on network attack traffic, and it improves efficiency of network security rules generation.
Key words: network security incidents; association rules; attack mode; sequential pattern mining
1 引言
網(wǎng)絡(luò)安全事件關(guān)聯(lián)規(guī)則是對(duì)網(wǎng)絡(luò)安全事件之間關(guān)系的定義和描述,它反映了一個(gè)或一類攻擊成功執(zhí)行時(shí)所表現(xiàn)的動(dòng)態(tài)過程和狀態(tài),是對(duì)攻擊過程的抽象?;谝?guī)則的關(guān)聯(lián)分析技術(shù)易于實(shí)現(xiàn)且能有效的發(fā)現(xiàn)不同網(wǎng)絡(luò)安全事件之間的關(guān)系,將多個(gè)底層探針告警替換成一個(gè)更具可理解性的高級(jí)警報(bào),為管理員提供更準(zhǔn)確的網(wǎng)絡(luò)安全視圖,這種技術(shù)在當(dāng)前主流的網(wǎng)絡(luò)安全產(chǎn)品中得到了廣泛的應(yīng)用[1-4]。網(wǎng)絡(luò)安全事件關(guān)聯(lián)規(guī)則的完善程度決定了關(guān)聯(lián)引擎對(duì)網(wǎng)絡(luò)安全事件和攻擊的識(shí)別能力,其結(jié)果直接影響到上層應(yīng)用的質(zhì)量。
目前在網(wǎng)絡(luò)安全事件關(guān)聯(lián)分析領(lǐng)域,研究主要集中在關(guān)聯(lián)分析方法和關(guān)聯(lián)引擎結(jié)構(gòu)方面,對(duì)于關(guān)聯(lián)規(guī)則的研究主要集中在關(guān)聯(lián)規(guī)則的表示和應(yīng)用上,對(duì)于關(guān)聯(lián)規(guī)則的生成方法的研究較少。然而如果沒有豐富和可靠的關(guān)聯(lián)規(guī)則集,那么基于規(guī)則的關(guān)聯(lián)分析將是無(wú)源之水。從當(dāng)前典型的產(chǎn)品應(yīng)用來看,現(xiàn)有的關(guān)聯(lián)規(guī)則集在種類上和數(shù)量上都遠(yuǎn)遠(yuǎn)不能涵蓋已出現(xiàn)的各種網(wǎng)絡(luò)攻擊。因此,對(duì)關(guān)聯(lián)規(guī)則自動(dòng)生成方法進(jìn)行研究具有非常重要的應(yīng)用價(jià)值。
2 相關(guān)研究
在已有的網(wǎng)絡(luò)安全系統(tǒng)及產(chǎn)品方面,目前采用的主要還是基于網(wǎng)絡(luò)安全專家的經(jīng)驗(yàn)手工添加網(wǎng)絡(luò)安全關(guān)聯(lián)規(guī)則的方法。OSSIM[1]中的關(guān)聯(lián)引擎使用了層次式的樹形規(guī)則,由XML進(jìn)行描述和存儲(chǔ),并采用可視化技術(shù),提供了簡(jiǎn)易的規(guī)則編輯界面,省去了規(guī)則維護(hù)人員編寫XML文件的工作量,但本質(zhì)上規(guī)則的增加還是手工完成。Drools[2]關(guān)聯(lián)分析推理引擎也使用了層次式的規(guī)則結(jié)構(gòu),由“IF,ELSE”語(yǔ)句塊來描述,規(guī)則的增加也需要手工完成。SEC[3]關(guān)聯(lián)分析系統(tǒng)將關(guān)聯(lián)規(guī)則進(jìn)行了詳細(xì)的分類,支持正則表達(dá)式,不同的分類可以進(jìn)行組合,用以表述更復(fù)雜的攻擊,但關(guān)聯(lián)規(guī)則也需用戶手工來編制。
手工增加規(guī)則的缺陷主要有以下四點(diǎn):(1)規(guī)則的增加依賴于專家知識(shí);(2)規(guī)則增加效率低;(3)規(guī)則正確性無(wú)法保證,依賴于攻擊知識(shí);(4)關(guān)聯(lián)規(guī)則更新困難,關(guān)聯(lián)引擎是工作在底層探針之上的,所以關(guān)聯(lián)規(guī)則是由底層探針的輸出按一定關(guān)系組織起來的,當(dāng)?shù)讓犹结樇耙?guī)則庫(kù)或知識(shí)庫(kù)更新時(shí),上層的關(guān)聯(lián)規(guī)則也應(yīng)作出相應(yīng)的調(diào)整。
在關(guān)聯(lián)規(guī)則自動(dòng)生成的研究方面,首先用LAMBDA語(yǔ)言對(duì)每一攻擊進(jìn)行詳細(xì)描述,然后通過分析每個(gè)攻擊的前提集和結(jié)果集,自動(dòng)生成關(guān)聯(lián)規(guī)則。這種方法提高了關(guān)聯(lián)規(guī)則的增加效率,但規(guī)則生成之前需對(duì)每一個(gè)攻擊進(jìn)行LAMBDA語(yǔ)言描述,這又要依賴于專家知識(shí)。從數(shù)據(jù)挖掘的角度出發(fā),利用FP-樹對(duì)安全事件集進(jìn)行頻繁項(xiàng)集的挖掘,規(guī)則的生成無(wú)需手工干預(yù),但是該方法直接將挖掘布爾規(guī)則的關(guān)聯(lián)規(guī)則算法應(yīng)用于具有多維屬性且有序列關(guān)系的網(wǎng)絡(luò)安全數(shù)據(jù),這樣不僅會(huì)產(chǎn)生大量毫無(wú)意義的頻繁項(xiàng)集,還使得安全事件中的不同字段失去了固有的聯(lián)系和意義,得出的頻繁項(xiàng)集不能準(zhǔn)確反映原來的攻擊。采用Apriori算法對(duì)安全事件集進(jìn)行頻繁項(xiàng)集的挖掘,挖掘出的規(guī)則存在著相似的問題。
3 基于攻擊流量的關(guān)聯(lián)規(guī)則自動(dòng)化生成框架NSRAG
自動(dòng)化生成關(guān)聯(lián)規(guī)則的一個(gè)基本思路就是利用真實(shí)的攻擊流量來觸發(fā)網(wǎng)絡(luò)安全檢測(cè)和監(jiān)控軟件,收集它們產(chǎn)生的告警和目標(biāo)狀態(tài)信息,以此為數(shù)據(jù)源產(chǎn)生關(guān)聯(lián)規(guī)則。
基于上述思路,本文提出如下自動(dòng)生成的方法:
(1) 搭建攻擊床,布署漏洞主機(jī)、網(wǎng)絡(luò)安全檢測(cè)和監(jiān)控軟件、嗅探器;
(2) 通過執(zhí)行攻擊或重放攻擊數(shù)據(jù)集來產(chǎn)生攻擊流量;
(3) 收集攻擊流量所觸發(fā)的告警和目標(biāo)狀態(tài);
(4) 以第3步輸出為數(shù)據(jù)來源,生成攻擊對(duì)應(yīng)的關(guān)聯(lián)規(guī)則;
(5) 嗅探器捕獲的攻擊流量用于關(guān)聯(lián)規(guī)則的測(cè)試和后續(xù)開發(fā)。
該方法使得增加關(guān)聯(lián)規(guī)則無(wú)需分析攻擊知識(shí)和網(wǎng)絡(luò)安全檢測(cè)、監(jiān)控軟件的輸出,只需在攻擊床中執(zhí)行或重放一次攻擊。在攻擊床中執(zhí)行的攻擊可知,可控,所以可以生成攻擊詞典,攻擊日志等有用信息,也可捕獲攻擊流量,為關(guān)聯(lián)規(guī)則的生成和測(cè)試提供支持。Metasploit[8]能夠?qū)崿F(xiàn)攻擊的自動(dòng)執(zhí)行,可大大提高規(guī)則增加效率;另外,攻擊程序也可從站點(diǎn)[9-10]獲取
NSRAG系統(tǒng)中關(guān)聯(lián)規(guī)則自動(dòng)生成算法有兩種,在攻擊模式已知的情況下采用基于攻擊模式的規(guī)則自動(dòng)生成算法,否則,采用基于序列挖掘的規(guī)則自動(dòng)生成算法。
3.1 基于攻擊模式的規(guī)則自動(dòng)生成算法
每一類網(wǎng)絡(luò)攻擊都有各自的特征,同類網(wǎng)絡(luò)攻擊的不同攻擊實(shí)例在實(shí)施時(shí)往往需要經(jīng)歷相同的步驟,例如遠(yuǎn)程緩沖區(qū)溢出攻擊,要想成功執(zhí)行都需經(jīng)過溢出嘗試,shellcode執(zhí)行(獲取權(quán)限),實(shí)施破壞這幾個(gè)主要過程。對(duì)于同一類攻擊的不同階段,底層安全工具輸出的事件往往具有相同的類型。也就是說,對(duì)于同一類攻擊來說,攻擊步驟與攻擊結(jié)果具有不少共同的特征,可將這些共同而又獨(dú)立于其他種類攻擊的步驟抽取出來,作為一種攻擊模式,根據(jù)攻擊模式,結(jié)合底層事件集,自動(dòng)生成關(guān)聯(lián)規(guī)則。
NSRAG系統(tǒng)中基于攻擊模式的規(guī)則擾動(dòng)生成過程如下:先總結(jié)分析攻擊模式,以攻擊模式作為輸入得到攻擊對(duì)應(yīng)的關(guān)聯(lián)規(guī)則的層次結(jié)構(gòu);再提取安全事件集,將其與攻擊步驟相對(duì)應(yīng),填充已得到的規(guī)則層次結(jié)構(gòu);最后結(jié)合事件集,對(duì)關(guān)聯(lián)規(guī)則進(jìn)行細(xì)粒度的劃分,得到最終的攻擊實(shí)例關(guān)聯(lián)規(guī)則集合。
3.2 基于序列挖掘的規(guī)則自動(dòng)生成算法
NSRAG系統(tǒng)中對(duì)于未知攻擊模式主要利用數(shù)據(jù)挖掘中的關(guān)聯(lián)分析方法,結(jié)合相關(guān)技術(shù)從海量的安全事件集中挖掘出大規(guī)模網(wǎng)絡(luò)攻擊的攻擊模式,進(jìn)而生成可以反復(fù)使用的關(guān)聯(lián)規(guī)則。
一般數(shù)據(jù)挖掘算法對(duì)類似于購(gòu)物籃商品的數(shù)據(jù)的挖掘,都只強(qiáng)調(diào)同時(shí)出現(xiàn)的關(guān)系,而忽略了數(shù)據(jù)中的序列關(guān)系,然而安全事件之間都具有固有的序列特征,這意味著在它們之間存在著基于時(shí)間的先后次序,這種先后次序?qū)τ诒硎霈F(xiàn)實(shí)的攻擊具有重要的意義,不能忽略。在序列數(shù)據(jù)集中,每一行都記錄著與一個(gè)特定的對(duì)象相關(guān)聯(lián)的一些事件在給定時(shí)刻的出現(xiàn),因此系列模式挖掘更能體現(xiàn)網(wǎng)絡(luò)安全事件之間的時(shí)間順序關(guān)系。
NSRAG系統(tǒng)中序列模式挖掘分為五個(gè)階段:1)排序階段(sort phase);2)大項(xiàng)集階段(litemset phase);3)轉(zhuǎn)化階段(transformation phrase);4)序列階段(sequence phrase);5)最大化階段(maximal phrase)。在排序階段,按照主關(guān)鍵字(對(duì)象ID)和次關(guān)鍵字(時(shí)間戳)將數(shù)據(jù)庫(kù)中中的數(shù)據(jù)行進(jìn)行排序;在大項(xiàng)集階段,找到所有的頻繁項(xiàng)集組成集合,并進(jìn)行編碼,建立頻繁項(xiàng)和編碼之間的一一映射關(guān)系;在轉(zhuǎn)化階段,通過這種映射關(guān)系對(duì)數(shù)據(jù)庫(kù)進(jìn)行處理,以生成一個(gè)內(nèi)存中較小的映像;在序列階段找到所有的序列模式;最后在最大化階段,去掉不必要的子序列模式,找到包含序列元素最多的序列模式。其中前三個(gè)階段是預(yù)處理階段,為挖掘算法的分析做好準(zhǔn)備,后兩個(gè)階段是挖掘序列模式的關(guān)鍵階段。
3.2.1 基于候選集的序列模式挖掘
這類算法基于頻繁項(xiàng)集中的一個(gè)先驗(yàn)原理:如果一個(gè)項(xiàng)集是頻繁的,則它的所有子集一定也是頻繁的。該先驗(yàn)原理也適用于序列模式,因?yàn)榘琸-序列的任何數(shù)據(jù)序列必然包含該k-序列的所有(k-1)-序列。對(duì)經(jīng)典的Apriori算法做出一定的修改即可實(shí)現(xiàn)對(duì)k-序列模式的挖掘,典型的代表有AprioriAll算法和GSP算法,這些算法采用了逐層的候選序列生成和測(cè)試方法,需要多趟次掃描原序列數(shù)據(jù)庫(kù)。算法第一次掃描將發(fā)現(xiàn)頻繁1-序列,然后以對(duì)頻繁1-序列進(jìn)行連接生成候選頻繁2-序列,首先利用前述的先驗(yàn)原理進(jìn)行必要的剪枝,然后再掃描一次原數(shù)據(jù)庫(kù),計(jì)算每個(gè)候選序列的支持度,滿足最小支持度的候選序列即為頻繁序列,依次類推生成頻繁k-序列。
這類算法都要產(chǎn)生大量的候選集,隨著項(xiàng)數(shù)的增加,需要更多的空間來存儲(chǔ)項(xiàng)的支持度計(jì)數(shù),另外頻繁項(xiàng)集的數(shù)目也隨著數(shù)據(jù)維度增加而增長(zhǎng),計(jì)算量和I/O開銷也將急劇增加。
3.2.2 基于頻繁模式增長(zhǎng)的序列模式挖掘
這類算法包括FreeSpan算法和PrefixSpan算法等。這類算法都采用了分而治之的思想,挖掘過程中無(wú)需生成候選序列,而以某種壓縮的形式保留了原數(shù)據(jù)庫(kù)的基本數(shù)據(jù)分組,隨后的分析可以聚焦于計(jì)算相關(guān)數(shù)據(jù)集而非候選序列。另外,算法的每一次迭代并不是對(duì)原來數(shù)據(jù)庫(kù)進(jìn)行完整掃描,而是通過數(shù)據(jù)庫(kù)投影來對(duì)將要檢查的數(shù)據(jù)集和序列模式進(jìn)行劃分,這樣將減少搜索空間,提高算法性能。FreeSpan算法基于任何頻繁子序列對(duì)序列數(shù)據(jù)庫(kù)投影,并在子序列的任何位置上增長(zhǎng),可能會(huì)產(chǎn)生很多瑣碎的投影數(shù)據(jù)庫(kù),在某些情況下算法收斂的速度會(huì)很慢;PrefixSpan僅僅基于頻繁前綴子序列投影并通過在其后添加后綴來實(shí)現(xiàn)序列的增長(zhǎng),因此包含更少的投影庫(kù)和子序列連接而性能更憂。
常規(guī)的購(gòu)物籃數(shù)據(jù)中的布爾關(guān)聯(lián)規(guī)則生成時(shí),要對(duì)得到的頻繁項(xiàng)集中的每一個(gè)非空子集進(jìn)行迭代,計(jì)算該非空子集作為蘊(yùn)含式前件的概率是否滿足最小置信度,如果滿足,則生成一條關(guān)聯(lián)規(guī)則。這種關(guān)聯(lián)規(guī)則的產(chǎn)生方法中,頻繁項(xiàng)集中的各個(gè)項(xiàng)是無(wú)序的關(guān)系,最后生成的關(guān)聯(lián)規(guī)則才確定了各個(gè)項(xiàng)之間的先后次序。
從大量的網(wǎng)絡(luò)安全事件集中挖掘出的序列模式反映了大規(guī)模網(wǎng)絡(luò)中的一般行為規(guī)律或者大規(guī)模網(wǎng)絡(luò)攻擊的攻擊模式,我們通過對(duì)各種數(shù)據(jù)挖掘算法的測(cè)試和分析發(fā)現(xiàn),經(jīng)過PrefixSpan得到的序列模式正好反映了各種網(wǎng)絡(luò)安全事件之間的關(guān)系,這里的關(guān)聯(lián)規(guī)則可以由序列模式直接轉(zhuǎn)化,而不一定非要通過置信度的方法來生成。在轉(zhuǎn)化序列模式為關(guān)聯(lián)規(guī)則之前,先要去掉不必要的子序列模式,僅保留包含元素最多的序列模式,這就是前面所說的最大化階段。
要注意的是,數(shù)據(jù)挖掘方法得到的序列模式并不一定都是對(duì)攻擊的反應(yīng),其中肯定有正常網(wǎng)絡(luò)行為的模式,這就需要專家對(duì)最終生成的關(guān)聯(lián)規(guī)則進(jìn)行評(píng)審,以分別哪些是正常行為模式,哪些是大規(guī)模攻擊行為模式,只有攻擊行為的序列模式最后才被轉(zhuǎn)化為關(guān)聯(lián)規(guī)則并最終納入網(wǎng)絡(luò)安全事件關(guān)聯(lián)規(guī)則庫(kù)中。
4 結(jié)論
隨著網(wǎng)絡(luò)安全攻擊類型的日新月異和網(wǎng)絡(luò)安全事件的不斷增加,手工添加和維護(hù)網(wǎng)絡(luò)安全事件檢測(cè)規(guī)則已經(jīng)越來越不能滿足需求,本文提出了一種自動(dòng)化生成網(wǎng)絡(luò)安全關(guān)聯(lián)規(guī)則的方法,構(gòu)建了一個(gè)自動(dòng)化離線生成關(guān)聯(lián)規(guī)則的框架NSRAG,在該框架下,規(guī)則維護(hù)人員無(wú)需手工編制規(guī)則,只需執(zhí)行或重放一次攻擊就行了,我們使用defcon17數(shù)據(jù)集進(jìn)行關(guān)聯(lián)規(guī)則的挖掘?qū)嶒?yàn)和有效性測(cè)試,defcon17數(shù)據(jù)集是2009年第17屆defcon大會(huì)上,對(duì)黑客競(jìng)賽時(shí)的攻擊流量的捕獲和存檔,該數(shù)據(jù)集包含了大量真實(shí)的攻擊數(shù)據(jù)。實(shí)驗(yàn)結(jié)果證明NSRAG可以根據(jù)網(wǎng)絡(luò)攻擊流量自動(dòng)生成規(guī)則,減少了對(duì)網(wǎng)絡(luò)攻擊知識(shí)的依賴,提高了網(wǎng)絡(luò)安全事件關(guān)聯(lián)規(guī)則增加的效率。
參考文獻(xiàn):
[1] AlienVault LLC. http://www.alienvault.com/community.php?section=Home.
[2] JBoss Community. http://www.jboss.org/drools.
[3] Risto Vaarandi. http://simple-evcorr.sourceforge.net/.
[4] ArcSight, Inc. http://www.arcsight.com/press/release/arcsight-announces-arcsight-express/