王天棋,丁要軍
(甘肅政法大學(xué),甘肅 蘭州 730070)
在安全和隱私保護(hù)需求的驅(qū)動(dòng)下,加密流量在網(wǎng)絡(luò)中占據(jù)了越來越重要的地位。根據(jù)谷歌在2020 年發(fā)布的透明度報(bào)告,已經(jīng)有80%的安卓應(yīng)用程序默認(rèn)使用傳輸層安全協(xié)議(Transport Layer Security,TLS)加密所有流量[1]。根據(jù)CISCO 2019年的報(bào)告,使用加密來隱藏遠(yuǎn)程控制以及數(shù)據(jù)泄露等惡意行為的惡意軟件占比超過70%,使用加密通信的惡意軟件幾乎覆蓋了所有常見類型[2]。因此,高效識(shí)別TLS 惡意加密流量有重要的現(xiàn)實(shí)意義。
目前,已經(jīng)有國(guó)內(nèi)外研究人員對(duì)網(wǎng)絡(luò)惡意加密流量進(jìn)行了研究,并且取得了一定的成就。Canard等人[3]提出了對(duì)加密流量進(jìn)行深度包檢測(cè)(Deep Packet Inspection,DPI)而無需解密的技術(shù),但在設(shè)置階段需要大量的計(jì)算和較長(zhǎng)的檢測(cè)時(shí)間。Torroledo 等人[4]通過考慮TLS 協(xié)議中的證書,利用證書內(nèi)容對(duì)惡意流量進(jìn)行識(shí)別,但是此方法對(duì)無證書傳遞的加密會(huì)話惡意性檢測(cè)無效。Anderson 等人[5]提出了一種TLS 指紋識(shí)別系統(tǒng),該系統(tǒng)利用目標(biāo)地址、端口和服務(wù)器名精心構(gòu)造了指紋串。但是,Matou?ek 等人[6]發(fā)現(xiàn)以取證為目的創(chuàng)建唯一且穩(wěn)定的TLS 指紋并不容易,惡意用戶可以通過惡意行為改變TLS 版本、密碼套件等信息躲避檢測(cè),因此指紋的發(fā)展受到了限制。此外,Anderson等人在文獻(xiàn)[7]中研究利用TLS 握手階段的可用特征來識(shí)別加密惡意流量,但缺乏對(duì)握手階段外的特征考慮,且只使用了邏輯回歸分類器進(jìn)行驗(yàn)證。
鑒于此,本文在TLS 加密流量特征分析的基礎(chǔ)上,提出了一種基于Stacking 的網(wǎng)絡(luò)惡意加密流量識(shí)別方法。該方法通過對(duì)惡意流量和正常流量進(jìn)行分析,提取出能識(shí)別惡意流量的會(huì)話特征、握手特征和證書特征,并在單一特征和多特征條件下對(duì)惡意加密流量識(shí)別進(jìn)行對(duì)比,發(fā)現(xiàn)多特征的檢測(cè)方法能有效提升識(shí)別效果。為解決單一的機(jī)器學(xué)習(xí)方法在不同環(huán)境下的分類準(zhǔn)確率難以保持穩(wěn)定且泛化能力差的問題,構(gòu)建Stacking 模型并選擇合適的基學(xué)習(xí)器和元學(xué)習(xí)器,最后在公開數(shù)據(jù)集上進(jìn)行訓(xùn)練,實(shí)驗(yàn)證明所提算法的識(shí)別效果優(yōu)于現(xiàn)有方法。
TLS 協(xié)議是加密流量傳輸中常用的協(xié)議[8],也是保護(hù)許多明文應(yīng)用協(xié)議的主要協(xié)議。圖1 是一個(gè)完整的TLS 握手過程。如圖1 所示,首先,客戶端發(fā)送一條ClientHello 消息,該消息為服務(wù)器提供了一系列密碼套件和一組客戶端支持的TLS 擴(kuò)展;其次,服務(wù)器發(fā)送一個(gè)ServerHello 消息,其中包含從客戶端列表中選擇的加密套件,還包含服務(wù)器支持的擴(kuò)展列表以及證書鏈的Certificate 消息,該消息可用于對(duì)服務(wù)器進(jìn)行身份驗(yàn)證;再次,在客戶端發(fā)送ClientKeyExchange 消息給服務(wù)器端后,客戶端和服務(wù)器交換ChangeCipherSpec 消息,以后的消息將使用協(xié)商好的加密參數(shù)進(jìn)行加密;最后,客戶機(jī)和服務(wù)器開始交換應(yīng)用程序數(shù)據(jù)[9]。
圖1 TLS 協(xié)議握手協(xié)商階段流程
傳統(tǒng)的通過TLS 解密來查看流量密文內(nèi)容的方式,不僅耗時(shí),而且不能保護(hù)隱私。由于TLS 協(xié)商的過程是通過明文來進(jìn)行的,因此可以從未加密的消息中提取有用的信息。雖然證書是在TLS 握手階段得到的,但由于其對(duì)分類結(jié)果的影響明顯,因此本文將證書作為單獨(dú)特征向量進(jìn)行考慮。
1.2.1 TLS 握手特征分析和提取
握手特征從客戶端發(fā)送明文Client Hello 消息和服務(wù)端反饋Server Hello 消息中提取。圖2 展示了惡意會(huì)話和正常會(huì)話的服務(wù)器對(duì)TLS 加密套件的選擇對(duì)比和客戶端支持的曲線對(duì)比。為了更清晰地表示,將密碼套件用16 進(jìn)制代碼表示。
圖2 惡意會(huì)話和正常會(huì)話密碼套件和曲線對(duì)比
服務(wù)器選擇的密碼套件針對(duì)大多數(shù)正常會(huì)話和惡意會(huì)話有嚴(yán)格劃分。大多數(shù)正常的加密會(huì)話服務(wù)器選擇的TLS 密碼套件為000a、c014。
其中:
從圖2(a)中可以看出,惡意軟件占比多的0004、0005 是比較弱的加密套件,安全性不足。從客戶端支持的曲線對(duì)比看出,除選用基于256 bits的素?cái)?shù)域P 上的橢圓曲線(secp256r1)外,有23%的惡意會(huì)話的客戶端依賴底層素?cái)?shù)域特征為2255-19的橢圓曲線(x25519),而有33%的正常會(huì)話選用基于384 bits 的素?cái)?shù)域P 上的橢圓曲線(secp384r1)。
此外,觀察到正常加密流量客戶端支持的擴(kuò)展種類豐富,惡意流量客戶端擴(kuò)展種類較為單一。提取出的TLS 握手特征如表1 所示。
表1 TLS 握手特征
1.2.2 服務(wù)器證書特征分析和提取
服務(wù)器證書是用于驗(yàn)證服務(wù)器身份的文件,普通認(rèn)證機(jī)構(gòu)(Certificate Authority,CA)證書由可信的CA 機(jī)構(gòu)頒發(fā)。自簽名證書任何人都可以頒發(fā),它的issuer 與subject 相同。
在提取證書特征的過程中,證書的有效期、證書鏈的長(zhǎng)度、證書是否自簽名等重要特征指標(biāo)無法直接獲取,需要通過相應(yīng)的算法來獲得。圖3 展示了正常和惡意加密流量的服務(wù)器證書有效期時(shí)長(zhǎng)對(duì)比和服務(wù)器證書的issuer 長(zhǎng)度對(duì)比??梢钥闯?,正常的加密流量證書有效期較短,有58%的正常會(huì)話證書有效期是80 天左右。而惡意加密流量有效期時(shí)間相對(duì)較長(zhǎng),甚至有5.6%達(dá)到36 500 天。
圖3 惡意和良性流量證書有效期和issuer 長(zhǎng)度對(duì)比
從服務(wù)器證書的issuer 長(zhǎng)度可以看出,60%的正常加密會(huì)話的服務(wù)器證書issuer 長(zhǎng)度為1,而惡意流量證書issuer 長(zhǎng)度為2 和3 的占比86%。此外,觀察到TLS 服務(wù)器使用自簽名證書的頻率和使用公鑰的長(zhǎng)度等指標(biāo)在惡意和正常加密流量中也有明顯區(qū)別。提取出的服務(wù)器證書特征如表2 所示。
表2 證書特征
1.2.3 會(huì)話的特征分析和提取
會(huì)話特征是現(xiàn)有文獻(xiàn)中的常見特征。通過觀察發(fā)現(xiàn),大部分惡意軟件的接收數(shù)據(jù)包數(shù)量為5~12個(gè),而正常流量數(shù)據(jù)包的數(shù)量變化范圍較大。惡意加密流量的連接狀態(tài)為連接已建立,發(fā)起方中止RSTO 的最多,占比43%,而正常加密流量的連接狀態(tài)以正常建立和終止SF 的居多。此外,包長(zhǎng)度、包到達(dá)時(shí)間等也是重要的會(huì)話統(tǒng)計(jì)特征。提取出的會(huì)話特征如表3 所示。
表3 會(huì)話特征
Stacking 是組合異質(zhì)分類器的集成學(xué)習(xí)方法,它融合不同的學(xué)習(xí)算法實(shí)現(xiàn)高精度的分類任務(wù)[10],能夠有效降低泛化誤差,并通過元學(xué)習(xí)器來取代Bagging 的投票法,來綜合降低偏差和方差。同時(shí),Stacking 作為一種集成框架,往往采用兩層結(jié)構(gòu),第1 層組合多個(gè)基學(xué)習(xí)器輸出特征,第2 層使用元學(xué)習(xí)器組合第1 層的輸出特征,給出最終的預(yù)測(cè)結(jié)果。研究表明,Stacking 在增加有限計(jì)算開銷的同時(shí),有出色的性能和魯棒性[11]。
Stacking 算法共分成3 個(gè)步驟:
(1)根據(jù)原始數(shù)據(jù)D訓(xùn)練第一層分類器,一共有T個(gè)分類器,其中ht是第t次循環(huán)得到的分類器;
(2)根據(jù)第一層分類器的輸出,構(gòu)造新的數(shù)據(jù)集,第一層的預(yù)測(cè)結(jié)果將作為數(shù)據(jù)的新特征,原始數(shù)據(jù)的標(biāo)簽成為新數(shù)據(jù)的標(biāo)簽;
(3)根據(jù)新的數(shù)據(jù)集訓(xùn)練第二層分類器得到新的分類器h′,對(duì)于每一個(gè)數(shù)據(jù)實(shí)例x,分類器的預(yù)測(cè)結(jié)果為h′(h1(x),h2(x),…,hT(x)),其中,h1(x),h2(x),…,hT(x)表示第一層中的分類器[12]。
Stacking 算法偽代碼如下:
Stacking 集成方法通過將不同的算法結(jié)合在一起,發(fā)揮每個(gè)算法的優(yōu)勢(shì)來獲得更佳的預(yù)測(cè)性能。在構(gòu)建Stacking 集成模型中,首先需要確定基學(xué)習(xí)器的種類,而基學(xué)習(xí)器的選擇需從準(zhǔn)確性和多樣性兩個(gè)方面考慮。
從基學(xué)習(xí)器的預(yù)測(cè)性能方面考慮,本文除了選擇隨機(jī)森林(Random Forest,RF)和LightGBM[13]模型作為基學(xué)習(xí)器,還選擇了其他預(yù)測(cè)性能優(yōu)異的模型。其中,XGBoost 針對(duì)傳統(tǒng)的梯度提升決策樹進(jìn)行改進(jìn),在訓(xùn)練時(shí)間等方面都有所提升。
為了獲得最佳的集成模型,還需要考慮基學(xué)習(xí)器之間的相關(guān)性。選擇相關(guān)性較小的算法能夠充分發(fā)揮不同算法的優(yōu)勢(shì)[14],達(dá)到互補(bǔ)的目的。本文采用Pearson 相關(guān)系數(shù)衡量算法之間的相關(guān)性大小,其表達(dá)式為:
式中:和分別為各向量中元素的平均值。最后,依據(jù)基分類器追求“準(zhǔn)而不同”的原則,初步選 擇RF、K 近 鄰(K-Nearest Neighbor,KNN)、XGBoost、支持向量機(jī)(Support Vector Machine,SVM)和LightGBM 作為基學(xué)習(xí)器。
Wolpert 在提出Stacking 時(shí),就說明了元學(xué)習(xí)算法和新數(shù)據(jù)的屬性表示對(duì)Stacking 集成的泛化性能影響很大[15]。對(duì)于輸出類概率的初級(jí)分類器,分類器h對(duì)樣例x的預(yù)測(cè)是,x屬于所有可能類標(biāo)簽的概率為pht(cj|x),j=1,…,l,其中,l是指l個(gè)分類問題,pht(cj|x)定義了分類器h估計(jì)樣例x屬于類別cj的概率值。將基分類器對(duì)所有類預(yù)測(cè)的后驗(yàn)概率作為元層學(xué)習(xí)器的輸入屬性[16],乘以最大概率的概率分布,其表達(dá)式為:
概率分布的熵為:
元模型通常很簡(jiǎn)單,為了減輕過擬合,第二層元學(xué)習(xí)器選擇邏輯回歸模型。本文構(gòu)建的基于Stacking 的加密惡意流量檢測(cè)模型如圖4 所示。
圖4 基于Stacking 的惡意加密流量識(shí)別算法流程
本文采用scikit-learn 機(jī)器學(xué)習(xí)庫構(gòu)建Stacking模型并完成實(shí)驗(yàn)評(píng)估,在Windows 10 環(huán)境下運(yùn)行,處理器為AMD Ryzen 4800H,圖形處理器(Graphics Processing Unit,GPU)為RTX 2060,內(nèi)存為16 GB。
本實(shí)驗(yàn)選用DataCon 開放數(shù)據(jù)集[17],源自2020年2—6 月收集的惡意軟件與正常軟件,經(jīng)奇安信技術(shù)研究院天穹沙箱運(yùn)行并采集其產(chǎn)生的流量篩選生成,數(shù)據(jù)集格式為pcap 文件。由于本文研究需要更精確的數(shù)據(jù)集,對(duì)數(shù)據(jù)進(jìn)行以下處理:
(1)過濾未完成完整握手過程的會(huì)話;
(2)過濾確認(rèn)包、重傳包及傳輸丟失的壞包;
(3)借助Zeek[18]將pcap 包轉(zhuǎn)換為流量日志,進(jìn)行特征提?。?/p>
(4)特征提取后對(duì)非數(shù)值型的特征流量使用One-Hot 編碼,滿足模型輸入的需要;
(5)對(duì)特征的缺失值和異常值進(jìn)行處理,采用Z-score 對(duì)數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化。經(jīng)過數(shù)據(jù)預(yù)處理后,最終的數(shù)據(jù)集如表4 所示。
表4 最終數(shù)據(jù)集構(gòu)成
本文采用精確率(Precision)、召回率(Recall)、F1 值和ROC 曲線下方的面積(Area Under Curve,AUC)值作為評(píng)價(jià)指標(biāo)來估計(jì)方法的分類效果。精確率(Precision)、召回率(Recall)和F1 值的定義分別為:
式中:TP為被模型預(yù)測(cè)為正類的正樣本數(shù)量;FN為被模型預(yù)測(cè)為負(fù)類的正樣本數(shù)量;FP為被模型預(yù)測(cè)為正類的負(fù)樣本數(shù)量。
本文提取出會(huì)話統(tǒng)計(jì)特征86 維,握手特征62維和證書特征31 維,共計(jì)179 維特征向量。為了分析不同特征組合的性能,使用隨機(jī)森林算法分別測(cè)試了3 種特征組合下的識(shí)別效果,實(shí)驗(yàn)結(jié)果如表5 所示。
表5 不同的特征組合五折交叉驗(yàn)證結(jié)果
為了減小特征冗余和噪聲,去除相關(guān)度高及有負(fù)影響的特征,使用特征篩選算法Correlation AttributeEval,分別選擇特征從10 到100 維的10 種情況進(jìn)行實(shí)驗(yàn),確定特征維數(shù)為多少時(shí),模型分類效果最佳,實(shí)驗(yàn)結(jié)果如圖5 所示。
圖5 特征維數(shù)確定
當(dāng)特征維數(shù)為30 時(shí),使用隨機(jī)森林算法分類時(shí),F(xiàn)1 最高,達(dá)到97.2%。此后隨著維數(shù)的增加,F(xiàn)1 值逐漸降低。因此,本文將特征維數(shù)縮減到30 來進(jìn)行實(shí)驗(yàn),在提高識(shí)別效果的同時(shí)縮短了運(yùn)行時(shí)間。
不同特征組合下分類性能對(duì)比如圖6 所示。可以看出多特征識(shí)別顯著提升了模型精確率和召回率,特征篩選進(jìn)一步提升了模型的性能。
為了減輕過擬合,第二層元學(xué)習(xí)器一般選擇簡(jiǎn)單的模型,本文選擇邏輯回歸作為元分類器學(xué)習(xí)。表6 比較了常用于Stacking 模型中的K 近鄰(K-Nearest Neighbor,KNN)、支持向量機(jī)(Support Vector Machine,SVM)和邏輯回歸(Logistic Regression,LR)算法作為基分類器的差異。結(jié)果表明LR 算法作為元學(xué)習(xí)器時(shí),Stacking 模型表現(xiàn)最好。
將本文構(gòu)建的Stacking 模型與SVM、RF、XGBoost、CNN 算法對(duì)比,實(shí)驗(yàn)結(jié)果如表7 所示。
表7 算法性能對(duì)比
由表7 可以看出,本文構(gòu)建的Stacking 模型的查準(zhǔn)率、召回率、F1 值和AUC值均高于其他算法模型。與SVM 相比,分別提高了3.4%,3.3%,3.4%和3.2%;與XGBoost 相比,分別提高了2.2%,2.1%,1.7%和0.3%;與CNN 相比,分別提高了1.5%,2.7%,2.1%和4.1%。因此,通過上述對(duì)實(shí)驗(yàn)結(jié)果的分析,驗(yàn)證了本文提出的基于Stacking 的網(wǎng)絡(luò)惡意加密流量識(shí)別方法的可行性。
本文通過分析大量的正常和惡意加密流量,從中提取出具有顯著區(qū)分度的會(huì)話特征、握手特征和證書特征。對(duì)單一特征和多特征識(shí)別網(wǎng)絡(luò)惡意加密流量進(jìn)行對(duì)比,結(jié)果表明加入了握手和證書特征后可以顯著提升模型的識(shí)別效果。構(gòu)建基于Stacking集成學(xué)習(xí)的網(wǎng)絡(luò)惡意加密流量檢測(cè)模型,實(shí)驗(yàn)表明,在Datacon2020 數(shù)據(jù)集下,本文Stacking 模型效果比XGBoost 等4 種算法效果均有所提升,解決了單一的機(jī)器學(xué)習(xí)方法泛化能力弱的問題。此外,文章還存在一些不足之處,如在構(gòu)建Stacking 模型時(shí)可以嘗試更多基分類器和元分類器的組合,從而作出更優(yōu)的選擇,這也是今后進(jìn)一步研究的方向。