加密惡意流量優秀檢測思路分享
摘要
近年來,隨着機器學習、深度學習等人工智能技術的迅猛發展,其在圖像識別、語音識別和自然語言處理等領域已經得到大規模應用,可以為傳統方法很難解決或無法適用的問題提供有效的方案,也已經成為網絡安全領域中的熱門研究方向,比如將人工智能應用於惡意加密流量的檢測就是一種行之有效的方法。
本文介紹一種從加密流量中檢測惡意流量的方法,來自清華大學的HawkEye戰隊,他們在DataCon2020大賽中獲得加密惡意流量檢測方向的一等獎,該方法的思路具有很好的借鑒作用,希望帶給讀者一些思考。
一、前言
隨着TLS加密技術在互聯網上的普及,越來越多的惡意軟件也使用TLS加密方式傳輸數據。如何通過不解密的方式直接從大體量的加密流量中檢測出惡意流量,是學術界和工業界一直非常關注的問題,且已經取得了一些研究成果,但大多都是使用單一模型或多個弱監督模型集成學習的方法。
與常規的單分類器檢測方法不同,本文介紹一種使用多模型共同決策的方法[1],能夠在加密惡意流量的檢測問題上表現出優異的性能,總體思路是利用不同異構特征訓練多個不同的分類器,然后使用其檢測結果進行投票從而產生最終的判定結果。
接下來首先介紹總體架構,然后逐一對其中包含的各個子模型進行詳細介紹,最后做一個小結。
二、總體架構
該方法從數據包級、流級和主機級三個不同層次分別提取行為特征構建多個模型來提升對黑白樣本的識別能力,一部分模型使用多維特征進行綜合分析,還有一部分模型使用黑白樣本區分度較大且置信度較高的單維特征緩解多維特征中潛在的過擬合和誤報問題。
由於提取的多種特征結構是異構的,且具有不同的組織特點,所以並不適合將所有特征統一編碼輸入到單個模型中進行學習。該方法針對各類特征的特點分別構建合適的分類器,最后根據每個分類器的結果進行投票,以少數服從多數的原則產生最終的檢測結果。
整體架構如圖1所示,總共訓練了六個分類器,原則上分類器是奇數個則不會出現平局的情況,但由於最終有偶數個分類器,而流級分類器在單模型測試中表現較佳,所以如果最終投票結果為平局,則以流級分類器的結果作為最終結果。

三、子模型介紹
本節將從設計思路、特征提取與處理和分類器構建等方面對參與投票的六個子模型進行詳細介紹。
3.1 包長分布分類器
一般來說,功能或實現相似的軟件也具有相似的數據包體量分布特點,比如視頻軟件的下行流量通常遠大於上行流量,而惡意軟件的下行流量通常遠小於上行流量。如圖2所示,正常通信和惡意軟件通信在數據包長度上是不同的,瀏覽網頁時客戶端向服務端的請求數據包通常較少,而服務端回復客戶端的響應數據包非常多,但是惡意軟件完全相反,服務端僅向客戶端發送少量的控制命令,而客戶端因為進行數據回傳會向服務端發送大量的數據包。由於數據包體量特征不受數據加密的影響,所以非常適合用於加密流量的檢測。

將所有可能的帶方向的報文長度作為包長分布特征的一個維度,考慮到帶方向的報文長度的所有可能值是從64字節到1500字節,所以包長分布特征是一個約3000維的概率分布向量。統計出流量樣本中各個方向和長度的報文數量並除以報文總數就能得到包長概率分布向量。
對於模型選擇,首先考慮適合離散概率分布的KNN分類算法,單純使用包長分布特征訓練的KNN分類器在比賽中觸發了高檢出獎勵,但整體得分不高,將該分類器加入投票機制后,雖然沒有觸發高檢出獎勵但是得分更高,所以可以得出該方法可以降低誤報的結論。但由於KNN算法檢測效率低,最終考慮到檢測性能,采用了隨機森林分類器並讓其參與投票。
作者也嘗試了使用流級的包長分布特征進行分類器訓練,考慮到惡意流量樣本中也包含與正常服務的通信,但又無法識別其中的良性流,所以只將包含一條流的樣本拿出來作為訓練集,最終將不包含任何惡意流的流量樣本分類為正常,否則分類為惡意,但這種方法並不理想,筆者認為可能和訓練集中各個類別的數量和占比有關,也可能是這種方法本身效果不夠好。
3.2 證書主體分類器和簽發機構分類器
判別一個軟件是否惡意,不僅取決於其通信的內容,也取決於其通信的對象,所以在建立模型時有必要考慮流量樣本中的通信對象這一特征。在TLS建立連接的過程中,服務端發給客戶端的證書中subject和issuer字段分別代表客戶端的通信對象主體和證書的直屬簽發機構,subject和issuer中的common name字段通常是一個域名,而惡意軟件和惡意域名關聯的可能性較大,如圖3所示,在黑白樣本中惡意證書和正常證書的主體和簽發者是不一樣的,且都存在訪問頻次較高的值。

通過統計訓練集中的每個流量樣本的葉子證書所涉及到的不同subject和issuer的數量,並記錄每個流量樣本與其通信的頻數,可以采用詞袋模型分別將其編碼為特征向量。
最后訓練兩個基於先驗概率的朴素貝葉斯分類器對測試樣本進行分類,因為訓練集中已經包含了絕大多數正常流量的流行域名,所以如果一個測試樣本中所有證書的subject或issuer都不存在於訓練集中,則直接將其判定為惡意樣本。總之,正常樣本中訪問頻率較高的域名會對將樣本分類為正常貢獻更多的證據,而惡意樣本中訪問頻率較高的域名會對將樣本分類為惡意貢獻更多的證據。
3.3 通信IP地址分類器
除了證書主體和簽發機構,服務端IP地址也是一個表征客戶端通信對象的重要標識符,通常同一地區遭受同類惡意軟件感染的不同主機很可能會訪問相同的IP地址,所以流量樣本中對遠程IP地址的訪問情況可以為惡意流量的判定提供依據。
由於對惡意軟件服務端IP的訪問哪怕只有一次,也能判定其為惡意流量,所以並不記錄流量樣本與每個服務端IP的通信頻次,而是使用0和1來記錄是否存在與惡意IP的通信行為。最后也是使用朴素貝葉斯分類器對測試樣本進行分類。
3.4 流級多維特征分類器
除了對加密流量通過上述方法提取單維特征進行建模之外,為了提升檢測效果,也盡可能地從協議頭部和流量行為中提取比較通用的多維數據特征。
一條流可以由五元組相同的數據包確定,深入分析流級別的數據並提取了一千多維與載荷無關的特征,包含以下四部分:
(1)元數據:即單條流的基本統計數據,包含持續時間、總的流入/流出字節數、數據包個數;
(2)窗口序列統計特征:不僅提取了出入流的包時間間隔和包長度的平均值、標准差、最大值、最小值等統計特征,也使用馬爾科夫轉移矩陣的方式捕獲了相鄰數據包之間的關系;
(3)TLS/SSL握手包特征:客戶端和服務端進行握手時訓練集中的黑白數據在一些字段上具有不同的分布,所以提取此類相關特征。首先將客戶端和服務端使用的TLS版本進行one-hot編碼,其次將客戶端和服務器端的GMT Unix Time是否存在、是否使用隨機時間編碼為0/1特征,最后將客戶端和服務端的加密套件和擴展列表進行one-hot編碼;
(4)TLS/SSL證書特征:通常正常和惡意流量的服務端證書是不同的,所以提取了服務端證書相關特征。將證書是否自簽名、是否過期、版本號、證書有效期、公鑰長度編碼為0/1特征,並且將證書主體域名進行one-hot編碼嵌入多維特征。
最后采用擅長高維特征處理的隨機森林算法對如上多維特征進行分類,這種基於樹的方法也可以輸出特征重要性評分,有利於后續挑選重要特征、降低特征維度和刪除冗余特征。
3.5 主機級多維特征分類器
一方面,流級數據標記並不十分准確,因為惡意數據樣本中也會存在正常通信產生的良性流,比如惡意軟件可能會通過訪問谷歌來判斷網絡的連通性;另一方面,對每條流單獨提取特征時可能會漏掉流之間的關聯特征即主機級別的特征,比如惡意軟件在產生訪問谷歌這種正常流量行為之后可能要開始進行惡意的數據回傳,再比如有少量正常流也會符合惡意流的自簽名等特征而導致單條流被誤判。綜上,有必要對流級特征進行聚合提取主機級特征。
提取主機級特征時不僅要對總包個數、每條流的平均包個數、時間間隔、包長的均值等流級特征進行聚合,也要對自簽名流數量、過期流數量、有效期過長(比如超過100年)的流數量及其均值等證書相關特征進行聚合。此外,由於發現惡意IP的TLS半連接和無連接與正常IP的分布不同,所以對不同流的連接狀態和出現Alert的流數量也進行了統計。最后模型的選擇依然是隨機森林。
四、小結
本文介紹了一種加密惡意流量檢測方法,首先通過對加密流量進行深入分析和特征挖掘,提取了單維/多維特征,然后對包級/流級/主機級流量行為進行分層分析和學習,構建不同的分類器,最終通過多模型投票機制提升了檢測效率和性能。
除了統計和機器學習方法外,《基於深度學習的物聯網惡意軟件家族細粒度分類研究》驗證了深度學習在流量識別方向也具有很好的應用前景,充分展現了人工智能賦能網絡安全領域的可行性。