吳迪,方濱興,崔翔,劉奇旭
?
BotCatcher:基于深度學習的僵尸網絡檢測系統?
吳迪1,2,方濱興3,4,5,崔翔1,3,劉奇旭1,2
(1. 中國科學院信息工程研究所,北京 100093;2. 中國科學院大學網絡空間安全學院,北京 100049;3. 廣州大學網絡空間先進技術研究院,廣東 廣州 510006;4. 電子科技大學廣東電子信息工程研究院,廣東 東莞 523808;5. 北京郵電大學網絡空間安全學院,北京 100876)
機器學習技術在僵尸網絡檢測領域具有廣泛應用,但隨著僵尸網絡形態和命令控制機制逐漸變化,人工特征選取變得越來越困難。為此,提出基于深度學習的僵尸網絡檢測系統——BotCatcher,從時間和空間這2個維度自動化提取網絡流量特征,通過結合多種深層神經網絡結構建立分類器。BotCatcher不依賴于任何有關協議和拓撲的先驗知識,不需要人工選取特征。實驗結果表明,該模型性能良好,能夠對僵尸網絡流量進行準確識別。
僵尸網絡;深度學習;檢測;特征
僵尸網絡(botnet)[1]是指一群可被攻擊者遠程控制的非合作用戶終端。其中,被感染的終端稱為僵尸主機(bot),控制者(botmaster)可以通過命令與控制(C&C, command and control)信道對僵尸主機進行一對多的操控。作為一種大規模攻擊平臺,攻擊者可以利用僵尸網絡發起分布式拒絕服務(DDoS, distributed denial of service)、垃圾郵件、釣魚攻擊、惡意軟件分發、加密勒索、虛擬貨幣挖掘等大規模攻擊活動,對互聯網造成了極大的安全威脅。2016年,Mirai僵尸網絡通過控制物聯網智能設備對OVH、Dyn等公司發起多次大規模DDoS攻擊,并引發了美國東海岸斷網事件和德國電信用戶訪問網絡異常事件[2]。2017年,WannaCry通過MS17-010漏洞在全球范圍內爆發,影響近百個國家上千家企業及公共組織,該程序感染計算機后會植入敲詐者病毒,導致電腦大量文件被加密[3]。安天和電信云堤發布的《2017全球僵尸網絡DDoS攻擊威脅態勢報告》中指出,2017年,受到黑客DDoS攻擊的國家共130個,其中,我國被攻擊總次數高達12 200萬次,占全球受攻擊總數的84.79%。
在僵尸網絡檢測領域,機器學習技術目前得到了廣泛應用。尤其在異常檢測方面,研究人員利用分類(如樸素貝葉斯[4]、支持向量機[5]、隨機森林[6])或聚類(如DBSCAN[7]、-means[8])算法,依據多種特征建立模型,識別惡意網絡流量。這些檢測模型在論文實驗中都具有較低的漏報率和誤報率,但是都面臨一個相同的問題:依賴人工選取的特征。特征通常在模型建立前由研究者通過經驗設定,常見的角度包括網絡流屬性(如數據分組數量、數據分組平均字節)、時間(如相鄰2條數據流平均間隔時間)、行為(如是否訪問相同服務器)等。合理的特征可以有效地提高模型的性能,但是一方面,人工選取對設計者的先驗知識有著較高要求,另一方面,固定的特征也為攻擊者提供了可乘之機。攻擊者可以利用對抗機器學習思想,針對性地改變僵尸網絡流量相關特征,借此逃避模型的檢測。文獻[9]指出攻擊者可以通過向僵尸網絡流量中注入特定數據分組和數據流噪聲的方法消除空間相似性以及在通信中加入隨機時延來消除時間相似性。文獻[10]指出攻擊者可以通過使僵尸主機隨機訪問正常域名從而逃避防御人員對C&C服務器的聚類。
目前,深度學習技術在圖像分類和文本識別領域有著廣泛的應用[11-12],其通過多層神經網絡結構與大量參數的調節,可以對樣本的特征進行逐層抽象和提取。因此,為了解決特征選取困難和容易被攻擊者針對的問題,本文圍繞基于深度學習的僵尸網絡檢測系統展開討論。本文的主要貢獻如下。
1) 提出一種新型檢測模型——BotCatcher,利用深度學習技術自動化學習網絡流量時間和空間這2個維度的特征,將特征提取與模型訓練過程結合起來,從全局的角度識別僵尸網絡流量。該檢測模型不依賴于任何有關協議和拓撲的先驗知識,也不需要人工選擇特征。
2) 提出2種深層神經網絡結構用于時空特征的提取。空間維度方面,借鑒卷積神經網絡(CNN, convolutional neural network)在圖像識別領域的應用方法,將網絡流量映射為灰度圖像,并利用多層CNN從中逐步抽取特征。時間維度方面,先對每條數據流進行處理得到對應的數據分組序列與字節序列,再分別送入長短期記憶(LSTM, long short-term memory)網絡中學習特征。
3) 實現BotCatcher原型系統,構造合理數據集進行性能評估實驗。實驗研究表明,BotCatcher相比已有的深度學習檢測模型,具有更高的準確性,能夠有效檢測大規模復雜的僵尸網絡流量。
僵尸網絡檢測已有工作總結如表1所示。從公開發表的文獻看,僵尸網絡檢測領域目前有如下具有代表性的工作。
基于網絡流量的僵尸網絡檢測技術主要包括誤用檢測和異常檢測等。其中,誤用檢測基于通信特征碼,使用事先配置的特征匹配規則對網絡流量進行篩選,相關的入侵檢測系統(IDS, intrusion detection system)包括USTAT[13]、NetSTAT[14]等。文獻[15]通過對Snort(一款著名的開源IDS)進行自定義規則配置,提出了一種以IDS為驅動的基于狀態的僵尸網絡檢測系統Bothunter。文獻[16]通過在可控環境中觀察僵尸主機行為,自動化提取特征,對不同協議的僵尸網絡分別建立檢測模型,并在實際檢測過程中自動生成。誤用檢測技術雖然對已知的僵尸網絡的準確率較高,但是對加密流量的識別能力較弱,而且無法檢測未知攻擊。
異常檢測假設僵尸網絡中C&C服務器與僵尸主機之間的通信模式與正常用戶之間的通信模式有顯著差異,因此可通過流量分析來對僵尸網絡產生的異常流量進行檢測,典型的異常特征包括高網絡時延、非常規端口流量等。異常檢測方法多使用機器學習技術,針對使用模型的不同,主要可以分為2種:無監督的聚類模型和有監督的分類模型。
聚類模型方面,文獻[8]提出了一種與協議拓撲無關的僵尸網絡檢測模型Botminer,其基于僵尸網絡具有時空相似性(space-time similarity)的假設,從主機行為與通信模式這2個層面對具有相似性的網絡流量分別聚類,通過對聚類結果進行關聯分析得出可疑的僵尸網絡流量。文獻[17]提出的檢測模型與Botminer原理相似,在關聯分析階段采用了時間窗模式,并增加了實時檢測功能。文獻[10]提出了一種系統化的相關服務器挖掘模型,該模型沒有對僵尸主機進行水平關聯,而是通過流量聚類挖掘具有相似性的可疑服務器,所用的特征包括與服務器通信的客戶端集合、服務器IP地址、whois信息等。

表1 僵尸網絡檢測已有工作總結
分類模型方面,文獻[4]針對IRC僵尸網絡,利用J48、樸素貝葉斯和貝葉斯網絡算法設計了分類器,具有較低的漏報率。文獻[18]針對P2P僵尸網絡,比較了SVM、KNN等5種分類器在實時檢測中的表現。文獻[6]提出一種面向NetFlow數據的大規模高速檢測系統DISCLOSURE,通過采用隨機森林模型動態選取特征,在不同的應用場景中可自適應地平衡漏報率和誤報率。文獻[19]提出了一種新型的隨機化數據分割學習模型,采用改良的正向選擇排序技術從特征集中過濾多余無關的特征,并通過基于泰森多邊形的數據剪枝方法來減小龐大的訓練數據集。
隨著人工智能理念以及深度學習技術的發展,神經網絡和深度學習算法被逐漸應用于僵尸網絡檢測領域。文獻[20]提出利用帶有反向傳播機制的多層前饋神經網絡建立分類器,并對算法進行改進使其在更新權值時可以動態調整模型的學習速率。文獻[21]提出將僵尸網絡流量轉化成隨時間變化的狀態序列特征,采用循環神經網絡(RNN, recurrent neural network)對這些特征進行學習來建立檢測模型。文獻[22-23]提出利用CNN學習網絡流量的特征,利用圖形分類的方法來實現流量分類。
不同于上述已有工作,本文結合多種深度學習算法來建立模型,通過多層神經網絡逐步抽象,自動化地學習網絡流量時間與空間這2個維度的特征,從而實現對大規模復雜僵尸網絡的準確檢測。
BotCatcher的目標為通過深度學習算法,從網絡流量中自動化地提取時間與空間這2個維度的特征,并依此訓練分類器。在特征學習模塊中,空間維度特征提取采用CNN算法,主要方法為將數據流轉換為二維灰度圖像,然后利用CNN在圖像識別領域應用的方法對流量特征進行學習;時間維度特征提取采用RNN算法,本系統具體選擇LSTM神經網絡對網絡流中依時序排列的數據分組序列和字節序列進行特征學習。整體框架如圖1所示。
3.1.1 數據預處理
原始數據集文件為pcap格式,由多個數據分組(packet)構成,而BotCatcher進行特征學習的對象為數據流(flow),因此在進行特征提取建立模型之前需要對原始數據進行預處理,將其聚合為數據流形式。相關概念定義如下。

圖1 BotCatcher整體框架
定義1數據分組。數據分組定義為=(x,s,t),其中,x表示五元組<,,,,>,即源IP、源端口、目的IP、目的端口和傳輸協議,s表示數據分組的大小,t表示數據分組的起始時間。原始數據集可以表示為數據分組的集合={1,2,…,p},為數據集包含的數據分組數量。
定義2數據流。數據流由數據集中五元組相同的數據分組組合而成,且流中的數據分組按照時間順序排列,即{1=(1,1,1),2=(2,2,2),…,p=(x,s,t)},其中,1=2=…=x,1<2<…<t。單個數據流定義為=(x,s,d,t),其中,x表示流中所有數據分組相同的五元組,s表示流中所有數據分組的大小之和,d表示流的持續時間,t表示流中第一個數據分組的起始時間。
因此,網絡流量呈層次化結構,如圖2所示。最底層為按照時間順序排列的字節序列,這些字節序列根據不同的網絡協議聚合形成不同的數據分組,數據分組序列根據五元組是否相同聚合形成數據流。

圖2 網絡流量層次化結構
3.1.2 交叉驗證
為了提高檢測模型的泛化能力,同時更準確地評估模型的分類性能,BotCatcher對數據流采用-折交叉驗證(-fold cross validation)方法構造訓練集。-折交叉驗證指將樣本數據集隨機劃分為個相同大小的子集,在每次模型訓練迭代過程中,按順序選取其中的一個子集作為測試集,剩下的1個子集作為訓練集。本文取=10,即將數據集分為10份,每次取其中9份進行訓練,根據損失函數(用來評估預測值與實際值的差距)進行優化后執行下一次迭代。
卷積神經網絡是一種基于多層監督學習的人工神經網絡,具有局部感知和權值共享等特點,能夠自動化地學習目標的多尺度特征,相比傳統的模式識別方法,具有更好的自適應性和容錯能力,廣泛應用于圖像分類等領域,因此BotCatcher選擇采用CNN對數據流的空間特征進行學習。
3.2.1 數據規范化
在學習前需要將每個數據流轉化為一張二維灰度圖像。為了提取出相同維度的特征,CNN要求輸入的圖片大小相同,而經過數據預處理得到的訓練集中,各個數據流大小不一,且方差可能很大。因此為了便于接下來的特征學習,BotCatcher對所有的數據流進行截取,取每個數據流前1 024 B(32×32)的數據(截取長度在第4節中進行評估),如果某條數據流長度不夠1 024 B,則在末尾用0x00進行填充。通常,一條數據流前面的數據主要包括連接信息(例如TCP連接中的三次握手、TLS連接中的密鑰交換)與少部分的內容交換,可以較好地反映整條數據流的主要特征。
3.2.2 圖片轉化
為了驗證CNN對流量分類的科學性和可行性,本文從NETRESEC網站隨機選取了幾種惡意流量,同時捕獲了幾種常見的日常流量,并將其可視化。具體方法為:從某一類的流量中隨機抽取若干條數據流,截取每個數據流中的前1 024 B的數據,并將每個字節轉化為一個8位灰度像素(0x00表示黑色,0xff表示白色),最后形成一個32×32的灰度圖像,如圖3所示。

圖3 不同類別流量轉化成的灰度圖像
從圖3可以看出,不同應用種類的pcap圖像之間具有較為明顯的差別,而每一類中的數據流則具有極高的相似度。因此可以推測僵尸網絡數據流轉化生成的圖像與正常數據流的圖像具有顯著差異,即使用CNN對圖片分類的方法進行流量識別是有效的。
3.2.3 CNN結構設計
本文流量預處理得到的圖片輸入尺寸以及訓練模型所使用的數據量與經典的LeNet-5結構十分相似。LeNet-5共使用7層卷積神經網絡結構,包括卷積層、池化層、卷積層、池化層、卷積層、全連接層和輸出層,它避免了對圖像進行復雜的預處理過程,在模式分類領域獲得了廣泛應用,尤其對于手寫數字識別具有非常高的準確率。因此BotCatcher借鑒LeNet-5結構,同時由于數據流灰度圖像相比于簡單的手寫數字具有更多復雜的細節,因此在使用CNN時加入了更多的過濾器來全面學習樣本特征。BotCatcher共采用2個卷積層,并在每個卷積層后的池化層進行最大池化(max-pooling)操作。

圖4 CNN結構設計
CNN具體結構如圖4所示,每層功能介紹如下。
1) 卷積層C1:卷積操作共使用32個過濾器,卷積核大小為5×5,卷積步長為1。該層由32個大小為28×28的特征圖組成。
2) 池化層S1:C1層的每個特征圖在該層進行一次大小為2×2的最大池化操作,即對每個特征圖進行步長為2的2×2過濾,取4個輸入中的最大值。該層由32個大小為14×14的特征圖組成。
3) 卷積層C2:卷積操作共使用64個過濾器,卷積核大小為5×5,卷積步長為1。該層由64個大小為10×10的特征圖組成,其中,每個特征圖連接S1層的所有32個或幾個特征圖。
4) 池化層S2:與S1層進行的池化操作相同,該層由64個大小為5×5的特征圖組成,特征圖中的每個單元與C2層中相對應特征圖的2×2鄰域相連接。
5) 全連接層D1:由1 024個神經元構成,與S2層全相連,輸出為1 024維向量。
6) 全連接層D2:由10個神經元構成,與D1層全相連,輸出為10維向量。
CNN只能對數據流的空間特征進行學習,無法提取鏈式結構的輸入集中各單元之間的依賴關系。為了更深層地挖掘數據流在時間序列上的特征,BotCatcher采用RNN中的LSTM神經網絡進行時間特征學習。相比于傳統的前向反饋神經網絡,RNN引入了定向循環,能夠處理輸入之間前后關聯的問題,目前,RNN在自然語言處理(NLP, natural language processing)領域已經取得了巨大成功。如圖2所示,網絡流量中的每個數據流都由按照時間順序排列的數據分組序列構成,因此可以使用RNN對其進行序列挖掘。LSTM是一種特殊的RNN,主要解決了序列數據中“長期依賴”的問題。通常,網絡流量由于其協議的特殊性,數據流中的一些數據分組可能與在其之前的個數據分組存在依賴關系(例如TCP握手階段的超時重連),因此相比于簡單循環神經網絡,LSTM更符合流量特征挖掘的場景需求。
為了更準確地提取特征,BotCatcher采用雙向LSTM,即對每個數據流進行正向、反向2個方向的序列掃描。同時采用雙層LSTM架構,先以數據分組中的字節序列作為LSTM的輸入,將每個數據分組轉化為一個向量,再將得到的數據分組向量序列作為LSTM的輸入,生成最終的時間維度特征。
3.3.1 輸入規范化
與3.2節相同,為了進行模型訓練,需要對所有輸入的數據流進行結構規范化,統一格式。BotCatcher對每個數據流截取前8個數據分組,每個數據分組取前100個字節(截取長度在第4節進行評估),若長度不夠,則在末尾用0x00填充。

圖5 LSTM結構設計
3.3.2 LSTM結構設計
LSTM具體結構如圖5所示,各層功能介紹如下。
1) 獨熱編碼層One-Hot:首先將數據流分為8個數據分組,每個數據分組為100維向量=(1,2,…,a),=1,2,…,,a∈*且0≤a≤255。這樣,數字化的向量在進行訓練時,模型會將字節這種離散值誤認為連續值,從而影響權重學習,降低準確率。因此在進行第一層LSTM學習之前,需要對數據分組向量進行編碼。BotCatcher采用One-Hot編碼,將每個字節編碼為256維的向量,其中只有一位為1,其他位均為0,數據分組即變為100×256的稀疏矩陣。
2) LSTM層L1:由100個LSTM單元構成,輸入為One-Hot編碼后的字節序列,輸出為100個256維向量。
函數、方程都是刻畫現實世界中量與量之間變化規律的重要數學模型,運用函數思想解決問題時常需要構造函數,構造法屬非常規思維,它適用于對某些常規方法不易解決的問題.
3) 全連接層D1:由256個神經元構成,輸出為256維向量。
4) LSTM層L2:由8個LSTM單元構成,輸入為D1層生成的數據分組序列,輸出為8個256維向量。
5) 全連接層D2:由10個神經元構成,輸出為10維向量。
在進行分類之前,需要對數據流時間和空間這2個維度的特征進行聚合。聚合過程有累加、累乘、取最大值等多種方式,為了盡可能地保留網絡流量的時空特性,BotCatcher采用串聯的方式進行聚合,即將2個10維的特征向量相接,構成一個20維的特征向量。
1) 分類器選擇:基于數據流特征,使用Softmax分類器來判斷輸入的數據流為正常流量還是僵尸網絡流量,如式(1)所示。其中,V為向量的第個元素,該元素的Softmax值S為

Softmax會將多個神經元的輸出映射到(0,1)內,各個輸出之和為1,符合概率形式,簡單易用。本文的Softmax作為二分類器,輸出結果為2類。
2) 損失函數:模型訓練時,在分類器后需要根據損失函數計算損失,繼而進行反向傳播來進行參數調整,即BP(back propagation)過程。BotCatcher選用多分類交叉熵損失(categorical cross-entropy loss)函數作為模型的損失函數。此外,為了防止訓練結果過擬合,使權重的分配更加均勻,在損失函數中加入了正則項,如式(2)所示。

3) 優化算法:BotCatcher采取的優化算法為基于mini-batch的隨機梯度下降法(SGD, stochastic gradient descent),并加入動量參數來提高穩定性,加快學習速度。參數更新過程如式(3)所示。


模型訓練過程如算法1所示。
算法1 模型訓練過程

輸出 更新后的網絡權重矩陣,偏移量
2) 從訓練集中隨機選取對樣本
8) end for
9) 使用驗證集進行驗證
10) end while
本文實驗采用的數據集由僵尸網絡流量、正常網絡流量和背景流量3個部分組成。其中,僵尸網絡流量取自CTU大學(布拉格捷克理工大學)組織建立的Stratosphere IPS項目,該項目的一個姊妹項目Malware Capture Facility專門負責收集和捕獲各種類型的惡意流量和正常流量,著名的CTU-13數據集[24]就由該項目建立。本文從中選擇了若干個具有代表性的僵尸網絡作為實驗數據集,并對其中過大(超過1 GB)的pcap分組進行了一定裁剪,如表2所示。正常網絡流量取自ISOT 2010數據集[25],該數據集混合了French chapter of Honeynet[26]、Ericsson Research in Hungray[27]等多個項目的公開數據集,包括Storm和Zeus這2種P2P僵尸網絡以及HTTP、P2P應用(例如bittorrent)、游戲等多種非惡意流量,本文選取其中未感染主機的流量作為本文實驗的正常流量。
此外,為了使實驗數據更接近用戶日常上網環境,對本地10臺日常使用的電腦進行了流量采集,生成流量作為本文實驗的背景流量。

表2 數據集
為了對檢測模型的表現進行評估,本文共選取3個實驗指標,分別為準確率()、誤報率()和F值,如式(4)所示。


其中,值為查準率和查全率的加權調和平均值,由于在流量檢測中查準率比查全率更加重要,因此應介于0~1之間,本文將定為0.5。是將正類預測為正類的數量,是將負類預測為負類的數量,是將負類預測為正類的數量,為將正類預測為負類的數量。
第3節中,在對流量進行特征學習時,需要對數據集進行預處理,通過截取相同大小的長度將流量數據處理成深度學習框架需要的輸入形式,相關參數包括以下3個部分。
1):空間特征學習模塊中,每條數據流的字節數,即輸入圖片的大小。
2):時間特征學習模塊中,每條數據流的數據分組數量。
3):時間特征學習模塊中,每個數據分組的字節數。
合理的模型輸入規格可以更好地保留流量數據自身特性,同時有助于構造出學習能力更強的神經網絡結構,加快模型學習的效率。因此,為了方便選擇合適的參數,本文取Conficker、Neris、Zeus這3個較為典型的僵尸網絡數據集,對它們的流量特征進行了3個方面的統計,即每條數據流的字節數、每條數據流的數據分組數和每個數據分組的字節數,統計數據分組包括總數、最大值、最小值、平均值和眾數,如表3所示。

表3 流量參數統計數據
綜合表3提供的信息,本文將2個特征學習模塊作為單獨的模型分別進行了模擬實驗(即只用空間特征訓練或只用時間特征訓練),并根據結果對模型參數進行了如下選擇。
1) 對于空間特征學習模塊,本文對分別取25×25、26×26、…、37×37,構造13組訓練集對模型進行訓練,訓練結果如圖6所示。從圖6可以看出,當大小超過1 089(33×33)時,模型準確率不再有顯著上升。結合CNN模型的學習經驗,本文將確定為與LeNet-5的輸入集大小相同,即1 024(32×32)。

圖6 bpf參數選擇
2) 對于時間特征學習模塊,雖然在一定范圍內取更大的和可以更好地反映流量內部的時間關聯,但是由于該模塊輸入的訓練集格式為四維矩陣,隨著2個參數取值的增加,得到的訓練集會成倍增大,并最終對模型訓練速率造成很大的影響,因此該模塊的參數選擇在保證一定準確率的前提下,訓練時間成本與空間占用成本成為主要的考慮因素。此外,從表3可以看出,數據流所含的數據分組多數為6~10個,數據分組中所含的字節數多數都不超過100 B,由此可以判斷較小的和即可反映大部分流量的時間特性。本文對分別取6、8、10、12,對分別取80、100、120,構造12組訓練集對模型進行訓練,在訓練集大小為1 000個樣本的情況下,10輪epoch所需的訓練時間(包括讀取訓練數據的時間)與準確率如圖7所示。從圖7可以看出,當和分別為8和100時,模型有較高的準確度,且訓練時間成本較小,隨著參數取值變大,準確率不再有顯著增長,但是時間成本大幅度提高。因此本文將確定為8,確定為100。

圖7 ppf和bpp參數選擇
4.4.1 實驗環境
數據預處理階段,采用pkt2flow工具將原始pcap分組轉化為數據流。模型搭建階段,采用keras作為神經網絡框架,計算機配置為8核16 GB內存,搭載64位的Ubuntu 16.04,顯卡為AMD R7 350。參數方面,mini-batch大小為128,訓練時間為30輪epoch。此外,為了提升訓練速度、防止過擬合,模型采用dropout方法,丟棄率為0.25。
4.4.2 實驗結果
正如本文第2節所述,僵尸網絡檢測方面已經有利用CNN、RNN等深度學習技術構建檢測模型的例子。本文為了更全面、更精確地刻畫網絡流量特征,沒有采用單一的方法,而是從數據流和數據分組等多種數據結構出發,結合CNN和LSTM技術提取流量中的時間和空間這2個維度的特征。因此,為了對BotCatcher的性能進行對比評估,本文利用數據集對以下3種模型分別進行了多輪訓練,并觀察檢測結果指標。
1) 模型A:只使用CNN提取空間特征。
2) 模型B:只使用LSTM提取時間特征。
3) 模型C:同時使用CNN和LSTM提取時空特征,即BotCathcer模型。
圖8和圖9顯示了3種模型在不同訓練時間下測試得到的F值和,共進行10次實驗,取10次結果的平均值作為最后結果。

圖8 檢測結果Fβ值

圖9 檢測結果FPR
從圖8可以看出,在只使用一種特征的情況下,模型B的性能相對較差,30輪訓練后的F值為0.977 8,模型A的性能相對較好,30輪訓練后的F值為0.988 4,這說明本文所用到的空間特征比時間特征可以更好地反映網絡流量特性。
BotCatcher使用時間和空間這2種特征,從圖9可以看出,在同樣訓練時間下,模型C的性能比模型A和模型B均有明顯提升,30輪訓練后F值達到0.997 6,僅為0.012。綜上,在建立僵尸網絡檢測模型時,利用CNN和LSTM提取出來的多維特征相比單一特征能夠取得更高的準確率和更低的誤報率,得到的模型準確率可以滿足實際使用需求。
BotCatcher由2種深度神經網絡構成,模型結
構相比傳統機器學習模型要復雜得多,主要體現在以下2個方面。
1) CNN和LSTM這2種深層模型并行工作,模型層數較多,共有近300萬個參數可以調節。
2)本文所提模型需要的2種輸入格式分別為三維和四維,多維輸入導致訓練集數據龐大。
以上2個原因導致BotCatcher雖然檢測準確性較好,但是實際運行速度較為緩慢,且對計算環境的配置要求較高。BotCatcher運行的時間主要體現在神經網絡特征的提取過程,尤其是輸入高維數據的RNN。由4.3節的結果可知,訓練1 000個樣本所需時間大約在10~20 min,相比樸素貝葉斯、SVM等人工選取特征的常見機器學習算法具有較高的時間成本。但是計算機硬件對于深度學習的效率影響非常大,高性能的設備可以顯著提高深度學習的處理速度。本文的實驗過程采用CPU進行模型準確性的評估,如果使用具有大容量顯存和高吞吐量的GPU將會大幅度降低時間成本。總之,考慮到效率因素,BotCatcher可能暫時不適合實時檢測場景。接下來的工作中需要對其進行優化,在保證性能的同時提高檢測效率。
此外,本文特征提取部分所用到的結構還可以選擇其他深度神經網絡進行進一步嘗試,例如,可以使用LSTM網絡的變體門控循環單元(GRU, gated recurrent unit)對時間特征進行學習,通過對比檢測效果進一步優化模型結構。
由于僵尸網絡形態和機理的發展,基于機器學習的僵尸網絡檢測系統開始面臨人工提取特征困難的問題。本文提出一種基于深度學習的檢測模型并實現了其原型系統BotCatcher。該模型使用CNN和RNN這2種深層神經網絡架構,對原始流量自動化地提取時間與空間這2個維度的特征。其中,提取空間特征時,先將每條數據流轉化為一張灰度圖像,然后利用CNN在圖像識別領域應用的方法從中學習特征;提取時間特征時,分別將每個數據分組中的字節序列以及每條數據流中的數據分組序列作為輸入建立雙層雙向LSTM神經網絡,并從中學習特征。
BotCatcher通過結合時空特征對網絡流量進行全面刻畫,將特征提取與模型訓練過程串聯起來。系統不依賴于任何有關協議和拓撲的先驗知識,也不需要人工參與特征選擇。實驗證明,該檢測系統性能良好,相比只使用單一神經網絡的檢測模型具有更高的準確率與更低的誤報率,能夠滿足實際使用需求。
[1] CUI X, FANG B, SHI J, et al. Botnet triple-channel model: towards resilient and efficient bidirectional communication botnets[C]// International Conference on Security and Privacy in Communication Systems. 2013: 53-68.
[2] KOLIAS C, KAMBOURAKIS G, STAVROU A, et al. DDoS in the IoT: mirai and other botnets[J]. Computer, 2017, 50(7): 80-84.
[3] EHRENFELD J M. Wannacry, cybersecurity and health information technology: a time to act[J]. Journal of Medical Systems, 2017, 41(7): 104.
[4] LIVADAS C, WALSH R, LAPSLEY D, et al. Usilng machine learning technliques to identify botnet traffic[C]//31st IEEE Conference on Local Computer Networks. 2006: 967-974.
[5] KONDO S, SATO N. Botnet traffic detection techniques by C&C session classification using SVM[C]//International Workshop on Security. 2007: 91-104.
[6] BILGE L, BALZAROTTI D, ROBERTSON W, et al. Disclosure: detecting botnet command and control servers through large-scale netflow analysis[C]//The 28th Annual Computer Security Applications Conference. 2012: 129-138.
[7] FRAN?OIS J, WANG S, ENGEL T. BotTrack: tracking botnets using NetFlow and PageRank[C]//International Conference on Research in Networking. 2011: 1-14.
[8] GU G, PERDISCI R, ZHANG J, et al. BotMiner: clustering analysis of network traffic for protocol-and structure-independent botnet detection[C]//USENIX Security Symposium. 2008: 139-154.
[9] CUI X, FANG B X, YIN L H, et al. Andbot: towards advanced mobile botnets[C]//The 4th Usenix Workshop on Large-scale Exploits and Emergent Threats. 2011: 11.
[10] ZHANG J, SAHA S, GU G, et al. Systematic mining of associated server herds for malware campaign discovery[C]//2015 IEEE 35th International Conference on Distributed Computing Systems (ICDCS). 2015: 630-641.
[11] 崔鵬飛, 裘玥, 孫瑞. 面向網絡內容安全的圖像識別技術研究[J]. 信息網絡安全, 2015(9): 154-157. CUI P F, QIU Y, SUN R. Research on image recognition technology for the network content security[J]. Netinfo Security, 2015(9): 154-157.
[12] GUL K S Q, 尹繼澤, 潘麗敏, 等. 基于深度神經網絡的命名實體識別方法研究[J]. 信息網絡安全, 2017(10): 29-35. GUL K S Q, YIN J Z, PAN L M, et.al. Research on the algorithm of named entity recognition based on deep neural network[J]. Netinfo Security, 2017(10): 29-35.
[13] ILGUN K. USTAT: a real-time intrusion detection system for UNIX[C]// 1993 IEEE Computer Society Symposium on Research in Security and Privacy. 1993: 16-28.
[14] VIGNA G, KEMMERER R A. NetSTAT: a network-based intrusion detection approach[C]//14th Annual Computer Security Applications Conference. 1998: 25-34.
[15] GU G, PORRAS P A, YEGNESWARAN V, et al. BotHunter: detecting malware infection through IDS-driven dialog correlation[C]//USENIX Security Symposium. 2007: 1-16.
[16] WURZINGER P, BILGE L, HOLZ T, et al. Automatically generating models for botnet detection[C]//European Symposium on Research in Computer Security. 2009: 232-249.
[17] ARSHAD S, ABBASPOUR M, KHARRAZI M, et al. An anomaly-based botnet detection approach for identifying stealthy botnets[C]//2011 IEEE International Conference on Computer Applications and Industrial Electronics (ICCAIE). 2011: 564-569.
[18] SAAD S, TRAORE I, GHORBANI A, et al. Detecting P2P botnets through network behavior analysis and machine learning[C]//2011 Ninth Annual International Conference on Privacy, Security and Trust (PST). 2011: 174-180.
[19] AL-JARRAH O Y, ALHUSSEIN O, YOO P D, et al. Data randomization and cluster-based partitioning for botnet intrusion detection[J]. IEEE Transactions on Cybernetics, 2016, 46(8): 1796-1806.
[20] VENKATESH G K, NADARAJAN R A. HTTP botnet detection using adaptive learning rate multilayer feed-forward neural network[C]//WISTP. 2012: 38-48.
[21] TORRES P, CATANIA C, GARCIA S, et al. An analysis of recurrent neural networks for botnet detection behavior[C]//2016 IEEE Biennial Congress of Argentina (ARGENCON). 2016: 1-6.
[22] WANG W, ZHU M, ZENG X, et al. Malware traffic classification using convolutional neural network for representation learning[C]//2017 International Conference on Information Networking (ICOIN). 2017: 712-717.
[23] 王勇, 周惠怡, 俸皓, 等. 基于深度卷積神經網絡的網絡流量分類方法[J]. 通信學報, 2018, 39(1): 14-23.WANG Y, ZHOU H Y, FENG H, et al. Network traffic classification method basing on CNN[J]. Journal on Communications, 2018, 39(1): 14-23.
[24] HADDADI F, PHAN D T, ZINCIR-HEYWOOD A N. How to choose from different botnet detection systems?[C]//Network Operations and Management Symposium (NOMS). 2016: 1079-1084.
[25] ZHAO D, TRAORE I, SAYED B, et al. Botnet detection based on traffic behavior analysis and flow intervals[J]. Computers & Security, 2013, 39: 2-16.
[26] WATSON D, RIDEN J. The honeynet project: data collection tools, infrastructure, archives and analysis[C]//WOMBAT Workshop on Information Security Threats Data Collection and Sharing. 2008: 24-30.
[27] SZABó G, ORINCSAY D, MALOMSOKY S, et al. On the validation of traffic classification algorithms[C]//International Conference on Passive and Active Network Measurement. 2008: 72-81.
BotCatcher: botnet detection system based on deep learning
WU Di1,2, FANG Binxing3,4,5, CUI Xiang1,3, LIU Qixu1,2
1. Institute of Information Engineering, Chinese Academy of Sciences, Beijing 100093, China 2. School of Cyber Security, University of Chinese Academy of Sciences, Beijing 100049, China 3. Cyberspace Institute of Advanced Technology, Guangzhou University, Guangzhou 510006, China 4. Institute of Electronic and Information Engineering of UESTC in Guangdong, Dongguan 523808, China 5. School of Cyberspace Security, Beijing University of Posts and Telecommunications, Beijing 100876, China
Machine learning technology has wide application in botnet detection. However, with the changes of the forms and command and control mechanisms of botnets, selecting features manually becomes increasingly difficult. To solve this problem, a botnet detection system called BotCatcher based on deep learning was proposed. It automatically extracted features from time and space dimension, and established classifier through multiple neural network constructions. BotCatcher does not depend on any prior knowledge which about the protocol and the topology, and works without manually selecting features. The experimental results show that the proposed model has good performance in botnet detection and has ability to accurately identify botnet traffic .
botnet, deep learning, detection, feature
TP309.5
A
10.11959/j.issn.1000?436x.2018135
吳迪(1991?),男,遼寧撫順人,中國科學院大學博士生,主要研究方向為網絡攻防技術。

方濱興(1960?),男,江西萬年人,中國工程院院士,北京郵電大學教授、博士生導師,主要研究方向為計算機體系結構、計算機網絡與信息安全。
崔翔(1978?),男,黑龍江訥河人,博士,廣州大學研究員,主要研究方向為網絡攻防技術。

劉奇旭(1984?),男,江蘇徐州人,博士,中國科學院副研究員、中國科學院大學副教授,主要研究方向為網絡攻防技術、網絡安全評測。
2018?03?13;
2018?07?10
崔翔,cuixiang@iie.ac.cn
國家重點研發計劃基金資助項目(No.2016YFB0801604);東莞市引進創新科研團隊計劃基金資助項目(No.201636000100038);中國科學院網絡測評技術重點實驗室和網絡安全防護技術北京市重點實驗室基金資助項目
The National Key Research and Development Program of China (No.2016YFB0801604), Dongguan Innovative Research Team Program (No.201636000100038), The Key Laboratory of Network Assessment Technology at Chinese Academy of Sciences and Beijing Key Laboratory of Network Security and Protection Technology