于 洋 陳丹偉
(南京郵電大學(xué)計(jì)算機(jī)學(xué)院軟件學(xué)院網(wǎng)絡(luò)空間安全學(xué)院 江蘇 南京 210023)
僵尸網(wǎng)絡(luò)[1](botnet)是由大量被攻擊者控制的聯(lián)網(wǎng)設(shè)備構(gòu)成的,其中受控的聯(lián)網(wǎng)設(shè)備被稱作僵尸主機(jī)(bot),攻擊者(botmaster)通過(guò)預(yù)先設(shè)置好的命令與控制信道(Command and Control,C&C)操控僵尸主機(jī)進(jìn)行DDOS攻擊、挖礦、惡意軟件分發(fā)等惡意行為。其中最具有代表性的是2016年10月21日攻擊者利用Mirai,感染和控制了數(shù)以萬(wàn)計(jì)的物聯(lián)網(wǎng)設(shè)備,組成了僵尸網(wǎng)絡(luò),對(duì)美國(guó)域名解析服務(wù)提供商Dyn公司發(fā)動(dòng)了DDOS攻擊,致使美國(guó)東部大面積網(wǎng)絡(luò)癱瘓,包括Twitter、Facebook在內(nèi)的多家美國(guó)網(wǎng)站無(wú)法通過(guò)域名訪問(wèn)[2]。根據(jù)綠盟發(fā)布的《2018 BOTNET趨勢(shì)報(bào)告》,2018年總共監(jiān)控到攻擊命令111 472條,其中有效攻擊目標(biāo)數(shù)量為451 187次,相較2017年增長(zhǎng)了66.4%,而botnet攻擊的受害者中,中國(guó)占據(jù)了39.78%[3]。
僵尸網(wǎng)絡(luò)通過(guò)隨時(shí)間推移改變其結(jié)構(gòu)和協(xié)議來(lái)維持其存活。C&C信道為僵尸網(wǎng)絡(luò)提供了更新其惡意代碼和協(xié)議的能力,允許僵尸程序在攻擊者的控制下同時(shí)執(zhí)行攻擊。早期的僵尸網(wǎng)絡(luò)使用Internet Relay Chat[4](IRC)作為其C&C協(xié)議。隨著技術(shù)的不斷進(jìn)步,IRC協(xié)議變得過(guò)時(shí)并且以此構(gòu)建的僵尸網(wǎng)絡(luò)可以被輕易檢測(cè)到,因此僵尸網(wǎng)絡(luò)開(kāi)始使用超文本傳輸協(xié)議(HTTP)等其他協(xié)議進(jìn)行通信。
僵尸網(wǎng)絡(luò)有兩種主要體系結(jié)構(gòu),即C&C的基礎(chǔ)結(jié)構(gòu):集中式和分散式。在集中式架構(gòu)中,僵尸網(wǎng)絡(luò)中的所有僵尸主機(jī)通過(guò)IRC或HTTP等協(xié)議與一個(gè)或幾個(gè)中央控制服務(wù)器建立其通信信道。這種拓?fù)涞膬?yōu)勢(shì)是可以快速地分發(fā)攻擊指令,方便對(duì)僵尸主機(jī)的控制。然而,其缺點(diǎn)也很突出,一旦中央控制服務(wù)器被摧毀,整個(gè)僵尸網(wǎng)絡(luò)將不再受到控制。因此,近年來(lái)越來(lái)越多的僵尸網(wǎng)絡(luò)采用分散式C&C來(lái)克服中心服務(wù)器故障的問(wèn)題。通過(guò)P2P協(xié)議[5]允許僵尸網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)充當(dāng)客戶端或主設(shè)備,極大增強(qiáng)了C&C的靈活性和健壯性。此外,僵尸網(wǎng)絡(luò)拓?fù)淇梢允莾煞N體系結(jié)構(gòu)的混合模型,以結(jié)合兩種C&C結(jié)構(gòu)的優(yōu)點(diǎn),從而增加了摧毀僵尸網(wǎng)絡(luò)的難度。
近年來(lái),機(jī)器學(xué)習(xí)技術(shù)得到了廣泛的應(yīng)用,其在流量分類上具有良好的表現(xiàn)。Stevanovic等[6]對(duì)比了8種機(jī)器學(xué)習(xí)方法對(duì)僵尸流量的分類性能,實(shí)驗(yàn)表明C4.5、RTree和RForest的性能較好。Chen等[7]提出了一種有效的準(zhǔn)實(shí)時(shí)入侵檢測(cè)系統(tǒng):在高速網(wǎng)絡(luò)環(huán)境下使用有監(jiān)督的機(jī)器學(xué)習(xí)方法檢測(cè)僵尸網(wǎng)絡(luò)。通過(guò)使用PF_RING構(gòu)建檢測(cè)框架,用于動(dòng)態(tài)提取流特征,然后使用隨機(jī)森林模型提取有效的會(huì)話特征,該方法的準(zhǔn)確率達(dá)到94%。Kirubavathi等[8]提出了一種基于網(wǎng)絡(luò)流量行為分析的機(jī)器學(xué)習(xí)技術(shù)來(lái)檢測(cè)僵尸網(wǎng)絡(luò)。該系統(tǒng)能夠識(shí)別新型僵尸網(wǎng)絡(luò),具有高檢測(cè)準(zhǔn)確度和低誤報(bào)率,但是其檢測(cè)需要有針對(duì)性地選取特征,需要豐富的相關(guān)知識(shí)及經(jīng)驗(yàn)。Azab等[9]使用C4.5決策樹(shù)和基于相關(guān)性的特征選擇算法針對(duì)Zeus僵尸網(wǎng)絡(luò)進(jìn)行檢測(cè)。Alhawi等[10]研究了Windows勒索軟件流量,使用J48決策樹(shù)對(duì)基于會(huì)話的網(wǎng)絡(luò)流行進(jìn)行分類,達(dá)到97.1%的真陽(yáng)性率。Anwar等[11]對(duì)移動(dòng)端的僵尸網(wǎng)絡(luò)進(jìn)行檢測(cè),從Android應(yīng)用程序中提取靜態(tài)功能,再對(duì)比多種機(jī)器學(xué)習(xí)算法,實(shí)驗(yàn)表明樸素貝葉斯算法的效果最佳。Al-Jarrah[12]提出了一種新型的隨機(jī)化數(shù)據(jù)分割學(xué)習(xí)模型,采用改良的正向選擇排序技術(shù)從特征集中過(guò)濾多余無(wú)關(guān)的特征,并通過(guò)基于泰森多邊形的數(shù)據(jù)剪枝方法來(lái)減小龐大的訓(xùn)練數(shù)據(jù)集。
隨著人工智能和深度學(xué)習(xí)技術(shù)的快速發(fā)展,神經(jīng)網(wǎng)絡(luò)的相關(guān)算法也被應(yīng)用到數(shù)據(jù)流量分類中。Homayoun等[13]提出了一種基于深度學(xué)習(xí)的僵尸網(wǎng)絡(luò)流量分析器BoTShark,它僅使用網(wǎng)絡(luò)數(shù)據(jù)流,獨(dú)立于深度數(shù)據(jù)包檢測(cè)技術(shù),因此避免了無(wú)法處理加密有效載荷的固有限制。通過(guò)自動(dòng)編碼器和卷積神經(jīng)網(wǎng)絡(luò)分別檢測(cè)惡意流量,針對(duì)ISCX 2014 botnet數(shù)據(jù)集,自動(dòng)編碼器具有91%的真陽(yáng)性和13%的假陽(yáng)性,而卷積神經(jīng)網(wǎng)絡(luò)具有92%的真陽(yáng)性和15%的假陽(yáng)性。Torres等[14]使用LSTM建立基于連接行為的僵尸網(wǎng)絡(luò)檢測(cè)模型,通過(guò)k折交叉驗(yàn)證拓展數(shù)據(jù)集進(jìn)行訓(xùn)練。Pektas等[15]結(jié)合卷積神經(jīng)網(wǎng)絡(luò)和循環(huán)神經(jīng)網(wǎng)絡(luò)構(gòu)建模型,使用兩個(gè)公開(kāi)可用的數(shù)據(jù)集(CTU-13和ISOT)進(jìn)行訓(xùn)練和測(cè)試。王勇等[16]將歸一化后的數(shù)據(jù)作為輸入,使用基于LeNet-5深度卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行流量分類。吳迪等[17]提出基于深度學(xué)習(xí)的僵尸網(wǎng)絡(luò)檢測(cè)系統(tǒng)BotCatcher,分別從空間和時(shí)間2個(gè)維度自動(dòng)化地提取網(wǎng)絡(luò)流量特征,通過(guò)卷積神經(jīng)網(wǎng)絡(luò)和循環(huán)神經(jīng)網(wǎng)絡(luò)建立分類器進(jìn)行僵尸網(wǎng)絡(luò)檢測(cè),無(wú)須人工選取特征,降低了檢測(cè)僵尸網(wǎng)絡(luò)的難度??軓V等[18]使用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行僵尸云的檢測(cè),首先從網(wǎng)絡(luò)流量中提取20種特征,再通過(guò)特征映射將其轉(zhuǎn)化為灰度圖像,最后使用神經(jīng)網(wǎng)絡(luò)進(jìn)行特征學(xué)習(xí)得到檢測(cè)模型。
本文基于深度學(xué)習(xí)方法,改進(jìn)數(shù)據(jù)流的處理流程,增加人工提取的特征,在卷積神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)上使用批量歸一化技術(shù)和L2正則化,從而實(shí)現(xiàn)僵尸網(wǎng)絡(luò)的檢測(cè),提高神經(jīng)網(wǎng)絡(luò)的訓(xùn)練速度和檢測(cè)準(zhǔn)確率。
深度學(xué)習(xí)是機(jī)器學(xué)習(xí)的一個(gè)子領(lǐng)域,是近年來(lái)機(jī)器學(xué)習(xí)的重大突破和研究熱點(diǎn)之一,它是一種以人工神經(jīng)網(wǎng)絡(luò)(ANN)為架構(gòu)的對(duì)數(shù)據(jù)進(jìn)行表征學(xué)習(xí)的一種算法。通過(guò)引入卷積神經(jīng)網(wǎng)絡(luò)[19](Convolutional Neural Network,CNN)和循環(huán)神經(jīng)網(wǎng)絡(luò)[20](Recurrent Neural Networks, RNN),深度學(xué)習(xí)的實(shí)用性和適用性得到了巨大的提升。
卷積神經(jīng)網(wǎng)絡(luò)是一種多層人工神經(jīng)網(wǎng)絡(luò)。網(wǎng)絡(luò)中的每一層由多個(gè)特征面組成,每個(gè)特征面由多個(gè)獨(dú)立的神經(jīng)元組成,相鄰的兩層神經(jīng)元相互連接,并且在同一層神經(jīng)元之間沒(méi)有連接。CNN使用權(quán)值共享的網(wǎng)絡(luò)結(jié)構(gòu),通過(guò)改變網(wǎng)絡(luò)的深度和廣度來(lái)調(diào)整模型的容量。因此,卷積神經(jīng)網(wǎng)絡(luò)可以有效降低網(wǎng)絡(luò)模型的復(fù)雜度。
典型的卷積神經(jīng)網(wǎng)絡(luò)主要由輸入層、卷積層、池化層、全連接層和輸出層組成。卷積層進(jìn)行卷積運(yùn)算,在給定卷積核和輸入數(shù)據(jù)的局部區(qū)域之間執(zhí)行點(diǎn)積,捕捉數(shù)據(jù)中不同位置的相似結(jié)構(gòu),并創(chuàng)建卷積特征。第一層卷積層提取低級(jí)特征,在一定范圍內(nèi),卷積層的層數(shù)越多,提取的特征越高級(jí)。卷積層的核心參數(shù)有卷積核的大小、卷積核的數(shù)量、滑動(dòng)步長(zhǎng)、激勵(lì)函數(shù)等。卷積核是一個(gè)多維權(quán)值矩陣,其維數(shù)等于輸入數(shù)據(jù)的位數(shù),例如輸入數(shù)據(jù)為二維圖像,卷積核就是一個(gè)二維矩陣。卷積核的個(gè)數(shù)就是特征面的數(shù)量,即提取的特征數(shù)。假設(shè)卷積層中輸出特征面n第k個(gè)神經(jīng)元的輸出值為Ynk,輸入特征面m第h個(gè)神經(jīng)元的輸出值為Xmh,則:
Ynk=fcov(X1h*W1(h)n(k)+X1(h+1)*W1(h+1)n(k)+
X1(h+2)*W1(h+2)n(k)+…+bn)
(1)
式中:bn為輸出特征面n的偏置值;Wm(i)n(j)表示輸入特征面m第i個(gè)神經(jīng)元與輸出特征面n第j個(gè)神經(jīng)元的連接權(quán)值;fcov()為激勵(lì)函數(shù)。激勵(lì)函數(shù)通常選擇不飽和非線性函數(shù),例如ReLU函數(shù)、Sigmod函數(shù)、tanh函數(shù)等[21]。
池化層與卷積層一樣,由多個(gè)特征面組成,且特征面的數(shù)量與上一層的卷積層相同。池化層對(duì)卷積層提取到的特征進(jìn)行池化操作,簡(jiǎn)化神經(jīng)網(wǎng)絡(luò)的復(fù)雜度,減少運(yùn)算量。設(shè)池化層中第n個(gè)輸出特征面的第l個(gè)神經(jīng)元的輸出值為tnl,則:
(2)
式中:tnq為池化層第n個(gè)輸入特征面第q個(gè)神經(jīng)元的輸出值;fsub()為池化方法。常用的池化方法有均值池化、最大池化、隨機(jī)池化等[21]。
全連接層與上一層(卷積層、池化層或全連接層)中的所有神經(jīng)元連接,將特征空間映射到樣本標(biāo)記空間。
近年來(lái),批量歸一化技術(shù)被廣泛應(yīng)用到神經(jīng)網(wǎng)絡(luò)中。批量歸一化[22](Batch Normalization)是一個(gè)有效的正則化方法,在神經(jīng)網(wǎng)絡(luò)中添加批量歸一化層,可以對(duì)上一層的輸出進(jìn)行標(biāo)準(zhǔn)化處理(歸一化為均值為0、方差為1的數(shù)據(jù)),使其符合正態(tài)分布,從而使得神經(jīng)網(wǎng)絡(luò)允許使用較大的學(xué)習(xí)率進(jìn)行訓(xùn)練,提高訓(xùn)練速度,同時(shí)也可以使用較小的dropout以提高網(wǎng)絡(luò)的泛化能力。
過(guò)擬合是模型訓(xùn)練過(guò)程中最常遇見(jiàn)的問(wèn)題,模型擬合程度過(guò)高會(huì)限制模型的泛化能力,模型在訓(xùn)練集和測(cè)試集上的準(zhǔn)確率相差很大。L2正則是目前常用的對(duì)抗過(guò)擬合的方法,該方法通過(guò)在代價(jià)函數(shù)后加一個(gè)懲罰項(xiàng),緩解模型過(guò)擬合問(wèn)題。計(jì)算公式如下:
(3)
式中:w為神經(jīng)網(wǎng)絡(luò)的權(quán)重參數(shù),α是正則系數(shù),J為原損失函數(shù),J′為加入L2正則后的損失函數(shù)。對(duì)權(quán)重參數(shù)w求梯度得:
▽wJ′(w;X,y)=αw+▽wJ(w;X,y)
(4)
因此權(quán)重參數(shù)的更新公式為:
w←(1-εα)w-ε▽wJ(w;X,y))
(5)
式中:ε為梯度下降的步長(zhǎng)??梢园l(fā)現(xiàn),懲罰項(xiàng)增加了權(quán)重參數(shù)的線性伸縮,從而在一定程度上降低了模型的擬合能力。
通過(guò)卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行僵尸網(wǎng)絡(luò)檢測(cè)主要分為3步。首先是將網(wǎng)絡(luò)流量轉(zhuǎn)化為灰度圖像,然后使用卷積神經(jīng)網(wǎng)絡(luò)對(duì)灰度圖像進(jìn)行特征學(xué)習(xí),最后利用訓(xùn)練得到的模型對(duì)異常流量進(jìn)行檢測(cè)。整體框架如圖1所示。
圖1 整體框架
本文使用的數(shù)據(jù)集由正常網(wǎng)絡(luò)流量和僵尸網(wǎng)絡(luò)流量組成。其中,僵尸網(wǎng)絡(luò)流量從CTU大學(xué)建立的Stratosphere IPS項(xiàng)目中獲取,本文選擇了具有代表性的僵尸網(wǎng)絡(luò)作為實(shí)驗(yàn)數(shù)據(jù)集,具體組成如表1所示。正常網(wǎng)絡(luò)流量由該項(xiàng)目的CTU-Normal-7和USTC-TFC2016數(shù)據(jù)集中的正常流量構(gòu)成。
表1 僵尸流量數(shù)據(jù)集
數(shù)據(jù)集文件為pcap格式。首先需要對(duì)pcap文件進(jìn)行分割。本文采用基于會(huì)話的分割方法,流是具有相同五元組(源IP、源端口、目的IP、目的端口、傳輸協(xié)議)的所有數(shù)據(jù)包,會(huì)話則是由雙向流組成的所有數(shù)據(jù)包,即源IP、源端口與目的IP、目的端口互換,以此為粒度將大容量的pcap文件分割成小容量的pcap文件。
進(jìn)行卷積前需要將分割后的pcap文件轉(zhuǎn)化為二維灰度圖像。卷積神經(jīng)網(wǎng)絡(luò)要求輸入相同大小的灰度圖像,以便提取相同維度的特征,但是分割后的pcap文件大小各異,為了方便特征提取,需要再次對(duì)pcap文件進(jìn)行裁剪。本文截取數(shù)據(jù)流的前1 024字節(jié),長(zhǎng)度不足的在末尾用0x00填充。采用此方法截取的數(shù)據(jù)雖然包含了數(shù)據(jù)流的連接信息和部分交換數(shù)據(jù),但是仍有一定的缺陷。
首先,pacp文件結(jié)構(gòu)如表2所示,每個(gè)pcap文件均有24字節(jié)的文件頭,文件頭格式如表3所示,magic為文件識(shí)別頭,magor version為主版本號(hào),minor version為次要版本號(hào),timezone為當(dāng)?shù)氐臉?biāo)準(zhǔn)時(shí)間,sigflags為時(shí)間戳的精度,snaplen為最大的存儲(chǔ)長(zhǎng)度,linktype為鏈路類型。通過(guò)對(duì)比分析,發(fā)現(xiàn)該部分的數(shù)據(jù)在分割后的pcap文件中基本一致,對(duì)后續(xù)的特征提取沒(méi)有任何幫助,反而占據(jù)了一定的數(shù)據(jù)量,因此本文從每個(gè)pcap文件的第25字節(jié)開(kāi)始裁剪,減少無(wú)效信息干擾的同時(shí)還能包含更多的有效數(shù)據(jù)。
表2 pcap文件結(jié)構(gòu)
表3 pcap文件頭格式
其次,由于僅截取每個(gè)流1 024字節(jié)的數(shù)據(jù),截取出來(lái)的數(shù)據(jù)并不能完全代表相應(yīng)的數(shù)據(jù)流,仍然損失了大量的有用信息。通過(guò)分析僵尸網(wǎng)絡(luò)流量的特征,發(fā)現(xiàn)僵尸主機(jī)與控制服務(wù)器間傳輸?shù)臄?shù)據(jù),比如心跳包,數(shù)據(jù)格式相對(duì)固定;當(dāng)僵尸主機(jī)進(jìn)行DDOS攻擊時(shí),發(fā)出的數(shù)據(jù)包具有高度的一致性,數(shù)據(jù)流間的相似度極高。作為對(duì)比,正常的數(shù)據(jù)流呈現(xiàn)出的特征相對(duì)混亂,與僵尸流量有明顯的差異,然而由于數(shù)據(jù)流被截取,這些特征很難完整體現(xiàn)出來(lái)。為了更好地表現(xiàn)數(shù)據(jù)流的特征,增強(qiáng)神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)效果,提高僵尸網(wǎng)絡(luò)的檢測(cè)準(zhǔn)確率,本文從完整的數(shù)據(jù)流中人工提取了表4中的13種特征。
表4 數(shù)據(jù)流特征
提取的特征均為數(shù)據(jù)流的總體特征,可以表現(xiàn)出完整數(shù)據(jù)流的總體信息,將該部分?jǐn)?shù)據(jù)(共52字節(jié))放在截取數(shù)據(jù)的頭部,再?gòu)臄?shù)據(jù)包部分截取972字節(jié)數(shù)據(jù)組合成1 024字節(jié),長(zhǎng)度不足使用0x00進(jìn)行填充。然后將裁剪得到的數(shù)據(jù)轉(zhuǎn)化為32×32的二維灰度圖像。為了展示本文使用方法的科學(xué)性,選取部分正常流量和惡意流量轉(zhuǎn)化得到的灰度圖像進(jìn)行對(duì)比,僅憑肉眼就能發(fā)現(xiàn)同種流量相似度很高,而不同流量間存在明顯的差異,如圖2所示。
圖2 不同流量的灰度圖像
LeNet-5是一種典型的卷積神經(jīng)網(wǎng)絡(luò)模型,在手寫(xiě)數(shù)字識(shí)別等領(lǐng)域被廣泛應(yīng)用。本文卷積神經(jīng)網(wǎng)絡(luò)的架構(gòu)基于LeNet-5,并做了針對(duì)性的改進(jìn)。
神經(jīng)網(wǎng)絡(luò)的輸入為處理后的數(shù)據(jù)流轉(zhuǎn)化得到的32×32的灰度圖像,輸出為流量分類結(jié)果,即正常流量和僵尸網(wǎng)絡(luò)流量,因此輸出層的神經(jīng)元為2個(gè),使用softmax分類器。
卷積層C1:使用32個(gè)5×5的卷積核進(jìn)行卷積操作,滑動(dòng)步長(zhǎng)為1,輸出32個(gè)28×28的特征面。特征面大小的計(jì)算公式:
(6)
式中:oMapN為輸入特征面大??;CWindow為卷積核大??;CInterval為滑動(dòng)步長(zhǎng)。本文采用ReLU作為激勵(lì)函數(shù),在使用激勵(lì)函數(shù)前增加批量歸一化層。
池化層S1:采用2×2的池化窗口,滑動(dòng)步長(zhǎng)為2,使用最大池化的方法進(jìn)行池化操作。輸出為32個(gè)14×14的特征面。
卷積層C2:使用64個(gè)3×3的卷積核進(jìn)行卷積操作,滑動(dòng)步長(zhǎng)為1,輸出64個(gè)12×12的特征面。采用ReLU作為激勵(lì)函數(shù),在使用激勵(lì)函數(shù)前增加批量歸一化層。
池化層S2:與上一層池化層使用相同的參數(shù),輸出64個(gè)6×6的特征面。
全連接層D1:由1 024個(gè)神經(jīng)元組成,與上一池化層全連接,輸出為1 024維向量。
全連接層D2(輸出層):由2個(gè)神經(jīng)元組成,與上一層全連接,輸出2維向量。
此外,使用L2正則化和dropout方法緩解過(guò)擬合,鑒于神經(jīng)網(wǎng)絡(luò)增加了批量歸一化層,可以使用較小的dropout,本文參數(shù)設(shè)置為0.2。為了加快模型訓(xùn)練,本文采用指數(shù)衰減的學(xué)習(xí)率,在訓(xùn)練初期使用較大的學(xué)習(xí)率,加速訓(xùn)練,逐步收斂后使用較小的學(xué)習(xí)率,便于得到最優(yōu)解。
實(shí)驗(yàn)所用的計(jì)算機(jī)操作系統(tǒng)為Ubuntu 16.04,CPU為i5-6500,內(nèi)存16 GB,主頻3.2 GHz,開(kāi)發(fā)環(huán)境為Python 3.6.9,使用Tensorflow 1.13.1框架進(jìn)行卷積神經(jīng)網(wǎng)絡(luò)建模。
本文采用準(zhǔn)確率(ACC)和誤報(bào)率(FPR)作為評(píng)估模型的指標(biāo)。
(7)
(8)
式中:TP表示正例預(yù)測(cè)為正例的樣本數(shù);FP表示反例預(yù)測(cè)為正例的樣本數(shù);TN表示正例預(yù)測(cè)為反例的樣本數(shù);FN表示反例預(yù)測(cè)為反例的樣本數(shù)。
卷積神經(jīng)網(wǎng)絡(luò)的模型結(jié)構(gòu)比傳統(tǒng)機(jī)器學(xué)習(xí)模型更為復(fù)雜,參數(shù)的選擇對(duì)神經(jīng)網(wǎng)絡(luò)模型的優(yōu)劣有著重要影響。
本文對(duì)截取的流量大小、卷積核的大小、池化方法的選擇分別做了對(duì)比實(shí)驗(yàn),以選擇出最合適的參數(shù)構(gòu)建檢測(cè)模型。
從圖3可以看出,當(dāng)截取流量的長(zhǎng)度達(dá)到1 024字節(jié)后,模型的檢測(cè)準(zhǔn)確率便不會(huì)有明顯提升,因此本文按照1 024字節(jié)截取數(shù)據(jù)流。
圖3 輸入數(shù)據(jù)大小對(duì)比
從表5可以看出,當(dāng)使用最大池化,卷積層C1卷積核為5×5,卷積層C2卷積核為3×3時(shí),檢測(cè)準(zhǔn)確率最高,誤報(bào)率較低,因此本文采用此參數(shù)構(gòu)建神經(jīng)網(wǎng)絡(luò)。
表5 參數(shù)對(duì)比
本文從數(shù)據(jù)集處理和卷積神經(jīng)網(wǎng)絡(luò)構(gòu)建進(jìn)行改進(jìn),因此做了3組實(shí)驗(yàn)進(jìn)行對(duì)比,即進(jìn)行數(shù)據(jù)預(yù)處理未改進(jìn)神經(jīng)網(wǎng)絡(luò)、改進(jìn)神經(jīng)網(wǎng)絡(luò)不進(jìn)行數(shù)據(jù)預(yù)處理、同時(shí)采用兩種方法。實(shí)驗(yàn)結(jié)果如圖4、圖5所示。
圖4 ACC對(duì)比
圖5 FPR對(duì)比
可以看出,對(duì)數(shù)據(jù)集進(jìn)行預(yù)處理后,增加的人工提取的特征有助于神經(jīng)網(wǎng)絡(luò)的特征學(xué)習(xí),從而提高了僵尸網(wǎng)絡(luò)的檢測(cè)準(zhǔn)確率,降低了誤報(bào)率;而對(duì)神經(jīng)網(wǎng)絡(luò)進(jìn)行改進(jìn)后,可以使用較大的學(xué)習(xí)率和較小的dropout進(jìn)行訓(xùn)練,神經(jīng)網(wǎng)絡(luò)的訓(xùn)練速度得到了明顯的提升。將兩種方法結(jié)合后,訓(xùn)練速度較快,僵尸網(wǎng)絡(luò)的檢測(cè)準(zhǔn)確率仍有一定提升。
本文提出了基于卷積神經(jīng)網(wǎng)絡(luò)的僵尸網(wǎng)絡(luò)檢測(cè)方法,實(shí)驗(yàn)表明,通過(guò)數(shù)據(jù)預(yù)處理規(guī)范化神經(jīng)網(wǎng)絡(luò)的輸入,同時(shí)使用批量歸一化方法,可以提升神經(jīng)網(wǎng)絡(luò)的訓(xùn)練速度和泛化能力,提高檢測(cè)準(zhǔn)確率。
然而數(shù)據(jù)預(yù)處理時(shí)讀取數(shù)據(jù)信息并進(jìn)行計(jì)算,需要消耗大量的時(shí)間;人工提取特征需要較強(qiáng)的先驗(yàn)知識(shí),不僅增加了工作量,也限制了神經(jīng)網(wǎng)絡(luò)的泛化能力。后續(xù)需要選擇更優(yōu)的方法,比如使用合適的機(jī)器學(xué)習(xí)方法對(duì)數(shù)據(jù)集進(jìn)行預(yù)學(xué)習(xí),更為準(zhǔn)確地提取特征,以此來(lái)表現(xiàn)數(shù)據(jù)流的特點(diǎn),從而增強(qiáng)檢驗(yàn)算法的泛化能力,提高檢測(cè)準(zhǔn)確率。