高勝花,李世明, 2,李秋月,於家偉,鄭愛(ài)勤
(1.哈爾濱師范大學(xué) 計(jì)算機(jī)科學(xué)與信息工程學(xué)院,黑龍江 哈爾濱 150025;2.上海市信息安全綜合管理技術(shù)研究重點(diǎn)實(shí)驗(yàn)室,上海 200240)
在網(wǎng)絡(luò)空間信息安全領(lǐng)域,網(wǎng)絡(luò)流量異常檢測(cè)對(duì)于保障網(wǎng)絡(luò)的正常運(yùn)行和網(wǎng)絡(luò)的安全起著至關(guān)重要的作用[1]。隨著網(wǎng)絡(luò)服務(wù)應(yīng)用數(shù)據(jù)巨增,Web服務(wù)器遭受的攻擊數(shù)量越來(lái)越多,攻擊類型也越來(lái)越復(fù)雜,為保證向用戶提供持續(xù)、安全和可靠的應(yīng)用服務(wù),需要實(shí)時(shí)檢測(cè)出Web服務(wù)中的異常流量?,F(xiàn)有的Web異常流量檢測(cè)方法大多數(shù)為誤用檢測(cè)或是基于傳統(tǒng)的機(jī)器學(xué)習(xí)算法檢測(cè)[2];誤用檢測(cè)是根據(jù)已知攻擊行為為主要特征,將入侵行為與正常行為根據(jù)已知特征加以區(qū)分來(lái)實(shí)現(xiàn)入侵行為的檢測(cè),該類方法效率高且誤報(bào)率低,但只能發(fā)現(xiàn)已知的入侵類型,漏報(bào)率較高,特征的維護(hù)多采用人工方式完成。傳統(tǒng)機(jī)器學(xué)習(xí)檢測(cè)算法依靠手工提取流量中的特征,人為干預(yù)較嚴(yán)重。
網(wǎng)絡(luò)異常流量的檢測(cè)是保障網(wǎng)絡(luò)安全至關(guān)重要的防御步驟。文獻(xiàn)[3]提出了一個(gè)可以普遍適用的入侵檢測(cè)框架,該框架能夠檢測(cè)真實(shí)世界的僵尸網(wǎng)絡(luò),具有非常低的假陽(yáng)性率。文獻(xiàn)[4]建立了一個(gè)流量檢測(cè)系統(tǒng)MadTracer,自動(dòng)生成檢測(cè)規(guī)則,利用檢測(cè)Web流量來(lái)判斷服務(wù)是否包含不正當(dāng)廣告。實(shí)驗(yàn)結(jié)果表示MadTracer檢測(cè)準(zhǔn)確率達(dá)到了95%,但只能檢測(cè)已有的攻擊類型。文獻(xiàn)[5]針對(duì)HTTP異常流量檢測(cè)問(wèn)題,在原始數(shù)據(jù)的基礎(chǔ)上與經(jīng)驗(yàn)特征工程相結(jié)合的思想提出一種深度混合結(jié)構(gòu)神經(jīng)網(wǎng)絡(luò),所提方法檢測(cè)效果有較明顯提升,準(zhǔn)確率可達(dá)98.1%,但需要依賴人的經(jīng)驗(yàn)特征,存在人為誤差。文獻(xiàn)[6]將深度學(xué)習(xí)應(yīng)用到工控系統(tǒng)當(dāng)中,將流量轉(zhuǎn)換成灰度圖,用構(gòu)造好的灰度圖去進(jìn)行模型訓(xùn)練,對(duì)數(shù)據(jù)進(jìn)行實(shí)時(shí)的異常檢測(cè),并做出相應(yīng)的安全預(yù)防,實(shí)驗(yàn)結(jié)果顯示精確度達(dá)到97.88%。文獻(xiàn)[7]搭建基于SPP卷積神經(jīng)網(wǎng)絡(luò)模型去進(jìn)行Web攻擊檢測(cè),解決傳統(tǒng)模型只能處理固定大小輸入的問(wèn)題,但不能根據(jù)特征圖的不同,動(dòng)態(tài)地調(diào)整池化過(guò)程。
針對(duì)上述文獻(xiàn)在異常流量檢測(cè)中存在的問(wèn)題,本文在傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)基礎(chǔ)上,構(gòu)建基于動(dòng)態(tài)自適應(yīng)池化(Dynamic Adaptive Pooling Algorithm,DAPA)的卷積神經(jīng)網(wǎng)絡(luò)Web異常流量檢測(cè)模型,可以根據(jù)特征圖的不同,動(dòng)態(tài)地調(diào)整池化過(guò)程,并在全連接層后連接了一個(gè)Dropout層,解決模型在流量特征提取過(guò)程中存在的過(guò)擬合問(wèn)題,提高了模型的泛化能力。
目前,業(yè)界網(wǎng)絡(luò)異常行為檢測(cè)方法從原理上來(lái)說(shuō)大約有如下幾種分類,如表1所示。
表1 網(wǎng)絡(luò)異常檢測(cè)方法分類
本文采用基于分類方法中的二分類,搭建基于動(dòng)態(tài)自適應(yīng)池化的卷積神經(jīng)網(wǎng)絡(luò)模型,用該模型將數(shù)據(jù)流量劃分為異?;蛘?。
Web攻擊檢測(cè)框架分為兩個(gè)階段,如圖1所示。
第一階段:數(shù)據(jù)預(yù)處理,進(jìn)行流量捕獲,獲得數(shù)據(jù)集,對(duì)數(shù)據(jù)集中每一條請(qǐng)求流量進(jìn)行剪裁、對(duì)齊、補(bǔ)足生成一系列50×150的矩陣數(shù)據(jù),矩陣數(shù)據(jù)作為輸入;
第二階段:使用動(dòng)態(tài)自適應(yīng)池化卷積神經(jīng)模型進(jìn)行異常網(wǎng)絡(luò)流量檢測(cè)。
動(dòng)態(tài)自適應(yīng)池化卷積神經(jīng)網(wǎng)絡(luò)模型如圖2所示,異常流量檢測(cè)過(guò)程中,流量數(shù)據(jù)轉(zhuǎn)換成矩陣數(shù)據(jù)后,作為模型的輸入。池化是對(duì)流量特征進(jìn)行二次提取,需對(duì)池化域的流量特征進(jìn)行歸納和計(jì)算,在全連接層后添加Dropout層。
圖2 CNN結(jié)構(gòu)框架
2.2.1 動(dòng)態(tài)自適應(yīng)池化
池化是一種降采樣的方法,池化層直接計(jì)算池化窗口內(nèi)元素的特征值,設(shè)F為卷積層輸入的流量矩陣,池化域?yàn)閏×c的矩陣P,b2為偏置,S為得到的子采樣特征矩陣,池化過(guò)程移動(dòng)步長(zhǎng)設(shè)成c,本文以最大二均值池化為基礎(chǔ),其表達(dá)式為:
(1)
式(1)是在最大池化的基礎(chǔ)上改進(jìn)的,當(dāng)一些影響因素的值較大時(shí),使用最大池化,會(huì)降低流量矩陣特征的提取,所以本文池化時(shí)會(huì)選取最大的兩個(gè)元素求和,并取和的平均值作為子采樣的特征值。
動(dòng)態(tài)自適應(yīng)池化模型以最大二均值池化為基礎(chǔ)進(jìn)行改進(jìn)與優(yōu)化,最大池化模型和平均值池化模型在對(duì)流量特征圖進(jìn)行二次提取的時(shí)候,都很難取得較好的效果,因此提出了動(dòng)態(tài)自適應(yīng)池化算法,其算法表達(dá)式為:
(2)
其中u為池化因子,如式(3)所示[8]:
(3)
其中a為流量特征圖中除最大和第二大兩個(gè)特征值外所有元素的平均值,vmax為流量特征圖中最大和第二大的兩個(gè)特征值的平均值,θ為校正誤差項(xiàng),p為特征系數(shù)。流量特征圖的不同會(huì)導(dǎo)致池化因子的取值不同,池化因子會(huì)動(dòng)態(tài)調(diào)整來(lái)達(dá)到最優(yōu)。池化因子取值范圍為μ∈(0,1),可以同時(shí)兼顧最大二均值池化和平均池化,在異常流量特征提取時(shí)既不會(huì)導(dǎo)致精度丟失過(guò)高,也降低了最大池化忽略其他較大因素時(shí)產(chǎn)生的影響。
2.2.2 CNN中的Dropout層設(shè)計(jì)
本模型在異常流量特征提取過(guò)程中存在過(guò)擬合問(wèn)題,其表現(xiàn)為錯(cuò)誤檢測(cè)率在訓(xùn)練集上非常低而在測(cè)試集上卻較高,目前解決該問(wèn)題的方法主要有正則化、剪枝處理、提前終止迭代、Dropout等。
因Dropout具有較好的泛化能力和魯棒性,故本模型采用Dropout[9]來(lái)解決過(guò)擬合問(wèn)題。當(dāng)每個(gè)神經(jīng)元都去記錄流量特征的時(shí)候就會(huì)讓特征信息被過(guò)度地記錄,導(dǎo)致僅僅記住了訓(xùn)練集上固定的特征。而Dropout層只有部分的神經(jīng)元參與權(quán)值更新,弱化了神經(jīng)元之間的相互影響,從而有效預(yù)防了固定特征被學(xué)習(xí)記錄的問(wèn)題。
實(shí)驗(yàn)數(shù)據(jù)采用公開(kāi)自動(dòng)生成的數(shù)據(jù)集HTTP CSIC2020[10],該數(shù)據(jù)集包含上萬(wàn)條Web請(qǐng)求數(shù)據(jù),由西班牙研究委員會(huì)(CSIC)信息安全研究所制作。數(shù)據(jù)集包含正常請(qǐng)求約36 000個(gè),異常請(qǐng)求約25 000個(gè)。
將數(shù)據(jù)集標(biāo)記為Normal(training)、Normal(test)和Anomalous(test),并分離成獨(dú)立的Web請(qǐng)求文件。數(shù)據(jù)集包括各種攻擊,主要攻擊類型如表2所示。
表2 攻擊類型及其特點(diǎn)
該數(shù)據(jù)集主要包括GET、POST、PUT三種類型數(shù)據(jù),一個(gè)Web請(qǐng)求記錄至少包含上述一種類型數(shù)據(jù),且以該類型數(shù)據(jù)為邊界符,在請(qǐng)求數(shù)據(jù)提取后,還需要對(duì)數(shù)據(jù)進(jìn)行字符串分割,分割依據(jù)HTTP請(qǐng)求報(bào)文的格式規(guī)范進(jìn)行,主要涉及URL地址解碼,參數(shù)項(xiàng)、鍵值對(duì)、特殊符號(hào)的分割,得到每一條流量數(shù)據(jù)過(guò)后,對(duì)每一條請(qǐng)求流量進(jìn)行裁剪、對(duì)齊、補(bǔ)足等操作,生成50×150的矩陣數(shù)據(jù)A,所得矩陣數(shù)據(jù)A格式如圖3所示,與數(shù)據(jù)處理前的數(shù)據(jù)流量作為輸入相比,可以看出矩陣數(shù)據(jù)A更好地保留了流量數(shù)據(jù)原本的語(yǔ)序順序和結(jié)構(gòu)格式,使得數(shù)據(jù)流量的特征提取能夠更加全面、更加精準(zhǔn)。
圖3 矩陣數(shù)據(jù)格式
實(shí)驗(yàn)環(huán)境為Windows 10操作系統(tǒng)、Python3.7.3語(yǔ)言、TensorFLow框架,計(jì)算機(jī)CPU為Intel Core i5-4210u,內(nèi)存8 GB,硬盤空間為2 TB,實(shí)驗(yàn)約61 000個(gè)矩陣數(shù)據(jù),訓(xùn)練集與測(cè)試集比例為9∶1。
使用評(píng)價(jià)指標(biāo)準(zhǔn)確率和損失值對(duì)模型的檢測(cè)結(jié)果進(jìn)行評(píng)估,準(zhǔn)確率計(jì)算如公式(4)所示,式中TP(True Positives)和TN(True Negatives)表示被正確劃分為正常和異常的個(gè)數(shù);FP(False Positives)和FN(False Negatives)表示被錯(cuò)誤劃分為正常和異常的個(gè)數(shù)。準(zhǔn)確率越高,檢測(cè)效果越好。
(4)
該實(shí)驗(yàn)選擇交叉熵作為本文的損失函數(shù),因?yàn)榻徊骒孛枋龅氖?個(gè)概率分布之間的距離,交叉熵函數(shù)計(jì)算如公式(5)所示,q表示預(yù)測(cè)值概率分布,p表示正確的概率分布。
(5)
實(shí)驗(yàn)使用兩種檢測(cè)方法進(jìn)行對(duì)比,分別為:使用不包含DAPA的傳統(tǒng)卷積神經(jīng)與本文提出的基于DAPA的卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行實(shí)驗(yàn)對(duì)比,實(shí)驗(yàn)對(duì)比結(jié)果如表3所列,由表3可看出,使用了DAPA的卷積神經(jīng)網(wǎng)絡(luò)精確度比未使用DAPA的神經(jīng)網(wǎng)絡(luò)精確度提高了1.2%,損失值降低了2.6%。
表3 實(shí)驗(yàn)結(jié)果
圖4為加入Dropout技術(shù)前后及加入該技術(shù)時(shí)設(shè)置不同參數(shù)進(jìn)行的對(duì)比實(shí)驗(yàn)圖,模型中加入Dropout技術(shù)的目的是為了改善模型的過(guò)擬合問(wèn)題。從圖4中能夠看出,當(dāng)神經(jīng)元占比數(shù)為100%時(shí)(即不加入Dropout技術(shù))損失值最高,本模型會(huì)通過(guò)對(duì)訓(xùn)練數(shù)據(jù)的過(guò)度訓(xùn)練來(lái)降低損失值,從而出現(xiàn)過(guò)度擬合的現(xiàn)象;加入Dropout技術(shù)后,神經(jīng)元占比數(shù)為40%時(shí),損失值降低了4.2%,精確度提高了6%,所以本文選擇設(shè)置參數(shù)為0.4,改善模型的過(guò)擬合性。
圖4 神經(jīng)元占比實(shí)驗(yàn)圖
本文進(jìn)行了不同迭代次數(shù)的實(shí)驗(yàn)對(duì)比,模型在不同的迭代次數(shù)過(guò)程中會(huì)生成不同的一個(gè)個(gè)小網(wǎng)絡(luò),對(duì)每個(gè)算法進(jìn)行迭代訓(xùn)練,模型每增加一次迭代次數(shù),都會(huì)使神經(jīng)元之間的組合產(chǎn)生新的變化,使得神經(jīng)元不會(huì)組成固定組合對(duì)模型學(xué)習(xí)過(guò)程產(chǎn)生影響,使得參數(shù)均勻分布,實(shí)驗(yàn)結(jié)果如圖5所示。
圖5 實(shí)驗(yàn)精確度和損失值
本文針對(duì)Web攻擊流量檢測(cè)問(wèn)題,提出了一種基于動(dòng)態(tài)自適應(yīng)池化的卷積神經(jīng)網(wǎng)絡(luò)異常流量檢測(cè)模型,將數(shù)據(jù)集轉(zhuǎn)換成矩陣數(shù)據(jù)作為模型輸入,模型根據(jù)輸入特征圖的不同,動(dòng)態(tài)自適應(yīng)地調(diào)整池化過(guò)程,用Dropout層來(lái)解決模型中存在的過(guò)擬合問(wèn)題。實(shí)驗(yàn)結(jié)果表明,使用了動(dòng)態(tài)自適應(yīng)池化模型的效果更好,過(guò)擬合問(wèn)題也得到了改善。