一文讀懂如何用深度學(xué)習(xí)實(shí)現(xiàn)網(wǎng)絡(luò)安全
作者:Guest Blog
翻譯:張玲
校對:丁楠雅
本文簡要介紹深度學(xué)習(xí)以及它支持的一些現(xiàn)有信息安全應(yīng)用,并提出一個基于深度學(xué)習(xí)的TOR流量檢測方案。
簡介
我們看到的大多數(shù)深度學(xué)習(xí)應(yīng)用程序通常面向市場、銷售、金融等領(lǐng)域,但在使用深度學(xué)習(xí)來保護(hù)這些領(lǐng)域的產(chǎn)品和業(yè)務(wù)、避免惡意軟件和黑客攻擊方面,則鮮有文章或資源。
像谷歌、臉譜、微軟和SalesForce這樣的大型科技公司已經(jīng)將深度學(xué)習(xí)嵌入他們的產(chǎn)品之中,但網(wǎng)絡(luò)安全行業(yè)仍在迎頭趕上。這是一個具有挑戰(zhàn)性的領(lǐng)域,需要我們?nèi)﹃P(guān)注。
本文中,我們簡要介紹深度學(xué)習(xí)(Deep Learning,DL)以及它支持的一些現(xiàn)有信息安全(此處稱為InfoSec)應(yīng)用。然后,我們深入研究匿名TOR流量檢測這個有趣的問題,并提出一個基于深度學(xué)習(xí)的TOR流量檢測方案。
本文的目標(biāo)讀者是已經(jīng)從事機(jī)器學(xué)習(xí)項(xiàng)目的數(shù)據(jù)科學(xué)專業(yè)人員。本文內(nèi)容假設(shè)您具備機(jī)器學(xué)習(xí)的基礎(chǔ)知識,而且當(dāng)前是深度學(xué)習(xí)和其應(yīng)用案例的初學(xué)者或探索者。
為了能夠充分理解本文,強(qiáng)烈推薦預(yù)讀以下兩篇文章:
- 《使用數(shù)據(jù)科學(xué)解開信息安全的神秘面紗》
- 《深度學(xué)習(xí)的基礎(chǔ)知識-激活功能以及何時(shí)使用它們》
一、信息安全領(lǐng)域中深度學(xué)習(xí)系統(tǒng)的現(xiàn)狀
深度學(xué)習(xí)不是解決所有信息安全問題的“靈丹妙藥”,因?yàn)樗枰獜V泛的標(biāo)注數(shù)據(jù)集。不幸的是,沒有這樣的標(biāo)記數(shù)據(jù)集可供使用。但是,有幾個深度學(xué)習(xí)網(wǎng)絡(luò)對現(xiàn)有解決方案做出重大改進(jìn)的信息安全案例。惡意軟件檢測和網(wǎng)絡(luò)入侵檢測恰是兩個這樣的領(lǐng)域,深度學(xué)習(xí)已經(jīng)顯示出比基于規(guī)則和經(jīng)典機(jī)器學(xué)習(xí)的解決方案有更顯著的改進(jìn)。
網(wǎng)絡(luò)入侵檢測系統(tǒng)通常是基于規(guī)則和簽名的控件,它們部署在外圍以檢測已知威脅。攻擊者改變惡意軟件簽名,就可以輕易地避開傳統(tǒng)的網(wǎng)絡(luò)入侵檢測系統(tǒng)。Quamar等[1]在他們的IEEE學(xué)報(bào)論文中指出,有望采用自學(xué)的基于深度學(xué)習(xí)的系統(tǒng)來檢測未知的網(wǎng)絡(luò)入侵?;谏疃壬窠?jīng)網(wǎng)絡(luò)的系統(tǒng)已經(jīng)用來解決傳統(tǒng)安全應(yīng)用問題,例如檢測惡意軟件和間諜軟件[2]。
與傳統(tǒng)的機(jī)器學(xué)習(xí)方法相比,基于深度學(xué)習(xí)的技術(shù)的泛化能力更好。Jung等[3]基于深度學(xué)習(xí)的系統(tǒng)甚至可以檢測零日惡意軟件。畢業(yè)于巴塞羅那大學(xué)的Daniel已經(jīng)做了大量有關(guān)CNN(Convolutional Neural Networks,卷積神經(jīng)網(wǎng)絡(luò))和惡意軟件檢測的工作。他在博士論文中提及,CNNs甚至可以檢測變形惡意軟件。
現(xiàn)在,基于深度學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò)正在用戶和實(shí)體行為分析(User and Entity Behaviour Analytics,UEBA)中使用。傳統(tǒng)上,UEBA采用異常檢測和機(jī)器學(xué)習(xí)算法。這些算法提取安全事件以分析和基線化企業(yè)IT環(huán)境中的每一個用戶和網(wǎng)絡(luò)元素。任何偏離基線的重大偏差都會被觸發(fā)為異常,進(jìn)一步引發(fā)安全分析師調(diào)查警報(bào)。UEBA強(qiáng)化了內(nèi)部威脅的檢測,盡管程度有限。
現(xiàn)在,基于深度學(xué)習(xí)的系統(tǒng)被用來檢測許多其他類型的異常。波蘭華沙大學(xué)的Pawel Kobojek[4]使用擊鍵動力學(xué)來驗(yàn)證用戶是否使用LSTM網(wǎng)絡(luò)。Capital one安全數(shù)據(jù)工程總監(jiān)JasonTrost 發(fā)表了幾篇博客[5],其中包含一系列有關(guān)深度學(xué)習(xí)在InfoSec應(yīng)用的技術(shù)論文和演講。
二、前饋神經(jīng)網(wǎng)絡(luò)概述
人工神經(jīng)網(wǎng)絡(luò)的靈感來自生物神經(jīng)網(wǎng)絡(luò)。神經(jīng)元是生物神經(jīng)系統(tǒng)的基本單元。每一個神經(jīng)元由樹突、細(xì)胞核和軸突組成。它通過樹突接收信號,并通過軸突進(jìn)行傳遞(圖1)。計(jì)算在核中進(jìn)行。整個網(wǎng)絡(luò)由一系列神經(jīng)元組成。
AI研究人員借用這個原理設(shè)計(jì)出人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Network,ANN)。在這樣的設(shè)置下,每個神經(jīng)元完成三個動作:
- 它收集來自其他不同神經(jīng)元的輸入或者經(jīng)過加權(quán)處理的輸入
- 它對所有的輸入進(jìn)行求和
- 基于求和值,它調(diào)用激活函數(shù)
因此,每個神經(jīng)元可以把一組輸入歸為一類或者其他類。當(dāng)僅使用單個神經(jīng)元時(shí),這種能力會受到限制。但是,使用一組神經(jīng)元足以使其成為分類和序列標(biāo)記任務(wù)的強(qiáng)大機(jī)制。
圖1:我們能獲得的最大靈感來自大自然——圖中描繪了一個生物神經(jīng)元和一個人工神經(jīng)元
可以使用神經(jīng)元層來構(gòu)建神經(jīng)網(wǎng)絡(luò)。網(wǎng)絡(luò)需要實(shí)現(xiàn)的目標(biāo)不同,其架構(gòu)也是不同的。常見的網(wǎng)絡(luò)架構(gòu)是前饋神經(jīng)網(wǎng)絡(luò)(Feed ForWard Neural Network,F(xiàn)FN)。神經(jīng)元在無環(huán)的情況下線性排列,形成FFN。因?yàn)樾畔⒃诰W(wǎng)絡(luò)內(nèi)部向前傳播,它被稱為前饋。信息首先經(jīng)過輸入神經(jīng)元層,然后經(jīng)過隱藏神經(jīng)元層和輸出神經(jīng)元層(圖2)。
圖2:具有兩個隱藏層的前饋網(wǎng)絡(luò)
與任何監(jiān)督學(xué)習(xí)模型一樣,F(xiàn)FN需要使用標(biāo)記的數(shù)據(jù)進(jìn)行訓(xùn)練。訓(xùn)練的形式是通過減少輸出值和真值之間的誤差來優(yōu)化參數(shù)。要優(yōu)化的一個重要參數(shù)是每個神經(jīng)元賦予其每個輸入信號的權(quán)重。對于單個神經(jīng)元來說,使用權(quán)重可以很容易地計(jì)算出誤差。
然而,在多層中調(diào)整一組神經(jīng)元時(shí),基于輸出層算出的誤差來優(yōu)化多層中神經(jīng)元的權(quán)重是具有挑戰(zhàn)性的。反向傳播算法有助于解決這個問題[6]。反向傳播是一項(xiàng)舊技術(shù),屬于計(jì)算機(jī)代數(shù)的分支。這里,自動微分法用來計(jì)算梯度。網(wǎng)絡(luò)中計(jì)算權(quán)重的時(shí)候需要用到梯度。
在FFN中,基于每個連接神經(jīng)元的激活獲得結(jié)果。誤差逐層傳播。基于輸出與最終結(jié)果的正確性,計(jì)算誤差。接著,將此誤差反向傳播,以修正內(nèi)部神經(jīng)元的誤差。對于每個數(shù)據(jù)實(shí)例來說,參數(shù)是經(jīng)過多次迭代優(yōu)化出來的。
三、案例研究:使用深度學(xué)習(xí)檢測TOR流量
網(wǎng)絡(luò)攻擊的主要目的是竊取企業(yè)用戶數(shù)據(jù)、銷售數(shù)據(jù)、知識產(chǎn)權(quán)文件、源代碼和軟件秘鑰。攻擊者使用加密流量將被盜數(shù)據(jù)混夾在常規(guī)流量中,傳輸?shù)竭h(yuǎn)程服務(wù)器上。
大多數(shù)經(jīng)常攻擊的攻擊者使用匿名網(wǎng)絡(luò),使得安全保護(hù)人員難以跟蹤流量。此外,被盜數(shù)據(jù)通常是加密的,這使得基于規(guī)則的網(wǎng)絡(luò)入侵工具和防火墻失效。最近,匿名網(wǎng)絡(luò)以勒索軟件/惡意軟件的變體形式用于C&C。例如,洋蔥勒索[7]使用TOR網(wǎng)絡(luò)和其C&C服務(wù)器進(jìn)行通信。
圖3:Alice與目標(biāo)服務(wù)器之間TOR通信的說明。
通信開始于Alice向服務(wù)器請求一個地址。TOR網(wǎng)絡(luò)給出AES加密的路徑。路徑的隨機(jī)化發(fā)生在TOR網(wǎng)絡(luò)內(nèi)部。包的加密路徑用紅色顯示。當(dāng)?shù)竭_(dá)TOR網(wǎng)絡(luò)的出口節(jié)點(diǎn)時(shí),將簡單分組轉(zhuǎn)發(fā)給服務(wù)器。出口節(jié)點(diǎn)是TOR網(wǎng)絡(luò)的外圍節(jié)點(diǎn)。
匿名網(wǎng)絡(luò)/流量可以通過多種方式完成,它們大體可分為:
- 基于網(wǎng)絡(luò)(TOR,I2P,Freenet)
- 基于自定義系統(tǒng)(子圖操作系統(tǒng),F(xiàn)reepto)
其中,TOR是比較流行的選擇之一。TOR是一款免費(fèi)軟件,能夠通過稱為洋蔥路由協(xié)議的專用路由協(xié)議在互聯(lián)網(wǎng)上進(jìn)行匿名通信[9]。該協(xié)議依賴于重定向全球范圍內(nèi)多個免費(fèi)托管中繼的互聯(lián)網(wǎng)流量。在中繼期間,就像洋蔥皮的層一樣,每個HTTP包使用接收器的公鑰加密。
在每個接收點(diǎn),使用私鑰對數(shù)據(jù)包進(jìn)行解密。解密后,下一個目標(biāo)中繼地址就會披露出來。這個過程會持續(xù)下去,直到找到TOR網(wǎng)絡(luò)的出口節(jié)點(diǎn)為止。在這里數(shù)據(jù)包解密結(jié)束,一個簡單的HTTP數(shù)據(jù)包會被轉(zhuǎn)發(fā)到原始目標(biāo)服務(wù)器。在圖3中展示了Alice和服務(wù)器之間的一個示例路由方案。
啟動TOR最初的目的是保護(hù)用戶隱私。但是,攻擊者卻用它代替其他不法方式,來威逼善良的人。截至2016年,約有20%的TOR流量涉及非法活動。在企業(yè)網(wǎng)絡(luò)中,通過不允許安裝TOR客戶端或者攔截保護(hù)或入口節(jié)點(diǎn)的IP地址來屏蔽TOR流量。
不管怎樣,有許多手段可以讓攻擊者和惡意軟件訪問TOR網(wǎng)絡(luò)以傳輸數(shù)據(jù)和信息。IP攔截策略不是一個合理的策略。一篇來自Distil網(wǎng)站[5]的自動程序情勢不佳報(bào)告顯示,2017年70%的自動攻擊使用多個IP,20%的自動攻擊使用超過100個IP。
可以通過分析流量包來檢測TOR流量。這項(xiàng)分析可以在TOR 節(jié)點(diǎn)上進(jìn)行,也可以在客戶端和入口節(jié)點(diǎn)之間進(jìn)行。分析是在單個數(shù)據(jù)包流上完成的。每個數(shù)據(jù)包流構(gòu)成一個元組,這個元組包括源地址、源端口、目標(biāo)地址和目標(biāo)端口。
提取不同時(shí)間間隔的網(wǎng)絡(luò)流,并對其進(jìn)行分析。G.He等人在他們的論文“從TOR加密流量中推斷應(yīng)用類型信息”中提取出突發(fā)的流量和方向,以創(chuàng)建HMM(Hidden Markov Model,隱馬爾科夫模型)來檢測可能正在產(chǎn)生那些流量的TOR應(yīng)用程序。這個領(lǐng)域中大部分主流工作都利用時(shí)間特征和其他特征如大小、端口信息來檢測TOR流量。
我們從Habibi等人的“利用時(shí)間特征來發(fā)現(xiàn)TOR流量的特點(diǎn)”論文中得到啟發(fā),并遵循基于時(shí)間的方法提取網(wǎng)絡(luò)流,用于本文TOR流量的檢測。但是,我們的架構(gòu)使用了大量可以獲得的其他元信息,來對流量進(jìn)行分類。這本質(zhì)上是由于我們已經(jīng)選擇使用深度學(xué)習(xí)架構(gòu)來解決這個問題。
四、數(shù)據(jù)實(shí)驗(yàn)-TOR流量檢測
為了完成本文的數(shù)據(jù)實(shí)驗(yàn),我們從紐布倫斯威克大學(xué)的Habibi Lashkari等人[11]那里獲取了數(shù)據(jù)。他們的數(shù)據(jù)由從校園網(wǎng)絡(luò)流量分析中提取的特征組成。從數(shù)據(jù)中提取的元信息如下表所示:
表1:從[ 1 ]獲得的元信息參數(shù)
除了這些參數(shù)之外,其他基于流的參數(shù)也包括在內(nèi)。圖4顯示了一個數(shù)據(jù)集的樣例。
圖4:本文使用的數(shù)據(jù)集實(shí)例
請注意,源IP/端口、目標(biāo)IP/端口和協(xié)議字段已經(jīng)從實(shí)例中刪除,因?yàn)樗鼈儠?dǎo)致模型過擬合。我們使用具有N隱藏層的深度前饋神經(jīng)網(wǎng)絡(luò)來處理其他所有特征。神經(jīng)網(wǎng)絡(luò)的架構(gòu)如圖5所示。
圖5:用于Tor流量檢測的深度學(xué)習(xí)網(wǎng)絡(luò)表示
隱藏層層數(shù)在2和10之間變化。當(dāng)N=5時(shí)是最優(yōu)的。為了激活,線性整流函數(shù)(Rectified Linear Unit, ReLU)用于所有隱藏層。隱藏層每一層實(shí)際上都是密集的,有100個維度。
Keras中的FFN的Python代碼片段:
- model = Sequential()
- model.add(Dense(feature_dim, input_dim= feature_dim, kernel_initializer='normal', activation='relu'))
- for _ in range(0, hidden_layers-1):
- model.add(Dense(neurons_num, kernel_initializer='normal', activation='relu'))
- model.add(Dense(1,kernel_initializer='normal', activation='sigmoid'))
- model.compile(optimizer='adam', loss='binary_crossentropy', metrics=["accuracy"])
輸出節(jié)點(diǎn)由Sigmoid函數(shù)激活。這被用來輸出二分類結(jié)果-TOR或非TOR。
我們在后端使用帶有TensorFlow的Keras來訓(xùn)練深度學(xué)習(xí)模塊。使用二元交叉熵?fù)p失來優(yōu)化FFN。模型會被訓(xùn)練不同次數(shù)。圖7顯示,在一輪仿真訓(xùn)練中,隨著訓(xùn)練次數(shù)的增加,性能也在增加,損失值也在下降。
圖7:網(wǎng)絡(luò)訓(xùn)練過程中Tensorboard生成的靜態(tài)圖
我們將深度學(xué)習(xí)系統(tǒng)的結(jié)果與其他預(yù)測系統(tǒng)進(jìn)行了比較。使用召回率(Recall)、精準(zhǔn)率(Precision)和F-Score這些標(biāo)準(zhǔn)分類指標(biāo)來衡量預(yù)測系統(tǒng)性能。我們基于深度學(xué)習(xí)的系統(tǒng)能夠很好地檢測TOR類。但是,我們更加重視非TOR類??梢钥闯?,基于深度學(xué)習(xí)的系統(tǒng)可以減少非TOR類的假陽性情況。結(jié)果如下表:
表2:用于TOR流量檢測實(shí)驗(yàn)的深度學(xué)習(xí)和機(jī)器學(xué)習(xí)模型結(jié)果
在各種分類器中,隨機(jī)森林和基于深度學(xué)習(xí)的方法比其他方法更好。所示結(jié)果基于5,500個訓(xùn)練實(shí)例。本實(shí)驗(yàn)中使用數(shù)據(jù)集的大小相對小于典型的基于深度學(xué)習(xí)的系統(tǒng)。隨著訓(xùn)練數(shù)據(jù)的增加,基于深度學(xué)習(xí)的系統(tǒng)和隨機(jī)森林分類器的性能將會進(jìn)一步提升。
但是,對于大型數(shù)據(jù)集來說,基于深度學(xué)習(xí)的分類器通常優(yōu)于其他分類器,并且可以針對相似類型的應(yīng)用程序進(jìn)行推廣。例如,如果需要訓(xùn)練檢測使用TOR的應(yīng)用程序,那么只需要重新訓(xùn)練輸出層,并且其他所有層可以保持不變。而其他機(jī)器學(xué)習(xí)分類器則需要在整個數(shù)據(jù)集上重新訓(xùn)練。請記住,對于大型數(shù)據(jù)集來說,重新訓(xùn)練模型需要耗費(fèi)巨大的計(jì)算資源。
尾記
每個企業(yè)面臨的匿名流量檢測的挑戰(zhàn)是存在細(xì)微差別的。攻擊者使用TOR信道以匿名模式偷竊數(shù)據(jù)。當(dāng)前流量檢測供應(yīng)商的方法依賴于攔截TOR網(wǎng)絡(luò)的已知入口節(jié)點(diǎn)。這不是一個可拓展的方法,而且很容易繞過。一種通用的方法是使用基于深度學(xué)習(xí)的技術(shù)。
本文中,我們提出了一個基于深度學(xué)習(xí)的系統(tǒng)來檢測TOR流量,具有高召回率和高精準(zhǔn)率。請下面的評論部分告訴我們您對當(dāng)前深度學(xué)習(xí)狀態(tài)的看法,或者如果您有其他替代方法。
相關(guān)報(bào)道:
https://www.analyticsvidhya.com/blog/2018/07/using-power-deep-learning-cyber-security/
【本文是51CTO專欄機(jī)構(gòu)大數(shù)據(jù)文摘的原創(chuàng)譯文,微信公眾號“大數(shù)據(jù)文摘( id: BigDataDigest)”】