葛浩偉,楊啟航,石樂義
(1.中國(guó)石油大學(xué)(華東)海洋與空間信息學(xué)院,山東 青島 266580;2.中國(guó)石油大學(xué)(華東)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,山東 青島 266580)
隨著互聯(lián)網(wǎng)的迅猛發(fā)展,網(wǎng)絡(luò)安全問題日益突出,其中分布式拒絕服務(wù)(DDoS)攻擊作為一種常見的網(wǎng)絡(luò)威脅引起了廣泛關(guān)注。DDoS 攻擊通過利用多個(gè)攻擊源向目標(biāo)系統(tǒng)同時(shí)發(fā)送大量請(qǐng)求,占用其帶寬和計(jì)算資源,導(dǎo)致合法用戶無法正常訪問服務(wù)。具體來說,DDoS攻擊又分為兩種類型:一種是直接攻擊,這種攻擊方式較為直接,攻擊范圍和強(qiáng)度不高,并且因?yàn)槭侵苯拥姆绞?,攻擊者暴露的可能性增大;另一種攻擊方式是基于反射的攻擊,這種攻擊會(huì)使用大量僵尸主機(jī)先感染一部分受害主機(jī),將其作為反射器進(jìn)而來攻擊其他主機(jī),這種攻擊方式的隱蔽性和破壞性使其成為各行各業(yè)組織和企業(yè)面臨的重大風(fēng)險(xiǎn)之一。
一些研究者將目光放在深度學(xué)習(xí)上,使用深度學(xué)習(xí)自動(dòng)提取特征的特性來進(jìn)行攻擊檢測(cè),文獻(xiàn)[1-6]利用深度學(xué)習(xí)技術(shù)對(duì)物聯(lián)網(wǎng)(IoT)和軟件定義網(wǎng)絡(luò)(SDN)環(huán)境中的DDoS 攻擊進(jìn)行了研究。文獻(xiàn)[7]提出了一種不定長(zhǎng)輸入的卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行分類訓(xùn)練,該方法可以保留全部流量信息。文獻(xiàn)[8]提出了一種基于條件熵和決策樹的DDoS 攻擊檢測(cè)方法,利用條件熵判斷當(dāng)前網(wǎng)絡(luò)狀態(tài),通過分析SDN 中DDoS 攻擊特點(diǎn)使用決策樹進(jìn)行分類。文獻(xiàn)[9]針對(duì)低速率的分布式拒絕服務(wù)攻擊提出了一種基于混合深度學(xué)習(xí)的多類型低速率DDoS 攻擊檢測(cè)方法。
本文的目的是提出一種能夠準(zhǔn)確檢測(cè)DDoS 攻擊的檢測(cè)算法,為此構(gòu)造了一種基于深度學(xué)習(xí)和集成學(xué)習(xí)的檢測(cè)模型。由于人工無法提取難以理解的深層特征,因此本文對(duì)原始流量數(shù)據(jù)進(jìn)行處理,截取原始流量數(shù)據(jù)中傳輸層和網(wǎng)絡(luò)層的頭部信息,并將其轉(zhuǎn)化為灰度圖的形式,使用這種方法可以更好地保留原始流量的大部分信息,從而可以利用深度學(xué)習(xí)來提取其深層特征。但不可否認(rèn)的是,人工提取的特征具有一定的積極作用,因此使用CICFlowMeter 工具將原始流量的數(shù)據(jù)特征提取出來,讀取其ASCII 碼轉(zhuǎn)換為灰度圖。為了提取流量的空間特征,構(gòu)造了一種基于CNN 與BiLSTM 的深度學(xué)習(xí)模型。最后為了增強(qiáng)模型的分類平衡性,提出了一種基于深度學(xué)習(xí)和集成學(xué)習(xí)的深度模型。
實(shí)驗(yàn)結(jié)果表明,本文提出的模型能夠有效檢測(cè)DDoS 攻擊。
首先對(duì)原始流量數(shù)據(jù)進(jìn)行預(yù)處理,生成兩張灰度圖作為后續(xù)深度學(xué)習(xí)模型的輸入。為了保證模型提取特征的能力和速度,在使用原始數(shù)據(jù)進(jìn)行訓(xùn)練的同時(shí),使用了人工提取的特征數(shù)據(jù),將其轉(zhuǎn)化為灰度圖共同作為模型輸入的一部分。使用wireshark 工具抓包獲取實(shí)驗(yàn)數(shù)據(jù),并將數(shù)據(jù)保存為pcap 格式的文件;然后使用CICFlowMeter 工具從原始流量信息中提取高維特征,并將這些特征保存為csv 格式的文件;為了解決CICFlowMeter 工具無法將生成的特征與原始流文件對(duì)應(yīng)的問題,需要在原始流量數(shù)據(jù)中找到與csv文獻(xiàn)件相對(duì)應(yīng)的流。由于csv文獻(xiàn)件中存在許多五元組相同但時(shí)間戳不同的流量記錄,為了減少訓(xùn)練時(shí)間和數(shù)據(jù)集中的樣本數(shù)量,本文在總pcap文獻(xiàn)件中僅進(jìn)行一次搜索,以找到五元組相同但時(shí)間戳不同的原始流量。然后,將提取的流量保存在單獨(dú)的pcap文獻(xiàn)件中,同時(shí)將對(duì)應(yīng)流量由CICFlowMeter 工具生成的多維特征保存在一個(gè)txt文獻(xiàn)件中。這樣可以將對(duì)應(yīng)的流量數(shù)據(jù)保存在一個(gè)目錄下,以便在后續(xù)的深度學(xué)習(xí)訓(xùn)練中提取數(shù)據(jù)集樣本。
1.1.1 pcap文獻(xiàn)件原始流量處理
為了使模型能夠捕捉到原始流量的特征,本文將原始流量的十六進(jìn)制數(shù)據(jù)轉(zhuǎn)換為灰度圖的形式,從而使模型能夠通過可視化流量進(jìn)行更準(zhǔn)確的分類。
本文將流量轉(zhuǎn)化為灰度圖的方法是將原始流量的二進(jìn)制轉(zhuǎn)化為十六進(jìn)制,然后將十六進(jìn)制數(shù)據(jù)轉(zhuǎn)化為灰度像素來生成灰度圖,為了讓每個(gè)流量都能轉(zhuǎn)換成大小統(tǒng)一的灰度圖,截取每個(gè)流量中每個(gè)數(shù)據(jù)包的網(wǎng)絡(luò)層和傳輸層頭部的字節(jié)碼進(jìn)行處理。一般來說,數(shù)據(jù)包的網(wǎng)絡(luò)層包頭是20 B,傳輸層包頭也是20 B。為了盡可能多地保留數(shù)據(jù)包的特征,本文截取每個(gè)數(shù)據(jù)包的54 B生成灰度圖。為方便起見,將該灰度圖稱為pcap 灰度圖。
1.1.2 csv文獻(xiàn)件中的多維特征處理
本文利用CICFlowMeter 工具提取由專家經(jīng)驗(yàn)生成的特征,部分特征如表1 所示。為了去除冗余,本文去除了FlowID、源IP 地址、目的IP 地址、時(shí)間戳和標(biāo)簽,共使用83 維特征生成灰度圖。
表1 利用CICFlowMeter 工具提取的部分特征
為了解決像素特征冗余較大的問題,將所有的特征作為一個(gè)整體,而不是單獨(dú)處理某個(gè)特征,本文使用ASCII 碼來進(jìn)行灰度圖的轉(zhuǎn)換,ASCII 碼取值范圍恰好為0~255,與像素值的取值范圍相同,所以可以將特征的每個(gè)字符一一對(duì)應(yīng)灰度圖的一個(gè)像素值使用,這樣就可以擴(kuò)大每個(gè)維度特征的距離,從而大大減少冗余,本文將此灰度圖稱為txt灰度圖。
整體模型如圖1 所示。本文使用兩張灰度圖像和根據(jù)專家經(jīng)驗(yàn)生成的原始多維特征作為深度學(xué)習(xí)模型的輸入。為了捕捉特征之間的時(shí)序特征,本文使用BiLSTM 網(wǎng)絡(luò)。BiLSTM 是LSTM 網(wǎng)絡(luò)的一種變體,主要由前向LSTM 和后向LSTM 組成,即BiLSTM 可以從兩個(gè)方向提取特征信息。對(duì)于兩幅灰度圖,本文分別采用一維卷積和二維卷積進(jìn)行特征提取。將兩張灰度圖像作為輸入的兩個(gè)通道輸入到二維卷積網(wǎng)絡(luò)中,以捕捉流量的空間特征。由于一維卷積網(wǎng)絡(luò)的卷積核方向是固定的,所以對(duì)于具有時(shí)序特征的原始流量,一維卷積可以更好地捕捉其時(shí)序特征。因此,將pcap 灰度圖像分別輸入到1D-CNN 以及2D-CNN中,再將一維卷積和二維卷積的輸出輸入到一個(gè)BiLSTM 中進(jìn)一步提取樣本的時(shí)序特征,最后經(jīng)過一個(gè)Dense 層輸出分類結(jié)果。將本節(jié)中創(chuàng)建的深度學(xué)習(xí)模型稱為CBG(CNN BiLSTM Grayscale)。
圖1 基于BiLSTM 與CNN 的攻擊檢測(cè)模型
由于用于訓(xùn)練的數(shù)據(jù)集樣本類別通常是不平衡的,這可能會(huì)導(dǎo)致模型在進(jìn)行分類時(shí)會(huì)偏向某個(gè)類別,為了提高模型分類的平衡性,在1.2 節(jié)構(gòu)建的CBG 模型的基礎(chǔ)上,融合多個(gè)CBG 模型構(gòu)造了一種基于深度學(xué)習(xí)和集成學(xué)習(xí)的深度集成學(xué)習(xí)模型(CNN BiLSTM Grayscale-Ensemble,CBG-E)。為方便起見,集成的深度學(xué)習(xí)模型稱為CBG 子模型。本文構(gòu)造的深度集成學(xué)習(xí)算法以提出的類權(quán)重投票算法為主,使用5 個(gè)CBG 子模型對(duì)最終的攻擊類別進(jìn)行投票分類檢測(cè)。
構(gòu)建的深度集成學(xué)習(xí)模型如圖2 所示。
圖2 CBG-E 模型
首先從原始數(shù)據(jù)集中隨機(jī)有放回地抽取一些樣本來構(gòu)建子數(shù)據(jù)集。這是為了使得子數(shù)據(jù)集訓(xùn)練出來的CBG 子模型之間能夠有適當(dāng)?shù)牟町愋?,依靠這個(gè)差異來投票可以取得更加平衡的結(jié)果。在本文中,隨機(jī)取回原始數(shù)據(jù)集的910 來構(gòu)建子數(shù)據(jù)集,然后將CBG 子模型分類結(jié)果的F1-Score 保存起來作為構(gòu)造投票權(quán)重的主要依據(jù),這樣可以保證某個(gè)類別分類權(quán)威性上最大的CBG 子模型在最終投票過程中可以占據(jù)更大權(quán)重比例,使得模型的結(jié)果更具權(quán)威性也更具有平衡性。
在得到每個(gè)CBG 子模型所有類別的F1-Score后,構(gòu)建了類權(quán)重投票算法來設(shè)置每個(gè)子模型的投票權(quán)重。具體算法如公式(1)所示:
式中:M為5 個(gè)CBG 子模型的集合;C代表所有的類別;代表CBG 子模型m對(duì)類別c的F1-Score;Weight表示CBG 子模型m對(duì)類別c的權(quán)重值。
在得到每個(gè)CBG 子模型的權(quán)重后,采用投票加權(quán)的方法將得票數(shù)最多的類別作為最終輸出,具體如算法1 所示。
算法1:深度集成學(xué)習(xí)算法偽代碼
在本節(jié)中使用構(gòu)建的數(shù)據(jù)集來評(píng)估本文創(chuàng)建的CBG 模型和CBG-E 模型的性能。
本文使用其他文章中常用的CICDDoS2019 數(shù)據(jù)集進(jìn)行實(shí)驗(yàn)。CICDDoS2019 數(shù)據(jù)集是加拿大網(wǎng)絡(luò)安全研究所[10]在2019 年發(fā)布的關(guān)于DDoS 攻擊的數(shù)據(jù)集,它包含大量良性和最新的常見DDoS 攻擊流量。該數(shù)據(jù)集基于HTTP、HTTPS、FTP、SSH、email 協(xié)議生成25 個(gè)用戶抽象行為,使用CICFlowMeter-V3工具構(gòu)建,并提取了88個(gè)流量特征。它使用不同的攻擊方式和協(xié)議將攻擊分為13類,包括目前常見的DDoS 攻擊:Syn、NetBIOS、LDAP、MSSQL 和UDP 等。該數(shù)據(jù)集的研究團(tuán)隊(duì)共進(jìn)行了兩天的模擬攻擊,這兩天的記錄總數(shù)顯示在表2 中。因?yàn)閿?shù)據(jù)量過多,本文只選取第一天的攻擊數(shù)據(jù)集進(jìn)行實(shí)驗(yàn)。
表2 CICDDoS2019 數(shù)據(jù)集樣本數(shù)據(jù)
本文使用的環(huán)境如表3 所示。本文在實(shí)驗(yàn)中選擇Adam 作為優(yōu)化器,學(xué)習(xí)率為10-3,epoch 設(shè)置為15,batch為20,并且所有epoch 中驗(yàn)證集上F1-Score 最高的模型保存為最終模型。
表3 實(shí)驗(yàn)環(huán)境
本文使用到的模型評(píng)估標(biāo)準(zhǔn)為準(zhǔn)確率(Accuracy)、精確率(Preciosion)、召回率(Recall)以及F1-Score。其中:TP(True Positive)為模型預(yù)測(cè)為正且實(shí)際為正的樣本數(shù);TF(True Negative)為模型預(yù)測(cè)為負(fù)樣本且實(shí)際為負(fù)樣本的數(shù)量;FP(False Positive)為模型預(yù)測(cè)為正樣本但實(shí)際為負(fù)樣本的樣本數(shù)量;FN(False Negative)為模型預(yù)測(cè)為負(fù)但實(shí)際為正的樣本數(shù)。
本文將構(gòu)成CBG-E 模型的5 個(gè)子模型與CBG-E 模型進(jìn)行了比較,以此來驗(yàn)證將子模型進(jìn)行集成操作可以提高模型的分類性能,詳情見表4??梢钥闯? 個(gè)子模型在部分類別上的分類性能較差,例如子模型3 對(duì)NetBIOS 攻擊的召回率僅為99.20%,整合后CBG-E 模型對(duì)NetBIOS 攻擊的召回率可以提高到99.47%,5 個(gè)子模型對(duì)NetBIOS 的召回率最高僅為99.40%,整合后可以略有提高,這表明本文提出的集成算法不僅可以集成所有子模型某些方面的分類性能,在此基礎(chǔ)上可以提高某些方面的分類性能。
表4 多指標(biāo)下子模型和集成學(xué)習(xí)模型的表現(xiàn) %
隨后對(duì)所構(gòu)造的深度學(xué)習(xí)模型進(jìn)行了消融實(shí)驗(yàn),如表5 所示,分別對(duì)比了只使用1D-CNN、2D-CNN、BiLSTM以及結(jié)合使用的性能。CBG 模型利用了1D-CNN、2DCNN 和BiLSTM 的優(yōu)勢(shì),綜合了它們?cè)谔卣魈崛 ⒖臻g信息和上下文建模方面的能力,從而在分類任務(wù)中取得了出色的性能。這表明CBG 模型的設(shè)計(jì)是合理且有效的。
表5 深度學(xué)習(xí)模型消融實(shí)驗(yàn) %
表6 顯示了CBG-E 模型與其他論文的性能比較。本文設(shè)置了文獻(xiàn)[11-14]的方法進(jìn)行對(duì)比。其中:文獻(xiàn)[11]使用到了一種幾何度量的卷積神經(jīng)網(wǎng)絡(luò)CNN-Geo;文獻(xiàn)[12]使用了1D-CNN,并將接收樣本數(shù)量、時(shí)間以及特征這三種維度作為3D 張量輸入;文獻(xiàn)[13]使用了一種基于GAN 的LSTM 網(wǎng)絡(luò)GAN-LSTM;文獻(xiàn)[14]使用了一種BiLSTM 網(wǎng)絡(luò)。
表6 本文模型與其他論文方法的對(duì)比 %
在使用相同數(shù)據(jù)集CICDDoS2019 的情況下,本文所提出的CBG-E 模型可以更好地捕捉到流量之間的特征關(guān)系,所以它可以更好地分類,并且可以取得比其他論文更好的結(jié)果。
在網(wǎng)絡(luò)安全形勢(shì)越發(fā)嚴(yán)峻的今天,DDoS 攻擊依舊是較難檢測(cè)和防御的一種攻擊手段,該攻擊憑借著其隨機(jī)性使得受害者無法有效進(jìn)行抵御,故本文提出了一種基于深度學(xué)習(xí)和集成學(xué)習(xí)的DDoS 攻擊檢測(cè)模型,模型的構(gòu)建以及數(shù)據(jù)的預(yù)處理有效提高了模型的分類精度,并且在集成算法以及類權(quán)重投票算法的加持下,模型對(duì)樣本類別的分類平衡性有了提高。最后進(jìn)行了性能實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果表明,本文提出的CBG-E 模型有效提高了DDoS 攻擊檢測(cè)的準(zhǔn)確率(99.63%),檢測(cè)效果優(yōu)于單一的CBG 模型和其他論文方法。
注:本文通訊作者為石樂義。