何婭鎣,覃仁超,舒 月,蔣瑞林,李 丫,劉國航
(1.西南科技大學 計算機科學與技術學院,四川 綿陽 621000;2.成都信息工程大學 網絡空間安全學院,四川 成都 610000)
僵尸網絡是由許多受感染的主機(由僵尸程序感染)組成的覆蓋網絡,它們被僵尸程序攻擊后由僵尸主控機(Botmaster)控制以進行惡意活動[1-2],包括各種類型的網絡攻擊,例如分布式拒絕服務(DDoS)、垃圾郵件、網絡釣魚、點擊欺詐和信息盜竊。根據相關研究結果,黑客頻繁利用基于僵尸網絡的網絡漏洞發動不同類型的網絡攻擊,對互聯網中的基礎設施造成危害[3]。例如,2008年互聯網爆發的具有超強傳播能力的conficker僵尸網絡病毒,感染了超過1 000萬臺計算機[4]。2016年9月,Mirai僵尸網絡攻擊物理設備致使美國多個城市的互聯網癱瘓[5]。鑒于僵尸網絡不斷變異帶來的各式安全問題,準確識別和檢測僵尸網絡,特別是未知的僵尸網絡,是學術和工業研究面臨的首要挑戰[6]。
現有的基于簽名的檢測技術可以很好地檢測已知和相同類型的僵尸網絡,但不能有效檢測未知和不斷發展的僵尸網絡[7]。基于深度包(DPI)的檢測技術側重于用戶隱私和復雜的數據源。因此,研究人員正在著手設計一種惡意軟件檢測模型,而無需了解數據包的內容。在不訪問數據包內容的情況下分析網絡流量的方法之一為通過基于行為的檢測方法[7]。本研究旨在創建一種基于行為的分析方法,用于檢測網絡流量中的僵尸網絡,迅速產生良好的效果。隨著新攻擊破壞能力的發展,傳統機器學習算法在檢測僵尸網絡方面變得不那么有效。
在這方面,深度學習是一種更有效的方法,可以彌補常見的基于機器學習的僵尸網絡檢測方法的弱點。深度學習模型可以學習數據的不同特征,并使用它們對相似數據做出決策。從流量包中提取的特征非常有限,UNSW-NB13、CICIDS2017等大多數公共僵尸網絡數據集只有幾十個特征。當這些數據集擬合較深的神經網絡時,實驗結果會很差。特征集的好壞往往決定了僵尸網絡的檢測性能。如何從數據包中提取原始數據作為模型的輸入,目前還沒有特別明確的標準。討論和研究上述問題,首先,在特征提取方面,需要指定一個統一的標準來提取原始數據,所以放棄手動提取方法,該類方法提取的特征差異太大,輸入相同的模型,實驗并不公平,轉而改用CICFlowmeter。CICFlowmeter是加拿大網絡安全研究所提供的開源工具,可以從數據包的頭部提取原始數據。在實際檢測任務中,并非所有CICFlowmeter提取的原始數據都能有效應用于模型,存在冗余和無效特征。數據清洗后獲得的原始數據較少。如何充分利用有限的原始數據完成檢測任務是一個亟待解決的問題。因此,該文研究了在計算機視覺中表現良好的CNN架構模型,并提出了BRNet,基于一維卷積神經網絡和特征重用的思想,解決了有限特征的準確檢測問題。
目前,僵尸網絡已經成為國內乃至全世界網絡安全領域最為關注的危害之一。近年來,國內外提出使用傳統的機器學習和數據挖掘算法識別和跟蹤僵尸網絡。
肖琦等[8]采用隨機森林算法在CTU-13數據集上進行僵尸網絡檢測。Garre等[9]提出了一種基于SSH的僵尸網絡的方法,并使用機器學習(ML)技術開發了實時檢測模型。Jagadeesan等[10]開發了一種早期僵尸網絡檢測模型。Hossain等[11]介紹了一種從網絡流中減少選定特征的方法,并使用神經網絡檢測僵尸網絡。Hosseini等[12]提出了一種基于CNN-LSTM網絡架構的方法,用于檢測和比較四種僵尸網絡攻擊類型,即IRC、HTTP、DNS和P2P。林宏剛等[13]利用圖神經網絡對P2P網絡進行檢測。
雖然上述研究可以達到不錯的檢測效果,但部分需要知曉數據包隱私數據,可能會侵犯用戶隱私;部分雖然可以取得較高的檢測率,但過分依賴特征,即需要對初始特征再進行多次加工處理;還有的一部分存在模型過于簡單本身檢測率就不高的問題。
文中工作主要受到卷積神經網絡(Convolutional Neural Network,CNN)的啟發,因此,簡單地介紹了模型中使用的卷積神經網絡結構。
殘差神經網絡(Residual Neural Network,ResNet)是一種廣泛使用的特征提取網絡[14]。ResNet的結構加快了神經網絡的訓練速度,大大提高了模型的精度。其核心思想是使用殘差塊,如圖1所示。

圖1 ResNet殘差塊思想架構
將lth層的輸出表示為xl,如公式(1)所示。
xl=Hl(xl-1)+xl-1
(1)
ResNet添加一個密集卷積網絡(Dense Convolutional Network,DesNet),以前饋方式將每一層連接到其他每一層[15]。對于每層,將所有先前層的特征圖用作輸入,并將其特征圖用作所有后續層的輸入。DenseNet的正向過程如圖2所示。

圖2 DesNet特征復用示意圖
從圖2中可以更直觀地理解DesNet的連接方法。例如,h2不僅包括第一層的x1,還包括第一層的x0。
近些年來,CNN架構在圖像分類方面取得了巨大成功,這給安全研究人員帶來思考。筆者的設計始發點是“pcap”文件,即數據流量包,可以轉換為類似于圖像中像素的數字化信息。所以,通過CNN架構來處理數字信息,借此可以捕獲到額外有用信息。本節分兩部分描述模型。第一部分是關于處理“pcap”文件和清洗實時網絡的數據,第二部分是關于BRNet模型的構建。以下步驟簡要描述該模型,如圖3所示。

圖3 BRNet模型框架(Conv+BN+Relu+Maxpooling+Concat+Maxpooling =Recon塊)
2.2.1 數據處理
特征提取在選擇最佳特征集檢測僵尸網絡攻擊方面起著關鍵作用。不同的特征對實驗結果將會產生巨大的差異。
選擇權威的方法處理僵尸網絡數據集十分必要。CIC[16]提供名為CICFlowMeter-V4的實用程序提取特征。它可以從不同的“pcap”文件中提取相同的特征,因此,選擇CICFlowMeter-V4作為特征提取工具。在清理數據后,剩余的特征如表1所示。

表1 數據清理后剩余特征
這些特征大致可以分為五組,包括包數、時間、大小、流和標志。其中未包含IP地址和協議等分類特征,因此,根據CIC網站的惡意IP對流量進行標記。使用CIC網站上提供的與特定僵尸網絡相關的IP信息來標記數據集。標記后,刪除所有高低偏斜值以抑制異常值。刪除了具有NaN、Inf和零標準偏差的列。最后將數據縮放到[0,1]范圍。
2.2.2 BRNet模型細節
模型啟發于殘差網絡的殘差塊以及DesNet的特征復用,主要由Recon塊、全局平均池化層、全連接層和Dropout層組成。對ISCX-2014數據集進行處理后,可以獲得大約67個特征,并以一維矩陣的形式存儲。與圖片特征相比,僵尸網絡數據集特征大部分較少并不能發揮它們的顯著作用。筆者想到了一種設計技巧,采用在DesNet模型中的特征重用,并且需要一個類似于殘差塊的塊。該塊采用一維卷積、批量歸一化、Relu、最大池化層和連接層,如圖3所示。
當談及CNN架構時,卷積層是不可或缺的。使用一維卷積來處理數據(參數設置見3.2小節)。由于卷積神經網絡在訓練階段,每一層都會更新網絡參數,每一層參數的更新都會影響后面網絡輸入數據的分布,且會隨著網絡深度的加深而放大。分布的變化會減慢網絡訓練的收斂速度。批量歸一化操作可以解決數據分布變化的問題。歸一化值都在特定范圍內,這使得模型能夠快速收斂,并在一定程度上防止網絡過擬合。實驗表明,激活函數Relu的性能優于選擇Sigmoid和Tanh。在這三層之后,連接一個最大池層以減少參數,同時保留主要特征。第二個塊包括卷積、批量歸一化、Relu和最大池化層。
綜上所述,由于特征數量較少的客觀條件,在設計網絡時需要考慮特征復用的思想。因此,第三個塊的輸入是前兩個塊的輸出的通道連接。這里的操作是在幾個塊的輸入拼接在一起之后,會進行一個最大池化操作,以減少參數,同時保留最主要的特征。以此類推,每個塊接收來自所有先前塊的特征,這些特征使用卷積、批量歸一化、Relu和最大池化進行處理,并轉發給所有后續塊。ReconNet是一個卷積前饋網絡,在塊之間具有跳躍連接。形式上,遞歸公式定義了第k個recon block:
(2)
其中,yk是塊k的輸出向量,Fk是塊k的運算符,它結合了Dropout、卷積、批量歸一化、Relu和Max-Pooling的一系列操作,⊕是傳入向量的連接運算符。yi是塊i的輸出向量,它被饋送到塊k的輸入。
在最后一個Recon塊中,在卷積層和批量歸一化、Relu和最大池化層之后,應用全局平均池化層來降低特征的維度。在這些操作之后,數據送到兩個全連接層、Dropout和Softmax輸出,用于二分類。模型性能將按以下小節進行評估。
ISCX-2014數據集結合了三個公開可用的數據集ISOT、ISCX-2012 IDS和CTU-13。正如ISCX網站上所提到的,整個數據集代表了普遍性、真實性和代表性。普遍性代表了僵尸網絡行為的多樣性。真實性可以定義為與捕獲的數據為現實世界的流量,而代表性則是可以代表大部分的僵尸網絡數據集[16]。目前,對于ISCX-2014數據集,其權威版本是“pcap”流量包形式。它結合了三個不同的數據集,包括大多數類別的僵尸網絡。因此,這個數據集作為實驗的數據集有充分的理由。在ISCX-2014數據集中,包含幾種類型的僵尸網絡攻擊,在實驗中選取部分的惡意樣本和所有的正常樣本,其中正常樣本數量為450 878,惡意樣本數量為48 926。
為了體現模型在其他數據集上的表現能力,在實驗部分還采取其他的僵尸網絡數據集,包括CIC-IDS2017和DARKNET-2020,它們均是由加拿大安全研究所提供。在其官方網站上有已經處理好的csv文件。
模型采用了Adam優化器,初始學習率設置為0.005。kernel size設置為15,filter設置為15,stride設置為1,pooling size設置為2,dropout設置為0.3,它們的參數值在整個模型中保持不變。實驗在GPU工作站Ryzen threadripper 1950x上進行,配備16核處理器、GeForce GTC 1070 Ti (8 GB)顯卡,在Windows10上運行。該模型使用Keras框架實現。
一般來說,分類器可以使用整體準確度來衡量。為了更好地評估模型的性能,該文使用準確率、召回率和F1作為指標。計算公式如下所示:
(3)
(4)
(5)
其中,TP是被正確分類為僵尸網絡攻擊流量的僵尸網絡攻擊樣本數;FP是被錯誤分類為僵尸網絡攻擊流量的正常樣本數;TN是被正確分類為僵尸網絡攻擊流量的正常樣本數作為正常流量;FN是被錯誤分類為正常流量的僵尸網絡攻擊樣本的數量。
3.4.1 對比實驗
為了顯示提出的方法與使用ISCX-2014數據集的其他研究相比的優越性,在表2中進行了性能對比。在ISCX-2014數據集上的整個實驗的訓練過程如圖4所示。整個訓練過程并沒有過擬合現象。

表2 與之前的研究性能對比 %

圖4 模型損失訓練
在比較的方法中,Yin等[17]使用生成對抗網絡;Beigi等[18]使用一組手動設計的特征來使用C4.5決策樹進行僵尸網絡檢測;Homayoun等[19]使用由自動編碼器和CNN組成的深層結構;Qin等[20]使用兩步深度學習方法來檢測攻擊,它可以創建符合任意協議的少量頭字段的流規則;Bijalwan等[21]使用分類器集合進行僵尸網絡檢測;Hossain等[11]首先減少手動選擇的特征,再使用深度學習進行僵尸網絡檢測;Shahhosseini等[22]使用LSTM模型檢測原始數據包數據以進行僵尸網絡檢測。
所有這些方法都使用來自ISCX-2014數據集的預定義特征作為學習算法的輸入。表2展示了四個分類器在ISCX-2014數據集上的性能評估的實驗結果。從表2可以看出,該模型優于其他檢測算法。提出的方法的準確率可以達到99.29%,比Shahhosseini等[22]提出的方法準確率提高了2.16百分點,其他性能指標均有大幅度提高。
3.4.2 其他數據集
為了更好地展示模型在其他僵尸網絡數據集上的表現能力,這里采用了3.1小節中提到的CIC-IDS2017和DARKNET-2020數據集進行實驗,實驗結果如表3所示。

表3 性能展示 %
僵尸網絡是網絡安全領域亟待解決的問題之一。目前,已經出現了大量的方法來檢測僵尸網絡。從數據包中提取原始數據的方法多種多樣,初始特征的選取也參差不齊。初始特征的選取會對整個實驗產生較大的影響。因此,需要找到一個統一的處理僵尸網絡數據包的方式,再交由神經學習模型處理。CICFlowmeter是一個廣泛使用的數據包處理組件,可以設置統一的標準從流量數據包中提取原始數據。根據CICFlowmeter提取的有限特征,該模型利用特征重用的思想,在有限特征下取得良好的性能。通過實驗證明了其架構的可行性。提出的BRNet模型可以有效識別僵尸網絡攻擊,并且實驗指標明顯優于目前大多數方法。