孫先亮,譚小波
(沈陽理工大學(xué) 信息科學(xué)與工程學(xué)院,沈陽 110159)
動態(tài)網(wǎng)絡(luò)異常行為的檢測方法是國內(nèi)外研究的熱門課題。異常行為檢測技術(shù)是通過分析動態(tài)網(wǎng)絡(luò)[1]的結(jié)構(gòu)特征,使用模型算法進(jìn)行結(jié)構(gòu)特征提取,再通過分類算法判斷某一時刻上的網(wǎng)絡(luò)是否存在異常行為,找出網(wǎng)絡(luò)中與其他正常行為差異過大的異常行為[2]以進(jìn)行防范,降低網(wǎng)絡(luò)攻擊危害。
傳統(tǒng)的動態(tài)網(wǎng)絡(luò)異常檢測方法包括基于節(jié)點(diǎn)特征分類的方法、基于行為特征的方法和基于圖特征的方法等。姚濰等[3]提出了基于決策樹和樸素貝葉斯分類算法結(jié)合的方法,首先使用決策樹進(jìn)行概率加權(quán)求和,然后使用樸素貝葉斯分類算法進(jìn)行結(jié)果分類,并在KDD99數(shù)據(jù)集上進(jìn)行驗(yàn)證,結(jié)果表明該方法在準(zhǔn)確度上有一定提升,但效率不高。Yu H F等[4]提出了基于隨機(jī)游走的SybilGuard算法用以針對女巫攻擊。該算法可以在信任節(jié)點(diǎn)上進(jìn)行多次隨機(jī)游走,進(jìn)而找到所有的信任區(qū)節(jié)點(diǎn)進(jìn)行異常檢測,但需要花費(fèi)大量的內(nèi)存和計算時間。Yoon M等[5]提出了基于異常等級(AnomRank)的異常檢測算法,首先將動態(tài)圖中的異常分為異常S(AnomalyS)和異常W(AnomalyW)兩種類型,然后根據(jù)該兩種類型特征構(gòu)造節(jié)點(diǎn)異常評分函數(shù),通過評分函數(shù)進(jìn)行異常事件的區(qū)分。該方法效率上優(yōu)于其他算法,但精度不夠。Gahrooei M R等[6]提出了基于概率模型的方法,首先使用廣義線性模型(Generalized Lagrange Multipliers,GLM)對每個屬性圖進(jìn)行建模,再通過拓廣的卡爾曼濾波器調(diào)整參數(shù)并使用指數(shù)加權(quán)移動平均值檢測圖流上的全局結(jié)構(gòu)變化,該方法雖然提高了準(zhǔn)確度,但會占用大量的內(nèi)存空間。
動態(tài)網(wǎng)絡(luò)中節(jié)點(diǎn)數(shù)量巨大,結(jié)構(gòu)呈現(xiàn)出多種特征,表現(xiàn)在網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)隨時間不斷發(fā)生變化。傳統(tǒng)的異常行為檢測方法效率低或準(zhǔn)確度不高。本文提出一種基于長短時記憶模型(Long short-term memory,LSTM)的動態(tài)網(wǎng)絡(luò)異常行為檢測方法解決上述問題。該方法首先采用基于中心網(wǎng)絡(luò)(Ego network,Egonet)特征提取方案計算出圖距離特征,其次使用增量并行式算法(Dynamic Parallel Anomaly Detections,DPADS)壓縮圖結(jié)構(gòu),計算圖結(jié)構(gòu)差異,最后使用LSTM算法進(jìn)行模型訓(xùn)練并完成異常行為檢測。
動態(tài)網(wǎng)絡(luò)異常狀態(tài)表現(xiàn)為[7]:在連續(xù)的圖序列中,找到特定時間點(diǎn)對應(yīng)圖上顯著變化的節(jié)點(diǎn)、邊或子結(jié)構(gòu)。
本文提出Egonet網(wǎng)絡(luò)的動態(tài)網(wǎng)絡(luò)模型特征提取方法提取圖距離特征。
節(jié)點(diǎn)的Egonet[8]定義為包括距離該節(jié)點(diǎn)一跳鄰居節(jié)點(diǎn)及連接這些節(jié)點(diǎn)的邊的子圖。
動態(tài)Egonet網(wǎng)絡(luò)隨時間變化的結(jié)構(gòu)如圖1所示。
圖1 動態(tài)Egonet網(wǎng)絡(luò)結(jié)構(gòu)圖
Egonet的動態(tài)網(wǎng)絡(luò)模型提取距離特征的計算方法如下。
給定圖G=(Vi,Ei)和圖H=(Vj,Ej),兩圖最大公共子圖(Max Common Subgraph,MCS)為mcs(Vi,Vj),圖G與圖H的節(jié)點(diǎn)距離L1(G,H)定義為公共子圖中節(jié)點(diǎn)數(shù)與兩個圖當(dāng)中最大節(jié)點(diǎn)數(shù)max {|Vi|,|Vj|}的比值與1的差,其表達(dá)式為
(1)
同理,圖G與圖H的邊距離L2(G,H)定義為公共子圖中邊的數(shù)量與兩個圖當(dāng)中最大的邊數(shù)量max {|Ei|,|Ej|}的比值與1的差,其表達(dá)式為
(2)
以圖的點(diǎn)距離與邊距離構(gòu)成的圖距離特征可以有效衡量兩張圖在結(jié)構(gòu)上的相似程度。
異常的子結(jié)構(gòu)(或子圖)是正常結(jié)構(gòu)的變異,即是正常圖邊和節(jié)點(diǎn)的增加或者缺失。通過計算圖G1轉(zhuǎn)化為G2的同構(gòu)圖的計算量,可以衡量G1和G2之間的結(jié)構(gòu)差異。
設(shè)圖G正常模式為S,由最小長度原理(Minimum Description Length,MDL)判定[9],并通過最小化目標(biāo)函數(shù)找到最小描述長度L為
L=min(L(G|S)+L(S))
(3)
式中:L(G|S)為使用S壓縮圖G后的描述長度;L(S)為正常模式S的描述長度。
設(shè)D(G1,Gn)表示圖G1與圖Gn之間的結(jié)構(gòu)差異,如果差異度為0,那么兩個圖為同構(gòu),否則為異構(gòu)。
設(shè)圖G任意一個子圖模式SA為異常結(jié)構(gòu),Dmax為SA到S的最大差異,且Pmax限定了SA為異常結(jié)構(gòu)的最大概率。那么有0 使用圖的正常模式,以根據(jù)最小長度原理對原始圖進(jìn)行描述,并通過計算與其它圖之間的差異度和異常概率可以判斷其它圖結(jié)構(gòu)是否異常。 LSTM算法[10]最早由Sepp Hochreiter和Jurgen Schmidhuber提出,是一種對遞歸神經(jīng)網(wǎng)絡(luò)的改進(jìn)算法。其適用于學(xué)習(xí)時間序列上的動態(tài)特征,針對異常行為所產(chǎn)生的特征變化能夠進(jìn)行有效捕捉,進(jìn)而實(shí)現(xiàn)異常行為檢測;其主要思想是使用三個門限設(shè)計來解決長期依賴問題,增加了神經(jīng)元的記憶和遺忘功能;其結(jié)構(gòu)由輸入層、隱含層和輸出層構(gòu)成,核心在于記憶單元的設(shè)計,由三個乘法門構(gòu)成。LSTM結(jié)構(gòu)如圖2所示。 圖2 LSTM結(jié)構(gòu)圖 (1)遺忘門:決定是否需要遺忘之前儲存的信息。讀取輸入當(dāng)前時刻t的特征向量和上一層輸出特征向量,通過激活sigmoid函數(shù)判斷是否遺忘,0表示丟棄,1表示存儲。其計算公式為 ft=w(Wf*[ht-1,xt]+bf) (4) 式中:ft為遺忘門值;ht-1表示前一時刻隱含層狀態(tài);xt表示當(dāng)前時刻特征向量;w為系數(shù);Wf為待定系數(shù);bf為常量。 (2)輸入門:判斷什么類型的新信息需要進(jìn)行學(xué)習(xí),使用tanh函數(shù)計算候選值向量。其計算公式為 it=w(Wi*[ht-1,xt]+bi) (5) Ct=tanh(Wc*[ht-1,xt]+bc) (6) 式中:it表示記憶門值;Ct表示當(dāng)前記憶細(xì)胞值;Wi、Wc為待定系數(shù);bi、bc為常量。 將上一層的狀態(tài)值Ct-1與ft相乘確定要丟棄的信息,加上新的候選值得到新記憶細(xì)胞值為 Ct+1=(ft*Ct-1+it*Ct) (7) 式中:Ct+1表示新記憶細(xì)胞值;Ct-1表示上一層記憶細(xì)胞值。 (3)輸出門:通過sigmoid激活函數(shù)獲取輸出狀態(tài),使用tanh函數(shù)計算輸出信息,得到結(jié)果ht。 ot=w(Wo*[ht-1,xt]+bo) (8) ht=ot*tanh(Ct+1) (9) 式中:ot表示輸出門值;Wo為待定系數(shù);bo為常量。 使用LSTM算法訓(xùn)練時間序列上的動態(tài)網(wǎng)絡(luò)特征變化,通過圖距離特征和圖結(jié)構(gòu)差異度兩種特征做為輸入特征向量,判斷某一時刻的網(wǎng)絡(luò)結(jié)構(gòu)是否為異常結(jié)構(gòu)。具體步驟如表1所示。 表1 LSTM算法步驟 在Python3.7環(huán)境下進(jìn)行仿真實(shí)驗(yàn),測試該方法的性能。 IDS2018數(shù)據(jù)集來自于小規(guī)模局域網(wǎng)上模擬網(wǎng)絡(luò)攻擊過程中收集到的網(wǎng)絡(luò)攻擊數(shù)據(jù),攻擊的基礎(chǔ)設(shè)施有420臺計算機(jī)和30臺服務(wù)器。數(shù)據(jù)集包括捕獲的每臺計算機(jī)的網(wǎng)絡(luò)流量和系統(tǒng)日志,每一條數(shù)據(jù)由70多個特征構(gòu)成,每一條記錄有目的IP、源IP及持續(xù)時間等。包含拒絕服務(wù)(Denial of Servie,DOS)攻擊、端口掃描、滲透測試及僵尸網(wǎng)絡(luò)4種攻擊類型。 以24h的數(shù)據(jù)作為訓(xùn)練集進(jìn)行實(shí)驗(yàn),其節(jié)點(diǎn)的數(shù)量情況如圖3所示,邊的數(shù)量情況如圖4所示。 圖3 節(jié)點(diǎn)數(shù)量 圖4 邊數(shù)量 本文方法使用的數(shù)據(jù)類型均為數(shù)值型,需要對數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化處理,使用Min-Max方法[11]將數(shù)據(jù)映射到(0,1)區(qū)間,如公式(10)所示。 (10) 式中:X為原始數(shù)據(jù);Xmax、Xmin分別為數(shù)據(jù)中每一個特征的最大值和最小值。 對于LSTM算法評價標(biāo)準(zhǔn)有4個:準(zhǔn)確率(Accuracy)、召回率(Recall)、精確率(Precision)和調(diào)和平均值(F-Measure),計算公式為 (11) (12) (13) (14) 式中:TP表示正類預(yù)測為正類數(shù)目;FP表示負(fù)類預(yù)測為正類數(shù)目;TN表示負(fù)類預(yù)測為負(fù)類數(shù)目;FN表示正類預(yù)測為負(fù)類數(shù)目。本文選取準(zhǔn)確率和召回率作為異常行為檢測評價指標(biāo)。 實(shí)驗(yàn)采用10h的數(shù)據(jù)作為測試集驗(yàn)證模型的有效性。其節(jié)點(diǎn)、邊和異常數(shù)量如表2所示。 表2 測試集節(jié)點(diǎn)、邊及異常數(shù)量 將LSTM進(jìn)行30輪迭代訓(xùn)練,不斷更新參數(shù),尋找最優(yōu)解。經(jīng)過15輪訓(xùn)練后損失函數(shù)值基本不變,達(dá)到了最優(yōu),損失函數(shù)值變化如圖5所示。 圖5 損失函數(shù)值變化 訓(xùn)練模型后對測試集進(jìn)行準(zhǔn)確性評估,并與基于特征的支持向量機(jī)(Support Vector Machine,SVM)異常檢測方法、基于主成分分析(Principal Component Analysis,PCA)的異常檢測方法、基于圖卷積(Graph Convolution,GCN)和基于矩陣分解的動態(tài)網(wǎng)絡(luò)異常檢測方法進(jìn)行對比,結(jié)果如圖6所示。 圖6 算法對比圖 由圖6可見,本文提出的方法在準(zhǔn)確率和召回率上遠(yuǎn)超過基于SVM的異常檢測方法。與其他三種方法相比,準(zhǔn)確率提高了7%左右,召回率提高了5%左右,達(dá)到良好的檢測效果。 本文提出一種基于LSTM的動態(tài)網(wǎng)絡(luò)異常行為檢測方法。該方法首先通過對動態(tài)網(wǎng)絡(luò)結(jié)構(gòu)的變化特征進(jìn)行分析,并計算圖結(jié)構(gòu)距離特征表示動態(tài)網(wǎng)絡(luò)的變化趨勢;其次,使用DPADS算法通過MDL原理壓縮圖結(jié)構(gòu),并計算圖結(jié)構(gòu)之間的差異度,減少內(nèi)存消耗,提高檢測速度;最后使用LSTM算法對數(shù)據(jù)集進(jìn)行訓(xùn)練,完成異常行為檢測。實(shí)驗(yàn)結(jié)果表明,基于LSTM的動態(tài)網(wǎng)絡(luò)異常行為檢測方法與其他異常檢測方法相比,準(zhǔn)確率提高了7%,召回率提高了5%。1.3 LSTM算法
2 仿真實(shí)驗(yàn)與結(jié)果分析
2.1 實(shí)驗(yàn)數(shù)據(jù)
2.2 數(shù)據(jù)預(yù)處理
2.3 評價標(biāo)準(zhǔn)
2.4 實(shí)驗(yàn)結(jié)果
3 結(jié)論