董衛(wèi)宇,李海濤,王瑞敏,任化娟,孫雪凱
(1.信息工程大學(xué) 網(wǎng)絡(luò)空間安全學(xué)院,鄭州 450002;2.鄭州大學(xué) 網(wǎng)絡(luò)空間安全學(xué)院,鄭州 450001)
在Internet 技術(shù)被廣泛應(yīng)用且復(fù)雜性不斷提高的背景下,網(wǎng)絡(luò)攻擊數(shù)量也呈現(xiàn)日益增長(zhǎng)的趨勢(shì)。在過(guò)去幾年中,超過(guò)90 000 個(gè)網(wǎng)站被釣魚(yú)攻擊工具包Angler Exploit Kit 的持續(xù)感染攻破[1]。隨著云計(jì)算時(shí)代的到來(lái),從云服務(wù)和應(yīng)用程序到個(gè)人設(shè)備和遠(yuǎn)程訪問(wèn)工具,企業(yè)承受的攻擊面不斷擴(kuò)大。此外,80%的安全和業(yè)務(wù)人員表示,由于遠(yuǎn)程工作,他們的組織更容易面臨風(fēng)險(xiǎn)。據(jù)Security affairs報(bào)告[2],一種名為ERMAC 的新型病毒已經(jīng)現(xiàn)身互聯(lián)網(wǎng),其主要針對(duì)安卓平臺(tái)的銀行應(yīng)用,可以從378 個(gè)銀行的錢(qián)包APP 中竊取金融數(shù)據(jù)。同時(shí)由文獻(xiàn)[3]可知,2021 年發(fā)現(xiàn)了66 個(gè)0-day 漏洞,幾乎是2020 年總數(shù)的2 倍,打破了0-day 黑客攻擊的記錄。
日益增多的網(wǎng)絡(luò)攻擊事件催生了網(wǎng)絡(luò)流量異常檢測(cè)技術(shù)的發(fā)展。通過(guò)收集網(wǎng)絡(luò)流量數(shù)據(jù)和提取相關(guān)特征,可將流量分為正常流量和異常流量。在一般情況下,當(dāng)正常流量數(shù)據(jù)存在于某些隨機(jī)模型的高概率區(qū)域,而異常發(fā)生在該模型的低概率區(qū)域時(shí),使用統(tǒng)計(jì)方法進(jìn)行分類(lèi),此時(shí)隨機(jī)模型要么是先驗(yàn)確定的,要么源自數(shù)據(jù)本身,這種方法的設(shè)計(jì)思想是測(cè)量異常分?jǐn)?shù),可通過(guò)使用假設(shè)檢驗(yàn)和決策理論來(lái)完成[4]。在某些情況下,數(shù)據(jù)實(shí)例的幾個(gè)維度(即特征)本質(zhì)上是相關(guān)的,可利用降維的方法將原始數(shù)據(jù)實(shí)例嵌入到一個(gè)維數(shù)較少的子空間中。因此,為了確定流量數(shù)據(jù)實(shí)例是正常還是異常,可將其投影到正常和異常子空間[5]。從信息論的角度來(lái)看,數(shù)據(jù)實(shí)例被看作是由網(wǎng)絡(luò)生成的一組符號(hào),而每個(gè)實(shí)例都是以一定的概率獨(dú)立生成的。因此,人們會(huì)試圖測(cè)量每個(gè)實(shí)例所表示的平均信息量,這種方法利用了熵的概念。目前有研究通過(guò)使用信息增益或相對(duì)熵進(jìn)行異常檢測(cè),旨在測(cè)量?jī)蓚€(gè)分布之間的統(tǒng)計(jì)距離。機(jī)器學(xué)習(xí)方法根據(jù)經(jīng)驗(yàn)區(qū)分正常流量行為和異常流量行為,其通常會(huì)提供一種映射以適應(yīng)看不見(jiàn)的網(wǎng)絡(luò)異常。通過(guò)使用標(biāo)記的訓(xùn)練集來(lái)學(xué)習(xí)映射函數(shù)的機(jī)器學(xué)習(xí)算法被稱(chēng)為監(jiān)督學(xué)習(xí)算法,而使用完全未標(biāo)記實(shí)例的訓(xùn)練集的機(jī)器學(xué)習(xí)算法被稱(chēng)為無(wú)監(jiān)督學(xué)習(xí)算法。有監(jiān)督的異常檢測(cè)可建立正常數(shù)據(jù)模型,并在觀察到的數(shù)據(jù)中檢測(cè)與正常模型的偏差。無(wú)監(jiān)督的異常檢測(cè)將一組未標(biāo)記的數(shù)據(jù)作為輸入,并嘗試找出隱藏在數(shù)據(jù)中的入侵行為。
多數(shù)網(wǎng)絡(luò)安全解決方案都是基于人為構(gòu)建的檢索引擎,但是手動(dòng)將最新的威脅和最新技術(shù)以及設(shè)備保持在最新的狀態(tài)是很難的。傳統(tǒng)的機(jī)器學(xué)習(xí)方法在進(jìn)行異常流量檢測(cè)時(shí)面臨一些問(wèn)題,如特征選擇困難、模型不能表示各個(gè)特征之間復(fù)雜的關(guān)系以及檢測(cè)誤報(bào)率(False Alarm Rate,F(xiàn)AR)較高。雖然目前深度學(xué)習(xí)已經(jīng)被廣泛用于各種應(yīng)用,包括圖像處理、自然語(yǔ)言處理、目標(biāo)檢測(cè)、計(jì)算機(jī)視覺(jué)等[6],但是基于深度學(xué)習(xí)的網(wǎng)絡(luò)異常檢測(cè)研究卻仍處于起步階段。與機(jī)器學(xué)習(xí)相比,深度學(xué)習(xí)不僅能夠以表示學(xué)習(xí)的方式自動(dòng)提取特征,而且還可以表示特征之間復(fù)雜的非線性關(guān)系。注意力(Attention)機(jī)制是神經(jīng)網(wǎng)絡(luò)中的一個(gè)重要概念,并在不同的領(lǐng)域得到了應(yīng)用,Attention 機(jī)制的引入可以提高神經(jīng)網(wǎng)絡(luò)的可解釋性。
在異常流量檢測(cè)研究中已有多種方法和實(shí)踐,但無(wú)論是使用基于統(tǒng)計(jì)的方法還是基于傳統(tǒng)機(jī)器學(xué)習(xí)的方法,從數(shù)據(jù)中找出正常數(shù)據(jù)和異常數(shù)據(jù)的能力都是有限的。數(shù)據(jù)決定了機(jī)器學(xué)習(xí)模型效果的上限,模型正是為了接近這個(gè)上限而構(gòu)建。雖然深度學(xué)習(xí)方法已經(jīng)在異常流量檢測(cè)領(lǐng)域得到一些應(yīng)用,但是在圖像領(lǐng)域和自然語(yǔ)言處理領(lǐng)域中得到廣泛關(guān)注的深度自注意力網(wǎng)絡(luò)結(jié)構(gòu)[7]中,Attention 機(jī)制卻鮮有應(yīng)用于異常流量檢測(cè)。
本文結(jié)合Attention 機(jī)制,基于深度學(xué)習(xí)方法建立惡意流量檢測(cè)的訓(xùn)練模型。對(duì)數(shù)據(jù)進(jìn)行預(yù)處理,將人工提取的惡意流量數(shù)據(jù)轉(zhuǎn)化為對(duì)應(yīng)的二進(jìn)制數(shù)據(jù)集,引入Attention 機(jī)制進(jìn)行特征提取,并輸入到前饋神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)惡意流量的多分類(lèi)和二分類(lèi)。同時(shí)為優(yōu)化檢測(cè)效果,在Attention 網(wǎng)絡(luò)中采用有效的激活函數(shù),進(jìn)一步提升異常檢測(cè)的準(zhǔn)確率。
文獻(xiàn)[8]在GRU 模型的最終輸出層引入線性支持向量機(jī)代替Softmax,實(shí)現(xiàn)對(duì)京都大學(xué)蜜罐系統(tǒng)2013 年網(wǎng)絡(luò)流量數(shù)據(jù)[9]入侵檢測(cè)的二分類(lèi),但其只使用了流量的時(shí)間特征,且模型的二分類(lèi)精度不高,真正例率約為84.37%。
文獻(xiàn)[10]基于邏輯回歸模型進(jìn)行異常流量檢測(cè),通過(guò)源IP、目的IP 等多個(gè)網(wǎng)絡(luò)流量基本特征建立網(wǎng)絡(luò)異常行為和正常行為訓(xùn)練集,從而構(gòu)建網(wǎng)絡(luò)異常流量挖掘模型,但其構(gòu)建的模型僅適用于樣本線性可分且特征空間不大的情況。
文獻(xiàn)[11]將728 維的原始流量數(shù)據(jù)轉(zhuǎn)換為圖像,并使用卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)以有監(jiān)督表示學(xué)習(xí)的方式從原始流量中提取空間特征,以此對(duì)惡意網(wǎng)絡(luò)流量進(jìn)行分類(lèi),同時(shí)使用一維CNN 實(shí)現(xiàn)加密流量的分類(lèi)[12]。該方案使用的是簡(jiǎn)單的CNN 模型,其將PCAP 流量數(shù)據(jù)的二進(jìn)制內(nèi)容映射到MNIST 數(shù)據(jù)集(大型手寫(xiě)數(shù)字?jǐn)?shù)據(jù)庫(kù)),進(jìn)而通過(guò)深度學(xué)習(xí)庫(kù)函數(shù)讀取這些數(shù)據(jù)集。與文獻(xiàn)[11]的設(shè)計(jì)思想類(lèi)似,文獻(xiàn)[13]提出一種空洞卷積自動(dòng)編碼器(Dilated Convolutional AutoEncoder,DCAE)的深度學(xué)習(xí)方法,該方法結(jié)合了堆疊式自動(dòng)編碼器和CNN 的優(yōu)勢(shì),訓(xùn)練過(guò)程包括無(wú)監(jiān)督的預(yù)訓(xùn)練和有監(jiān)督的訓(xùn)練,兩個(gè)訓(xùn)練過(guò)程分別使用大量未標(biāo)記的原始數(shù)據(jù)和少量標(biāo)記數(shù)據(jù)。然而,DCAE 作為一種生成模型,其訓(xùn)練每層的貪婪學(xué)習(xí)權(quán)值矩陣都耗費(fèi)了過(guò)長(zhǎng)的時(shí)間。
文獻(xiàn)[14]通過(guò)循環(huán)神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)模型來(lái)表示網(wǎng)絡(luò)中計(jì)算機(jī)之間的通信序列,并將此方法用于識(shí)別異常網(wǎng)絡(luò)流量。該文使用長(zhǎng)短期記憶(Long Short Term Memory,LSTM)網(wǎng)絡(luò)對(duì)流序列建模,IP 流[15]的定義為在預(yù)定時(shí)間間隔內(nèi)的一組IP 數(shù)據(jù)包,這些數(shù)據(jù)包具有一組公共屬性,包括源/目標(biāo)IP 地址、TCP/UDP 端口、VLAN、應(yīng)用協(xié)議類(lèi)型(來(lái)自O(shè)SI 模型的第3 層)和TOS(服務(wù)類(lèi)型),但該方法只能根據(jù)端口序列中前10 個(gè)端口號(hào)來(lái)預(yù)測(cè)下一個(gè)端口號(hào),應(yīng)用范圍有限。
文獻(xiàn)[16]研究基于全連接卷積網(wǎng)絡(luò)(Fully Convolutional Network,F(xiàn)CN)、變分自動(dòng)編碼器(Variational AutoEncoder,VAE)和LSTM 網(wǎng)絡(luò)構(gòu)建的深度學(xué)習(xí)模型,實(shí)驗(yàn)結(jié)果顯示,基于LSTM 序列到序列(Seq2Seq)結(jié)構(gòu)的模型在公共數(shù)據(jù)集上達(dá)到了99% 的二分類(lèi)精度。但該文進(jìn)行的實(shí)驗(yàn)僅對(duì)文獻(xiàn)[9]中數(shù)據(jù)集進(jìn)行了二分類(lèi)的檢測(cè),并沒(méi)有對(duì)多分類(lèi)進(jìn)行檢測(cè),并且模型不能很好地處理文獻(xiàn)[9]中數(shù)據(jù)集不平衡的問(wèn)題。
文獻(xiàn)[17]從網(wǎng)絡(luò)流中取出網(wǎng)絡(luò)包的時(shí)序特征、一般的統(tǒng)計(jì)特征和環(huán)境特征,以提取網(wǎng)絡(luò)流數(shù)據(jù)中有效和準(zhǔn)確的特征。文獻(xiàn)[18]提出基于改進(jìn)的一維卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行異常流量檢測(cè),為了不丟失數(shù)據(jù),其去除了卷積層之后的池化操作。
針對(duì)NSL-KDD 數(shù)據(jù)集,也有較多異常流量檢測(cè)研究。文獻(xiàn)[19]將深度神經(jīng)網(wǎng)絡(luò)和關(guān)聯(lián)規(guī)則挖掘相結(jié)合設(shè)計(jì)一種異常檢測(cè)系統(tǒng),首先使用深度神經(jīng)網(wǎng)絡(luò)對(duì)NSL-KDD 數(shù)據(jù)集進(jìn)行分類(lèi)處理,然后在離散的特征和標(biāo)簽之間建立關(guān)聯(lián)規(guī)則,從而降低神經(jīng)網(wǎng)絡(luò)處理結(jié)果的誤報(bào)率,該系統(tǒng)對(duì)NSL-KDD 測(cè)試集異常流量的多分類(lèi)預(yù)測(cè)準(zhǔn)確率為71.01%。文獻(xiàn)[20]對(duì)NSL-KDD 數(shù)據(jù)集進(jìn)行了特征的縮減和標(biāo)準(zhǔn)化處理,使用人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Network,ANN)進(jìn)行二分類(lèi)和五分類(lèi)的訓(xùn)練和測(cè)試,模型的二分類(lèi)測(cè)試準(zhǔn)確率達(dá)到81.20%。文獻(xiàn)[21]基于NSL-KDD數(shù)據(jù)對(duì)入侵檢測(cè)系統(tǒng)(Intrusion Detection System,IDS)中的卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行評(píng)估,設(shè)計(jì)一種數(shù)據(jù)預(yù)處理方法將屬性(特征)數(shù)據(jù)轉(zhuǎn)換為二進(jìn)制向量類(lèi)型,然后將數(shù)據(jù)轉(zhuǎn)為圖像形式,采用ResNet50 和GoogLeNet 作為底層的卷積神經(jīng)網(wǎng)絡(luò)對(duì)數(shù)據(jù)集進(jìn)行二分類(lèi)異常檢測(cè),該方法達(dá)到了79.41%和77.04%的二分類(lèi)預(yù)測(cè)準(zhǔn)確率。文獻(xiàn)[22]使用包含4 個(gè)隱藏層的深度神經(jīng)網(wǎng)絡(luò)搭建了IDS,在NSL-KDD 數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果表明,該方法達(dá)到了84.70%的二分類(lèi)預(yù)測(cè)準(zhǔn)確率。
目前,對(duì)網(wǎng)絡(luò)流量異常檢測(cè)的研究多采用深度學(xué)習(xí)的方法,如使用CNN 提取空間特征、使用RNN提取時(shí)序特征等,但現(xiàn)有模型在可解釋性和檢測(cè)效果方面仍有可提升的空間。本文將注意力(Attention)機(jī)制和CNN 相結(jié)合,提出一種基于堆疊卷積自注意力的網(wǎng)絡(luò)流量異常檢測(cè)模型。通過(guò)堆疊多個(gè)Attention 模塊增加網(wǎng)絡(luò)深度,并在Attention 模塊中引入CNN、池化層、批歸一化層和激活函數(shù)層,防止模型過(guò)擬合。在此基礎(chǔ)上,將Attention 模塊的輸出向量輸入到深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Network,DNN)結(jié)構(gòu)中,對(duì)模型進(jìn)行有監(jiān)督的訓(xùn)練,使模型能夠?qū)π碌臏y(cè)試數(shù)據(jù)進(jìn)行預(yù)測(cè),識(shí)別出對(duì)應(yīng)的網(wǎng)絡(luò)攻擊類(lèi)型。
Attention 機(jī)制最早應(yīng)用于圖像領(lǐng)域,近年來(lái),其在自然語(yǔ)言處理領(lǐng)域也受到了廣泛的關(guān)注。2017 年,谷歌發(fā)布的《Attention is all you need》[7]提出在機(jī)器翻譯任務(wù)中大量使用自注意力機(jī)制來(lái)學(xué)習(xí)文本表示。本文提出的模型堆疊多個(gè)Attention 模塊,并在模塊中引入CNN、池化層、批歸一化層和激活函數(shù)層,進(jìn)而將Attention 模塊的輸出向量輸入到DNN中,對(duì)模型進(jìn)行有監(jiān)督的訓(xùn)練。
卷積注意力(CON-ATTN)模型是將卷積神經(jīng)網(wǎng)絡(luò)(CNN)和注意力機(jī)制(Attention)相結(jié)合,其結(jié)構(gòu)如圖1 左部分所示。
CON-ATTN 模型上層是卷積塊,中間是注意力塊,下層是兩個(gè)卷積塊,每個(gè)卷積塊由二維卷積、批標(biāo)準(zhǔn)化和激活函數(shù)層組成。其中:二維卷積層提取特征并擴(kuò)展通道;批標(biāo)準(zhǔn)化層對(duì)每批訓(xùn)練數(shù)據(jù)做標(biāo)準(zhǔn)化處理,并將分散的數(shù)據(jù)統(tǒng)一;激活函數(shù)層引入非線性因素并處理非線性可分?jǐn)?shù)據(jù)。Attention 模塊處理來(lái)自上層卷積塊的輸出向量,并把該輸出向量中通道的數(shù)目平均分為三個(gè)部分,分別賦值給Q、K和V三個(gè)向量,每個(gè)向量的維度均為(b,c,w,h),其中:b為批大小(batch size);c為通道數(shù)(channel size);w為寬度(width);h為高度(height)。通道數(shù)c如式(1)所示,其中:nhead表示頭的個(gè)數(shù);dhead表示每個(gè)頭的維度。

Attention 模塊根據(jù)Q、K向量求得注意力向量Α,如式(2)所示。其中:fsoftmax為softmax 函數(shù);fpos為位置編碼函數(shù),用于學(xué)習(xí)向量Q中各個(gè)數(shù)據(jù)的相對(duì)位置信息。將得到的位置向量作為注意力向量的一部分,可確保提取到流量數(shù)據(jù)中重要的特征。

將注意力向量Α和V向量相乘,得到Attention模塊的輸出向量O,如式(3)所示。其中:向量O是向量V經(jīng)過(guò)注意力向量Α處理之后的輸出向量,用于使模型關(guān)注V向量中更關(guān)鍵的那部分特征。

CON-ATTN 模型的下層是含有多個(gè)隱藏層的神經(jīng)網(wǎng)絡(luò),用于加深網(wǎng)絡(luò)深度并進(jìn)一步從Attention 模塊的輸出向量中提取特征。
本文將多個(gè)圖1 左部分所示CON-ATTN 結(jié)構(gòu)和DNN 相結(jié)合,提出一種堆疊卷積注意力網(wǎng)絡(luò)(STACON-ATTN)模型,如圖1 右部分所示。CONATTN 結(jié)構(gòu)從輸入向量中提取關(guān)鍵特征并使輸入向量的通道數(shù)發(fā)生改變或者保持不變,因此,原始輸入向量可以輸入到多個(gè)CON-ATTN 結(jié)構(gòu)中。多個(gè)CON-ATTN 結(jié)構(gòu)通過(guò)殘差連接方式結(jié)合在一起,在一定程度上避免了隨著網(wǎng)絡(luò)層數(shù)的加深而出現(xiàn)的梯度消失問(wèn)題[23]。在STACON-ATTN 結(jié)構(gòu)的末尾是一個(gè)DNN 結(jié)構(gòu),本文將該DNN 結(jié)構(gòu)設(shè)計(jì)為由5 個(gè)全連接層連接而成,這是因?yàn)槿B接層數(shù)過(guò)少會(huì)使得模型陷入過(guò)擬合狀態(tài),而全連接層數(shù)過(guò)多會(huì)增加模型訓(xùn)練的代價(jià)且不能顯著提升模型性能。本文把DNN結(jié)構(gòu)輸出向量的維度設(shè)置為異常流量標(biāo)簽類(lèi)別的個(gè)數(shù),將DNN 結(jié)構(gòu)輸出向量與流量數(shù)據(jù)真實(shí)標(biāo)簽一起輸入到一個(gè)損失函數(shù)中,如多分類(lèi)時(shí)輸入到交叉熵?fù)p失函數(shù)中,然后通過(guò)反向傳播和梯度下降法進(jìn)行模型訓(xùn)練。

圖1 STACON-ATTN 模型結(jié)構(gòu)Fig.1 Structure of STACON-ATTN model
基于堆疊卷積注意力的網(wǎng)絡(luò)流量異常檢測(cè)模型架構(gòu)如圖2 所示,其中主要包含數(shù)據(jù)預(yù)處理、訓(xùn)練和測(cè)試3 個(gè)階段。

圖2 網(wǎng)絡(luò)流量異常檢測(cè)模型結(jié)構(gòu)Fig.2 Structure of network traffic anomaly detection model
1)數(shù)據(jù)預(yù)處理階段。首先分別將訓(xùn)練數(shù)據(jù)和測(cè)試數(shù)據(jù)中離散文本類(lèi)型的特征字段轉(zhuǎn)換為數(shù)值類(lèi)型,對(duì)整型和浮點(diǎn)型的特征字段進(jìn)行類(lèi)型的擴(kuò)展;然后將數(shù)值128 填充到二進(jìn)制特征的空缺字節(jié)中;最后將填充完成的二進(jìn)制數(shù)據(jù)以二維單通道圖形的形式存儲(chǔ)到文件中,完成對(duì)數(shù)據(jù)集的預(yù)處理。
2)訓(xùn)練階段。向架構(gòu)中的神經(jīng)網(wǎng)絡(luò)輸入預(yù)處理之后的特征數(shù)據(jù)和標(biāo)簽數(shù)據(jù),使用交叉熵?fù)p失函數(shù)和Adam 優(yōu)化器[24]對(duì)訓(xùn)練的過(guò)程進(jìn)行不斷調(diào)整,損失函數(shù)的輸入是真實(shí)標(biāo)簽和預(yù)測(cè)標(biāo)簽,模型的訓(xùn)練目標(biāo)是預(yù)測(cè)標(biāo)簽和真實(shí)標(biāo)簽之間差異最小。二分類(lèi)情況和多分類(lèi)情況下交叉熵?fù)p失函數(shù)的定義如式(4)所示,其中:m表示樣本的個(gè)數(shù);yi表示實(shí)際為正類(lèi)的概率;表示預(yù)測(cè)為正類(lèi)的概率。

3)測(cè)試階段。對(duì)訓(xùn)練好的模型,輸入測(cè)試集中的特征數(shù)據(jù)和真實(shí)的標(biāo)簽數(shù)據(jù),通過(guò)分析預(yù)測(cè)出的標(biāo)簽數(shù)據(jù)和真實(shí)標(biāo)簽數(shù)據(jù)之間的差異,對(duì)模型的效果進(jìn)行評(píng)估。
本文實(shí)驗(yàn)使用公開(kāi)的NSL-KDD 數(shù)據(jù)集,該數(shù)據(jù)集是KDD99 數(shù)據(jù)集[25]的進(jìn)一步發(fā)展,也是第三屆國(guó)際知識(shí)發(fā)現(xiàn)與數(shù)據(jù)挖掘工具大賽使用的數(shù)據(jù)集。KDD99 數(shù)據(jù)集中存在一些固有的問(wèn)題[25],NSL-KDD數(shù)據(jù)集為了解決這些問(wèn)題而建立。NSL-KDD 數(shù)據(jù)集雖然不是現(xiàn)實(shí)世界真實(shí)網(wǎng)絡(luò)的反映,但由于目前缺乏基于網(wǎng)絡(luò)的IDS 公共數(shù)據(jù)集,因此仍被用于檢驗(yàn)IDS 中不同的入侵檢測(cè)方法。
3.1.1 NSL-KDD 數(shù)據(jù)集攻擊類(lèi)型
NSL-KDD 數(shù)據(jù)集所有攻擊類(lèi)別下存在的攻擊類(lèi)型如表1 所示。從表1 可以看出,NSL-KDD 數(shù)據(jù)集中共有4 種不同的攻擊類(lèi)別、38 種不同的攻擊類(lèi)型。在訓(xùn)練集和測(cè)試集的每個(gè)攻擊類(lèi)別下都存在若干個(gè)攻擊類(lèi)型,訓(xùn)練集中有22 種不同的攻擊類(lèi)型,測(cè)試集中有16 種不同的攻擊類(lèi)型。由于在測(cè)試集中存在訓(xùn)練集中不存在的攻擊類(lèi)型,因此使用NSL-KDD 數(shù)據(jù)集能夠很好地對(duì)模型的泛化能力進(jìn)行檢驗(yàn)。

表1 各攻擊類(lèi)別下的詳細(xì)攻擊類(lèi)型Table 1 Detailed attack types under each attack category
對(duì)原始數(shù)據(jù)集做進(jìn)一步處理,將屬于同一攻擊類(lèi)別不同攻擊類(lèi)型的數(shù)據(jù)樣本設(shè)置為同一標(biāo)簽,得到訓(xùn)練集和測(cè)試集正常攻擊類(lèi)別樣本數(shù)量以及其他各攻擊類(lèi)別樣本數(shù)量的統(tǒng)計(jì)信息,如表2 所示。

表2 訓(xùn)練集和測(cè)試集中各類(lèi)別樣本數(shù)量統(tǒng)計(jì)Table 2 Number of samples of each category in training set and test set
3.1.2 數(shù)據(jù)預(yù)處理
由于深度神經(jīng)網(wǎng)絡(luò)善于處理“像素”數(shù)據(jù),每個(gè)“像素”可以用一個(gè)字節(jié)(Byte)表示,因此本文對(duì)手工提取的特征進(jìn)行預(yù)處理,包括數(shù)據(jù)標(biāo)簽處理和數(shù)據(jù)特征處理2 個(gè)步驟。
1)數(shù)據(jù)標(biāo)簽處理。在4 種攻擊類(lèi)別下共有38 種攻擊類(lèi)型,因此,需要將各個(gè)攻擊類(lèi)別下的所有攻擊類(lèi)型標(biāo)簽都轉(zhuǎn)換為其所屬的攻擊類(lèi)別標(biāo)簽。經(jīng)過(guò)處理后,數(shù)據(jù)標(biāo)簽就從初始的樣本類(lèi)型轉(zhuǎn)變?yōu)闃颖绢?lèi)別。
2)數(shù)據(jù)特征處理。通過(guò)查看數(shù)據(jù)文件可以發(fā)現(xiàn),如果把difficult_level 字段也考慮進(jìn)去,那么數(shù)據(jù)集中共有43 個(gè)字段,由于有1 個(gè)字段表示標(biāo)注信息,因此共有42 個(gè)表示特征的字段,其中有3 個(gè)字段是離散的,即協(xié)議類(lèi)型(protocol_type)、服務(wù)(service)和標(biāo)記(flag)字段。首先需要將這3 個(gè)離散的字段轉(zhuǎn)換為數(shù)值類(lèi)型,對(duì)應(yīng)類(lèi)型的數(shù)值為0,1,…,n-1(n為對(duì)應(yīng)離散字段中離散值的個(gè)數(shù))。對(duì)數(shù)據(jù)集中的各個(gè)特征只保留Int 和Float 數(shù)值類(lèi)型,然后將這2 種數(shù)值類(lèi)型的所有特征字段分別轉(zhuǎn)換為Int64 和Float64 類(lèi)型,并進(jìn)行不同程度的特征值放大,即分別將各個(gè)特征的值乘以100、104和109。
由于本文使用了批歸一化技術(shù)[26]來(lái)對(duì)每批訓(xùn)練數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化,因此不需要對(duì)原始數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化處理,每個(gè)樣本的每個(gè)特征均占用8 Byte(Int64 和Float64 類(lèi)型)的內(nèi)存,42 個(gè)特征字段共占用336 Byte的內(nèi)存。將每個(gè)樣本映射到一個(gè)19×19 像素的圖中,因?yàn)槊總€(gè)像素占用1 Byte,所以為了便于神經(jīng)網(wǎng)絡(luò)的處理,還需要填充25 Byte(19×19-336)。由于每個(gè)字節(jié)最終都是一個(gè)Uint8 類(lèi)型,一個(gè)字節(jié)表示的數(shù)值范圍是0~255,采用這256 個(gè)數(shù)的中位數(shù)填充數(shù)據(jù)可以給原始的數(shù)據(jù)集帶來(lái)較少的影響,因此本文對(duì)每個(gè)字節(jié)填充的是數(shù)值128,而非0。通過(guò)對(duì)訓(xùn)練集和測(cè)試集進(jìn)行同樣的處理,并將每個(gè)樣本的數(shù)據(jù)和標(biāo)簽在數(shù)據(jù)集中設(shè)置為同樣的索引,由此完成二進(jìn)制數(shù)據(jù)集的構(gòu)造。
為了更全面地驗(yàn)證模型的效果,針對(duì)NSL-KDD數(shù)據(jù)進(jìn)行多分類(lèi)和二分類(lèi)的異常流量檢測(cè),并將本文模型實(shí)驗(yàn)結(jié)果與文獻(xiàn)[19-22]模型實(shí)驗(yàn)結(jié)果進(jìn)行對(duì)比。本文使用整流線性單元(ReLU)函數(shù)作為模型的激活函數(shù),該函數(shù)不僅能夠加快模型的訓(xùn)練速度,而且可避免使用Sigmoid 和Tanh 激活函數(shù)導(dǎo)致的梯度消失問(wèn)題[27]。
3.2.1 評(píng)價(jià)標(biāo)準(zhǔn)
本文實(shí)驗(yàn)采用準(zhǔn)確率、精確率、召回率、F1 分?jǐn)?shù)和ROC 曲線對(duì)模型性能進(jìn)行評(píng)價(jià)。以TP表示將樣本預(yù)測(cè)為正類(lèi)且預(yù)測(cè)正確的樣本數(shù),TN表示將樣本預(yù)測(cè)為負(fù)類(lèi)且預(yù)測(cè)正確的樣本數(shù),F(xiàn)P表示將樣本預(yù)測(cè)為正類(lèi)且預(yù)測(cè)錯(cuò)誤的樣本數(shù),F(xiàn)N表示將樣本預(yù)測(cè)為負(fù)類(lèi)且預(yù)測(cè)錯(cuò)誤的樣本數(shù)。
準(zhǔn)確率為所有預(yù)測(cè)正確的正負(fù)樣本數(shù)量之和與總體樣本數(shù)量的比值,計(jì)算公式如式(5)所示:

精確率也稱(chēng)為查準(zhǔn)率,用于評(píng)估模型找到相關(guān)目標(biāo)的能力,計(jì)算公式如式(6)所示:

召回率也稱(chēng)為查全率,用于評(píng)估模型找到全部相關(guān)目標(biāo)的能力,即模型給出的預(yù)測(cè)結(jié)果最多能覆蓋多少真實(shí)目標(biāo),計(jì)算公式如式(7)所示:

F1 分?jǐn)?shù)是基于精確率和召回率的調(diào)和平均,計(jì)算公式如式(8)所示:

受試者工作特征(Receiver Operating Characteristic,ROC)曲線上點(diǎn)的橫坐標(biāo)為假正例率,也被稱(chēng)為誤報(bào)率,計(jì)算公式如式(9)所示:

在異常流量檢測(cè)任務(wù)中,常常將攻擊類(lèi)別定義為正例,將正常類(lèi)別的流量定義為負(fù)例,誤報(bào)指的是把正常流量識(shí)別為了攻擊流量,而這是IDS 中最不能容忍的。
ROC 曲線上點(diǎn)的縱坐標(biāo)為真正例率,計(jì)算公式如式(10)所示:

3.2.2 實(shí)驗(yàn)環(huán)境與超參數(shù)設(shè)置
實(shí)驗(yàn)的軟件環(huán)境是Ubuntu18.04 操作系統(tǒng)、Pytorch1.9.1 和Cuda9.0,硬件環(huán)境是Genuine Intel?CPU @ 2.00 GHz,32 GB 內(nèi)存,Tesla K80 GPU 11 GB 顯存。
實(shí)驗(yàn)所采用的批大小設(shè)置為128。雖然可以在每次訓(xùn)練之前設(shè)置不同的批大小,但經(jīng)過(guò)驗(yàn)證可知,批大小的設(shè)置應(yīng)當(dāng)采取折中的方案。例如當(dāng)批大小設(shè)置為2、4、8 等較小的值時(shí),雖然能夠降低顯存的占用,但帶來(lái)了訓(xùn)練時(shí)間的大幅提升,而當(dāng)批大小設(shè)置為512 等較大的值時(shí),會(huì)占用5.6 GB 左右的顯存,易使模型陷入局部最優(yōu)狀態(tài),也會(huì)減慢模型訓(xùn)練的速度。因此,本文實(shí)驗(yàn)將批大小設(shè)置為128,使得顯存占用、訓(xùn)練速度和模型的收斂達(dá)到一種比較理想的平衡狀態(tài)。
卷積核的作用是從特征圖中提取特征,其形態(tài)和大小的設(shè)置會(huì)給模型的效果造成顯著影響。文獻(xiàn)[28]研究表明,當(dāng)特征圖不大時(shí),使用較小的卷積核可以獲得更好的效果,相反,較大的特征圖可使用稍大的卷積核。因此,本文實(shí)驗(yàn)將卷積核大小設(shè)置為3×3。
一般學(xué)習(xí)率的設(shè)置在0.000 1 到0.01 之間,在神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過(guò)程中,學(xué)習(xí)率設(shè)置得過(guò)大會(huì)導(dǎo)致模型很容易跨越最優(yōu)解,而學(xué)習(xí)率設(shè)置得過(guò)小會(huì)導(dǎo)致梯度更新不顯著從而不能到達(dá)最優(yōu)解。本文實(shí)驗(yàn)設(shè)置的學(xué)習(xí)率初始大小為0.002,且學(xué)習(xí)率會(huì)隨著總輪數(shù)(Epoch)動(dòng)態(tài)減小。文獻(xiàn)[29]研究表明,學(xué)習(xí)率的衰減可以提升模型的泛化能力,本文實(shí)驗(yàn)將每10 個(gè)Epoch 作為學(xué)習(xí)率衰減的時(shí)間節(jié)點(diǎn),此時(shí)將學(xué)習(xí)率設(shè)置為當(dāng)前值的0.8 倍。
將預(yù)處理后的訓(xùn)練集分別輸入到使用不同激活函數(shù)的STACON-ATTN 網(wǎng)絡(luò)中得到測(cè)試模型,再將預(yù)處理后的測(cè)試集輸入到測(cè)試模型中,測(cè)試結(jié)果如表3 所示。從表3 可以看出,GeLU 激活函數(shù)在數(shù)據(jù)量較多的Normal 類(lèi)別和數(shù)據(jù)量較少的U2R 攻擊類(lèi)別中表現(xiàn)較好,Mish 激活函數(shù)對(duì)U2R 這種攻擊類(lèi)別識(shí)別的精確率比其他的激活函數(shù)高0.31 以上,使用ELU 激活函數(shù)使得模型的誤報(bào)率最低降到0.029 9,而ReLU 激活函數(shù)在各項(xiàng)評(píng)價(jià)指標(biāo)上表現(xiàn)均較為優(yōu)秀。

表3 各激活函數(shù)在STACON-ATTN 多分類(lèi)測(cè)試中的檢測(cè)效果對(duì)比Table 3 Comparison of detection effect of various activation functions in STACON-ATTN multiple classification test
為驗(yàn)證STACON-ATTN 模型的多分類(lèi)異常檢測(cè)效果,將其與傳統(tǒng)的機(jī)器學(xué)習(xí)方法進(jìn)行對(duì)比,對(duì)比結(jié)果如表4所示,從表4可以看出,STACON-ATTN 模型對(duì)多種攻擊類(lèi)型檢測(cè)的準(zhǔn)確率最高(0.807 6)。除DoS 攻擊類(lèi)別的F1 分?jǐn)?shù)略微低于KNN 和SVM 模型以外,在Normal、Probe、R2L 和U2R 攻擊類(lèi)型中的F1 分?jǐn)?shù)都是最高的。F1分?jǐn)?shù)是精確率和召回率的調(diào)和平均,同時(shí)結(jié)合了查準(zhǔn)率和查全率,因此,F(xiàn)1分?jǐn)?shù)能夠體現(xiàn)出一個(gè)模型的整體質(zhì)量。從表4 還可以看出,對(duì)于Normal 類(lèi)別,各個(gè)模型的召回率都非常高,說(shuō)明Normal 類(lèi)別的樣本被各個(gè)模型識(shí)別為異常的概率非常低,因此,對(duì)Normal 類(lèi)別的誤報(bào)率也不高。DoS 攻擊類(lèi)別識(shí)別的精確率要高于召回率,這說(shuō)明其他類(lèi)型的攻擊一般不會(huì)被識(shí)別為DoS 攻擊,而DoS 攻擊有可能被識(shí)別為其他的攻擊類(lèi)別。STACON-ATTN 模型可以顯著提高對(duì)Probe 和R2L攻擊類(lèi)別檢測(cè)的召回率,說(shuō)明模型已經(jīng)充分學(xué)習(xí)到了這2 種攻擊類(lèi)別的特征。從對(duì)U2R 類(lèi)別攻擊的識(shí)別結(jié)果可以看出,極低的召回率明顯拉低了F1 分?jǐn)?shù),說(shuō)明各個(gè)模型很難學(xué)習(xí)到U2R 攻擊類(lèi)別的特征,這和該類(lèi)別樣本數(shù)較少有關(guān)。

表4 STACON-ATTN 與機(jī)器學(xué)習(xí)模型的多分類(lèi)性能對(duì)比Table 4 Comparison of multiple classification performance among STACON-ATTN and machine learning models
對(duì)各種攻擊類(lèi)別以及Normal 類(lèi)別識(shí)別的ROC曲線如圖3 所示,其中樣本數(shù)差異較大的4 種攻擊類(lèi)型分別對(duì)應(yīng)4 條不同的ROC 曲線。從圖3 可以看出,每條曲線下方的面積(AUC 值)都超過(guò)了0.93,且最大的AUC 值達(dá)到0.97,說(shuō)明本文模型對(duì)NSL-KDD數(shù)據(jù)集中各種攻擊類(lèi)別識(shí)別效果較好。

圖3 多分類(lèi)情況下的ROC 曲線Fig.3 ROC curve in the case of multiple classification
為進(jìn)一步驗(yàn)證模型效果,對(duì)NSL-KDD 數(shù)據(jù)集進(jìn)行二分類(lèi)的異常檢測(cè)。對(duì)預(yù)處理后的多分類(lèi)數(shù)據(jù)集的標(biāo)簽做進(jìn)一步處理,得到2 種類(lèi)別的數(shù)據(jù)集,其中:0 代表正常類(lèi)別;1 代表異常(攻擊)類(lèi)別。使用新處理完成的數(shù)據(jù)集進(jìn)行模型的訓(xùn)練和預(yù)測(cè),并與6 種經(jīng)典的分類(lèi)方法以及4 種深度學(xué)習(xí)模型進(jìn)行對(duì)比,對(duì)比結(jié)果如表5 所示。

表5 STACON-ATTN 與深度學(xué)習(xí)模型的二分類(lèi)性能對(duì)比Table 5 Comparison of two classification performance among STACON-ATTN and deep learning models
本文提出一種堆疊卷積注意力網(wǎng)絡(luò)模型用于異常流量分類(lèi)和檢測(cè),并基于公開(kāi)的NSL-KDD 數(shù)據(jù)集分別驗(yàn)證多分類(lèi)和二分類(lèi)異常檢測(cè)性能。實(shí)驗(yàn)結(jié)果表明,該模型能夠從輸入數(shù)據(jù)中提取出有效的空間特征信息和相對(duì)位置特征信息,F(xiàn)1 分?jǐn)?shù)和AUC 值等綜合指標(biāo)優(yōu)于對(duì)比的機(jī)器學(xué)習(xí)方法和深度神經(jīng)網(wǎng)絡(luò)。后續(xù)將對(duì)數(shù)據(jù)預(yù)處理和樣本增強(qiáng)過(guò)程進(jìn)行優(yōu)化,采用自然語(yǔ)言處理領(lǐng)域中的詞嵌入技術(shù)將原始數(shù)據(jù)集中的特征表示為一種嵌入向量,在此基礎(chǔ)上對(duì)少數(shù)類(lèi)中的惡意流量數(shù)據(jù)進(jìn)行樣本增強(qiáng),從而進(jìn)一步提升對(duì)惡意流量樣本的檢測(cè)性能。