彭夢(mèng)停 胡建偉 崔艷鵬
(西安電子科技大學(xué)網(wǎng)絡(luò)與信息安全學(xué)院 陜西 西安 710000)
盡管IDS在提高計(jì)算機(jī)網(wǎng)絡(luò)安全性方面起著關(guān)鍵作用,但也存在一些缺陷,包括警報(bào)泛濫、誤報(bào)、產(chǎn)生不相關(guān)的警報(bào)有限的可擴(kuò)展性、缺乏互操作性,以及無(wú)法關(guān)聯(lián)并發(fā)現(xiàn)原始警報(bào)之間的因果關(guān)系,無(wú)法檢測(cè)到多步驟攻擊[1]。
基于上述缺點(diǎn),需要一種主動(dòng)報(bào)警關(guān)聯(lián)系統(tǒng),來(lái)從海量的原始警報(bào)中,提取重要的攻擊場(chǎng)景,清晰地識(shí)別攻擊者的意圖[2]。本文結(jié)合文獻(xiàn)[1]的研究成果將提取攻擊場(chǎng)景的方法分為三組:基于相似度[3-4]、基于序列[5-7]和基于案例的方法[8-9]。
基于相似性的技術(shù)旨在通過屬性或時(shí)間相似性來(lái)聚合警報(bào)。主要的理論基礎(chǔ)是類似的警報(bào)有相同的起因或者對(duì)監(jiān)視的系統(tǒng)具有類似的影響。如何為每個(gè)屬性定義一個(gè)合適的相似度函數(shù)是關(guān)鍵問題。它們的算法基于簡(jiǎn)單的邏輯比較,比其他類別的復(fù)雜度小。這類方法也可以一定程度上減少警報(bào)總數(shù)。但是他們只是在屬性級(jí)別工作,并且無(wú)法檢測(cè)警報(bào)之間的因果關(guān)系,發(fā)現(xiàn)問題的根本原因。比如文獻(xiàn)[10]提出了一個(gè)基于模糊推理規(guī)則的提取多步攻擊場(chǎng)景的自適應(yīng)框架。他們的模型由兩個(gè)主要部分組成,即在線模糊聚類和模糊事件間模式匹配。第一個(gè)組件的作用是使用相似性分?jǐn)?shù)將生成的低級(jí)警報(bào)聚類到模糊事件中。下一個(gè)組件通過發(fā)現(xiàn)其中的模糊模式來(lái)為第一個(gè)組件提供歷史低級(jí)警報(bào)的關(guān)聯(lián)性。由于它們使用了相似性的方法工作,所以不能檢測(cè)到未知的攻擊模式。
基于案例的關(guān)聯(lián)方法依賴于表示場(chǎng)景的知識(shí)庫(kù)。這種類型的許多關(guān)聯(lián)技術(shù)已經(jīng)實(shí)現(xiàn),其中大多數(shù)都試圖根據(jù)已知的場(chǎng)景模板來(lái)關(guān)聯(lián)警報(bào)。這些模板通過使用定義的專家規(guī)則或關(guān)聯(lián)語(yǔ)言表達(dá),或者使用機(jī)器學(xué)習(xí)、數(shù)據(jù)挖掘技術(shù)來(lái)推斷。比如一些研究工作試圖設(shè)計(jì)和實(shí)現(xiàn)一種用于描述已知攻擊場(chǎng)景的語(yǔ)言[11]。盡管這些語(yǔ)言提供了描述攻擊場(chǎng)景的標(biāo)準(zhǔn)方法,但它們限制了用戶只能識(shí)別特定和已知的場(chǎng)景。
在基于序列的方法中,警報(bào)基于因果關(guān)系相互關(guān)聯(lián)。序列相關(guān)性可以細(xì)分為幾個(gè)主要類別[1],取決于如何表示建模的場(chǎng)景。數(shù)據(jù)挖掘、前提/后果條件、圖形、馬爾可夫模型、貝葉斯網(wǎng)絡(luò)、神經(jīng)網(wǎng)絡(luò)和其他技術(shù),這些方法的主要優(yōu)點(diǎn)是它們能夠檢測(cè)復(fù)雜的攻擊場(chǎng)景,發(fā)現(xiàn)新的未知攻擊場(chǎng)景,以及它們對(duì)異構(gòu)資源的可擴(kuò)展性和可用性。但是,這些方法中的大多數(shù)都會(huì)出現(xiàn)關(guān)聯(lián)誤報(bào),有兩個(gè)可能的原因:處理邏輯不當(dāng)和傳感器警報(bào)的質(zhì)量不足。比如文獻(xiàn)[12]使用貝葉斯網(wǎng)絡(luò)來(lái)訓(xùn)練警報(bào)之間的關(guān)聯(lián)概率,并構(gòu)造攻擊場(chǎng)景ET庫(kù)。在實(shí)時(shí)處理警報(bào)時(shí),使用和構(gòu)造ET樹一樣的方法來(lái)構(gòu)造攻擊場(chǎng)景樹AT。將實(shí)時(shí)警報(bào)流中沒有構(gòu)成AT樹的警報(bào)作為訓(xùn)練數(shù)據(jù)重新用貝葉斯網(wǎng)絡(luò)進(jìn)行訓(xùn)練,加入到ET庫(kù)中,這完成了對(duì)未知攻擊的學(xué)習(xí)。但缺點(diǎn)是構(gòu)造ET樹的算法復(fù)雜,資源消耗高,且對(duì)未知攻擊的處理不夠準(zhǔn)確。文獻(xiàn)[13]將警報(bào)因果關(guān)聯(lián)圖作為知識(shí)庫(kù),線下構(gòu)建因果關(guān)聯(lián)樹,線上實(shí)時(shí)接收新警報(bào),在因果關(guān)聯(lián)樹中搜索相關(guān)的前一個(gè)警報(bào)。這個(gè)方法的優(yōu)點(diǎn)是系統(tǒng)對(duì)每個(gè)警報(bào)都能高效地處理,隨著警報(bào)數(shù)量的增加,處理時(shí)間并沒有增多。不足之處在于提取攻擊場(chǎng)景的準(zhǔn)確率不夠高,攻擊者試圖隱藏攻擊步驟時(shí),檢測(cè)結(jié)果不是很完整。而且這個(gè)系統(tǒng)不能提取未知的攻擊場(chǎng)景。文獻(xiàn)[14]提出了一種用于提取攻擊場(chǎng)景的數(shù)據(jù)挖掘框架,由三部分組成:挖掘關(guān)聯(lián)規(guī)則、查找頻繁項(xiàng)集和聚類。但其中Apriori算法提取頻繁項(xiàng)集的情節(jié)耗時(shí)太大。文獻(xiàn)[15]提出了一個(gè)集成的智能安全事件關(guān)聯(lián)分析系統(tǒng)KGBIAC,使用知識(shí)圖來(lái)表示和存儲(chǔ)網(wǎng)絡(luò)安全信息,包括CVE漏洞、警報(bào)、硬件資源等。這個(gè)系統(tǒng)的優(yōu)點(diǎn)是能整合所有的上下文信息來(lái)進(jìn)行關(guān)聯(lián),信息來(lái)源更加全面。但是需要事先構(gòu)建知識(shí)庫(kù)。
另外,以上的方法基本在減少警報(bào)數(shù)量方面做的工作很少,但這是關(guān)聯(lián)攻擊階段前非常重要的一步。他們?cè)趯?shí)驗(yàn)中沒有將同一階段的警報(bào)全部聚類,而是只選取了一個(gè)警報(bào)。這樣與真實(shí)的情況不太相符。
本文針對(duì)上述各種技術(shù)存在的不足,考慮到基于序列方法的優(yōu)點(diǎn),研究了警報(bào)內(nèi)部的各種冗余關(guān)系以及數(shù)據(jù)挖掘模型來(lái)解決上述的問題。具體提出的算法包括:挖掘強(qiáng)關(guān)聯(lián)規(guī)則生成因果關(guān)聯(lián)概率表、多步驟關(guān)聯(lián)。本文算法能有效地壓縮警報(bào)數(shù)量、聚類同一階段的警報(bào)。在不依靠專家知識(shí)的情況下,能實(shí)時(shí)提取單線攻擊場(chǎng)景、識(shí)別復(fù)雜的批量攻擊和跳板攻擊,實(shí)時(shí)學(xué)習(xí)未知的攻擊路線。
本文提取攻擊場(chǎng)景最主要的步驟如圖1所示。(1)訓(xùn)練已知和未知的攻擊場(chǎng)景得到關(guān)聯(lián)概率表,由組件1完成;(2)實(shí)時(shí)聚類同一個(gè)階段的警報(bào),提取復(fù)雜的攻擊場(chǎng)景,由組件2完成。
圖1 提取攻擊場(chǎng)景
在本文算法中用到的概念有窗口、支持度、關(guān)聯(lián)規(guī)則、因果關(guān)聯(lián)概率、原始警報(bào)、攻擊階段、超級(jí)警報(bào),下面將介紹這些概念。
滑動(dòng)窗口:win_size是窗口大小,如果[Ai,Ai+1,…,Ai+win_size-1]是某一個(gè)窗口,則下一個(gè)窗口會(huì)在警報(bào)序列中與這個(gè)窗口共享win_sub個(gè)警報(bào),也就是向后滑動(dòng)Δ=win_size-win_sub個(gè)警報(bào),為[Ai+Δ,Ai+Δ+1,…,Ai+Δ+win_size-1]。
一般在多步驟攻擊中,上一階段的攻擊結(jié)果是下一階段攻擊的原因,這就叫作警報(bào)之間的因果關(guān)系,兩者相關(guān)的概率為因果關(guān)聯(lián)概率。關(guān)聯(lián)規(guī)則是數(shù)據(jù)挖掘方法之一,關(guān)聯(lián)規(guī)則的可信度可以被視為因果關(guān)聯(lián)概率。我們定義以下概念:
順序集:數(shù)據(jù)流中警報(bào)的有序列表,如A=[A1,A2,…,An]。每個(gè)窗口都是一個(gè)順序集。
項(xiàng)目集:順序集的子集t=[t1,t2,…,tm],設(shè)1≤t1 支持度sup:順序集中項(xiàng)目集出現(xiàn)的次數(shù)。 最小支持度min_sup:順序集中項(xiàng)目集最少出現(xiàn)的次數(shù)。 關(guān)聯(lián)規(guī)則:是形如Ai=>Aj的蘊(yùn)含式,其中Ai和Aj是順序集A中的項(xiàng),且Ai∩Aj=?。 強(qiáng)關(guān)聯(lián)規(guī)則:滿足最小支持度和關(guān)聯(lián)概率閾值T的關(guān)聯(lián)規(guī)則。 原始警報(bào):每個(gè)數(shù)據(jù)源生成的事件日志格式不一樣。對(duì)于同一種攻擊手段,不同的數(shù)據(jù)源會(huì)產(chǎn)生不同的警報(bào)類型,容易誤判。因此需要標(biāo)準(zhǔn)化原始警報(bào),存儲(chǔ)以下屬性:時(shí)間戳、警報(bào)類型、源IP、目的IP、源端口、目的端口、數(shù)據(jù)包內(nèi)容、優(yōu)先級(jí)、攻擊階段。 攻擊階段:一般數(shù)據(jù)源不會(huì)記錄攻擊階段這一屬性。我們定義了警報(bào)類型與攻擊階段的對(duì)應(yīng)表。實(shí)際上不同的攻擊者使用的攻擊手段有很大的主觀性,每個(gè)類型的警報(bào)可能會(huì)出現(xiàn)在一個(gè)或多個(gè)階段,因此警報(bào)類型與攻擊階段設(shè)定為一對(duì)多的關(guān)系。本文在不脫離PTES滲透流程[16]的基礎(chǔ)上,提出了更加細(xì)化、更易理解的13個(gè)攻擊階段:枚舉、主機(jī)探測(cè)、服務(wù)探測(cè)、漏洞探測(cè)、用戶訪問、系統(tǒng)或管理員訪問、系統(tǒng)妥協(xié)、敏感信息獲取、主動(dòng)遠(yuǎn)程通信、木馬活動(dòng)、破壞可用性、破壞完整性、破壞保密性。 超級(jí)警報(bào):超級(jí)警報(bào)由原始警報(bào)或超級(jí)警報(bào)合并而成,具有以下屬性:警報(bào)類型ID的集合、開始時(shí)間、結(jié)束時(shí)間、攻擊階段、源IP、目的IP、端口。合并時(shí)需要更新類型、端口、源IP、目的IP為警報(bào)流中相應(yīng)屬性的非重復(fù)合集,取開始時(shí)間為警報(bào)流的最小時(shí)間,結(jié)束時(shí)間為警報(bào)流的最大時(shí)間,取攻擊階段為警報(bào)流中出現(xiàn)頻率最高的階段。為了節(jié)省內(nèi)存,訓(xùn)練關(guān)聯(lián)概率時(shí)只需要記錄超級(jí)警報(bào)的類型。 在分析了大量典型的攻擊數(shù)據(jù)包后,我們發(fā)現(xiàn)同一秒內(nèi)發(fā)生在同一攻擊者和受害者之間的警報(bào)有兩種情況:(1) 所有警報(bào)的類型完全一樣,稱為重復(fù)警報(bào)。原因是攻擊者在很短的時(shí)間內(nèi)使用了同樣的手段但嘗試了不同的參數(shù),進(jìn)行了同一類型的攻擊,或者同一個(gè)攻擊的多個(gè)數(shù)據(jù)包觸發(fā)了多條相同的警報(bào)。(2) 警報(bào)類型不一樣,稱為并發(fā)警報(bào)。原因是IDS檢測(cè)引擎使用了多條規(guī)則匹配到了同一時(shí)刻的同一攻擊行為,或者多個(gè)檢測(cè)引擎對(duì)單個(gè)事件產(chǎn)生了多個(gè)警報(bào)。 本文基于以下幾個(gè)理論來(lái)聚類同一階段的警報(bào): 1) 重復(fù)警報(bào)和并發(fā)警報(bào)屬于同一攻擊階段。 2) 超級(jí)警報(bào)序列中連續(xù)且類型相同的警報(bào)可以認(rèn)定屬于同一攻擊階段,稱為反復(fù)警報(bào)。 3) 如果序列中相鄰的超級(jí)警報(bào)經(jīng)常同時(shí)且無(wú)序出現(xiàn),這就說明二者屬于同一攻擊階段,我們稱為相近警報(bào)。 我們將單一攻擊者和受害者之間的攻擊場(chǎng)景稱為單線攻擊場(chǎng)景。使用關(guān)聯(lián)概率表來(lái)連接屬于同一單線攻擊場(chǎng)景的攻擊階段,這里一個(gè)超級(jí)警報(bào)代表一個(gè)攻擊階段。設(shè)置回溯因子p,如果第i個(gè)超級(jí)警報(bào)與第i+n(1≤n≤p)個(gè)超級(jí)警報(bào)之間關(guān)聯(lián)概率大于等于T,則認(rèn)定兩者為同一場(chǎng)景中的警報(bào)。 一般文獻(xiàn)提出的方法只能做到提取單線攻擊的程度。我們另外提出了識(shí)別跳板攻擊場(chǎng)景和批量攻擊場(chǎng)景的方法。如果兩條單線攻擊路線有相同的攻擊者和受害者,攻擊的前面階段使用的手段類似,且發(fā)生的時(shí)間非常相近,則認(rèn)為二者屬于同一個(gè)批量攻擊場(chǎng)景。如果兩條單線攻擊路線滿足以下2個(gè)條件,則說明二者是同一個(gè)跳板攻擊場(chǎng)景: 1) 原始攻擊者滲透肉雞(A->B)的手段與肉雞滲透其他主機(jī)(B->C,B->D)的手段一樣。 2)A->B攻擊場(chǎng)景發(fā)生時(shí)間在前,B->C(或B->D)攻擊場(chǎng)景發(fā)生時(shí)間在后,且時(shí)間間隔在一定閾值內(nèi)。 組件2接收到實(shí)時(shí)的警報(bào)流,其中會(huì)有部分警報(bào)不滿足關(guān)聯(lián)條件,不能被指定到任一條攻擊路線中。如果這個(gè)警報(bào)的優(yōu)先級(jí)比較高,則以該警報(bào)為中心,取包含該警報(bào)的三個(gè)窗口大小的警報(bào)流送入關(guān)聯(lián)概率訓(xùn)練組件進(jìn)行訓(xùn)練,如果得到新的關(guān)聯(lián)警報(bào)對(duì),則更新關(guān)聯(lián)概率數(shù)據(jù)庫(kù)。這種做法不會(huì)忽略威脅程度比較高的攻擊手段。取三個(gè)窗口大小的序列,是為了滿足訓(xùn)練關(guān)聯(lián)算法中的回溯條件,以便得到比較正確的關(guān)聯(lián)警報(bào)對(duì)。 訓(xùn)練關(guān)聯(lián)概率的過程如圖2所示,本文基于數(shù)據(jù)挖掘的方式,將已知攻擊階段的原始警報(bào)流作為輸入,合并重復(fù)警報(bào)、并發(fā)警報(bào)、反復(fù)警報(bào),找出超級(jí)警報(bào)的強(qiáng)關(guān)聯(lián)規(guī)則,最后得到原始警報(bào)之間的關(guān)聯(lián)概率。其中合并警報(bào)的過程可以有效減少警報(bào)的數(shù)量,提升計(jì)算關(guān)聯(lián)概率的效率。 圖2 訓(xùn)練關(guān)聯(lián)概率 下面是訓(xùn)練算法的步驟。 步驟1原始警報(bào)流按時(shí)間排序。 步驟2以整1秒的警報(bào)流為一個(gè)窗口,合并重復(fù)警報(bào)和并發(fā)警報(bào)為超級(jí)警報(bào)Ai。具體處理如下: 1) 遇到n個(gè)重復(fù)的警報(bào),取超級(jí)警報(bào)Ai的類型為其中任一警報(bào)的類型。如果n≥min_sup,記錄min_sup個(gè)Ai,否則記錄n個(gè)Ai。 2) 遇到并發(fā)警報(bào),取超級(jí)警報(bào)Ai的類型為警報(bào)流所有類型的并集,記錄Ai。 步驟3將超級(jí)警報(bào)按照時(shí)間排序,如果連續(xù)且類型相同的警報(bào)Ai(反復(fù)警報(bào))數(shù)量大于等于min_sup,則合并為min_sup個(gè)警報(bào)Ai。 步驟4將超級(jí)警報(bào)序列按照1.1節(jié)中滑動(dòng)窗口的規(guī)則分為多個(gè)窗口。每個(gè)窗口中找出超級(jí)警報(bào)之間的強(qiáng)關(guān)聯(lián)規(guī)則,計(jì)算相應(yīng)的關(guān)聯(lián)概率。假設(shè)Ai在前Aj在后,計(jì)算超級(jí)警報(bào)Ai和Aj之間的關(guān)聯(lián)概率時(shí): 1) 如果Ai是Aj的子集,則記錄關(guān)聯(lián)概率為conf(Ai=>(Aj-Ai))=probability。 2) 如果Aj是Ai的子集,則略過不記錄。 步驟5將每個(gè)超級(jí)警報(bào)中的原始警報(bào)a分離出來(lái),生成原始警報(bào)類型之間的關(guān)聯(lián)概率表,形如conf(ai=>aj)=probability。如果遇到相同的警報(bào)對(duì),數(shù)據(jù)庫(kù)中對(duì)應(yīng)的概率值會(huì)被覆蓋。 識(shí)別攻擊場(chǎng)景的過程如圖3所示。將實(shí)時(shí)的原始警報(bào)流作為輸入,通過合并重復(fù)警報(bào)、并發(fā)警報(bào)、反復(fù)警報(bào)、相近警報(bào)來(lái)生成超級(jí)警報(bào),這也是聚類初步的攻擊階段以及壓縮警報(bào)的過程。再利用2.1節(jié)訓(xùn)練得到的關(guān)聯(lián)概率表連接相關(guān)的攻擊階段,得到單線攻擊場(chǎng)景。最后判斷是否滿足跳板攻擊和批量攻擊的特征,合并攻擊路線。 圖3 識(shí)別攻擊場(chǎng)景算法 本文取35 000個(gè)實(shí)時(shí)的原始警報(bào)為一個(gè)批次,下面是提取批次內(nèi)攻擊場(chǎng)景的算法步驟: 步驟1將一個(gè)批次內(nèi)實(shí)時(shí)的警報(bào)流按照源IP和目的IP分類,每一類按照時(shí)間排序,進(jìn)行下面的步驟。 步驟2和2.1節(jié)算法的步驟2一樣合并重復(fù)警報(bào)和并發(fā)警報(bào)。 步驟3將超級(jí)警報(bào)序列中的反復(fù)警報(bào)合并為一個(gè)超級(jí)警報(bào)。 步驟4對(duì)相鄰的超級(jí)警報(bào)Ai和Ai+1,做如下處理: 1) 如果Ai[type]是Ai+1[type]的子集,令A(yù)i+1[type]=Ai+1[type]-Ai[type]。 2) 如果Ai+1[type]是Ai[type]的子集,令A(yù)i[type]=Ai[type]-Ai+1[type]。 3) 否則令A(yù)i[type]=Ai[type]-Ai+1[type],Ai+1[type]=Ai+1[type]-Ai[type]。 經(jīng)過上述3個(gè)處理后,如果Ai中任一警報(bào)ai與Ai+1中任一警報(bào)aj的相互關(guān)聯(lián)概率滿足: ccm[(ai,aj)]≥T&&ccm[(aj,ai)]≥T (其中ccm是關(guān)聯(lián)概率表),則認(rèn)為Ai和Ai+1為相近警報(bào),可以合并為一個(gè)超級(jí)警報(bào)。 步驟5遍歷超級(jí)警報(bào)序列,如果第k個(gè)超級(jí)警報(bào)與第k+n(1≤n≤p)個(gè)超級(jí)警報(bào)相關(guān)(p是回溯因子),即兩者取任一原始警報(bào)ai和aj,如果ccm[(ai,aj)]≥T,則將二者連接為二元序列。將所有二元序列按先后順序首尾相連,得到完整的關(guān)聯(lián)序列。對(duì)于序列中不滿足關(guān)聯(lián)條件的超級(jí)警報(bào),如果其優(yōu)先級(jí)比較高,則以該警報(bào)為中心,取包含該警報(bào)的三個(gè)窗口大小的原始警報(bào)流送入組件一進(jìn)行訓(xùn)練,更新關(guān)聯(lián)概率數(shù)據(jù)庫(kù)。 步驟6合并路徑,處理以下特殊情況: 1) 去掉子集序列。有些序列是別的序列的子集,反映出來(lái)的場(chǎng)景只是全部攻擊過程中的一個(gè)片段。 2) 合并環(huán)路。有些序列內(nèi)部會(huì)有路徑成環(huán)的情況,比如A->B->C->A。 步驟7查找數(shù)據(jù)庫(kù)中同類的攻擊序列(源IP和目的IP相同),如果其最后一個(gè)超級(jí)警報(bào)與當(dāng)前序列的第一個(gè)超級(jí)警報(bào)相關(guān)(判斷方法同步驟5),則將兩個(gè)序列合并成一個(gè)。 步驟8對(duì)得到的每一個(gè)攻擊序列,按照步驟9-步驟10合并批量攻擊序列。按照步驟11合并跳板攻擊序列。 步驟9在步驟8得到的所有序列中查找滿足源IP相同且第一個(gè)攻擊階段的開始時(shí)間相差在一定閾值t內(nèi)的序列。實(shí)驗(yàn)中為了盡可能不漏掉任何一條可能的場(chǎng)景序列,取t為5分鐘。 步驟10對(duì)于步驟9得到的序列,取最長(zhǎng)的為基準(zhǔn)序列,其他序列與其進(jìn)行每個(gè)攻擊階段從前往后的比較,滿足以下條件則進(jìn)行階段合并: 1) 攻擊階段的警報(bào)類型相似,即互相為子集或者相似警報(bào)的比率大于等于r,實(shí)驗(yàn)中r取80%。 2) 攻擊階段的警報(bào)發(fā)生時(shí)間相近,即開始時(shí)間或者結(jié)束時(shí)間的差值在一定閾值內(nèi),實(shí)驗(yàn)中設(shè)定為5分鐘。 步驟11遍歷步驟8得到的所有序列,如果兩條序列的攻擊階段一樣,接著比較兩者同一階段的超級(jí)警報(bào),如果滿足下面的條件,則進(jìn)行序列合并: 1) 警報(bào)類型相似,即互相為子集或者相似警報(bào)比率大于等于r,實(shí)驗(yàn)中r取80%。 2) 警報(bào)發(fā)生時(shí)間有先后順序,跳板路線(跳板主機(jī)滲透其他主機(jī))時(shí)間相對(duì)在后。 步驟12將所有攻擊序列存入數(shù)據(jù)庫(kù)。 DARPA 2000數(shù)據(jù)集已經(jīng)在提取攻擊場(chǎng)景領(lǐng)域的許多研究工作中使用[3-4]。DARPA 2000數(shù)據(jù)集由LLDDoS 1.0和LLDDoS 2.0.2兩個(gè)子數(shù)據(jù)集組成,與多步DDoS攻擊場(chǎng)景相關(guān)。在本文中,我們使用它們來(lái)測(cè)試提取多步攻擊場(chǎng)景方法。 我們使用LLDDoS 1.0和LLDDoS 2.0.2兩個(gè)數(shù)據(jù)集進(jìn)行了實(shí)驗(yàn),其中2.2節(jié)算法步驟1-步驟7從LLDOS1.0數(shù)據(jù)集中提取了總共20條單線攻擊場(chǎng)景。目標(biāo)IP是172.16.112.50、172.16.112.10、172.16.115.20的3條攻擊路線共包括主機(jī)探測(cè)、服務(wù)探測(cè)、用戶訪問、主動(dòng)遠(yuǎn)程通信四個(gè)攻擊階段;目標(biāo)IP是172.16.112.105、172.16.112.194等的17條攻擊路線共包括主機(jī)探測(cè)、服務(wù)探測(cè)兩個(gè)攻擊階段。這20條攻擊路線在前兩個(gè)階段是有批量行為特征的。2.2節(jié)算法步驟9-步驟10對(duì)上述20條攻擊路線進(jìn)行關(guān)聯(lián)處理,最后得到一個(gè)更加準(zhǔn)確、更加宏觀的攻擊場(chǎng)景,更符合實(shí)際情況??梢暬缑?見圖4)中將展示攻擊者202.77.162.213在一定時(shí)間段內(nèi)對(duì)172.16.115.20等20個(gè)目標(biāo)主機(jī)的詳細(xì)攻擊信息,包括攻擊階段、產(chǎn)生的警報(bào)、目標(biāo)端口、相關(guān)數(shù)據(jù)包內(nèi)容等,可以幫助管理員回溯攻擊者的攻擊路徑、明白攻擊者的意圖并及時(shí)響應(yīng)。 圖4 批量攻擊場(chǎng)景 從圖4中可以看出,我們的方法能很好地聚類同一階段的警報(bào)。文獻(xiàn)[12]使用基于相似性的預(yù)處理方法,該方法將在一定時(shí)間閾值內(nèi)特征相似的警報(bào)整合為一個(gè)超級(jí)警報(bào)。我們用LLDOS 2.0.2的數(shù)據(jù)集對(duì)這個(gè)方法實(shí)驗(yàn)后,提取出圖5的攻擊場(chǎng)景。圖中不同編號(hào)的實(shí)線代表不同的攻擊路線,數(shù)字代表警報(bào)類型ID(虛線右端的不屬于實(shí)驗(yàn)結(jié)果)??梢钥吹剑摲椒軐⒃季瘓?bào)聚類到一個(gè)攻擊場(chǎng)景中,但每個(gè)原始警報(bào)都可以當(dāng)成一個(gè)攻擊階段,這樣的聚類不夠準(zhǔn)確直觀。 圖5 基于相似性方法 本文通過為不同的數(shù)據(jù)源配置插件文件來(lái)標(biāo)準(zhǔn)化原始警報(bào),配置中可以通過排除某些事件類別、事件級(jí)別,通過定義正則表達(dá)式或使用策略來(lái)丟棄噪聲事件。在提取攻擊場(chǎng)景的算法中,通過合并重復(fù)警報(bào)、并發(fā)警報(bào)、反復(fù)警報(bào)、相近警報(bào)來(lái)將原始警報(bào)聚類成超級(jí)警報(bào),這個(gè)過程能有效壓縮警報(bào)且不影響包含的安全信息。表1是對(duì)于數(shù)據(jù)集LLDOS 1.0和LLDOS 2.0.2進(jìn)行提取攻擊場(chǎng)景實(shí)驗(yàn)后的數(shù)據(jù)統(tǒng)計(jì),著重體現(xiàn)警報(bào)數(shù)量的變化情況。 表1 壓縮警報(bào)實(shí)驗(yàn)數(shù)據(jù) 提取攻擊場(chǎng)景方法的各個(gè)階段對(duì)數(shù)據(jù)集LLDOS 1.0和LLDOS 2.0.2壓縮警報(bào)的比率見表2。文獻(xiàn)[12]中提出的數(shù)據(jù)預(yù)處理方法對(duì)兩個(gè)數(shù)據(jù)集壓縮警報(bào)的比率分別為25.77%和32.61%,而本文的處理比率分別達(dá)到97.56%和95.51%,效果更好。 表2 各個(gè)階段壓縮警報(bào)的比率 針對(duì)目前IDS的缺陷,我們提出了一種高效的提取攻擊場(chǎng)景的方法,具有以下優(yōu)點(diǎn): 1) 不需要專家知識(shí),利用數(shù)據(jù)挖掘來(lái)關(guān)聯(lián)警報(bào)。 2) 能有效聚類同一階段的警報(bào),極大地壓縮警報(bào)數(shù)量,提高關(guān)聯(lián)效率。 3) 算法的簡(jiǎn)單性降低內(nèi)存消耗和計(jì)算開銷。 4) 能提取復(fù)雜的跳板攻擊和批量攻擊場(chǎng)景。 5) 能實(shí)時(shí)學(xué)習(xí)未知的攻擊場(chǎng)景。 本文提出的解決方案還有不少有待補(bǔ)充和完善之處,比如:在挖掘強(qiáng)關(guān)聯(lián)規(guī)則時(shí),使用恒定長(zhǎng)度的窗口大小,可能會(huì)剛好錯(cuò)過關(guān)聯(lián)警報(bào)對(duì)。1.2 聚類階段警報(bào)
1.3 關(guān)聯(lián)攻擊階段
1.4 檢測(cè)未知攻擊
2 提取攻擊場(chǎng)景算法實(shí)現(xiàn)
2.1 訓(xùn)練關(guān)聯(lián)概率
2.2 識(shí)別攻擊場(chǎng)景
3 實(shí)驗(yàn)和性能評(píng)估
3.1 提取攻擊場(chǎng)景性能評(píng)估
3.2 警報(bào)壓縮性能評(píng)估
4 結(jié) 語(yǔ)