徐磊 張志 章方圓 夏天
(溫州大學(xué)計(jì)算機(jī)與人工智能學(xué)院 浙江省溫州市 325600)
截至2020年12月,我國網(wǎng)民規(guī)模達(dá)9.89 億,較2020年3月增長8540 萬,全國網(wǎng)絡(luò)普及率將達(dá)到70.4%[1]。隱藏在如此驚人的數(shù)據(jù)背后的,是不計(jì)其數(shù)的網(wǎng)絡(luò)應(yīng)用以及它們產(chǎn)生的網(wǎng)絡(luò)流量,而大量的網(wǎng)絡(luò)流量自然會(huì)帶來大量的安全問題。對(duì)于網(wǎng)絡(luò)管理者而言,如何發(fā)現(xiàn)、解決乃至預(yù)防這些安全問題成為了他們在新的互聯(lián)網(wǎng)時(shí)代下所要面臨的挑戰(zhàn)。隨著網(wǎng)絡(luò)攻擊技術(shù)的日益復(fù)雜和隱蔽,一些傳統(tǒng)的識(shí)別算法逐漸失去了以往的識(shí)別效率。本文將尋找合適的方法去識(shí)別攻擊流量并過濾出其中的白流量,這對(duì)于防御網(wǎng)絡(luò)攻擊具有重要實(shí)踐價(jià)值。
本文所研究的信息流量實(shí)質(zhì)上是指網(wǎng)絡(luò)流量,網(wǎng)絡(luò)流量即在互聯(lián)網(wǎng)上傳播的信息量。網(wǎng)絡(luò)流量實(shí)質(zhì)上是網(wǎng)絡(luò)中的對(duì)等實(shí)體在通信時(shí)產(chǎn)生的數(shù)據(jù)量,這種通信需要收到特定的網(wǎng)絡(luò)協(xié)議的限制,如遵循TCP/IP 體系結(jié)構(gòu)。雖然網(wǎng)絡(luò)流量劃分的理論十分深入,應(yīng)用的方面也不少,但大多是基于以下這樣三個(gè)方面:
(1)包級(jí)流量分類:重點(diǎn)研究包的性質(zhì)以及到達(dá)情況,如包的數(shù)量分配、數(shù)據(jù)包到達(dá)的時(shí)間分配等。
(2)流級(jí)流量分類:重點(diǎn)研究流量的到達(dá)流程以及特征,它們可能為TCP 連接或是UDP 流。通常是指由源IP 地址、源端口、目的IP 地址、目的端口,以及協(xié)議所構(gòu)成的五元組。
(3)流級(jí)業(yè)務(wù)分類:重點(diǎn)研究主機(jī)對(duì)與主機(jī)對(duì)之間的應(yīng)用服務(wù),一般是由源IP 地址、目的IP 地址和協(xié)議所構(gòu)成的三元組,適用于研究較粗粒度的主干網(wǎng)長期服務(wù)統(tǒng)計(jì)特征。
機(jī)器學(xué)習(xí)能夠從海量的數(shù)據(jù)中心通過不斷學(xué)習(xí)而提高機(jī)器的識(shí)別能力,是一種通過大量歷史數(shù)據(jù)得出相關(guān)的經(jīng)驗(yàn)?zāi)P?,并?duì)當(dāng)前問題進(jìn)行應(yīng)用于實(shí)際進(jìn)行預(yù)測判斷的技術(shù)。主要包括以下三類:
(1)監(jiān)督學(xué)習(xí):需要對(duì)數(shù)據(jù)進(jìn)行標(biāo)記,利用一組已知類別的數(shù)據(jù)樣本調(diào)整預(yù)測參數(shù),算法通過訓(xùn)練數(shù)據(jù)學(xué)習(xí),并將學(xué)習(xí)結(jié)果應(yīng)用到當(dāng)前數(shù)據(jù)中,此類學(xué)習(xí)需要以人工為前提。該類算法主要用于解決“分類”或“回歸”問題,典型代表有決策樹、隨機(jī)森林[2]、K-近鄰算法[3]、支持向量機(jī)[4]。
(2)無監(jiān)督學(xué)習(xí):與監(jiān)督學(xué)習(xí)不同,無監(jiān)督學(xué)習(xí)的輸入數(shù)據(jù)往往沒有標(biāo)簽,而是通過自身學(xué)習(xí)進(jìn)行分類。主要用于“聚類”問題,典型代表是主成分分析[5]和K-means 算法[6]。
(3)強(qiáng)化學(xué)習(xí)[7]:強(qiáng)化學(xué)習(xí)通俗地講是不斷進(jìn)行“嘗試”,通過數(shù)據(jù)與環(huán)境的交互結(jié)果,即獎(jiǎng)/懲信號(hào)作為輸入,以此結(jié)果動(dòng)態(tài)地改變來適應(yīng)環(huán)境。
深度學(xué)習(xí)是機(jī)器學(xué)習(xí)的一個(gè)分支,其最終目標(biāo)是讓機(jī)器能像人類一樣進(jìn)行分析和理解。深度學(xué)習(xí)的理念來自人工神經(jīng)網(wǎng)絡(luò),通過結(jié)合底層特性創(chuàng)建更為抽象的高層特征表示屬性類型或特性,并出現(xiàn)了大量數(shù)據(jù)的分布式特征表示?;谏窠?jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)模型中,主要包括輸入層、隱藏層、輸出層三層,其中隱藏層中又可能包括卷積、池化、全連接等層,可根據(jù)不同的網(wǎng)絡(luò)需求做靈活改變,典型的有循環(huán)神經(jīng)網(wǎng)絡(luò)、卷積神經(jīng)網(wǎng)絡(luò)、長短期記憶遞歸神經(jīng)網(wǎng)絡(luò)[8]。
孿生神經(jīng)網(wǎng)絡(luò)由兩個(gè)權(quán)重共享的神經(jīng)網(wǎng)絡(luò)連體而成,本文使用由兩個(gè)VGG16 神經(jīng)網(wǎng)絡(luò)[9]組合而成的網(wǎng)絡(luò)。VGG16 是由牛津大學(xué)計(jì)算機(jī)視覺組和Google DeepMind 公司于2014年研發(fā)出的深度卷積神經(jīng)網(wǎng)絡(luò),在圖像識(shí)別方面有很好的效果。
基本的VGG16 的卷積層和池化層可以劃分為5 個(gè)block,在此之后連接三個(gè)全連接層再輸出。流程為:
(1)一張?jiān)紙D片被resize 到(224,224,3);
(2)進(jìn)行五次卷積和最大池化操作后,輸出的特征層為128 通道,輸出net 為(7,7,128);
(3)利用卷積的方式模擬全連接層,輸出net 為(1,1,4096),進(jìn)行兩次;
(4)利用卷積的方式模擬全連接層,輸出net 為(1,1,1000);
最后輸出每個(gè)類的預(yù)測。
而本文所使用的VGG16 是在這個(gè)基礎(chǔ)上做了一些調(diào)整,第五個(gè)池化層的池化核為1*1。本文輸入的圖片被resize 到105*105*3,各層的結(jié)構(gòu)及輸出如表1所示,特征處理流程如圖1所示。
表1:本文主干網(wǎng)絡(luò)結(jié)構(gòu)
圖1:特征處理
數(shù)據(jù)集包括惡意流量和白流量兩部分。本文訓(xùn)練模型所使用的惡意流量數(shù)據(jù)來自Canadian Institute for Cybersecurity于2014年創(chuàng)建的ISCX僵尸網(wǎng)絡(luò)數(shù)據(jù)集[10],其中包含七種僵尸網(wǎng)絡(luò),大小為4.9GB。白流量是通過Wireshark 在個(gè)人PC 的以太網(wǎng)卡上捕獲,包括釘釘、愛奇藝、淘寶等常用應(yīng)用流量共5.1GB。
本文的原始數(shù)據(jù)集為Pcap 格式。Pcap 文件包括文件頭,包頭和包數(shù)據(jù)等部分。所使用的數(shù)據(jù)預(yù)處理工具為一個(gè)開源工具集USTC-TK2016,預(yù)處理的目的是將原始流量數(shù)據(jù)(Pcap 格式)轉(zhuǎn)換為本文所需的輸入數(shù)據(jù)(PNG 格式),它包括流量拆分、流量清洗、圖像生成三個(gè)部分。原工具集還有第四步IDX 轉(zhuǎn)化,本文所需數(shù)據(jù)格式僅為灰度圖,因此不進(jìn)行最后一步操作。
(1)流量拆分:是指對(duì)連續(xù)的原始流量進(jìn)行拆分,使之成為離散的流量單元。
(2)流量清洗:是指對(duì)流量進(jìn)行匿名化操作。主要在數(shù)據(jù)鏈路層和IP 層進(jìn)行操作,具體操作為隨機(jī)化MAC 地址和IP 地址。不過此步驟有可能不執(zhí)行,例如當(dāng)流量來自同一網(wǎng)絡(luò)時(shí),MAC 地址和IP 地址就不再是能夠區(qū)分流量的特征了,此時(shí)便可省略該步驟。
(3)圖像生成:要將文件大小統(tǒng)一為784 字節(jié),過長則截取,過短則填充,再轉(zhuǎn)化為28*28 的灰度圖。
本次實(shí)驗(yàn)使用設(shè)備操作系統(tǒng)為Windows10,處理器為Intel Core i5-7300,顯卡為GTX1050(4GB),內(nèi)存為16G,開發(fā)環(huán)境為Pycharm,Python 版本為3.8,學(xué)習(xí)框架為Pytorch,CUDA 為10.0。
在使用孿生神經(jīng)網(wǎng)絡(luò)完成模型搭建后,將一定數(shù)量的某種性質(zhì)的流量圖片作為基準(zhǔn)數(shù)據(jù)集,分別取白流量以及惡意流量轉(zhuǎn)化后的灰度圖與基準(zhǔn)數(shù)據(jù)集中的數(shù)據(jù)進(jìn)行輪詢對(duì)比,兩次對(duì)比結(jié)果如圖2 和圖3所示。
圖2:對(duì)比結(jié)果1
圖3:對(duì)比結(jié)果2
當(dāng)將兩張圖片比較后的similarity 值接近0 時(shí),可以判斷所要檢測的數(shù)據(jù)為白流量;當(dāng)similarity 值接近1時(shí),可以判斷所要監(jiān)測的數(shù)據(jù)為惡意流量。
除孿生神經(jīng)網(wǎng)絡(luò)外,本文還用支持向量機(jī)算法(SVM)、隨機(jī)森林算法(RF)對(duì)流量進(jìn)行了訓(xùn)練與識(shí)別。所使用的SVM 的kernel 即核函數(shù)為RBF,核函數(shù)參數(shù)gamma 為0.001。所使用的RF 的分類器個(gè)數(shù)為10;bootstrp 值為True,即對(duì)樣本集進(jìn)行有放回抽樣來構(gòu)建樹;oob_score 值為False,即不采用袋外樣本來評(píng)估模型的好壞。
本文對(duì)所有算法進(jìn)行5 輪,并取平均準(zhǔn)確率進(jìn)行了對(duì)比。結(jié)果顯示,SVM、RF、孿生神經(jīng)網(wǎng)絡(luò)的平均準(zhǔn)確率分別為0.741、0.729、0.944。孿生神經(jīng)網(wǎng)絡(luò)的準(zhǔn)確率明顯高于前兩者。為排除非均衡樣本的影響,本文又使用了8:2 的正負(fù)樣本進(jìn)行了5 輪訓(xùn)練,所得平均準(zhǔn)確率為0.941,與均衡樣本并無明顯差異。這說明孿生神經(jīng)網(wǎng)絡(luò)可以很好地規(guī)避了數(shù)據(jù)集非平衡性對(duì)分類結(jié)果的影響。綜上所述,本文使用孿生神經(jīng)網(wǎng)絡(luò)作為流量檢測系統(tǒng)的核心算法。
本文開發(fā)的攻擊流量識(shí)別系統(tǒng)擬解決的主要問題為識(shí)別流量中的攻擊流量。系統(tǒng)主要包括流量包上傳、數(shù)據(jù)預(yù)處理、流量包檢測、結(jié)果展示這四個(gè)模塊,如圖4所示。
圖4:系統(tǒng)組成
(1)流量包上傳:能夠獲取所需檢測的流量包的文件路徑。
(2)數(shù)據(jù)預(yù)處理:系統(tǒng)獲取的原始數(shù)據(jù)格式是Pcap 格式,需要進(jìn)行數(shù)據(jù)預(yù)處理工作。結(jié)合第三章有關(guān)數(shù)據(jù)處理的敘述,此處需要進(jìn)行流量拆分、流量清洗、圖像生成等操作。
(3)數(shù)據(jù)包檢測:基于功能2 轉(zhuǎn)化后的PNG 格式文件,以及第三章所述的網(wǎng)絡(luò)模型,運(yùn)用孿生神經(jīng)網(wǎng)絡(luò)對(duì)流量包進(jìn)行檢測。
(4)結(jié)果展示:在前端界面展示功能(3)中所檢測出的結(jié)果。
當(dāng)該系統(tǒng)運(yùn)行時(shí),可在前端界面將待檢測流量包上傳到指定文件夾,對(duì)上傳的Pcap 文件進(jìn)行流量分割、流量清潔、圖像生成等操作后轉(zhuǎn)化成可以放入模型中檢測的PNG 格式,再通過加載模型訓(xùn)練得到的預(yù)訓(xùn)練模型對(duì)轉(zhuǎn)化后的文件進(jìn)行輪詢檢測,最終在前端界面展示結(jié)果。
一些對(duì)于隱私性、穩(wěn)定性要求比較高的網(wǎng)絡(luò),使用實(shí)時(shí)的入侵檢測系統(tǒng)可能會(huì)對(duì)性能有影響,此時(shí)便可使用該系統(tǒng)進(jìn)行旁路檢測,即在網(wǎng)絡(luò)受到攻擊后,通過分析這些保留下來的攻擊流量包對(duì)流量進(jìn)行分析,以便今后對(duì)網(wǎng)絡(luò)進(jìn)行升級(jí)保護(hù)。一些簡單小型網(wǎng)絡(luò),1-2 秒內(nèi)的流量條數(shù)在1-400 條不等,該系統(tǒng)可以對(duì)流量包進(jìn)行在線準(zhǔn)確檢測。
本文主要分析了當(dāng)前網(wǎng)絡(luò)安全領(lǐng)域所面臨的一些亟待解決的問題,例如網(wǎng)絡(luò)攻擊形勢日漸嚴(yán)峻等等;并闡述了將機(jī)器學(xué)習(xí)算法應(yīng)用于流量識(shí)別領(lǐng)域的可行性,對(duì)比并選出了一種適合于攻擊流量識(shí)別的算法,并利用這種算法設(shè)計(jì)出了攻擊流量檢測系統(tǒng)。