李 莉 任逸飛 婁嘉鵬
北京電子科技學院,北京市 100070
在當今巨大的網絡流量中,諸如入侵檢測、惡意軟件檢測等許多應用都需要進行流量識別,從而衍生出多種流量識別方法來適應不同應用場景的不同需求。 然而加密技術的出現(xiàn)對流量識別提出了新的挑戰(zhàn)。 在當前網絡環(huán)境中,加密數(shù)據(jù)所占比例越來越大,加密通信的比例逐年上升,一方面,使用VPN 通過Internet 進行安全連接,或者使用HTTPS 作為WEB 瀏覽的安全協(xié)議來保護隱私已經變得很常見;另一方面,一些黑客也使用加密技術來繞過檢測進行非法操作從中獲利,造成用戶的損失。
傳統(tǒng)殺毒軟件和防火墻依賴于簡單的特征碼匹配技術進行查殺或隔離,導致加密過的惡意流量數(shù)據(jù)很難檢測,如何對惡意加密流量進行檢測成為了網絡安全領域研究的熱點。 人工智能技術的出現(xiàn)和飛速發(fā)展使其在加密惡意流量的檢測中發(fā)揮了至關重要的作用,通過對惡意流量分析發(fā)現(xiàn),通信中的惡意流量包往往在傳輸數(shù)量、包大小、載荷數(shù)據(jù)等方面具有不同于正常流量的特征,將機器學習算法運用到這些特征中則可以達到檢測加密流量是否惡意的目的,但采用傳統(tǒng)的分類器算法訓練出的模型具有泛化能力差,檢測效果不明顯的缺點。
根據(jù)上述問題和傳統(tǒng)機器學習分類器的檢測方法存在的缺點,本文提出了一種基于集成學習的惡意加密流量檢測方法,該方法使用隨機森林分類器對數(shù)據(jù)集進行訓練并測試。
在流量識別技術的研究中,最早的識別方法是基于預定義的端口進行工作,通過數(shù)據(jù)包中的兩個端口參數(shù)與國際分配號管理局IANA 端口號列表[1]匹配識別,由于識別技術簡單、成本低的特點,早期被廣泛應用于流量識別。 然而隨著端口混淆技術的出現(xiàn),導致基于端口的流量分類方法性能大幅下降。 文獻[2~4]采用新的技術DPI 深度數(shù)據(jù)包檢測來識別流量,通過對數(shù)據(jù)包聚合并對協(xié)議進行分析,找出負載特征例如簽名或其他可用于將數(shù)據(jù)分類為惡意或良性的特征,然后匹配判斷流量類別并進行分類。 文獻[5]采用隨機森林算法對DoS 拒絕服務攻擊流量進行識別與檢測。
隨著加密服務的通信被廣泛應用,超過70%的互聯(lián)網流量都是加密的,而DPI 深度數(shù)據(jù)包檢測技術只適用于明文檢測,基于機器學習的加密流量識別技術成為研究熱潮。 文獻[6]使用四種機器學習技術對網絡加密流量進行分類,定義了22 個易于計算的流特征,然后評估了決策樹C4.5、貝葉斯網絡、樸素貝葉斯以及樸素貝葉斯樹算法的分類精度和計算性能。 結果顯示分類速度方面決策樹C4.5 最快,核密度貝葉斯NBK 最慢,構建分類器方面NBK 最快,貝葉斯網絡最慢。 文獻[6]提出了一種基于濾波器和逐步回歸包裝器的多階段特征選擇方法,分析了基于41 個被廣泛采用的流量特征,通過所提出的特征選擇方法,將41 個特征分類為16 個高相關,14 個低相關以及11 個可忽略特征,采用五種機器學習算法對41 維特征和16 維高相關特征進行檢測對比,證明可以通過消除13 個計算量較大的特征來加快檢測效率。 文獻[8]設計了一個通過竊聽用戶的加密網絡流量來識別用戶在移動應用程序上的特定行為的系統(tǒng),通過隨機森林的算法達到了95%以上的準確率和精度。 文獻[9]研究了IP 網絡中通信流的時間屬性,定義了一個時間活動特征向量來描述流的時間行為。 通過無監(jiān)督聚類算法分析網絡流量中常見的時間-活動模式,發(fā)現(xiàn)了7 個時間-活動足跡,并表明分析中95.3%的流可以基于這些足跡進行特征描述。 文獻[10]對安全傳輸層(TLS)加密的惡意軟件和程序進行了研究,采用商業(yè)沙箱收集樣本數(shù)據(jù),提取了包括流元數(shù)據(jù)、數(shù)據(jù)包長度和時間序列、字節(jié)分布以及未加密的TLS 頭信息四類特征,通過邏輯回歸分類器進行分類。 實驗結果表明在TLS 中觀察到的數(shù)據(jù)特征提供了關于客戶機和服務器軟件及其配置的信息,這些數(shù)據(jù)可以用來檢測惡意軟件,并通過分類器可以區(qū)分家族屬性。 文獻[11]針對TLS加密后的HTTPS 流量通過提取數(shù)據(jù)包數(shù)量、包平均大小、TLS 類型代碼、TLS 大小、TLS 方向等特征,采用隨機森林算法分類,試驗得出了分類的十個最重要特征。 文獻[12]應用支持向量機(SVM)分類器、隨機森林以及集成學習算法XGBoost 三種技術來區(qū)分惡意加密的HTTP 流量和良性加密的流量,使用數(shù)據(jù)流分析工具Bro 生成包含網絡流信息和其他元數(shù)據(jù)的網絡流量日志,并提取了38 維的流量特征,結果表明隨機森林和XGBoost 的分類性能較好。 文獻[13]針對SSL VPN 加密的流量識別提出了兩種隨機森林算法改進的方法,并采用23 維流特征集對K-近鄰、邏輯回歸和隨機森林三種機器學習算法以及兩種改進算法進行檢測,顯示改進后的兩個算法分類性能要高于普通的機器學習算法。
數(shù)據(jù)和特征決定了機器學習的上限,而算法和模型在機器學習中則是起到逼近這個上限的作用。 特征集的不同選擇會使最后的分類結果精度出現(xiàn)較大偏差,而好的特征可以提高分類性能,加速分析過程。 通過研究匯總近幾年文獻中提出的流量特征,本文共選取了85 維特征向量作為特征集進行加密流量的檢測識別。
缺乏用于研究和算法測試的帶標簽的TCP/IP 數(shù)據(jù)是網絡安全的一大問題,KDD 家族數(shù)據(jù)集在過去二十年內被廣泛使用,但如今已不能代表當前的通信和攻擊,網絡流量的大容量和高速度要求其監(jiān)控工具必須有大量的存儲空間和實時處理能力,才能確保令人滿意的網絡監(jiān)控性能。 本文采用Moustafa 和Slay 提出的UNSWNB15 數(shù)據(jù)集,該數(shù)據(jù)集的流量數(shù)據(jù)由IXIA PerfectStorm 平臺生成,主要用于模擬大型網絡和評估其安全性,以測試和驗證整個網絡環(huán)境的基礎設施。 UNSW-NB15 數(shù)據(jù)集的pcap 文件包含正常流量和惡意流量共100GB,包括220 萬條的正常流量以及32 萬條的惡意流量,其中惡意流量分為Fuzzers、Analysis、Backdoors、DoS、Exploits、Generic、Reconnaissance、Shellcode 和Worms 九大類家族,如表1 所示,每個安全事件都有自己的場景與特定的協(xié)議和服務交互。
其中Fuzzers 攻擊被定義為一種通過向應用程序、操作系統(tǒng)或網絡輸入大量隨機數(shù)據(jù)來發(fā)現(xiàn)弱點的技術。 Analysis 是通過端口、電子郵件和web 腳本侵入Internet 應用程序的攻擊方法。Backdoors 是一種后門程序,攻擊者可以通過后門繞過一個正常的身份驗證,以實現(xiàn)未經授權的遠程訪問。 Dos 是一種通過內存破壞計算機資源的攻擊,以阻止授權請求訪問設備。 Exploits 是通過利用小故障、bug 或漏洞的指令序列,導致主機或網絡中出現(xiàn)無意或不受懷疑的行為。 Generic 是一種針對所有塊密碼的攻擊,在不考慮塊密碼配置的情況下導致沖突。 Reconnaissance 收集有關計算機網絡的信息,以逃避其安全控制。Shellcode 是通過一小段代碼來利用軟件漏洞的有效載荷,通常從一個可以控制回收系統(tǒng)的攻擊者那里啟動一個命令shell。 Worms 為一段惡意程序,通過用戶觸發(fā),在計算機網絡上傳播,并根據(jù)目標計算機的安全故障復制自己。
本文所選特征集分為流特征、基礎特征、內容特征、統(tǒng)計特征、時間特征、生成特征以及標簽特征總共85 維特征,如表2 所示。
(1)流特征包含源ip 地址、源端口號、目的IP 地址、目的端口號及傳輸協(xié)議類型。
(2)基礎特征包括狀態(tài)、流持續(xù)時間、傳輸字節(jié)數(shù)、傳輸總包數(shù)、重傳或丟失的包數(shù)、生存時間等一些基本屬性特征。
(3)內容特征包括從TCP 協(xié)議和服務(如HTTP)的信息中提取的屬性,如源及目的tcp 窗口通告值、源及目的tcp 序列號、http 請求/響應事務連接的深度、傳輸數(shù)據(jù)長度等內容。
(4)時間特征是統(tǒng)計流處于活動狀態(tài)下的一些時間屬性特征,如源及目的抖動、開始時間、結束時間、tcp 連接設置的往返時間、SYN 和SYN_ACK 包之間的時間、SYN_ACK 和ACK 包之間的時間、流處于活動狀態(tài)下最大/最小連續(xù)秒數(shù)、流處于活動狀態(tài)下每秒傳輸?shù)钠骄止?jié)數(shù)和平均包數(shù)等。
(5)統(tǒng)計特征包括包長度、包間隔時間的最大值、最小值、中位數(shù)、平均值、方差等數(shù)理統(tǒng)計上的特征,以及tcp 協(xié)議中出現(xiàn)syn、ack、fin、cwr標志包的數(shù)量。
(6)生成特征分為通用特征和連接特征,通用特征由一組流標識符的屬性產生的關系特征,連接特征通過在特定時間內掃描主機的網絡事件,例如每100 個網絡連接生成這些類型的特征,以檢查網絡攻擊。
(7)標簽特征包含是否惡意label 以及攻擊類別名稱attack_cat 兩個特征,正常流量,label為0,惡意流量label 為1。
表2 特征集
為了可以高效的識別出加密流量的類別,本文設計了基于集成學習的惡意加密流量檢測方案,該方案包含特征提取模塊、映射模塊、特征工程模塊、集成訓練模塊、算法優(yōu)化模塊和評估模塊六個模塊,如圖1 所示。 其中原始數(shù)據(jù)集是pcap 包格式文件,包括良性加密流量以及惡意加密流量,通過對數(shù)據(jù)集進行特征提取及映射操作后導入到模型進行學習,訓練出檢測惡意加密流量測試模型,最后對其進行評估。
圖1 基于集成學習的加密流量檢測方案
本方法對數(shù)據(jù)的預處理分兩步,第一步特征提取,由于原UNSW-NB15 數(shù)據(jù)集中只有49 維特征,所以需要從Pcap 包提取新增的特征添加至數(shù)據(jù)庫中。 特征提取模塊采用數(shù)據(jù)流分析工具Argus、 Bro 和NetMate 以及自定義特征提取算法對數(shù)據(jù)進行特征提取。 第二步標簽映射,通過與UNSW-NB15 公開數(shù)據(jù)集GT 文件交叉檢查為數(shù)據(jù)集貼標簽。
圖2 特征提取
(1)工具提取特征。 Argus 和Bro 兩種工具用于提取流特征、基礎特征、內容特征和時間特征四類,其中Bro 根據(jù)配置為從數(shù)據(jù)集pcap 文件中創(chuàng)建CONN、 HTTP 和FTP 日志文件。CONN 文件包括在pcap 文件中看到的所有連接,HTTP 文件包括所有HTTP 請求和響應,F(xiàn)TP文件包括FTP 服務的所有事件。 NetMate 用于獲取統(tǒng)計特征,通過修改規(guī)則文件獲取特征向量統(tǒng)計上的值,獲取過程中只考慮UDP 和TCP 傳輸,每個傳輸方向至少有一個數(shù)據(jù)包,且傳輸至少一個字節(jié)的負載內容,排除了沒有有效負載的流。
(2)算法提取特征。 生成特征及標簽特征通過自定義算法獲得,生成特征根據(jù)數(shù)據(jù)包的屬性信息進行提取,例如特征is_sm_ips_ports 由源IP、源端口、目的IP 和目的端口作為輸入判斷源和目的IP 地址,以及源和目的端口是否相同,若相同返回1,不同返回0,這個特征可以幫助識別DDos 攻擊;特征ct_state_ttl 由源生存時間值、目的生存時間值和協(xié)議相關狀態(tài)作為輸入,對數(shù)據(jù)源和目的生存時間以及協(xié)議狀態(tài)進行特定規(guī)則的匹配,如果符合其中一條規(guī)則,則將規(guī)則對應的值賦值給ct_state_ttl,否則賦值為0,最終返回ct_state_ttl,這個特征可以根據(jù)生存時間值及協(xié)議狀態(tài)來識別某些惡意攻擊。
映射模塊完成特征的匹配,負責將提取的data.csv 數(shù)據(jù)文件與數(shù)據(jù)集UNSW-NB15 中的標簽文件UNSW-NB15_GT.csv 進行交叉驗證檢查,將獲取的85 維特征通過流特征五元組以及時間戳進行匹配,以確保同一記錄的特征對應,將UNSW-NB15_GT.csv 中同一記錄的標簽分配至data.csv 中的記錄,得到有正確標簽的lab_data.csv 數(shù)據(jù)文件。
特征工程模塊將接收到的lab_data.csv 數(shù)據(jù)文件首先以8 ∶2 的比例分為訓練集和測試集,訓練集用于模型訓練,測試集用于檢測訓練后模型的檢測結果。 特征工程模塊分為四個部分:數(shù)值化、標準化、特征選擇和主成分分析(PCA)法降維,如圖3 所示。 通過pandas 對lab_data.csv文件進行數(shù)值化處理,轉化為矩陣,移除一些例如ip 地址、端口等相關性不大的標量特征,并且使方案和基于端口的流量識別分離。 利用numpy,根據(jù)訓練最大值和最小值對訓練集和測試集的數(shù)據(jù)歸一化處理,映射到[0,1]區(qū)間,提高迭代求解的收斂速度以及求解的精度,標準化則是將數(shù)據(jù)集中某一列的值縮放成均值為0,方差為1 的正態(tài)分布狀態(tài),使得不同量度的特征具有可比性。
圖3 特征工程模塊
特征選擇判斷某特征對最后的分類結果是否有影響,如果通過某特征進行分類和隨機分類的結果相似,那么此特征可刪除,提高機器學習效率。 用于特征選擇的方案是使用基于Python和scikit-learn 庫工具實現(xiàn)的線性決策樹,為了優(yōu)化決策樹的性能,避免過擬合,采用隨機參數(shù)搜索的方法對決策樹的最大深度和最小葉面積進行調參。 為了簡化算法操作并進一步簡化特征集,使用PCA 主成分分析法去除高維度的冗余特征,降低特征集維度,達到各個特征維度間線性無關的目的。 PCA 降維得到的向量需再次進行特征選擇,刪除不相關的特征,減少向量的維數(shù),完成特征工程所有步驟。
集成訓練模塊與算法優(yōu)化模塊具有高度的相關性,本文的集成訓練模塊采用隨機森林算法,通過隨機搜索和遺傳算法相結合的混合算法進行隨機森林參數(shù)調優(yōu),通過迭代的方式強化隨機森林分類器。 集成訓練模塊將處理好的訓練集連同隨機森林分類器一同傳入到算法優(yōu)化模塊中,算法優(yōu)化模塊采用隨機搜索算法對隨機森林分類器參數(shù)進行調優(yōu)及交叉驗證,得到調參后的隨機森林并傳回到集成訓練模塊中。 將處理好的訓練集送入調參后的隨機森林分類器中,通過交叉驗證進行模型的訓練,得到訓練模型。 最后通過測試集對訓練模型進行測試評估。 集成訓練與算法優(yōu)化模塊的運行流程如圖4 所示。
圖4 集成訓練與算法優(yōu)化流程圖
評估模塊從兩方面進行評估,一方面是使用監(jiān)督分類中的準確率(accuracy)、精確率(Precision)、召回率(recall)、F1 比較不同算法的分類性能。 另一方面是對比不同類特征集的分類性能。
準確率指真實正類樣本和真實負類樣本中模型產生分類結果正確所占的比例:
其中TP 表示真陽性,TN 表示真陰性,F(xiàn)P 表示假陽性,F(xiàn)N 表示假陰性。
表3 混淆矩陣
精確率指模型分類為正類樣本中真實正類所占的比例:
召回率指所有真實正類樣本中模型分類為正類所占的比例:
F1 為查準率和查全率的調和平均值:
數(shù)據(jù)集的正負樣本不同分布可能導致評價指標的數(shù)值有較大的浮動,ROC 曲線即真正例和假正例的關系曲線不會隨不同正負樣本分布而變化,因此也常作為評價參數(shù)。 由于曲線難以評估,引入ROC 曲線下的面積Roc_auc 來對ROC 曲線進行量化,當值為1 時代表分類器是完美分類器。
本方法在Linux 環(huán)境下采用Python 實現(xiàn)并測試, 采用Ubuntu 16.04 操作系統(tǒng),Inter Core i5處理器,4G 內存。 Numpy、Pandas 和Scipy 負責對數(shù)據(jù)進行處理、分析、計算,Sklearn 負責調用所需的機器學習算法,Argus、Bro 及NetMate 負責特征的提取工作。
樸素貝葉斯(NB)、神經網絡(NN)、支持向量機(SVM)、邏輯回歸(LR)、決策樹(DT)和基于集成學習的隨機森林(RF)六種分類器都是基于已有模型算法,在Python 中使用sklearn 庫進行調用,通過隨機搜索算法對六種算法的參數(shù)進行調整并經過五次交叉驗證的評估后,在訓練集和測試數(shù)據(jù)集上運行,結果如表4 所示。 結果表明運用集成學習的隨機森林算法性能最好,其次是決策樹和神經網絡,邏輯回歸和樸素貝葉斯的性能一般,最后SVM 的分類性能最差。
表4 算法分類性能對比
進一步比較隨機森林、決策樹、神經網絡和邏輯回歸四種分類器的分類效果,如圖5 所示,基于集成學習的隨機森林分類器各項指標均高于其他三類分類器,其次決策樹和神經網絡分類器的各項性能指標幾乎相同,最后邏輯回歸分類器的查全率雖然僅次于隨機森林,但其查準率和F1 值卻低于決策樹和神經網絡。 綜合來看隨機森林、決策樹以及神經網絡三種分類器可能更適用于加密流量的識別分類。
圖5 四種分類器分類性能折線圖
采用隨機森林分類器,通過對比試驗確定哪類特征對識別結果影響最大,結果如表5 所示。
表5 四類特征集分類性能對比
分類性能折線圖如圖6 所示,可以看出各特征集的準確率和Roc 幾乎相同,但總特征的查準率、查全率以及F1 指數(shù)的結果均高于它的三個子集,這說明特征集的減少會造成一定程度的識別結果變低,分類性能下降的后果。 其次就是統(tǒng)計類特征子集的分類性能優(yōu)于工具類特征子集和時間類特征子集,這意味著對一些基于統(tǒng)計值的特征可能對加密流量的識別更有意義。
圖6 四類特征集分類性能折線圖
本文在加密技術的應用日益增長的背景下討論了加密流量的識別分類問題,提出了一個基于集成學習的惡意加密流量檢測方案,實現(xiàn)了良性加密流量和惡意加密流量之間的識別分類。通過對比試驗可以看出針對加密流量識別這一應用場景,基于集成學習的算法要優(yōu)于基于傳統(tǒng)機器學習的算法,基于統(tǒng)計類的特征集對惡意加密流量的檢測也更有研究意義。