劉貞宇,陳羽中,郭 昆,張毓東
(福州大學(xué) 數(shù)學(xué)與計算機(jī)科學(xué)學(xué)院,福州 350116)
(福州大學(xué) 福建省網(wǎng)絡(luò)計算與智能信息處理重點(diǎn)實(shí)驗(yàn)室,福州 350116)E-mail:yzchen@fzu.edu.cn
在現(xiàn)今網(wǎng)絡(luò)安全形勢下,政府和企業(yè)組織為應(yīng)對入侵者,通常需要部署防火墻、入侵檢測與防御系統(tǒng)等多種網(wǎng)絡(luò)安全防護(hù)設(shè)備,以保護(hù)信息資產(chǎn)安全.這些網(wǎng)絡(luò)安全防護(hù)設(shè)備在運(yùn)行過程中會產(chǎn)生大量信息等級較低的網(wǎng)絡(luò)安全警報日志[1],而網(wǎng)絡(luò)攻擊建模技術(shù)旨在通過對網(wǎng)絡(luò)安全警報日志進(jìn)行融合及關(guān)聯(lián)關(guān)系分析,生成網(wǎng)絡(luò)攻擊圖,發(fā)現(xiàn)網(wǎng)絡(luò)攻擊的特點(diǎn)和規(guī)律,提高應(yīng)對各種突發(fā)網(wǎng)絡(luò)攻擊事件的能力.
現(xiàn)有的網(wǎng)絡(luò)攻擊建模算法,主要基于警報關(guān)聯(lián)或聚類兩類方法.警報關(guān)聯(lián)方法的主要思想是將設(shè)備的日志記錄聚合,形成信息層級高的元警報,再通過相似度計算等方式將元警報互相關(guān)聯(lián),構(gòu)建攻擊模型.早期基于警報關(guān)聯(lián)的網(wǎng)絡(luò)攻擊建模算法依賴人工輸入先驗(yàn)數(shù)據(jù),當(dāng)日志規(guī)模增大時,難以生成攻擊模型.聚類算法則通過聚類規(guī)則,自動關(guān)聯(lián)警報并保存在相應(yīng)的數(shù)據(jù)結(jié)構(gòu)中(如樹結(jié)構(gòu)或圖結(jié)構(gòu)),無需人工輸入先驗(yàn)數(shù)據(jù),但存在生成的網(wǎng)絡(luò)攻擊圖完備性不足的問題[2].近年的一些研究工作將過程挖掘方法應(yīng)用到網(wǎng)絡(luò)攻擊建模中.過程挖掘方法依據(jù)日志中記錄的實(shí)例執(zhí)行信息構(gòu)建工作流模型,主要用于過程分析.過程挖掘方法能夠有效挖掘網(wǎng)絡(luò)安全警報日志中包含的具有規(guī)律性的攻擊模式.然而現(xiàn)有的研究工作為了保證攻擊模型的完備性,所建立的網(wǎng)絡(luò)攻擊圖包含大量結(jié)點(diǎn)和邊,雖然能夠覆蓋網(wǎng)絡(luò)入侵者的攻擊行為,但是過于復(fù)雜的網(wǎng)絡(luò)攻擊圖幾乎無法進(jìn)行人工分析[3,4],而人工分析是目前抵御網(wǎng)絡(luò)攻擊的關(guān)鍵步驟.雖然有一些研究工作會進(jìn)行模型簡化或分割,但是存在效率低下、丟失攻擊圖部分信息的問題.此外,在過程挖掘領(lǐng)域,針對海量數(shù)據(jù)處理的相關(guān)研究比較少,現(xiàn)有研究主要對原始數(shù)據(jù)進(jìn)行合并重復(fù)警報、對警報賦予優(yōu)先級等方法減少計算壓力[5,6],因此有必要引入分布式架構(gòu)提高對大規(guī)模網(wǎng)絡(luò)安全日志的處理能力[7,8].針對現(xiàn)有網(wǎng)絡(luò)攻擊建模方法存在的問題,本文提出一種基于啟發(fā)式過程挖掘與圖分割的網(wǎng)絡(luò)攻擊建模方法,主要工作如下:
1)提出了一種基于過程挖掘的攻擊圖生成方法(HPMA,Heuristic ProcessMining for AttackModeling),基于過程挖掘方法對網(wǎng)絡(luò)安全警報日志進(jìn)行融合,分析網(wǎng)絡(luò)安全警報日志間的順序依賴關(guān)系和短循環(huán)關(guān)系,檢測每一個網(wǎng)絡(luò)攻擊行為的前驅(qū)和后繼行為、各個事件中隱含的XOR/AND關(guān)系,從而獲取各個攻擊行為間的邏輯關(guān)系,生成網(wǎng)絡(luò)攻擊圖.該方法能夠有效挖掘網(wǎng)絡(luò)安全警報日志的關(guān)聯(lián)關(guān)系,反映入侵者的攻擊行為和攻擊策略.
2)提出了一種針對復(fù)雜網(wǎng)絡(luò)攻擊圖的攻擊圖分割方法(HGSA,Heuristic GraphSegmentation for AttackModeling).該方法首先尋找網(wǎng)絡(luò)攻擊圖的分支結(jié)點(diǎn),從分支結(jié)點(diǎn)出發(fā)構(gòu)造網(wǎng)絡(luò)攻擊子圖,再根據(jù)所分割的網(wǎng)絡(luò)攻擊圖的結(jié)構(gòu),對生成的網(wǎng)絡(luò)攻擊子圖進(jìn)行補(bǔ)全.該方法在保留網(wǎng)絡(luò)攻擊圖的結(jié)構(gòu)信息的同時,降低了網(wǎng)絡(luò)攻擊圖的復(fù)雜度.
3)在上述方法基礎(chǔ)上,提出了基于MapReduce的分布式攻擊圖生成方法(HPMAoMR,HPMAoverMapReduce)以及基于Spark GraphX圖計算模型的分布式攻擊圖分割方法(HGSAoSG,HGSA over Spark GraphX),能夠有效解決大規(guī)模網(wǎng)絡(luò)安全警報日志的融合分析問題.
網(wǎng)絡(luò)攻擊建模旨在挖掘網(wǎng)絡(luò)安全警報日志間的關(guān)聯(lián)關(guān)系,并生成網(wǎng)絡(luò)攻擊圖.現(xiàn)有的研究工作主要基于警報關(guān)聯(lián)、聚類以及過程挖掘等方法[9].
警報關(guān)聯(lián)是網(wǎng)絡(luò)攻擊建模的核心方法之一,旨在關(guān)聯(lián)構(gòu)成攻擊步驟的低級別網(wǎng)絡(luò)安全日志警報,融合生成高級別的網(wǎng)絡(luò)安全警報(又稱元警報或超警報).Lee[10]等人提出了一種基于警報特征相似性的警報關(guān)聯(lián)算法.該方法過濾并聚合冗余警報,通過警報相似度確定是否將兩個警報關(guān)聯(lián)到元警報.Ning[11]提出了一種基于攻擊行為的前因和后果分析的警報關(guān)聯(lián)算法.該算法需要人工定義幾種類型攻擊的前因和后果,無法適用于大規(guī)模的網(wǎng)絡(luò)場景.上述研究工作僅實(shí)現(xiàn)網(wǎng)絡(luò)安全警報日志的關(guān)聯(lián),并未對關(guān)聯(lián)結(jié)果做進(jìn)一步分析與抽象.
近年來,一些研究工作從關(guān)聯(lián)的網(wǎng)絡(luò)安全警報日志中提取入侵者的攻擊模式,從而構(gòu)建網(wǎng)絡(luò)攻擊圖.Ahmadinejad等[12]提出一種二級混合模型的網(wǎng)絡(luò)攻擊建模算法,首先基于前因和后果的方法關(guān)聯(lián)警報,之后使用相似度聚類將未關(guān)聯(lián)的剩余警報關(guān)聯(lián)起來.Sadoddin等[13]通過FSP-Growth挖掘警報的頻繁模式來關(guān)聯(lián)警報.Lagzian等[14,15]則根據(jù)IP和攻擊方式將警報聚合到圖中,然后應(yīng)用Bit-AssocRule算法挖掘圖中的頻繁模式,實(shí)現(xiàn)警報間的關(guān)聯(lián).上述方法能夠提取入侵者的攻擊模式,但是融合層級較低,難以抽象出信息層級更高的網(wǎng)絡(luò)攻擊模型.
聚類是網(wǎng)絡(luò)攻擊建模廣泛采用的另一類方法.Spathoulas等[15]利用攻擊警報特征的相似性對警報進(jìn)行聚類,建立攻擊模型.Siraj等[16]采用基于PCA和期望最大化聚類算法對警報進(jìn)行聚類,構(gòu)建網(wǎng)絡(luò)攻擊圖.Alvarenga等[17]采用自頂向下的層次聚類算法對警報進(jìn)行聚類,得到網(wǎng)絡(luò)攻擊圖.上述基于聚類的網(wǎng)絡(luò)攻擊建模算法能夠提取入侵者的攻擊模式,但難以全面描述網(wǎng)絡(luò)攻擊的全過程,且存在所生成的網(wǎng)絡(luò)攻擊圖過于復(fù)雜的問題.
過程挖掘方法通過挖掘日志中的實(shí)例執(zhí)行記錄以構(gòu)建工作流模型,能夠在沒有過程模式先驗(yàn)知識的情況下挖掘工作流.由于入侵者進(jìn)行網(wǎng)絡(luò)攻擊的流程類似工作流,因此一些研究人員將過程挖掘方法應(yīng)用于網(wǎng)絡(luò)攻擊建模.Weijters等[18]提出了一種啟發(fā)式的過程挖掘方法,通過計算各種行為的順序頻次和邏輯規(guī)律,分析攻擊行為之間的依賴關(guān)系和邏輯關(guān)系.Alvarenga等[9]則將日志按照日期和攻擊目標(biāo)分組,使用過程挖掘方法從網(wǎng)絡(luò)安全警報日志中提取網(wǎng)絡(luò)入侵者的攻擊策略信息,建立網(wǎng)絡(luò)攻擊圖.上述方法能夠全面描繪網(wǎng)絡(luò)攻擊過程,但所生成的網(wǎng)絡(luò)攻擊圖仍過于復(fù)雜.
為了能夠完備描述安全日志中蘊(yùn)含的攻擊模式,現(xiàn)有的網(wǎng)絡(luò)攻擊建模方法得到的網(wǎng)絡(luò)攻擊圖過于復(fù)雜.為了提高網(wǎng)絡(luò)攻擊圖的可讀性,需要利用圖分割方法對網(wǎng)絡(luò)攻擊圖進(jìn)行處理.現(xiàn)有的圖分割方法主要分為近似解算法和精確解算法兩大類.近似解算法主要基于啟發(fā)式算法,如線性規(guī)劃、模擬退火算法、遺傳算法、蟻群算法、粒子群算法、譜聚類算法、K-L算法等.現(xiàn)有的圖分割算法主要用于復(fù)雜網(wǎng)絡(luò)分析、VLSI電路設(shè)計、并行計算等研究領(lǐng)域.但對于基于有向圖,前后結(jié)點(diǎn)聯(lián)系緊密的攻擊圖分割上并不適用.本文則提出一種基于攻擊圖幾何性質(zhì)的分割算法,對攻擊圖分割有著良好的效果.
過程挖掘技術(shù)能夠在沒有過程模式先驗(yàn)知識的情況下挖掘工作流.過程挖掘從依賴關(guān)系挖掘開始.設(shè)T為一次流程執(zhí)行案例(Case),A和B為該案例過程中的兩個事件(Event),又稱實(shí)例.
定義1.依賴關(guān)系.在過程P中,如果每一個從事件Ai到結(jié)束事件的有向路徑中都包含Aj,且Ai到Aj的路徑上不存在其他事件,則Aj依賴于Ai.
定義2.依賴值(Dependency Score).依賴值表示A和B之間存在依賴關(guān)系的置信度,記為A?wB.設(shè)W為案例T上的日志,A,B∈T,事件B的記錄在A之后,記為A>wB,則:
(1)
其中|A>wB|表示A>wB在日志W(wǎng)中的出現(xiàn)次數(shù).A?wB在-1到1之間取值.若出現(xiàn)負(fù)值,則表示可能存在相反關(guān)系B?wA.A與B之間的依賴關(guān)系是否存在可以通過公式(1)計算其置信度.比如,事件A后發(fā)生了事件B在日志中出現(xiàn)了55次,A?wB=55/56=0.982,則基本能確信其A與B存在著依賴關(guān)系.若存在某個噪聲數(shù)據(jù),使得B>wA出現(xiàn)了一次,則根據(jù)公式(1)計算可得A?wB=54/57=0.947.幾乎不影響置信度的計算結(jié)果.
在挖掘過程中,有可能出現(xiàn)同一個實(shí)例必須重復(fù)執(zhí)行多次的情況.這種情況在流程圖中稱為短循環(huán).較長的循環(huán)可以作為依賴關(guān)系用公式(1)有效挖掘.但是長度為1(如ABBBBBC)則需要通過公式(2)計算挖掘:
設(shè)W為事件T上的日志,A,B∈T,則:
(2)
其中|A>wA|為T中A>wA出現(xiàn)的次數(shù).
除了依賴關(guān)系和短循環(huán)關(guān)系外,過程挖掘算法還需要挖掘事件中的邏輯關(guān)系,如XOR/AND關(guān)系.例如,設(shè)在日志w中,A之后可能執(zhí)行B,也可能執(zhí)行C,則B和C存在AND關(guān)系;若B和C不會同時執(zhí)行,則B和C為XOR關(guān)系.挖掘這兩種邏輯關(guān)系,需要在流程執(zhí)行的過程中,通過A?wB∧C關(guān)系對其進(jìn)行判斷:
(3)
若B和C為AND關(guān)系,則B和C在案例中往往同時出現(xiàn),以BC的形式存在,A?wB∧C的值會接近1.若其為XOR關(guān)系,則B和C幾乎不會同時出現(xiàn)在同一個案例中,A?wB∧C的值接近0.通常,當(dāng)A?wB∧C<0.1時即判斷B和C為XOR關(guān)系[19].
本文提出的網(wǎng)絡(luò)攻擊建模方法主要包括網(wǎng)絡(luò)安全日志預(yù)處理、網(wǎng)絡(luò)攻擊圖生成、網(wǎng)絡(luò)攻擊圖分割三個步驟.
網(wǎng)絡(luò)安全日志預(yù)處理:對原始網(wǎng)絡(luò)安全日志進(jìn)行數(shù)據(jù)清洗、格式轉(zhuǎn)換等操作,去除噪聲與冗余,對日志數(shù)據(jù)進(jìn)行分組和聚合,轉(zhuǎn)換為過程挖掘算法所需數(shù)據(jù)格式.
網(wǎng)絡(luò)攻擊圖生成:使用啟發(fā)式過程挖掘算法,將日志警報數(shù)據(jù)融合為入侵者的攻擊模式數(shù)據(jù),建立網(wǎng)絡(luò)攻擊圖.
網(wǎng)絡(luò)攻擊圖分割:通過圖分割算法,在保留原網(wǎng)絡(luò)攻擊圖的攻擊步驟信息的同時,將復(fù)雜度高的網(wǎng)絡(luò)攻擊圖分割成復(fù)雜度低,可讀性強(qiáng)的網(wǎng)絡(luò)攻擊子圖.
使用啟發(fā)式過程挖掘算法從日志中挖掘初始網(wǎng)絡(luò)攻擊圖.啟發(fā)式過程挖掘算法[19]通過引入頻率計算解決了傳統(tǒng)過程挖掘算法無法處理噪聲數(shù)據(jù)的問題,在輸入日志數(shù)量較大時有著優(yōu)異的挖掘效果.由于網(wǎng)絡(luò)攻擊入侵者的攻擊策略與工作流特征十分相似,因此可以將過程挖掘技術(shù)應(yīng)用在攻擊圖建模方面[9].攻擊圖生成過程分為如下幾個步驟:
首先,對原始IDS報警日志數(shù)據(jù)聚合.將警報日志按照攻擊源IP和時間戳進(jìn)行分組聚合.然后將其轉(zhuǎn)換為啟發(fā)式過程挖掘算法所需的XES日志形式作為輸入數(shù)據(jù).
然后,算法讀取輸入數(shù)據(jù),通過攻擊事件出現(xiàn)順序頻次計算依賴值,依賴值是判斷攻擊事件之間的依賴關(guān)系或者邏輯關(guān)系是否存在的指標(biāo).然后算法會構(gòu)建一個依賴頻率表,通過短循環(huán)計算公式計算出短循環(huán)關(guān)系.
隨后,算法通過計算各個事件和依賴間的頻率關(guān)系,計算挖掘出攻擊事件之間的XOR/AND關(guān)系,完善攻擊策略圖中各個行為間的邏輯關(guān)系.補(bǔ)充相應(yīng)的信息.最后輸出網(wǎng)絡(luò)攻擊圖.
由網(wǎng)絡(luò)安全管理人員對網(wǎng)絡(luò)攻擊情況進(jìn)行人工分析是確保網(wǎng)絡(luò)系統(tǒng)安全的重要手段[16].然而由于海量網(wǎng)絡(luò)安全日志中包含了不同入侵者的大量行為記錄,網(wǎng)絡(luò)攻擊圖中表示入侵者行為的結(jié)點(diǎn)數(shù)目十分巨大,入侵行為間的先后依賴關(guān)系也十分復(fù)雜,使得網(wǎng)絡(luò)攻擊圖中邊的數(shù)量也十分龐大,導(dǎo)致網(wǎng)絡(luò)攻擊圖過于復(fù)雜,不利于網(wǎng)絡(luò)管理人員直觀地分析當(dāng)前的網(wǎng)絡(luò)攻擊狀態(tài).針對上述問題,本文提出了一種針對復(fù)雜網(wǎng)絡(luò)攻擊圖的攻擊圖分割算法,將復(fù)雜的網(wǎng)絡(luò)攻擊圖劃分為多個能夠直觀反映入侵者攻擊步驟的網(wǎng)絡(luò)攻擊子圖,以方便網(wǎng)絡(luò)安全管理員進(jìn)行分析.
4.3.1 問題描述
網(wǎng)絡(luò)攻擊圖G=(V,E)表示攻擊行為與攻擊行為之間關(guān)系,V表示結(jié)點(diǎn)集,代表著入侵者的攻擊行為,E表示攻擊圖中的邊集,代表入侵者攻擊行為之間的邏輯關(guān)聯(lián)關(guān)系,網(wǎng)絡(luò)攻擊圖分割問題定義如下:
定義3.網(wǎng)絡(luò)攻擊圖分割.網(wǎng)絡(luò)攻擊圖分割.給定網(wǎng)絡(luò)攻擊圖G,求G的一個網(wǎng)絡(luò)攻擊圖分割P,P={G1,G2,…,Gn},其中Gi表示網(wǎng)絡(luò)攻擊圖的某一個子圖.
4.3.2 算法概述
攻擊圖分割的基本思想如下:首先對原始網(wǎng)絡(luò)攻擊圖進(jìn)行遍歷,然后以分支為基準(zhǔn),將各個分支遍歷到的結(jié)點(diǎn)和邊保存為新的攻擊圖.因此對攻擊圖的分割不會影響原始攻擊圖結(jié)構(gòu).算法的主要步驟如下:
步驟1.計算待分割的網(wǎng)絡(luò)攻擊圖G的復(fù)雜度,若G不是復(fù)雜網(wǎng)絡(luò)攻擊圖,則輸出G后結(jié)束;否則將G放入隊列Qs中;
步驟2.遍歷隊列Qs,對隊列中的每個待分割的網(wǎng)絡(luò)攻擊圖,自頂向下尋找分支點(diǎn)Vs;
步驟3.遍歷到分支點(diǎn)Vs,則以Vs作為分割的起始點(diǎn),去除網(wǎng)絡(luò)攻擊圖中的獨(dú)立子圖,然后將網(wǎng)絡(luò)攻擊圖剩余部分中以Vs為起始點(diǎn)的有向邊加入到隊列Qe中;
步驟4.遍歷隊列Qe,對遍歷到的有向邊e使用深度優(yōu)先算法遍歷并生成e的后繼子圖,并將Vs標(biāo)記為所生成的后繼子圖的起始點(diǎn).對每個后繼子圖,計算其復(fù)雜度,如果不是復(fù)雜子圖,則將后繼子圖加入隊列Qoutput中,Qoutput用于存放分割得到的網(wǎng)絡(luò)攻擊子圖;否則將其加入到存放待分割的網(wǎng)絡(luò)攻擊圖的隊列Qs中;
步驟5.判斷隊列Qs是否為空,若非空,回到步驟2;
步驟6.遍歷Qoutput中的網(wǎng)絡(luò)攻擊子圖,對其進(jìn)行分支信息補(bǔ)全后輸出,即為網(wǎng)絡(luò)攻擊圖G分割所得的網(wǎng)絡(luò)攻擊子圖.
4.3.3 網(wǎng)絡(luò)攻擊圖復(fù)雜度判定
對網(wǎng)絡(luò)攻擊圖進(jìn)行分割的目的是降低其視覺上的復(fù)雜度,增加其可讀性,但視覺上的復(fù)雜性難以直接衡量,因此需要定義網(wǎng)絡(luò)攻擊圖復(fù)雜度的評估方法,用于判斷一個網(wǎng)絡(luò)攻擊圖是否需要進(jìn)行分割或分割后的子圖是否已經(jīng)具有可讀性,可以輸出給網(wǎng)絡(luò)管理員進(jìn)行分析.本文攻擊圖分割方法所采用的網(wǎng)絡(luò)子圖復(fù)雜度判定規(guī)則如下:
(4)
其中|V|為攻擊圖G結(jié)點(diǎn)的個數(shù).若網(wǎng)絡(luò)攻擊圖的結(jié)點(diǎn)數(shù)滿足|V| (5) 參數(shù)N1和N2根據(jù)文獻(xiàn)[9]確定:N1=15,N2=31. 4.3.4 獨(dú)立子圖分割 定義4.后繼子圖.從網(wǎng)絡(luò)攻擊圖G中的某個結(jié)點(diǎn)v經(jīng)以v為起始結(jié)點(diǎn)的某條有向邊e出發(fā),遍歷到的點(diǎn)與邊所構(gòu)成的流程圖,為v的一個后繼子圖,記為Gsucc(v,e). 如圖1(a)所示,實(shí)線部分為點(diǎn)v的一個后繼子圖.在網(wǎng)絡(luò)攻擊圖G中,結(jié)點(diǎn)v表示入侵者的某個攻擊行為,其后繼子圖則代表入侵者執(zhí)行某個攻擊行為后可能進(jìn)行的后續(xù)攻擊行為. 定義5.分支點(diǎn).給定網(wǎng)絡(luò)攻擊圖G中的某個結(jié)點(diǎn)v,若結(jié)點(diǎn)v的出度大于1,則v為網(wǎng)絡(luò)攻擊圖G中某個入侵行為的分支點(diǎn). 攻擊流程的分支點(diǎn)代表攻擊者在執(zhí)行攻擊計劃的過程中,在執(zhí)行完此攻擊步驟后,存在多種不同的可執(zhí)行攻擊方案.圖分割算法以分支點(diǎn)為基礎(chǔ)分割攻擊圖,可以將不同的攻擊方案分割成獨(dú)立子圖,使得管理員對攻擊者的各個攻擊方案有較為清晰的把控.算法自頂向下找到網(wǎng)絡(luò)攻擊圖的分支點(diǎn)后,首先將易于分割的部分分離出來. 定義6.獨(dú)立子圖.給定v的一個后繼子圖,若該后繼子圖內(nèi)的全部有向邊e的端點(diǎn)屬于后繼子圖或?yàn)関本身,則該后繼子圖是以結(jié)點(diǎn)v為起始點(diǎn)的獨(dú)立子圖. 如圖1(b)所示,實(shí)線部分為結(jié)點(diǎn)v的一個獨(dú)立子圖,首先從攻擊圖中獲取以v為起始點(diǎn)的有向邊,然后從這些有向邊開始遍歷v的各個后繼子圖,并且判斷遍歷到的每一個子圖是否為v的獨(dú)立子圖.如果遍歷到的圖是獨(dú)立子圖,則將該子圖從原圖中分割出來,作為一次分割結(jié)果入隊待分割隊列中,后續(xù)確認(rèn)是否需要進(jìn)一步分割. 圖1 結(jié)點(diǎn)v的后繼子圖與獨(dú)立子圖 獨(dú)立子圖代表著這個子圖內(nèi)所有的攻擊行為都是且僅是分支點(diǎn)代表的攻擊行為的后續(xù)攻擊方案.當(dāng)網(wǎng)絡(luò)管理員發(fā)現(xiàn)符合獨(dú)立子圖內(nèi)的攻擊順序被執(zhí)行,就可以立即確認(rèn)入侵者之前的攻擊行為.同時,由于獨(dú)立子圖只是分支點(diǎn)V的后繼子圖,因此不需要對分割出的獨(dú)立子圖進(jìn)行補(bǔ)全,能夠提高算法的計算效率. 4.3.5 剩余子圖分割 將獨(dú)立子圖分離后,算法需對去除獨(dú)立子圖之后剩余的后繼子圖作進(jìn)一步分割.算法選取從以分支點(diǎn)為起始點(diǎn)的有向邊出發(fā),依次遍歷分支點(diǎn)的各個后繼子圖,并且生成子圖.具體步驟如下: 步驟1.遍歷隊列Qe,對遍歷到的有向邊e,以有向邊e為起始,使用廣度優(yōu)先遍歷算法遍歷e的后繼結(jié)點(diǎn)和對應(yīng)的有向邊,并且標(biāo)記遍歷過的結(jié)點(diǎn)和邊; 步驟2.對遍歷到的每個結(jié)點(diǎn),判斷是否存在遠(yuǎn)距離環(huán),若存在遠(yuǎn)距離環(huán),則對其進(jìn)行去除遠(yuǎn)距離環(huán)的操作,最后由遍歷到的結(jié)點(diǎn)和邊生成后繼子圖Ge. 以圖2(a)的網(wǎng)絡(luò)攻擊圖為例,結(jié)點(diǎn)v為分支點(diǎn),對網(wǎng)絡(luò)攻擊圖的分割過程如圖2(b)-圖2(d)所示. 圖2 以v為起始點(diǎn)將后繼圖分割成三個子圖 如圖2(b),首先從v為起始點(diǎn)的有向邊e1出發(fā)以深度優(yōu)先遍歷后繼子圖.將遍歷到的結(jié)點(diǎn)和邊連同分支點(diǎn)Vs一起保存為一個新的子圖G1.同理,分別從e2、e3出發(fā)遍歷v的后繼子圖,并將結(jié)果保存為新的子圖G2和G3,如圖2(c)、圖2(d)所示. 子圖表示著入侵者某個攻擊階段的攻擊策略.當(dāng)網(wǎng)絡(luò)管理員聚焦在某個攻擊行為時,子圖中的結(jié)點(diǎn)表示著在該攻擊行為前后有可能出現(xiàn)的攻擊行為.不屬于相同子圖的結(jié)點(diǎn),其對應(yīng)的攻擊行為不會相互在前后出現(xiàn),因此網(wǎng)絡(luò)管理員可以集中在這個子圖中研究當(dāng)前攻擊行為的依賴關(guān)系和邏輯關(guān)系. 4.3.6 去除遠(yuǎn)距離環(huán) 定義7.遠(yuǎn)距離環(huán).自結(jié)點(diǎn)v出發(fā),經(jīng)過一個或多個結(jié)點(diǎn)可返回結(jié)點(diǎn)v.則稱所經(jīng)過結(jié)點(diǎn)構(gòu)成的路徑為v的一個遠(yuǎn)距離環(huán). 遠(yuǎn)距離環(huán)是過程挖掘算法中由于存在遠(yuǎn)距離依賴因而產(chǎn)生的環(huán).圖3(a)顯示了圖2(b)中網(wǎng)絡(luò)攻擊子圖G1的部分子圖,從圖中可以看出,算法執(zhí)行到以v為分支點(diǎn)進(jìn)一步分割圖模型時,遍歷算法通過圖中實(shí)線路徑可回到v,即實(shí)線部分組成了一個遠(yuǎn)距離環(huán). 圖3 遠(yuǎn)距離環(huán) 遠(yuǎn)距離環(huán)會導(dǎo)致許多不必要的重復(fù)計算,增加圖分割算法的復(fù)雜度,因此在分割網(wǎng)絡(luò)攻擊圖的過程中需要對遠(yuǎn)距離環(huán)進(jìn)行處理.按照構(gòu)成遠(yuǎn)距離環(huán)的結(jié)點(diǎn)的不同,對遠(yuǎn)距離環(huán)的處理可分為以下兩種情況. Case1:如圖3,算法從結(jié)點(diǎn)v對向下遍歷到的結(jié)點(diǎn)v1,若v1?G1,且v1≠v,則認(rèn)為結(jié)點(diǎn)v1為圖外結(jié)點(diǎn)(如圖3(a)).遍歷退回前一個結(jié)點(diǎn)t,并且v1和遍歷到的指向v1的邊不加入后繼子圖G1中,得到的子圖G1,如圖3(b)中實(shí)線部分所示; Case2:若遍歷到一條指向分支點(diǎn)v的邊e(如圖3(c)),退回前一次訪問的結(jié)點(diǎn)t,將以v為終點(diǎn)的有向邊加入后繼子圖G1,則得到的子圖即為圖3(c)所示. 4.3.7 生成子圖補(bǔ)全 當(dāng)分割隊列的圖全部分割完成后,為了讓網(wǎng)絡(luò)安全管理員便于對分割后的網(wǎng)絡(luò)攻擊圖進(jìn)行分析,需要對分割結(jié)果進(jìn)行信息補(bǔ)全.需要補(bǔ)全的是圖內(nèi)結(jié)點(diǎn)的前驅(qū)結(jié)點(diǎn)的信息,這些前驅(qū)結(jié)點(diǎn)代表攻擊模型圖中入侵者行為的前驅(qū)步驟,但是在遍歷生成子圖的過程中,遍歷算法沿著有向邊的方向前進(jìn),部分結(jié)點(diǎn)的前驅(qū)結(jié)點(diǎn)無法遍歷到,未納入到子圖中.為了讓管理員能夠更方便地了解入侵者行為的前后關(guān)系,需要將這些結(jié)點(diǎn)納入到子圖中. 此外,這些前驅(qū)結(jié)點(diǎn)同時存在于其他子圖中,補(bǔ)全這些結(jié)點(diǎn)的信息可以實(shí)現(xiàn)不同的子圖相互關(guān)聯(lián).生成子圖補(bǔ)全步驟如下: 步驟1.遍歷待補(bǔ)全的子圖,對遍歷到的結(jié)點(diǎn)v,從攻擊圖G中尋找指向v的邊的集合Ev. 步驟2.遍歷Ev,判斷Ev中的有向邊e是否屬于待補(bǔ)全圖.若e不屬于待補(bǔ)全圖,則將e保存到待補(bǔ)全圖中. 如圖4所示,對圖2(b)所示的分割子圖G1進(jìn)行信息補(bǔ)全,新加入的點(diǎn)和邊在圖4中加粗標(biāo)出. 圖4 信息補(bǔ)全樣例 4.3.8 算法描述 算法主要流程的偽代碼如下所示: 算法1.Complex Graph Segmentation Algorithm 1.function AttackGraphGenerater(AttackGraphG) 2.ifComplexDegree(G)then 3.Qs.push(G) 4.while(Qs)do 5.G←Qs.pop(G) 6. /* Looking for branch points */ 7. VS← SearchSplitVertex(G) 8. /* Judge independent subgraph */ 9.ifIsDependentGraph(VS)then 10. /* Independent subgraph segmentation */ 11. DependGraphGenerater(VS) 12.endif 13. /* saves the edge to be traversed */ 14. Qe.push(getSuccEdge(VS)) 15.while(Qe)do 16. /* Looking for successor subgraphs */ 17. Ge=getSuccGraph(Qe.pop()) 18.ifComplexDegree(Ge)then 19.Qs.push(Ge) 20. /* saves the output graph */ 21.else 22.QOutput.push(Ge)) 23.endif 24. end while 25. end while 26.while(QOutput)do 27. /* subgraph Completion */ 28. G=InfoComplete(QOutput.pop()) 29.Output(G) 30. end while 31.else 32.Output(G) 33.endif 過程挖掘算法的時間復(fù)雜度和待挖掘的攻擊步驟數(shù)量k相關(guān),時間復(fù)雜度為O(k2)[19]. 圖分割算法的時間復(fù)雜度如下: 步驟1.判斷攻擊圖的復(fù)雜度需計算攻擊圖包含的點(diǎn)和邊的數(shù)量,因此所需時間為O(m).其中m為攻擊圖結(jié)點(diǎn)的數(shù)量. 步驟2.尋找出所有分支點(diǎn)的過程相當(dāng)于遍歷一遍攻擊圖的過程,因此所需時間仍為O(m). 步驟3.在去除獨(dú)立子圖和分割圖模型的過程中會多次對分支結(jié)點(diǎn)進(jìn)行遍歷,遍歷的次數(shù)取決于分支點(diǎn)的個數(shù)x和分支的邊數(shù)n.因此一階段所需時間為O(xn). 步驟4.分割剩余子圖的所需的時間仍為O(xn). 步驟5.此步驟每個子圖信息補(bǔ)全所需的時間和所需要補(bǔ)全的結(jié)點(diǎn)個數(shù)有關(guān).因此所需總時間為O(nm). 綜上此算法所需時間為O(n(m+x)).運(yùn)行時間和分割圖的結(jié)構(gòu)有很大關(guān)系. 考慮算法的空間復(fù)雜度,在計算的過程中,需要額外的內(nèi)存用于保存分割出的子圖,所需的空間大小取決于圖的結(jié)點(diǎn)數(shù)量m和邊的數(shù)量n.故算法的空間復(fù)雜度為S(m+n). 啟發(fā)式過程挖掘算法用于網(wǎng)絡(luò)攻擊圖挖掘時,主要步驟是計算安全日志中攻擊事件之間的關(guān)聯(lián)關(guān)系,然后將各個節(jié)點(diǎn)的計算結(jié)果進(jìn)行聚合和拼接,得到網(wǎng)絡(luò)攻擊圖.分布式攻擊圖生成算法包括SecurityCaseRelationCreation、AttackRelationComputation、EventClassification以及EventClassification四個模塊. SecurityCaseRelationCreation:該模塊的主要目標(biāo)是創(chuàng)建事件之間的關(guān)系.從HDFS讀取原始安全警報后,SecurityXesLogCaseMapper識別出日志記錄的字段信息,如SourseIP流量特征簽名等信息.然后根據(jù)SourseIP字段將原始日志分片為多個子集,將分片后的子集作為挖掘算法中的案例.將SourseIP設(shè)置為分片關(guān)鍵字,將流量特征Signature設(shè)置為挖掘算法中的實(shí)例,即攻擊圖中的攻擊行為.同時,設(shè)置Timestamp為關(guān)鍵字進(jìn)行二次排序.然后將結(jié)果輸入到AttackCaseReducer中,算法循環(huán)遍歷每個案例,依次計算案例中的順序關(guān)系、循環(huán)關(guān)系和邏輯關(guān)系,然后創(chuàng)建并輸出案例中攻擊步驟之間的關(guān)系數(shù)據(jù).例如,XES日志會根據(jù)SourceIP字段分成多個SubLog.設(shè)A和B是同一案例下的兩個攻擊事件實(shí)例,之后在reduce任務(wù)中,AttackCaseReducer會通過B在A后出現(xiàn)的頻率,計算兩個事件之間的順序關(guān)系頻數(shù),輸出|A>wB|,即攻擊事件B在攻擊事件A后發(fā)生的次數(shù). AttackRelationComputation:該模塊僅執(zhí)行Reduce任務(wù)RelationReducer.RelationReducer的輸入是上一階段中AttackCaseReducer的輸出.RelationReducer將攻擊行為之間的關(guān)聯(lián)關(guān)系聚合,同時,通過各種關(guān)系數(shù)據(jù)計算事件之間的依賴值和短循環(huán)關(guān)系,并計算事件之間的邏輯關(guān)系.同時在運(yùn)算過程中,算法會將案例中存在的每一種關(guān)系(包括順序關(guān)系、分支關(guān)系、短循環(huán)關(guān)系等)都聚合起來,然后將聚合后的關(guān)系數(shù)據(jù)輸出提供下一個模塊進(jìn)行計算.假設(shè)輸入的關(guān)系數(shù)據(jù)中存在a與b,a與c的順序關(guān)系(a?b、a?c),這些關(guān)系會按照關(guān)系數(shù)據(jù)中的左值(即關(guān)系中的前驅(qū)結(jié)點(diǎn))進(jìn)行聚合,然后將結(jié)果輸出. AttackClassification:在該模塊中,ScoredEventMapper會根據(jù)攻擊行為關(guān)系對中的左值(例如順序關(guān)系中的前驅(qū))將數(shù)據(jù)進(jìn)行進(jìn)一步分片.然后通過ScoredEventReducer構(gòu)建前后結(jié)點(diǎn),輸出事件結(jié)點(diǎn)作為key,結(jié)點(diǎn)的前驅(qū),后繼和以及他們之間的邊(即關(guān)系)三種數(shù)據(jù)作為value輸出. CausalMatrixGeneration:該模塊主要是拼接匯總挖掘出的關(guān)系.在前一模塊輸出的事件結(jié)點(diǎn)作為key輸入至CausalMatrixMapper中,Mapper會通過key對應(yīng)的結(jié)點(diǎn)找到關(guān)系數(shù)據(jù)中相應(yīng)的前驅(qū)結(jié)點(diǎn)和后繼結(jié)點(diǎn),構(gòu)建對應(yīng)關(guān)系矩陣.最后在CausalMatrixReducer將各個計算節(jié)點(diǎn)的輸出結(jié)果匯總到一個實(shí)例中,輸出一個完整的攻擊圖. 使用啟發(fā)式過程挖掘算法挖掘出的攻擊圖,結(jié)點(diǎn)和邊的數(shù)量往往很大,所生成的攻擊圖結(jié)構(gòu)十分復(fù)雜,需要對攻擊圖進(jìn)行分割,以便于分析攻擊行為.本文提出的攻擊流程模型使用有向圖來表示入侵者的攻擊策略,而Apache Spark的GraphX組件十分適合處理圖數(shù)據(jù)處理.因此,可將Spark與前一階段的MapReduce攻擊圖發(fā)現(xiàn)相結(jié)合,利用Spark GraphX組件進(jìn)行分布式攻擊圖分割.由于Spark使用RDD作為數(shù)據(jù)抽象,因此需要從HDFS中讀取攻擊圖并且保存在RDD中.讀取出圖的數(shù)據(jù)后,將圖的信息保存在如下三個RDD上:VertexTable、EdgeTable和RoutingTable,其中VertexTable存儲結(jié)點(diǎn)信息,EdgeTable存儲邊的信息,RoutingTable存儲結(jié)點(diǎn)在集群中的位置. 在對單個復(fù)雜圖進(jìn)行分割時,若圖的復(fù)雜度并不是非常高(例如只有數(shù)十結(jié)點(diǎn)),通常將分割任務(wù)分配在一個節(jié)點(diǎn)上進(jìn)行.使得多個節(jié)點(diǎn)可以同時進(jìn)行多個圖分割任務(wù).若圖的結(jié)點(diǎn)數(shù)量巨大,則需要調(diào)用Graph.partitionBy對圖重新分片,將復(fù)雜圖分片到多個節(jié)點(diǎn)上,再進(jìn)行分割任務(wù). 6.1.1 實(shí)驗(yàn)環(huán)境 本節(jié)通過實(shí)驗(yàn)對本文提出的攻擊圖生成算法與攻擊圖分割算法進(jìn)行分析.算法實(shí)現(xiàn)語言為Java,基于Hadoop和Spark分布式框架,實(shí)驗(yàn)環(huán)境設(shè)置如表1所示. 表1 實(shí)驗(yàn)環(huán)境配置 實(shí)驗(yàn)數(shù)據(jù)集為歐洲某國的ISP提供商在2016年3月到8月之間,產(chǎn)生自IDS/IPS設(shè)備的網(wǎng)絡(luò)攻擊數(shù)據(jù).實(shí)驗(yàn)數(shù)據(jù)集中的每條日志數(shù)據(jù)只記錄行為信息,不描述攻擊者使用的攻擊策略,所包含的主要字段如表2所示.此外,為便于研究者們進(jìn)行算法模型驗(yàn)證,6月與7月的網(wǎng)絡(luò)攻擊數(shù)據(jù),按照常見的攻擊模式對攻擊進(jìn)行了詳細(xì)的分類,作為驗(yàn)證集提供. 表2 字段說明 由于實(shí)驗(yàn)數(shù)據(jù)的大小超過11 GB,因此實(shí)驗(yàn)選擇7月某一周的數(shù)據(jù)作為輸入數(shù)據(jù),在對數(shù)據(jù)進(jìn)行預(yù)處理后,將數(shù)據(jù)按天分組,以SourseIP字段作為聚類關(guān)鍵字段分為若干組作為輸入案例(Case),并將公式(4)中的γ設(shè)為0.3.在單節(jié)點(diǎn)實(shí)驗(yàn)中,過程挖掘工具選用了ProM框架.ProM框架是目前最流行的過程挖掘工具之一.ProM框架提供了可擴(kuò)展日志流輸入支持,因此對原始數(shù)據(jù)做預(yù)處理后,將日志轉(zhuǎn)換成ProM支持的XES(eXtensible Event Stream)日志格式,以天為單位劃分,分別導(dǎo)入到ProM框架中進(jìn)行過程挖掘. 6.1.2 對比算法與評估指標(biāo) 本文采用文獻(xiàn)[20]的Alpha算法與文獻(xiàn)[9]的攻擊模型發(fā)現(xiàn)算法(MDA,Model Discovery Algorithm)作為HPMA的對比算法,并采用Precision、Recall與F1-score作為性能評價指標(biāo). 6.2.1 過程挖掘結(jié)果分析 將7月26日-7月30日的攻擊日志分成5組分別進(jìn)行實(shí)驗(yàn),計算每日的Precision、Recall以及F1-score,并求出平均值,結(jié)果如圖5所示. 圖5 Recall、Precision和F1-score比較 由圖5可知,基于啟發(fā)式過程挖掘算法的召回率、準(zhǔn)確率、F1-score分別達(dá)到91.3%、85.7%以及88.8%,均優(yōu)于對比算法.所生成的網(wǎng)絡(luò)攻擊圖基本涵蓋了發(fā)生的攻擊序列,說明啟發(fā)式過程挖掘算法能夠有效地從安全日志中挖掘出入侵者的攻擊策略以及可能使用的攻擊步驟.這是由于過程挖掘算法在挖掘過程中能夠更好地消除噪聲數(shù)據(jù)的影響. 6.2.2 網(wǎng)絡(luò)攻擊圖分割結(jié)果分析 由于原始數(shù)據(jù)記錄的規(guī)模十分龐大,因此盡管將數(shù)據(jù)按照天數(shù)分開,挖掘結(jié)果仍然十分復(fù)雜.以2016年7月31日的結(jié)果為例.當(dāng)天日志一共323120條記錄,以SourseIP作為關(guān)鍵字分為了4367個案例,平均實(shí)例數(shù)量大約為79個.以當(dāng)天的日志輸入后,輸出的結(jié)果為一個由34個結(jié)點(diǎn),109條邊組成的復(fù)雜攻擊圖.本節(jié)對網(wǎng)絡(luò)攻擊圖分割結(jié)果進(jìn)行分析.以根據(jù)7月第4周的數(shù)據(jù)生成的網(wǎng)絡(luò)攻擊圖為例,攻擊圖分割方法將該初始網(wǎng)絡(luò)攻擊圖分割為14個網(wǎng)絡(luò)攻擊子圖.網(wǎng)絡(luò)攻擊子圖構(gòu)成的結(jié)點(diǎn)和邊數(shù)如表3所示. 表3 分割后的網(wǎng)絡(luò)攻擊子圖 從表3可以看出,經(jīng)過分割算法分割,原網(wǎng)絡(luò)攻擊圖被分成了13個非復(fù)雜網(wǎng)絡(luò)攻擊圖和一個序號為11的復(fù)雜網(wǎng)絡(luò)攻擊圖,對序號為11的復(fù)雜網(wǎng)絡(luò)攻擊子圖進(jìn)行回溯可知,該子圖是由于圖分割算法在進(jìn)行信息補(bǔ)全操作后,從非復(fù)雜圖轉(zhuǎn)換為復(fù)雜圖.接下來對實(shí)驗(yàn)結(jié)果樣例進(jìn)行分析,驗(yàn)證分割結(jié)果圖的有效性. 圖6是序號6的網(wǎng)絡(luò)攻擊子圖,從圖6可以看出,進(jìn)行了sshScan掃描攻擊的入侵者,往后一般會選擇四種攻擊行為:Impossible Flags(利用無效tcp頭部字段的標(biāo)志位濫用,一種DOS攻擊),Nmap掃描,惡意SMB探針,惡意PHP程序.其中,前三種攻擊行為有可能互為后續(xù)攻擊.使用SMB探針后,利用windows系統(tǒng)漏洞進(jìn)行MS SQL Hello Buffer Overflow攻擊(利用MS SQL漏洞的一種攻擊)或者引發(fā)windows即插即用異常請求.另一方面,若入侵者在sshScan掃描后,使用了PHP惡意程序,入侵者會使用PHP代碼注入就行進(jìn)一步攻擊.從上述例子可以看出,所提出的算法輸出的攻擊子圖顯然可以清楚地反映入侵者的攻擊模式. 圖6 序號6的攻擊子圖的攻擊步驟 6.2.3 時間性能分析 A.攻擊圖生成算法時間性能分析 本節(jié)對比Alpha算法、基于Alpha算法的分布式過程挖掘算法(AlphaoMR)、HPMA算法、分布式HPMA算法(HPMAoMR)的時間性能.實(shí)驗(yàn)取7月份兩周的日志數(shù)據(jù),分別選擇11.4G、8G、4G以及1G的日志數(shù)據(jù)作為輸入,并同時對比單機(jī)運(yùn)行和集群運(yùn)行的結(jié)果.每次實(shí)驗(yàn)重復(fù)運(yùn)行三次,取平均值進(jìn)行對比.實(shí)驗(yàn)結(jié)果如圖7所示. 圖7 數(shù)據(jù)規(guī)模對攻擊圖生成算法運(yùn)行時間的影響 從圖7可以看出,當(dāng)日志數(shù)據(jù)規(guī)模僅為1GB時,分布式挖掘算法的運(yùn)行時間并沒有很明顯的優(yōu)勢,然而隨著日志數(shù)據(jù)的增大,分布式挖掘算法的優(yōu)勢逐漸明顯,其中分布式Alpha算法的運(yùn)行時間最短,分布式挖掘算法HPMAoMR的運(yùn)行時間略長于分布式Alpha算法(AlphaoMR),但是兩者均明顯優(yōu)于單機(jī)版本的HPMA算法和Alpha算法.分布式Alpha算法的運(yùn)行時間優(yōu)于本文提出的HPMAoMR算法的原因在于,Alpha算法基于W-net進(jìn)行過程挖掘,由于其缺少對重復(fù)任務(wù)的挖掘,因此計算量小了許多,較基于啟發(fā)式算法的HPMA的核心步驟更為簡單快速,因此Alpha算法的算法復(fù)雜度較低,在運(yùn)行時間上有一定優(yōu)勢,但是HPMA能夠獲得優(yōu)于ALPHA算法的網(wǎng)路攻擊圖挖掘效果. 接下來固定日志數(shù)據(jù)規(guī)模為11G,通過增減集群節(jié)點(diǎn)數(shù),對比分析不同節(jié)點(diǎn)數(shù)量對網(wǎng)絡(luò)攻擊圖挖掘運(yùn)行時間的影響.實(shí)驗(yàn)結(jié)果如圖8所示,HPMAoMR的運(yùn)行時間單位為min.當(dāng)集群節(jié)點(diǎn)數(shù)為2個時,HPMAoMR的運(yùn)行時間相比單機(jī)版本算法減少了39%.當(dāng)集群節(jié)點(diǎn)數(shù)增加為4個時,運(yùn)行時間減少了62%.但是當(dāng)節(jié)點(diǎn)數(shù)增加為8個時,運(yùn)行時間僅減少了67%.算法從單機(jī)到2節(jié)點(diǎn)能夠明顯減少運(yùn)行時間,是因?yàn)閮蓚€節(jié)點(diǎn)同時處理原始數(shù)據(jù),能夠有效緩解IO壓力.在集群數(shù)量從4個增加到8個時,效果并不十分明顯,這主要是因?yàn)樵?個節(jié)點(diǎn)數(shù)時已經(jīng)能夠有效地解決IO瓶頸問題,同時在Map過程中,由于節(jié)點(diǎn)數(shù)量變多,數(shù)據(jù)分片數(shù)量變多,節(jié)點(diǎn)相互通訊的時間增加,對算法運(yùn)行時間也有一定的影響,因此性能提升已經(jīng)不大. 圖8 節(jié)點(diǎn)數(shù)對攻擊圖生成算法與分割算法運(yùn)行時間的影響 將網(wǎng)絡(luò)攻擊圖挖掘算法生成的網(wǎng)絡(luò)攻擊圖作為Spark GraphX的輸入,Spark GraphX從HDFS讀取到的攻擊圖的結(jié)點(diǎn)數(shù)為276,邊的數(shù)量為1053.同時對比單機(jī)環(huán)境與Spark集群下網(wǎng)絡(luò)攻擊圖分割算法(HGSA)的運(yùn)行時間,每次實(shí)驗(yàn)重復(fù)運(yùn)行三次,取平均值進(jìn)行對比.實(shí)驗(yàn)結(jié)果如圖8所示,HGSAoSG的運(yùn)行時間單位為s.從圖8中可以看出,基于Spark的圖分割算法的運(yùn)行時間顯著優(yōu)于單機(jī)狀態(tài)下的圖分割算法,而Spark集群中節(jié)點(diǎn)數(shù)量的挑戰(zhàn)對結(jié)果影響不大,并且對數(shù)百個結(jié)點(diǎn)的圖進(jìn)行分割時,Spark可以接近實(shí)時地輸出結(jié)果,處理效率較高. 本文提出了一種攻擊圖生成方法,將啟發(fā)式過程挖掘技術(shù)用于從網(wǎng)絡(luò)攻擊策略模型挖掘.這種方法的主要思想是利用網(wǎng)絡(luò)攻擊者攻擊行為和工作流特征的相似性,使用過程挖掘?qū)W(wǎng)絡(luò)安全日志進(jìn)行挖掘.為了驗(yàn)證生成方法的有效性,本文使用一個攻擊數(shù)據(jù)集進(jìn)行實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果表明過程挖掘算法能夠有效挖掘出入侵者的攻擊策略.同時,為了解決過程挖掘的輸出攻擊圖的結(jié)構(gòu)復(fù)雜的問題,本文提出了一種針對復(fù)雜攻擊圖的分割方法.該方法在有效地保存攻擊圖的基礎(chǔ)結(jié)構(gòu)前提下,成功將復(fù)雜的攻擊圖分割成多個復(fù)雜度低的攻擊子圖,大大增加圖的可讀性. 在上述攻擊圖生成方法的基礎(chǔ)上,提出基于Hadoop和Spark的分布式攻擊圖生成方法,該方法使用Spark GraphX對生成的攻擊圖進(jìn)行分割,提高分割效率.并通過YARN將MapReduce和Spark整合.解決了過程挖掘算法在單機(jī)運(yùn)行狀態(tài)下數(shù)據(jù)處理能力不足的問題,使得攻擊圖的挖掘效率得到極大提高,減少算法運(yùn)行時長.并且搭建了一個Hadoop集群對提出的方法進(jìn)行了實(shí)驗(yàn),驗(yàn)證了算法的有效性.此算法能夠使網(wǎng)絡(luò)管理員能夠監(jiān)控網(wǎng)絡(luò)安全,并使網(wǎng)絡(luò)安全管理員能夠獲取更詳細(xì)的網(wǎng)絡(luò)攻擊信息,從而做出適當(dāng)?shù)臎Q策.4.4 算法復(fù)雜度分析
5 分布式網(wǎng)絡(luò)攻擊建模
5.1 分布式攻擊圖生成
5.2 分布式攻擊圖分割
6 實(shí)驗(yàn)與分析
6.1 實(shí)驗(yàn)環(huán)境與數(shù)據(jù)集
6.2 實(shí)驗(yàn)分析
7 總 結(jié)