潘逸涵,張愛(ài)新
(上海交通大學(xué) 電子信息與電氣工程學(xué)院,上海 200240)
隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,網(wǎng)絡(luò)的組成已經(jīng)越來(lái)越復(fù)雜,如何從大量的網(wǎng)絡(luò)流量中得到更有價(jià)值的信息成為了眾多學(xué)者的研究目標(biāo)。而網(wǎng)絡(luò)流量的分類(lèi),尤其是針對(duì)暗網(wǎng)流量的識(shí)別對(duì)網(wǎng)絡(luò)監(jiān)管與維護(hù)網(wǎng)絡(luò)安全有著重要的意義。
洋蔥路由(The Onion Router,Tor)是由美國(guó)海軍計(jì)算機(jī)系統(tǒng)安全研究實(shí)驗(yàn)室提出的一套路由機(jī)制。它的主要思想是在網(wǎng)絡(luò)中隨機(jī)挑選若干個(gè)洋蔥路由器作為中間節(jié)點(diǎn),并對(duì)洋蔥包所經(jīng)過(guò)的節(jié)點(diǎn)進(jìn)行層層加密封裝,中間的洋蔥路由器對(duì)收到的洋蔥包進(jìn)行解密運(yùn)算,得出下一跳的路由器地址,然后在包尾填充任意字符,使得包的大小不變,并把新的洋蔥包根據(jù)所指示的地址傳遞給下一個(gè)洋蔥路由器。由于中間的洋蔥路由器只知道上一跳和下一跳的信息,不知道整條通信鏈路,因此在公網(wǎng)上實(shí)現(xiàn)了隱藏網(wǎng)絡(luò)結(jié)構(gòu)和通信雙方地址等關(guān)鍵信息,同時(shí)還可以有效地防止攻擊者在網(wǎng)上進(jìn)行流量分析和竊聽(tīng)。鑒于Tor的匿名性,很多不法分子利用Tor進(jìn)行黑客攻擊或者非法交易,給互聯(lián)網(wǎng)安全帶來(lái)了巨大的威脅。因此Tor流量的識(shí)別是網(wǎng)絡(luò)惡意行為檢測(cè)中關(guān)鍵的技術(shù)。
目前為止,國(guó)內(nèi)外學(xué)者從不同角度對(duì)網(wǎng)絡(luò)流量分類(lèi)方法進(jìn)行了研究,大致可以分為四大類(lèi):基于端口號(hào)匹配的分類(lèi)方法、基于特征字段分析的分類(lèi)方法、基于傳輸層行為模式的分類(lèi)方法和基于流統(tǒng)計(jì)特征的分類(lèi)方法。由于Tor網(wǎng)絡(luò)的特殊運(yùn)作機(jī)制,前兩種方法無(wú)法有效應(yīng)用于Tor流量的識(shí)別;后兩種方法是傳統(tǒng)的機(jī)器學(xué)習(xí)方法,目前已有學(xué)者對(duì)此進(jìn)行了相應(yīng)的研究。例如,Lashkari等人提出了中從不同的時(shí)間間隔角度對(duì)Tor流量進(jìn)行特征提取[1],并通過(guò)采用多種不同的機(jī)器學(xué)習(xí)方法來(lái)比較分類(lèi)的正確率。Cuzzocrea等人在文獻(xiàn)[2]中提取了tcp數(shù)據(jù)流23個(gè)特征,例如數(shù)據(jù)包的平均到達(dá)時(shí)間、每秒的字節(jié)數(shù)、流的持續(xù)時(shí)間等,并通過(guò)k折交叉驗(yàn)證的方法來(lái)進(jìn)行訓(xùn)練和驗(yàn)證。訓(xùn)練同樣是采用各種典型的機(jī)器學(xué)習(xí)算法,并對(duì)各種算法進(jìn)行了分析和比較。何高峰等人提出了基于TLS指紋和基于報(bào)文長(zhǎng)度分布的Tor流量分類(lèi)方法[3],其主要思想是由于Tor連接采用了TLS加密傳輸,可以先對(duì)TLS流量進(jìn)行識(shí)別,隨后利用Meek在TLS握手建立過(guò)程中的指紋特征,即密碼套件、證書(shū)時(shí)間以及頒發(fā)機(jī)構(gòu)名稱(chēng)和擁有者名稱(chēng)等特征對(duì)識(shí)別的TLS流量進(jìn)行二次識(shí)別,最后利用Meek的Polling機(jī)制的動(dòng)態(tài)時(shí)間特性進(jìn)行最后的識(shí)別。此外,Tor流量在長(zhǎng)度分布上會(huì)表現(xiàn)出幾種典型長(zhǎng)度大量出現(xiàn)的特征,因此也可以將報(bào)文長(zhǎng)度分布作為特征,并利用支持向量機(jī)來(lái)進(jìn)行分類(lèi)。李響等人根據(jù)基于Meek的Tor流量特征,提出了Meek數(shù)據(jù)流的分片模型,再結(jié)合支持向量機(jī)技術(shù),提出了基于SVM的Tor匿名通信識(shí)別方法[4]。
但是,上述研究方案都是采用傳統(tǒng)機(jī)器學(xué)習(xí)方法來(lái)進(jìn)行分類(lèi),而傳統(tǒng)機(jī)器學(xué)習(xí)方法在具體應(yīng)用時(shí)需要根據(jù)不同的網(wǎng)絡(luò)選擇不同的特征,同時(shí)提取合適的特征又是繁瑣的過(guò)程,這在很大程度上限制了它的應(yīng)用性能。
深度學(xué)習(xí)是機(jī)器學(xué)習(xí)研究中的一個(gè)新的領(lǐng)域,其概念最早由Hinton等人提出,它的實(shí)質(zhì)是通過(guò)構(gòu)建具有很多隱層的機(jī)器學(xué)習(xí)模型和海量的訓(xùn)練數(shù)據(jù),來(lái)自動(dòng)學(xué)習(xí)更有用的特征,從而最終提升分類(lèi)或預(yù)測(cè)的準(zhǔn)確性。1994年Lecun等人提出了第一個(gè)卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)LeNet-5[5],并在手寫(xiě)數(shù)字識(shí)別上取得成功。之后隨著深度學(xué)習(xí)理論的完善,CNN開(kāi)始快速發(fā)展。2012年,Krizhevsky等人提出的AlexNet[6]網(wǎng)絡(luò)模型結(jié)構(gòu)贏得了當(dāng)年的ImageNet競(jìng)賽的冠軍,之后各類(lèi)CNN多次成為ImageNet競(jìng)賽的優(yōu)勝算法,包括2013年的ZFNet、2014年的 VGGNet、GoogLeNet和 2015年的ResNet,使得CNN成為圖像分類(lèi)上的核心算法。
循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)是根據(jù)“人的知識(shí)是基于過(guò)往經(jīng)驗(yàn)和記憶”提出的,它的當(dāng)前輸出與前面的輸出也有關(guān)。1989年,Williams和Zipser提出了循環(huán)神經(jīng)網(wǎng)絡(luò)的實(shí)時(shí)循環(huán)學(xué)習(xí)[7]。隨后Werbos在1990年提出了循環(huán)神經(jīng)網(wǎng)絡(luò)的隨時(shí)間反向傳播[8]。1991年,Hochreiter發(fā)現(xiàn)了循環(huán)神經(jīng)網(wǎng)絡(luò)的長(zhǎng)期依賴(lài)問(wèn)題,為解決這一問(wèn)題,大量?jī)?yōu)化理論得到引入并衍生出許多改進(jìn)算法,如長(zhǎng)短期記憶網(wǎng)絡(luò)[9](Long Short-Term Memory,LSTM)。近年來(lái),隨著數(shù)值計(jì)算能力的提升,擁有復(fù)雜結(jié)構(gòu)的RNN開(kāi)始在自然語(yǔ)言處理問(wèn)題中展現(xiàn)出優(yōu)質(zhì)。例如,Cho等人提出的RNN編碼模型[10]可以用來(lái)進(jìn)行機(jī)器翻譯和比較不同語(yǔ)言的短語(yǔ)和詞組間的語(yǔ)義近似程度,Zhang等人提出的高速路長(zhǎng)短期記憶RNN[11]能夠?qū)h(yuǎn)程語(yǔ)音進(jìn)行識(shí)別。
經(jīng)文獻(xiàn)檢索發(fā)現(xiàn),深度學(xué)習(xí)在網(wǎng)絡(luò)流量識(shí)別領(lǐng)域也已取得較為顯著的效果。如Wang和Zhou等人分別在文獻(xiàn)[12]和文獻(xiàn)[13]中指出可以將網(wǎng)絡(luò)流量轉(zhuǎn)化為灰度圖像的形式,再利用CNN進(jìn)行訓(xùn)練學(xué)習(xí)與分類(lèi)識(shí)別。Lin等人提出可以將流量特征向量轉(zhuǎn)化為特征矩陣,進(jìn)而形成CNN的輸入圖像[14]。Yu等人將HTTP流量構(gòu)建為自然語(yǔ)言序列,提出了一種基于雙向LSTM檢測(cè)異常HTTP流量的方法[15]。
綜上所述,深度學(xué)習(xí)在流量識(shí)別領(lǐng)域已取得的成果為本文的研究打下了基礎(chǔ)??紤]到深度學(xué)習(xí)在圖像分類(lèi)問(wèn)題中有著更優(yōu)秀的表現(xiàn),而且CNN中卷積層的卷積操作能夠?qū)斎雸D像的局部特征進(jìn)行提取,解決了人工提取特征的問(wèn)題,本文提出了基于CNN的Tor流量識(shí)別方法。為了證明該方法的可行性,本文使用tor流量和常規(guī)流量進(jìn)行實(shí)驗(yàn),最終平均正確率為97.55%,滿(mǎn)足了實(shí)際應(yīng)用的需求。
本節(jié)將詳細(xì)介紹本文提出的基于CNN的Tor流量識(shí)別方法,包括采用的CNN訓(xùn)練模型、網(wǎng)絡(luò)流量數(shù)據(jù)的處理方式以及實(shí)驗(yàn)設(shè)置。
卷積神經(jīng)網(wǎng)絡(luò)是一類(lèi)包含卷積計(jì)算且具有深度結(jié)構(gòu)的前饋神經(jīng)網(wǎng)絡(luò)。它的結(jié)構(gòu)通常由輸入層、卷積層、池化層、全連接層和輸出層組成。
2.1.1 輸入層
輸入層用于數(shù)據(jù)的輸入,它將圖像數(shù)據(jù)轉(zhuǎn)化成像素矩陣,同時(shí)可以做一些預(yù)處理操作。常見(jiàn)的兩種圖像預(yù)處理方式是去均值和歸一化。
2.1.2 卷積層
卷積層的主要工作是卷積核與圖像做卷積運(yùn)算,得到新的特征面。計(jì)算方法就是將卷積核按一定步長(zhǎng)掃描圖像,每掃描一次將其內(nèi)所有對(duì)應(yīng)元素做乘加運(yùn)算,完整掃描后得到新的特征面。通常,卷積層可能有多個(gè)卷積核,每個(gè)卷積核需要分別做卷積運(yùn)算生成新的特征面。由于卷積運(yùn)算仍是一種線(xiàn)性運(yùn)算,需要使用激勵(lì)函數(shù)對(duì)卷積結(jié)果進(jìn)行一個(gè)非線(xiàn)性映射,常用的激活函數(shù)有sigmoid、tanh和ReLU函數(shù)。
2.1.3 池化層
池化層的位置一般位于連續(xù)的卷積層中間,對(duì)輸入的特征面進(jìn)行壓縮,一方面使特征面變小,簡(jiǎn)化網(wǎng)絡(luò)的計(jì)算,另一方面進(jìn)行特征壓縮,提取主要特征。池化層一般有兩種計(jì)算方式,一種是最大池化,取窗口內(nèi)的最大值;另一種是平均池化,取窗口內(nèi)的平均值。
2.1.4 全連接層和輸出層
全連接層通常在卷積神經(jīng)網(wǎng)絡(luò)的尾部,它連接所有的特征,將輸出值送給分類(lèi)器;輸出層負(fù)責(zé)最后目標(biāo)結(jié)果的輸出。
LeNet-5是CNN中最有代表性的網(wǎng)絡(luò)之一,最早被應(yīng)用于手寫(xiě)數(shù)字的識(shí)別,并取得了相當(dāng)好的效果。本文所采用的訓(xùn)練模型主要基于傳統(tǒng)的LeNet-5結(jié)構(gòu),并在LeNet-5的基礎(chǔ)上進(jìn)行了下列改進(jìn):
(1)調(diào)整了LeNet-5的輸入大小,使其適用于Tor流量的識(shí)別。
(2)由于本文的研究目的是區(qū)分Tor流量和常規(guī)流量。因此將LeNet-5模型的輸出由10個(gè)神經(jīng)元改為2個(gè)神經(jīng)元,代表是否為T(mén)or流量。
(3)根據(jù)網(wǎng)絡(luò)流量數(shù)據(jù)的特點(diǎn),設(shè)計(jì)了幾種不同結(jié)構(gòu)的卷積神經(jīng)網(wǎng)絡(luò),如表1所示。
表1 不同結(jié)構(gòu)的卷積神經(jīng)網(wǎng)絡(luò)
為了使用CNN對(duì)流量數(shù)據(jù)進(jìn)行訓(xùn)練和分類(lèi),需要對(duì)原始流量數(shù)據(jù)進(jìn)行預(yù)處理,具體預(yù)處理的方法如下。
(1)對(duì)數(shù)據(jù)包進(jìn)行解析,提取出數(shù)據(jù)包的五元組:源ip地址、源端口、目的ip地址、目的端口、傳輸層協(xié)議。具有相同五元組的數(shù)據(jù)包通過(guò)時(shí)間排序形成了一個(gè)流,而一個(gè)會(huì)話(huà)包含了雙向的流,即源ip地址/端口和目的ip地址/端口是可互換的。因此可以根據(jù)五元組將原始流量數(shù)據(jù)劃分為會(huì)話(huà)。
(2)為了避免ip地址和mac地址對(duì)分類(lèi)產(chǎn)生影響,在上一步得到的每個(gè)會(huì)話(huà)中,隨機(jī)生成兩個(gè)新的ip地址和兩個(gè)mac地址,將雙方的ip地址和mac地址分別用新生成的隨機(jī)地址來(lái)代替。
(3)由于不同會(huì)話(huà)之間的長(zhǎng)度差異較大,為了便于訓(xùn)練和分類(lèi),需要對(duì)會(huì)話(huà)長(zhǎng)度進(jìn)行統(tǒng)一。本文截取了每個(gè)會(huì)話(huà)的前784 Bytes,如果不足784 Bytes,則在末尾補(bǔ)0至長(zhǎng)度為784 Bytes。這樣選取的主要依據(jù)是會(huì)話(huà)的前部分通常為連接數(shù)據(jù)和部分內(nèi)容數(shù)據(jù),一方面這些數(shù)據(jù)最能體現(xiàn)會(huì)話(huà)的內(nèi)在特征,另一方面Tor建立連接的過(guò)程與普通的TCP連接具有很大的差異,因此最能夠區(qū)分Tor流量和常規(guī)流量。
(4)根據(jù)會(huì)話(huà)中每一個(gè)字節(jié)對(duì)應(yīng)的十進(jìn)制值,將其轉(zhuǎn)化為灰度為0~255的像素點(diǎn),進(jìn)而每個(gè)會(huì)話(huà)就轉(zhuǎn)化為一幅28×28的灰度圖像,如圖1所示。
圖1 會(huì)話(huà)流量對(duì)應(yīng)的灰度圖像
為了驗(yàn)證本文算法的可行性,本文在表2所示的實(shí)驗(yàn)環(huán)境下進(jìn)行實(shí)驗(yàn)。
表2 實(shí)驗(yàn)環(huán)境配置
實(shí)驗(yàn)樣本使用了網(wǎng)上公開(kāi)的ISCX數(shù)據(jù)集,其中包含了Tor流量和常規(guī)流量,它們由wireshark和tcpdump捕捉,總共大小為22 GB。數(shù)據(jù)集的設(shè)計(jì)者捕獲了工作站和網(wǎng)關(guān)傳出的流量,收集了一組pcap文件:一個(gè)常規(guī)流量pcap和一個(gè)Tor流量pcap文件。
對(duì)于Tor流量和常規(guī)流量,捕獲的流量可以分為以下7大類(lèi):
(1)網(wǎng)頁(yè)瀏覽:訪(fǎng)問(wèn)各類(lèi)網(wǎng)頁(yè);
(2)郵件:SMPTS、POP3S以及IMAPS協(xié)議;
(3)聊天:ICQ、AIM、Skype、Facebook和Hangouts;
(4)視頻播放:Vimeo和Youtube;
(5)文件傳輸:Skype、FTP等;
(6)網(wǎng)絡(luò)電話(huà):Facebook、Skype以及Hangouts語(yǔ)音通話(huà)、
(7)P2P:uTorrent和Bittorrent傳輸。
實(shí)驗(yàn)結(jié)果的評(píng)價(jià)指標(biāo)采用準(zhǔn)確率A、精確率P和召回率R,其中:
首先,將所設(shè)計(jì)的6種不同結(jié)構(gòu)的卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行性能對(duì)比,即分別用它們對(duì)預(yù)處理后的ISCX數(shù)據(jù)集進(jìn)行訓(xùn)練和測(cè)試,在測(cè)試集上的正確率如表3所示。
表3 不同CNN結(jié)構(gòu)的分類(lèi)準(zhǔn)確率
根據(jù)測(cè)試結(jié)果,本文采用正確率最高的第1種卷積神經(jīng)網(wǎng)絡(luò),其具體結(jié)構(gòu)如圖2所示。
為了進(jìn)一步驗(yàn)證該方案在實(shí)際應(yīng)用中的可行性,本文通過(guò)抓包分別獲取了一部分Tor流量與常規(guī)流量,隨后對(duì)采集到的流量進(jìn)行相同的預(yù)處理操作。最后將生成的圖像作為輸入,輸入到所設(shè)計(jì)的卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行識(shí)別,結(jié)果如表4所示。
為了比較卷積神經(jīng)網(wǎng)絡(luò)與傳統(tǒng)機(jī)器學(xué)習(xí)算法之間的優(yōu)劣,本文使用在流量分類(lèi)領(lǐng)域研究最廣、應(yīng)用最多的支持向量機(jī)進(jìn)行對(duì)比實(shí)驗(yàn)。實(shí)驗(yàn)采用了Cuzzocrea等人提出的方法,提取了tcp數(shù)據(jù)流的長(zhǎng)度和時(shí)間等特征,然后利用支持向量機(jī)進(jìn)行訓(xùn)練和識(shí)別。實(shí)驗(yàn)結(jié)果表明支持向量機(jī)的分類(lèi)準(zhǔn)確率為97.08%。
表4 實(shí)際流量的測(cè)試結(jié)果
從上述實(shí)驗(yàn)結(jié)果可以看出,本文提出的將網(wǎng)絡(luò)流量預(yù)處理為灰度圖,再利用卷積神經(jīng)網(wǎng)絡(luò)對(duì)Tor流量進(jìn)行識(shí)別的方法在分類(lèi)正確率上略?xún)?yōu)于支持向量機(jī)。并且,相比于支持向量機(jī),深度學(xué)習(xí)省去了復(fù)雜的特征提取的過(guò)程。因此,無(wú)論是在正確率上還是在算法設(shè)計(jì)的復(fù)雜度上,本文提出的基于深度學(xué)習(xí)的Tor流量識(shí)別方法都更加優(yōu)于支持向量機(jī)。
本文提出了一種基于深度學(xué)習(xí)的Tor流量識(shí)別方法。該方法首先對(duì)流量據(jù)集進(jìn)行預(yù)處理,生成灰度圖像,隨后選取合適的卷積神經(jīng)網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練。為了驗(yàn)證方法的可行性,本文通過(guò)抓包采集了一組實(shí)際應(yīng)用中的流量,并利用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行識(shí)別,最終的識(shí)別正確率為97.55%,比支持向量機(jī)高了0.47%。后續(xù)研究將重點(diǎn)考慮Tor流量的多分類(lèi)問(wèn)題,即針對(duì)不同應(yīng)用的Tor流量,如網(wǎng)頁(yè)流量、視頻播放、文件傳輸?shù)龋芯恳环N有效的多分類(lèi)方法。