高勝花,李世明, 2,李秋月,於家偉,鄭愛勤
(1.哈爾濱師范大學(xué) 計算機科學(xué)與信息工程學(xué)院,黑龍江 哈爾濱 150025;2.上海市信息安全綜合管理技術(shù)研究重點實驗室,上海 200240)
在網(wǎng)絡(luò)空間信息安全領(lǐng)域,網(wǎng)絡(luò)流量異常檢測對于保障網(wǎng)絡(luò)的正常運行和網(wǎng)絡(luò)的安全起著至關(guān)重要的作用[1]。隨著網(wǎng)絡(luò)服務(wù)應(yīng)用數(shù)據(jù)巨增,Web服務(wù)器遭受的攻擊數(shù)量越來越多,攻擊類型也越來越復(fù)雜,為保證向用戶提供持續(xù)、安全和可靠的應(yīng)用服務(wù),需要實時檢測出Web服務(wù)中的異常流量。現(xiàn)有的Web異常流量檢測方法大多數(shù)為誤用檢測或是基于傳統(tǒng)的機器學(xué)習(xí)算法檢測[2];誤用檢測是根據(jù)已知攻擊行為為主要特征,將入侵行為與正常行為根據(jù)已知特征加以區(qū)分來實現(xiàn)入侵行為的檢測,該類方法效率高且誤報率低,但只能發(fā)現(xiàn)已知的入侵類型,漏報率較高,特征的維護多采用人工方式完成。傳統(tǒng)機器學(xué)習(xí)檢測算法依靠手工提取流量中的特征,人為干預(yù)較嚴重。
網(wǎng)絡(luò)異常流量的檢測是保障網(wǎng)絡(luò)安全至關(guān)重要的防御步驟。文獻[3]提出了一個可以普遍適用的入侵檢測框架,該框架能夠檢測真實世界的僵尸網(wǎng)絡(luò),具有非常低的假陽性率。文獻[4]建立了一個流量檢測系統(tǒng)MadTracer,自動生成檢測規(guī)則,利用檢測Web流量來判斷服務(wù)是否包含不正當(dāng)廣告。實驗結(jié)果表示MadTracer檢測準確率達到了95%,但只能檢測已有的攻擊類型。文獻[5]針對HTTP異常流量檢測問題,在原始數(shù)據(jù)的基礎(chǔ)上與經(jīng)驗特征工程相結(jié)合的思想提出一種深度混合結(jié)構(gòu)神經(jīng)網(wǎng)絡(luò),所提方法檢測效果有較明顯提升,準確率可達98.1%,但需要依賴人的經(jīng)驗特征,存在人為誤差。文獻[6]將深度學(xué)習(xí)應(yīng)用到工控系統(tǒng)當(dāng)中,將流量轉(zhuǎn)換成灰度圖,用構(gòu)造好的灰度圖去進行模型訓(xùn)練,對數(shù)據(jù)進行實時的異常檢測,并做出相應(yīng)的安全預(yù)防,實驗結(jié)果顯示精確度達到97.88%。文獻[7]搭建基于SPP卷積神經(jīng)網(wǎng)絡(luò)模型去進行Web攻擊檢測,解決傳統(tǒng)模型只能處理固定大小輸入的問題,但不能根據(jù)特征圖的不同,動態(tài)地調(diào)整池化過程。
針對上述文獻在異常流量檢測中存在的問題,本文在傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)基礎(chǔ)上,構(gòu)建基于動態(tài)自適應(yīng)池化(Dynamic Adaptive Pooling Algorithm,DAPA)的卷積神經(jīng)網(wǎng)絡(luò)Web異常流量檢測模型,可以根據(jù)特征圖的不同,動態(tài)地調(diào)整池化過程,并在全連接層后連接了一個Dropout層,解決模型在流量特征提取過程中存在的過擬合問題,提高了模型的泛化能力。
目前,業(yè)界網(wǎng)絡(luò)異常行為檢測方法從原理上來說大約有如下幾種分類,如表1所示。

表1 網(wǎng)絡(luò)異常檢測方法分類
本文采用基于分類方法中的二分類,搭建基于動態(tài)自適應(yīng)池化的卷積神經(jīng)網(wǎng)絡(luò)模型,用該模型將數(shù)據(jù)流量劃分為異常或正常。
Web攻擊檢測框架分為兩個階段,如圖1所示。
第一階段:數(shù)據(jù)預(yù)處理,進行流量捕獲,獲得數(shù)據(jù)集,對數(shù)據(jù)集中每一條請求流量進行剪裁、對齊、補足生成一系列50×150的矩陣數(shù)據(jù),矩陣數(shù)據(jù)作為輸入;
第二階段:使用動態(tài)自適應(yīng)池化卷積神經(jīng)模型進行異常網(wǎng)絡(luò)流量檢測。
動態(tài)自適應(yīng)池化卷積神經(jīng)網(wǎng)絡(luò)模型如圖2所示,異常流量檢測過程中,流量數(shù)據(jù)轉(zhuǎn)換成矩陣數(shù)據(jù)后,作為模型的輸入。池化是對流量特征進行二次提取,需對池化域的流量特征進行歸納和計算,在全連接層后添加Dropout層。

圖2 CNN結(jié)構(gòu)框架
2.2.1 動態(tài)自適應(yīng)池化
池化是一種降采樣的方法,池化層直接計算池化窗口內(nèi)元素的特征值,設(shè)F為卷積層輸入的流量矩陣,池化域為c×c的矩陣P,b2為偏置,S為得到的子采樣特征矩陣,池化過程移動步長設(shè)成c,本文以最大二均值池化為基礎(chǔ),其表達式為:
(1)
式(1)是在最大池化的基礎(chǔ)上改進的,當(dāng)一些影響因素的值較大時,使用最大池化,會降低流量矩陣特征的提取,所以本文池化時會選取最大的兩個元素求和,并取和的平均值作為子采樣的特征值。
動態(tài)自適應(yīng)池化模型以最大二均值池化為基礎(chǔ)進行改進與優(yōu)化,最大池化模型和平均值池化模型在對流量特征圖進行二次提取的時候,都很難取得較好的效果,因此提出了動態(tài)自適應(yīng)池化算法,其算法表達式為:

(2)
其中u為池化因子,如式(3)所示[8]:

(3)
其中a為流量特征圖中除最大和第二大兩個特征值外所有元素的平均值,vmax為流量特征圖中最大和第二大的兩個特征值的平均值,θ為校正誤差項,p為特征系數(shù)。流量特征圖的不同會導(dǎo)致池化因子的取值不同,池化因子會動態(tài)調(diào)整來達到最優(yōu)。池化因子取值范圍為μ∈(0,1),可以同時兼顧最大二均值池化和平均池化,在異常流量特征提取時既不會導(dǎo)致精度丟失過高,也降低了最大池化忽略其他較大因素時產(chǎn)生的影響。
2.2.2 CNN中的Dropout層設(shè)計
本模型在異常流量特征提取過程中存在過擬合問題,其表現(xiàn)為錯誤檢測率在訓(xùn)練集上非常低而在測試集上卻較高,目前解決該問題的方法主要有正則化、剪枝處理、提前終止迭代、Dropout等。
因Dropout具有較好的泛化能力和魯棒性,故本模型采用Dropout[9]來解決過擬合問題。當(dāng)每個神經(jīng)元都去記錄流量特征的時候就會讓特征信息被過度地記錄,導(dǎo)致僅僅記住了訓(xùn)練集上固定的特征。而Dropout層只有部分的神經(jīng)元參與權(quán)值更新,弱化了神經(jīng)元之間的相互影響,從而有效預(yù)防了固定特征被學(xué)習(xí)記錄的問題。
實驗數(shù)據(jù)采用公開自動生成的數(shù)據(jù)集HTTP CSIC2020[10],該數(shù)據(jù)集包含上萬條Web請求數(shù)據(jù),由西班牙研究委員會(CSIC)信息安全研究所制作。數(shù)據(jù)集包含正常請求約36 000個,異常請求約25 000個。
將數(shù)據(jù)集標記為Normal(training)、Normal(test)和Anomalous(test),并分離成獨立的Web請求文件。數(shù)據(jù)集包括各種攻擊,主要攻擊類型如表2所示。

表2 攻擊類型及其特點
該數(shù)據(jù)集主要包括GET、POST、PUT三種類型數(shù)據(jù),一個Web請求記錄至少包含上述一種類型數(shù)據(jù),且以該類型數(shù)據(jù)為邊界符,在請求數(shù)據(jù)提取后,還需要對數(shù)據(jù)進行字符串分割,分割依據(jù)HTTP請求報文的格式規(guī)范進行,主要涉及URL地址解碼,參數(shù)項、鍵值對、特殊符號的分割,得到每一條流量數(shù)據(jù)過后,對每一條請求流量進行裁剪、對齊、補足等操作,生成50×150的矩陣數(shù)據(jù)A,所得矩陣數(shù)據(jù)A格式如圖3所示,與數(shù)據(jù)處理前的數(shù)據(jù)流量作為輸入相比,可以看出矩陣數(shù)據(jù)A更好地保留了流量數(shù)據(jù)原本的語序順序和結(jié)構(gòu)格式,使得數(shù)據(jù)流量的特征提取能夠更加全面、更加精準。

圖3 矩陣數(shù)據(jù)格式
實驗環(huán)境為Windows 10操作系統(tǒng)、Python3.7.3語言、TensorFLow框架,計算機CPU為Intel Core i5-4210u,內(nèi)存8 GB,硬盤空間為2 TB,實驗約61 000個矩陣數(shù)據(jù),訓(xùn)練集與測試集比例為9∶1。
使用評價指標準確率和損失值對模型的檢測結(jié)果進行評估,準確率計算如公式(4)所示,式中TP(True Positives)和TN(True Negatives)表示被正確劃分為正常和異常的個數(shù);FP(False Positives)和FN(False Negatives)表示被錯誤劃分為正常和異常的個數(shù)。準確率越高,檢測效果越好。
(4)
該實驗選擇交叉熵作為本文的損失函數(shù),因為交叉熵描述的是2個概率分布之間的距離,交叉熵函數(shù)計算如公式(5)所示,q表示預(yù)測值概率分布,p表示正確的概率分布。

(5)
實驗使用兩種檢測方法進行對比,分別為:使用不包含DAPA的傳統(tǒng)卷積神經(jīng)與本文提出的基于DAPA的卷積神經(jīng)網(wǎng)絡(luò)進行實驗對比,實驗對比結(jié)果如表3所列,由表3可看出,使用了DAPA的卷積神經(jīng)網(wǎng)絡(luò)精確度比未使用DAPA的神經(jīng)網(wǎng)絡(luò)精確度提高了1.2%,損失值降低了2.6%。

表3 實驗結(jié)果
圖4為加入Dropout技術(shù)前后及加入該技術(shù)時設(shè)置不同參數(shù)進行的對比實驗圖,模型中加入Dropout技術(shù)的目的是為了改善模型的過擬合問題。從圖4中能夠看出,當(dāng)神經(jīng)元占比數(shù)為100%時(即不加入Dropout技術(shù))損失值最高,本模型會通過對訓(xùn)練數(shù)據(jù)的過度訓(xùn)練來降低損失值,從而出現(xiàn)過度擬合的現(xiàn)象;加入Dropout技術(shù)后,神經(jīng)元占比數(shù)為40%時,損失值降低了4.2%,精確度提高了6%,所以本文選擇設(shè)置參數(shù)為0.4,改善模型的過擬合性。

圖4 神經(jīng)元占比實驗圖
本文進行了不同迭代次數(shù)的實驗對比,模型在不同的迭代次數(shù)過程中會生成不同的一個個小網(wǎng)絡(luò),對每個算法進行迭代訓(xùn)練,模型每增加一次迭代次數(shù),都會使神經(jīng)元之間的組合產(chǎn)生新的變化,使得神經(jīng)元不會組成固定組合對模型學(xué)習(xí)過程產(chǎn)生影響,使得參數(shù)均勻分布,實驗結(jié)果如圖5所示。

圖5 實驗精確度和損失值
本文針對Web攻擊流量檢測問題,提出了一種基于動態(tài)自適應(yīng)池化的卷積神經(jīng)網(wǎng)絡(luò)異常流量檢測模型,將數(shù)據(jù)集轉(zhuǎn)換成矩陣數(shù)據(jù)作為模型輸入,模型根據(jù)輸入特征圖的不同,動態(tài)自適應(yīng)地調(diào)整池化過程,用Dropout層來解決模型中存在的過擬合問題。實驗結(jié)果表明,使用了動態(tài)自適應(yīng)池化模型的效果更好,過擬合問題也得到了改善。