鄒 源 張 甲 江 濱
(清華大學(xué)網(wǎng)絡(luò)科學(xué)與網(wǎng)絡(luò)空間研究院 北京 100084)
加密流量已經(jīng)成為互聯(lián)網(wǎng)中的主要流量,根據(jù)思科統(tǒng)計(jì),截至2018年,互聯(lián)網(wǎng)中超過60%的網(wǎng)絡(luò)流量使用了加密技術(shù)。Chrome等主流瀏覽器對(duì)于不加密的網(wǎng)站進(jìn)行報(bào)警的做法也加速了Web服務(wù)中HTTPs技術(shù)的部署。與此同時(shí),惡意軟件與控制服務(wù)器的通信方法從傳統(tǒng)的HTTP請(qǐng)求逐漸向加密流量轉(zhuǎn)變,截至2018年,超過70%的惡意軟件通信流量使用了TLS加密技術(shù)[10]。在這一背景下,對(duì)加密流量中的惡意流量檢測(cè)有著迫切的需要。
TLS加密技術(shù)位于傳輸層和應(yīng)用層之間,用于在兩個(gè)通信應(yīng)用程序之間提供保密性和數(shù)據(jù)完整性。一方面,它為主機(jī)之間的通信提供加密與安全保護(hù),有效防止了中間人攻擊,保證了數(shù)據(jù)的可靠性傳輸。另一方面,它讓基于流量?jī)?nèi)容的檢測(cè)方法變得困難,讓一些惡意流量有了可乘之機(jī)。攻擊者在成功入侵主機(jī)后,為了繞開防火墻的限制,通常會(huì)控制失陷主機(jī)主動(dòng)連接攻擊者建立的服務(wù)器(控制與命令服務(wù)器),接收攻擊者發(fā)布的指令,這一類的流量稱為命令與控制流量。由于服務(wù)端主機(jī)由攻擊者搭建,攻擊者為了搭建方便,使用與正常網(wǎng)絡(luò)服務(wù)相似的網(wǎng)絡(luò)協(xié)議和服務(wù)框架,比如HTTP和HTTPs,這使得區(qū)分惡意流量和正常流量變得困難。
在加密環(huán)境下檢測(cè)方法依賴于識(shí)別流量的行為模式,從流量的傳輸包大小和時(shí)間序列中分析和尋找惡意流量的特征,然后建立機(jī)器學(xué)習(xí)的模型對(duì)正常流量進(jìn)行區(qū)分。其中的特征提取是一個(gè)基于直覺和專業(yè)知識(shí)的手動(dòng)過程,它比最終分類算法的選擇更加重要。但是,在攻擊者變更攻擊代碼后,流量的行為模式在特征集上會(huì)隨之變化,檢測(cè)方法需要人工分析新的流量特征檢測(cè)惡意流量。
本文提出一種基于長(zhǎng)短時(shí)記憶(LSTM)神經(jīng)網(wǎng)絡(luò)的惡意流量檢測(cè)方法,它可以使用深度學(xué)習(xí)自動(dòng)提取流傳輸模式的特征,在此基礎(chǔ)上建立分類器對(duì)惡意流量進(jìn)行檢測(cè)。
惡意流量的檢測(cè)是網(wǎng)絡(luò)安全領(lǐng)域一個(gè)常見問題,包括攻擊階段的滲透測(cè)試流量檢測(cè)、拒絕服務(wù)攻擊檢測(cè)、暴力破解攻擊檢測(cè),以及控制主機(jī)后的隱蔽隧道通信檢測(cè)、命令與控制流量(C&C)檢測(cè)等。本文研究目標(biāo)是檢測(cè)C&C流量,現(xiàn)有的檢測(cè)方法主要可以分為三類:(1) 依賴于對(duì)傳輸內(nèi)容的檢測(cè),通過深度包解析的方法匹配傳輸流量中的惡意關(guān)鍵詞,比如文獻(xiàn)[10]提出的基于HTTP模板檢測(cè)botnet通信的方法,這類方法在不對(duì)應(yīng)用流量解密的情況下無法提取流量中的關(guān)鍵詞,因此不能檢測(cè)加密通信;(2) 基于上下文流量進(jìn)行檢測(cè)的方法,比如文獻(xiàn)[9]和文獻(xiàn)[11]提出的惡意域名檢測(cè),針對(duì)失陷主機(jī)在DNS請(qǐng)求中使用的DGA域名進(jìn)行檢測(cè),這類方法無法檢測(cè)直接使用IP地址或者以P2P形式構(gòu)造的僵尸網(wǎng)絡(luò);(3) 基于TCP/IP層的傳輸信息提取統(tǒng)計(jì)特征,包括包長(zhǎng)的均值、方差、峰值等,利用特征建立檢測(cè)模型,包括文獻(xiàn)[3]提出的基于包長(zhǎng)統(tǒng)計(jì)信息檢測(cè)視頻流量中的隱蔽隧道、文獻(xiàn)[12]提出的對(duì)移動(dòng)APP流量類型進(jìn)行分類的方法。
綜上,在惡意加密流量檢測(cè)的場(chǎng)景下,目前的方法中只有基于流量行為模式進(jìn)行識(shí)別的方法依然可以全面地檢測(cè)加密后的惡意通信流量。但是這一方法依賴人工特征提取,在攻擊者更新代碼后需要重新選擇分類器的模型,否則檢測(cè)的準(zhǔn)確率會(huì)快速下降[5]。同時(shí)人工方式提取的特征并不能包含原始序列的所有信息,會(huì)丟失一些重要的信息,而且一些復(fù)雜的隱含特征可能和最終的結(jié)果具有很強(qiáng)的相關(guān)性很難通過特征工程提取。
深度學(xué)習(xí)除了在語(yǔ)音識(shí)別、計(jì)算機(jī)視覺領(lǐng)域應(yīng)用成功外,在信息安全中也有成功的案例。文獻(xiàn)[6]提出使用神經(jīng)網(wǎng)絡(luò)來發(fā)現(xiàn)系統(tǒng)事務(wù)日志中的安全問題,文獻(xiàn)[2]提出使用循環(huán)神經(jīng)網(wǎng)絡(luò)來識(shí)別TOR的流量訪問的具體的服務(wù)端網(wǎng)站指紋。
本文使用加密會(huì)話中的包長(zhǎng)傳輸模式與包傳輸時(shí)間序列進(jìn)行訓(xùn)練,不依賴人工提取傳輸特征,利用時(shí)間序列預(yù)測(cè)的LSTM模型自動(dòng)進(jìn)行特征提取,對(duì)惡意加密流量和正常流量進(jìn)行分類,避免人工提取的特征不包含原始序列中一些重要信息。
循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)是基于時(shí)間序列的模型,與傳統(tǒng)的前饋神經(jīng)網(wǎng)絡(luò)不同,它能夠建立先前信息與當(dāng)前環(huán)境的時(shí)間相關(guān)性,是一個(gè)對(duì)序列化數(shù)據(jù)進(jìn)行特征提取和分類的有效方法。原始的RNN方法存在梯度爆炸和梯度彌散問題:隨著網(wǎng)絡(luò)層數(shù)的增加,后面節(jié)點(diǎn)對(duì)于前面節(jié)點(diǎn)的感知能力變?nèi)酰钡酵浨懊娴挠行畔ⅰ?/p>
為了提高神經(jīng)網(wǎng)絡(luò)的長(zhǎng)期記憶能力,Hochreiter等[1]在1997年提出了長(zhǎng)短時(shí)記憶(LSTM)神經(jīng)網(wǎng)絡(luò)。LSTM是RNN的一個(gè)變種,主要應(yīng)用在數(shù)據(jù)分類問題中,包括自然語(yǔ)言翻譯、智能語(yǔ)音和文本分類等多個(gè)方面,由于可以完美模擬多個(gè)輸入變量的問題,故還可以用于時(shí)間序列檢測(cè)。
LSTM添加了記憶單元專門用于保存歷史信息,記憶單元的結(jié)構(gòu)如圖1所示。每一個(gè)記憶單元含有三個(gè)輸入:來自原始輸入序列中當(dāng)前時(shí)刻t傳入模型的所有有用數(shù)據(jù)xt,到t-1時(shí)刻模型記錄的歷史狀態(tài)Ct-1和所有有用信息的隱藏向量ht-1。每一個(gè)記憶單元的輸出包括當(dāng)前時(shí)刻記錄的所有有用信息ht和當(dāng)前狀態(tài)ct。

圖1 LSTM單元標(biāo)準(zhǔn)結(jié)構(gòu)
為了歷史信息中的有效內(nèi)容,輸入數(shù)據(jù)要通過三個(gè)門:遺忘門(f)、輸入門(i)、輸出門(o)。輸入門負(fù)責(zé)判斷是否丟棄歷史信息,它的輸入是歷史隱藏信息ht-1以及當(dāng)前序列節(jié)點(diǎn)信息xt-1,使用sigmoid函數(shù)輸出一個(gè)0~1之間的值,表示是否遺忘歷史流量傳輸模式的信息,1表示保留歷史信息,0表示遺忘歷史信息,遺忘門的計(jì)算公式如下:
ft=σ(Wfx·xt+Wfh·ht-1+bf)
(1)
式中:W表示神經(jīng)單元中的權(quán)重矩陣,其第一下標(biāo)表示運(yùn)算門,第二下標(biāo)表示運(yùn)算參數(shù),比如Wfx表示遺忘門對(duì)序列輸入x的權(quán)重矩陣。b是對(duì)應(yīng)的權(quán)重偏置,下標(biāo)表示對(duì)應(yīng)的門,比如bi表示對(duì)輸入門的權(quán)重偏執(zhí)。
同理,輸入門和輸出門對(duì)應(yīng)的計(jì)算公式如下:
it=σ(Wix·xt+Wih·ht-1+bi)
(2)
ot=σ(Wox·xt+Woh·ht-1+bo)
(3)
最后,候選狀態(tài)gt和當(dāng)前狀態(tài)st決定在傳輸包中可以保留哪些新的信息到下一個(gè)神經(jīng)元。
gt=σ(Wox·xt+Woh·ht-1+bo)
(4)
st=gt·it+st-1·ft
(5)
最終根據(jù)傳輸包的狀態(tài)確定輸出值,以tanh函數(shù)處理當(dāng)前單元狀態(tài),并與輸出門相乘得到當(dāng)前單元的隱藏向量ht,再傳遞給下一個(gè)單元。
ht=tanh(st)·ot
(6)
通過這樣的方式將流量傳輸序列的前后信息進(jìn)行學(xué)習(xí),得到連接中的前后包之間的關(guān)聯(lián)信息,實(shí)現(xiàn)流傳輸特征信息的提取。
本文針對(duì)網(wǎng)絡(luò)流量進(jìn)行檢測(cè),對(duì)于數(shù)據(jù)的處理如圖2中的數(shù)據(jù)處理模塊所示,流量通過流量探針轉(zhuǎn)化成網(wǎng)絡(luò)日志,再經(jīng)過數(shù)據(jù)預(yù)處理與測(cè)試集合劃分后輸入到神經(jīng)網(wǎng)絡(luò)分類器中。

圖2 數(shù)據(jù)探針和神經(jīng)網(wǎng)絡(luò)分類器的框架
探針系統(tǒng)負(fù)責(zé)采集出每一個(gè)加密流的傳輸日志,其日志信息包括:客戶端IP、服務(wù)端IP、客戶端端口、服務(wù)端端口、傳輸包到達(dá)時(shí)間、傳輸包大小,以及從TLS密鑰協(xié)商過程中解析出的客戶端密鑰套件、服務(wù)端證書信息。
每一個(gè)加密連接序列由不同流量包的日志信息組成,在探針中使用了五元組(客戶端IP、服務(wù)端IP、客戶端端口、服務(wù)端端口、協(xié)議)與TCP層的ACK字段對(duì)包序列進(jìn)行排序,從而避免由于網(wǎng)絡(luò)環(huán)境不穩(wěn)定造成包序列的混亂。序列中每一個(gè)傳輸包都保留了傳輸時(shí)間間隔、傳輸包大小、傳輸方向。傳輸時(shí)間間隔是當(dāng)前包與上一個(gè)包到達(dá)時(shí)間之間的差值,統(tǒng)計(jì)單位是毫秒。由于網(wǎng)絡(luò)環(huán)境的原因,可能出現(xiàn)先發(fā)包后到,因此時(shí)間間隔包括負(fù)值。傳輸包大小的統(tǒng)計(jì)單位是字節(jié),傳輸方向用發(fā)送和接收兩個(gè)變量表示,比如客戶端發(fā)送表示為(0,1),服務(wù)端發(fā)送表示為(1,0)。
由于不同連接持續(xù)的時(shí)間不一致,外加探針緩存流量在性能上的限制,對(duì)于每一個(gè)加密流量只能存儲(chǔ)有限長(zhǎng)度的包序列。通過實(shí)驗(yàn)比較,最終選擇保留連接中前50個(gè)包。對(duì)于長(zhǎng)度不滿的序列進(jìn)行了填充,填充的內(nèi)容是傳輸包中不會(huì)出現(xiàn)的異常值(比如0x0fffffff),最后在訓(xùn)練算法模型時(shí)過濾掉這些異常值。
一部分惡意流量在連接控制服務(wù)器時(shí)進(jìn)行了大量的重復(fù)嘗試,產(chǎn)生了大量重復(fù)流量,需要對(duì)這部分流量進(jìn)行去重,避免訓(xùn)練數(shù)據(jù)不平衡造成訓(xùn)練過擬合;另一方面,在真實(shí)網(wǎng)絡(luò)環(huán)境下,惡意流量相對(duì)正常流量占有的比例不高,通過沙箱采集的流量數(shù)量也遠(yuǎn)遠(yuǎn)少于現(xiàn)實(shí)環(huán)境采集到的白流量數(shù)量。為了在實(shí)驗(yàn)中驗(yàn)證模型的有效性,對(duì)惡意流量進(jìn)行了樣本過采樣,使用8倍數(shù)量的原始數(shù)據(jù)加入到訓(xùn)練集合。
構(gòu)建的神經(jīng)網(wǎng)絡(luò)分類器的整體框架如圖2所示。數(shù)據(jù)處理輸出的加密流序列將由LSTM網(wǎng)絡(luò)中自動(dòng)選取有效的特征。基于LSTM的預(yù)測(cè)模型由輸入層、隱藏層、輸出層組成,如圖2所示。其核心設(shè)計(jì)是中間的隱藏層,通過實(shí)驗(yàn)比較,選擇保留了20個(gè)神經(jīng)元。訓(xùn)練過程中,通過向前操作,將LSTM上一時(shí)刻的信息以記憶流的形態(tài)不斷向后傳遞,影響每個(gè)新輸入數(shù)據(jù)的處理和每個(gè)階段的輸出。輸入層的輸入數(shù)據(jù)包含每一個(gè)流量包的大小、到達(dá)時(shí)間與上一個(gè)到達(dá)包的時(shí)間間隔絕對(duì)值以及傳輸方向。
LSTM提取完隱藏特征后發(fā)送到Softmax神經(jīng)網(wǎng)絡(luò)分類器。Softmax本質(zhì)上是一種神經(jīng)元輸出的概率分布形式,最后一個(gè)輸出層的節(jié)點(diǎn)個(gè)數(shù)與分類任務(wù)的目標(biāo)數(shù)相等。對(duì)于每一條加密連接的行為特征,神經(jīng)網(wǎng)絡(luò)生成一個(gè)二維的數(shù)組作為輸出結(jié)果,分別表示屬于黑流量和白流量的概率。
實(shí)驗(yàn)基于CentOS7的操作系統(tǒng),Python 3.6的環(huán)境,利用Pandas進(jìn)行數(shù)據(jù)預(yù)處理,采用Keras和Tensorflow的深度學(xué)習(xí)框架構(gòu)建惡意流量檢測(cè)模型。作為對(duì)比的特征提取與監(jiān)督學(xué)習(xí)方法使用Sklearn機(jī)器學(xué)習(xí)框架搭建。
在惡意流量分類領(lǐng)域公開的訓(xùn)練數(shù)據(jù)集很少,本文通過某個(gè)大型校園網(wǎng)絡(luò)進(jìn)行正常流量的數(shù)據(jù)采集,使用沙箱對(duì)惡意流量進(jìn)行數(shù)據(jù)采集。本實(shí)驗(yàn)使用23 145個(gè)惡意程序在沙箱中收集了120萬(wàn)條惡意TLS流量;在清華的校園網(wǎng)邊界收集了來自3 132個(gè)客戶端設(shè)備的1 000萬(wàn)條正常TLS流量。為了保障白樣本的可靠性,我們使用白名單證書與安全客戶端列表對(duì)邊界網(wǎng)絡(luò)進(jìn)行了過濾。為了保障黑樣本的豐富性,我們收集了來自276個(gè)惡意家族的24 786個(gè)有效二進(jìn)制樣本。
為了保證驗(yàn)證算法的有效性,數(shù)據(jù)集使用隨機(jī)劃分法分為訓(xùn)練樣本集和測(cè)試樣本集,為了充分利用數(shù)據(jù),采用十折交叉驗(yàn)證的方式來進(jìn)行訓(xùn)練和驗(yàn)證。
實(shí)驗(yàn)以黑流量為正樣本,正常流量為負(fù)樣本。分類混淆矩陣如表1所示,評(píng)價(jià)指標(biāo)包括準(zhǔn)確率(AC)、召回率(Recall)、誤報(bào)率(FA),其計(jì)算方法如下:
(7)
(8)

(9)
圖3反映了訓(xùn)練過程中檢測(cè)的準(zhǔn)確率與訓(xùn)練迭代次數(shù)的關(guān)系。由實(shí)驗(yàn)結(jié)果可以看出,模型在迭代到10次以后基本收斂,訓(xùn)練集準(zhǔn)確率最終達(dá)到了99.93%,驗(yàn)證集準(zhǔn)確率達(dá)到了99.76%,說明模型能成功的從流量序列中提取行為特征區(qū)分惡意流量。

圖3 準(zhǔn)確率和迭代次數(shù)的關(guān)系曲線
為了比較LSTM的檢測(cè)效果與人工提取特征的分類器的檢測(cè)效果,本文根據(jù)文獻(xiàn)[3]中提出的22個(gè)TCP層流量統(tǒng)計(jì)特征以及常見的機(jī)器學(xué)習(xí)構(gòu)造了多個(gè)分類器用于對(duì)比。
由表2可以看出,本文提出的基于LSTM的惡意流量檢測(cè)算法表現(xiàn)優(yōu)于傳統(tǒng)的決策樹(DT)、支持向量機(jī)(SVM)和隨機(jī)森林(RF)算法。盡管從準(zhǔn)確率數(shù)值上看提升不多,但是LSTM的誤報(bào)率只比傳統(tǒng)的檢測(cè)模型低了0.01左右。由于現(xiàn)實(shí)網(wǎng)絡(luò)中流量數(shù)量非常龐大,這一點(diǎn)提升可以減少大量的誤報(bào)。以清華的邊界流量為例,每天三千萬(wàn)條加密流量在誤報(bào)率降低0.01的情況下每天會(huì)減少30萬(wàn)條錯(cuò)誤的報(bào)警。

表2 惡意流量檢測(cè)結(jié)果 %
在圖4中,不同檢測(cè)模型的ROC曲線下方的面積(Area Under Curve,AUC)越大,模型的檢測(cè)效果越好,可以看到LSTM具有最大的AUC值,檢測(cè)效果最好。

圖4 LSTM模型對(duì)惡意流量的檢測(cè)效果
由于現(xiàn)實(shí)中網(wǎng)絡(luò)流量很多的原因,對(duì)于惡意流量的檢測(cè)通常會(huì)限制誤報(bào)率,當(dāng)所有模型的誤報(bào)率都限制在1%以下時(shí),從圖4中可以看到,LSTM的檢測(cè)準(zhǔn)確率高出其他模型很多。
本文提出了一種基于LSTM的在加密環(huán)境下檢測(cè)惡意網(wǎng)絡(luò)流量方法。該方法首先利用網(wǎng)絡(luò)探針從原始網(wǎng)絡(luò)流量數(shù)據(jù)中提取流量日志,并通過TCP發(fā)送順序還原了包序列。接著以日志中的包長(zhǎng)、方向和傳輸時(shí)間間隔作為輸入,使用LSTM分析流量傳輸模式的長(zhǎng)距離依賴關(guān)系,在惡意加密流量檢測(cè)中取得了比較好的效果。該算法以沙箱采集的惡意程序流量和現(xiàn)實(shí)網(wǎng)絡(luò)中的正常Web流量作為研究對(duì)象,驗(yàn)證了LSTM方法對(duì)網(wǎng)絡(luò)流量數(shù)據(jù)的非線性表示和分類能力。
在加密技術(shù)廣泛應(yīng)用的互聯(lián)網(wǎng)環(huán)境下,如何有效地檢測(cè)出失陷主機(jī)是對(duì)網(wǎng)管人員的一大挑戰(zhàn)。本文提出的檢測(cè)方法具有較低的誤報(bào)率和自動(dòng)提取特征的優(yōu)勢(shì),可以更好地應(yīng)用于現(xiàn)實(shí)網(wǎng)絡(luò)環(huán)境。