摘 要
隨著互聯網的發展及政務、商務領域電子化的普及,基于信息安全和隱私保護的需求,以及人們的信息安全意識日益提高。現階段,數據的傳輸和通信大量采用加密技術,使加密流量呈爆發式增長。加密流量在保護個人數據安全的同時也讓惡意流量的傳播變得更加隱蔽,惡意加密流量檢測已經成為信息安全領域的一個重要研究方向。基于此,提出一種基于 JA3 指紋識別技術的惡意加密流量識別方法,在傳統 JA3 技術的基礎上通過聚類法識別惡意流量,不經過解密即可對加密流量進行識別。
進入 21 世紀以來,隨著互聯網信息量的激增和流量加密手段的不斷豐富,隱藏在海量加密流量中的惡意加密流量也正以指數級速度增長,給社會和個人財產帶來巨大威脅。近年來,層出不窮的勒索軟件將惡意代碼加密后攻擊并控制用戶客戶端,每年可造成數以億計的經濟損失。
大多數的惡意加密流量并不是從零開始編寫的新型惡意加密流量,而是通過對已有的惡意加密流量進行代碼復用和修改而生成的變體。同一惡意加密流量的不同變體在代碼和行為上都較為相似,通常將這種功能、行為類似的惡意加密流量歸為同一個惡意族簇。同一個惡意族簇的加密流量通常會調用相同或相似的函數,執行類似的行為,包括系統行為和網絡行為 。因此,可以利用惡意加密流量的這一特征對其進行特征性檢測。
惡意加密流量檢測已經成為信息安全領域的一個重要研究方向,目前主流研究方向包括以下 3 種:
(1)深度數據包檢測方法。深度數據包檢測(Deep Packet Inspection,DPI)方法是指基于代理或防火墻來解密所有加密的流量,通過對所有數據包進行逐個解密和檢測,將解密后的數據與已有病毒庫等惡意流量代碼資源庫進行比對,是目前所有檢測方法中最準確的,也是實施難度最大的,受個人隱私和商業秘密限制。并且,隨著加密手段越發復雜,大規模大流量數據包的解密對服務器的算力也有著更高要求,算力成為該方法的發展瓶頸,使其在大型和公共網絡中的使用受限。
(2)基于行為分析的檢測方法。基于行為分析的檢測方法是指使用通信模式對流量進行分類,可以部署用于任意流量捕獲。通過測量流量特征對惡意加密流量進行識別,這些模式是根據流量特征計算出來的,可以根據這些模式的相似性對加密流量進行分類,且不需要了解底層協議。基于行為分析的檢測方法需要大量流量特征作為學習庫,正確的特征選擇是成功使用該方法的關鍵,但在面對一些偽裝成正常流量的惡意加密流量時便難以將其識別出來,因此,行為分析結果的準確度受特征選擇影響較大,導致系統穩定性受限,并且由于很多研究機構的特征資源庫并不是開源的,導致特征庫資源獲取也成為該方法受限的因素之一。
(3)指紋法。指紋法是指在加密連接的握手階段利用觀察到的未加密信息中的特定數據包進行惡意流量識別,通過檢查來自每個流的幾個沒有被加密的分組,將捕獲到的指紋信息與指紋庫中的惡意流量指紋進行比對,根據比對結果對惡意流量進行識別。由于在握手階段惡意流量尚未進行加密,所以該方法準確性和穩定性較高。
本文對傳統指紋法進行改進,克服了該方法只能識別已在指紋庫中的指紋的缺點,大幅提高了對未知惡意加密流量的識別準確性。
1
相關研究
1.1 安全套接層 / 傳輸層安全協議
安全套接層 / 傳輸層安全協議(Secure Sockets Layer/Transport Layer Security,SSL/TLS), 是目前被廣泛使用的加密協議之一,用于加密互聯網上的大部分流量。其前身是從 1995 年開始發展的 SSL 協議。SSL/TLS 是傳輸控制協議 /網 際 協 議(Transmission Control Protocol/Internet Protocol,TCP/IP)模型的第 5 層協議,為超文本傳輸協議、文件傳輸協議、簡單郵件傳輸協議等應用協議提供加密數據傳輸。
SSL/TLS 可以在虛擬專用網絡中使用,該協議提供通信方的認證、消息的保密性和完整性。目前,SSL 已逐漸被 TLS 取代,TLS 目前主要有 4 個版本,分別是 TLS1.0、TLS1.1、TLS1.2和 TLS1.3。如 今, 大 部 分 Web 服 務 器 都 支 持TLS1.2,而 TLS1.3 作為 TLS1.2 的升級版,在握手方面提高了安全性和速度,支持 TLS1.3 的服務器也在逐步增加。
TLS協議主要提供3個基本屬性,如下文所述。
(1)身份驗證。服務器的身份驗證是強制性的,客戶端的身份驗證是可選的。服務器和客戶端可以使用不對稱或對稱方法進行身份驗證。
(2)保密性。TLS 連接建立后,通過網絡發送的所有數據都將被加密,只有通過終端設備可以看到明文數據。實際的數據傳輸受握手期間建立的對稱密鑰的保護。
(3)數據完整性。數據無法以任何方式修改而不被檢測到。握手完成后,對等方交換整個握手的消息認證碼,這可以防止對握手的任何部分進行修改。消息摘要也保護所有后續發送的數據。
SSL/TLS 作為常用惡意加密程序的加密工具,可以使惡意流量隱藏在噪聲中。TLS 握手過程如圖 1 所示。

圖 1 TLS 握手過程
當啟動 TLS 會話時,客戶端將在 TCP 的 3次握手后發送 TLS 客戶端 Hello 數據包,數據包及其生成方式取決于構建客戶端應用程序時使用的包和方法。服務器如果接受 TLS 連接,將使用基于服務器和配置以及 ClientHello 中的詳細信息制定的 TLS ServerHello 數據包進行響應。
1.2 JA3 指紋法
JA3 指紋法是一種創建 SSL/TLS 客戶端指紋的方法,即對傳輸層安全應用程序進行指紋識別的方法,可以用于威脅情報共享。JA3 于 2017年 6 月首次發布在 GitHub 上,是 Salesforce 研究人 員 John Althouse、Jeff Atkinson 和 Josh Atkins的作品。所創建的 JA3 SSL/TLS 指紋可以在應用程序間重疊,但仍然是一個較好的妥協指標。指紋識別是通過創建客戶端問候信息的 5 個十進制字段的哈希來實現的,該消息在 SSL/TLS 會話的初始階段(握手)發送。TLS 握手是通信雙方之間連接的初始部分。在這個階段,通信雙方交換連接參數并建立對稱密鑰。握手是 TLS連接中唯一未加密的部分,服務器用 ServerHello消息、證書和密鑰的服務器部分進行響應。第二輪完成密鑰建立協議,并切換到加密通信。JA3 指紋創建過程如圖 2 所示。

圖 2 JA3 指紋創建過程
(1)證書接入層。包含獲得新 TLS 證書以及為提取新 TLS 證書特征做準備,該層是整個JA3 指紋創建過程的準備階段,為后續證書提取、數據處理和對比結論輸出提供輸入,實現了對未知 TLS 證書與指紋庫進行驗證對比的輸入功能。
(2)證書提取層。包含提取 TLS 版本、提取可支持的密碼、擴展提取、提取可支持的橢圓曲線和提取橢圓曲線格式,該層是 JA3 指紋創建過程的提取階段,將后續數據處理和對比所需要素提取備用,包括十進制字段、橢圓曲線和密碼等,實現了對未知 TLS 的分解功能。
(3)數據處理層。包含整理提取到的要素、將要素轉換為字符串、連接字符串、創建客戶端問候信息的十進制字段的哈希和創建 JA3 指紋,該層是 JA3 指紋創建過程的計算階段,將前期提取到的字符、字段、橢圓曲線和密碼等要素進行一系列數據處理,實現了生成新的 JA3指紋的功能。
2
聚類法改進 JA3
傳統 JA3 指紋法的缺點是比較依賴已有指紋庫,面對全新和未造成威脅的惡意加密流量識別率較低,若該全新的惡意加密流量的指紋特征與指紋庫中已有特征完全不符,則 JA3 指紋法就不能將其有效識別。為了改善這一缺點,本文使用 CD-HIT 聚類法對傳統 JA3 指紋法進行改進,以達到高效識別全新未知惡意加密流量的目的。
2.1 聚類分析法
基于 JA3 指紋法的聚類分析法是通過將總結過的安全無害的流量特征作為基礎模板,利用惡意加密流量潛伏在正常流量中時會導致整體流量特征發生變化這一特點,來對非法惡意流量進行檢測,并對安全無害和含有惡意加密流量之間的區別進行分析整理,不斷擴充指紋庫來強化對全新陌生的惡意指紋進行識別的能力。
JA3 指紋在經過聚類分析后,便可以通過捕獲流量中集群分布特征對惡意加密流量進行識別,且得出規律性的結論。如果整體流量特征與已知安全流量特征相符,則該流量可被認為是安全流量;如果整體流量特征與已知安全流量特征均有較大偏差,則該流量有較大可能被認為是惡意加密流量,進而可以對該流量進行隔離分析。
安全流量的聚類和包含惡意加密流量的聚類如圖 3、圖 4 所示。

圖 3 安全流量的聚類

圖 4 包含惡意加密流量的聚類
收集網絡流量中安全流量和包含惡意加密流量的數據。藍色圓圈代表 JA3 指紋的簇,屬于安全流量的通信,可以用來分析捕獲到的未知流量,捕獲到的未知流量可能既包含安全流量又包含惡意加密流量,或者全為安全流量,或者全為惡意加密流量。圖中的綠色圓圈代表安全流量的簇。紅色圓圈代表惡意加密流量的集群。如果捕獲的流量也是安全的,那么該流量應該與已知的安全流量相似,在圖形上顯示為所有安全流量的特征均在 JA3 指紋簇中,沒有明顯凸出。但是,如果捕獲到的流量中存在惡意加密流量,那么該流量可能會明顯偏離已知的安全流量,在圖形上顯示為不符合安全流量特征的部分與 JA3 指紋簇有較大偏差,會在圖上出現明顯突出,即使有些惡意加密流量會攜帶部分安全流量的特征,這部分特征在圖上顯示為該惡意加密流量的一部分在 JA3 指紋簇內,但另一部分會有明顯不同。如圖 4 所示,該檢測將 JA3 指紋簇集的結構與已知流量進行比較,能夠檢測出全新未知的惡意加密流量 。
基于聚類法改進 JA3 指紋識別過程如圖 5所示。

圖 5 基于聚類法改進 JA3 指紋識別過程
利用聚類法對傳統 JA3 指紋識別法進行優化,通過接入抓取到的疑似惡意加密流量信息,經過 CD-HIT 生成聚類群,經離散度量后生成量化的聚類模型,最終將該模型補充至 JA3 的指紋庫中。
2.2 聚類的基本模型
聚類是將實驗數據分成相似組的方法。以分類聚集的方式對實驗數據進行劃分,使聚集在一起的數據有著更多的相似特征。聚類可以分為硬聚類和軟聚類 ,其中,硬聚類是指每個數據被確定地分到某一個適合該數據特征的組;軟聚類是指某個數據可以屬于多個組,但屬于某個組有一定概率。例如,實驗數據 m,在硬聚類分類法中,屬于 C 組;而在軟聚類分類法中,屬于 A 組的概率為 20%,屬于 B 組的概率為 30%,屬于 C 組的概率為 50%。
對于不同的聚類算法。其主要區別在于點與點之間相似度的定義。因此,每種方法對不同類型的輸入數據表現不同。常用模型有以下幾種。
(1)分布模型。分布模型是根據聚類中的數據在某一特征下的概率來決定該數據的分組情況。典型應用為期望值最大化算法。
(2)質心模型。質心模型是利用一個點到一個聚類的分配取決于它到聚類中心的距離這一特點對數據進行分組。迭代計算聚類中心,直到找到局部最優。典型應用為 K- 均值(K-Median)算法。
(3)密度模型。密度模型是利用不同特征的數據擁有不同且特定的密度這一特性來進行搜索的方法。典型應用為基于密度掃描(Density-Based SCAN,D-B 掃描)和光學算法。
(4)連通性模型。連通性模型是將所有鄰近的數據逐級分類并加以觀察的方法,分為正向分類和反向分類兩種方法。其中,正向分類法是從整個集群開始,根據細分特征將所有數據的完整集群逐漸分解成更小的集群;反向分類法是從每個數據自身出發,最開始都在自己的簇中,隨著不同的特征分類,簇逐漸合并。連通性模型也稱為分級聚類方法,其缺點是對大型數據集不是很有效。典型應用為 CD-HIT 法,本次設計就采用了此方法。
在生物信息學中,CD-HIT 法常被用于 DNA分類,其最大的優點是簡單和快速。如果兩個數據的共享部分存在相符的特征,則它們可以被分類在同一聚類中。這個最小共享部分被稱為相似性閾值的百分比 。因此,比較兩個數據的長度通常足以確定兩個序列是否在同一簇中。這避免了許多不必要的耗時比較,在實踐中,這種算法是非常高效的。整個算法分兩步工作,在第一步中,輸入數據集按大小排序,在第二步中,數據按降序處理。已處理的數據依次與已經形成的聚類中最長的樣本進行比較。如果它超過相似性閾值,則被分配到最佳匹配的聚類;反之,將創建一個新的集群。所有樣本都以這種方式處理。
以上所列各種模型均有相應的優缺點,可根據實際使用需求進行應用,選擇最適合的模型來使其優勢最大化。
2.3 度量方法
聚類算法各種模型的計算都依賴度量,只有通過度量,才能對獲取到的多個實驗數據之間的距離進行測量和量化,進而對其進行分類。
常用的度量方法主要分為真實度量和離散度量。本次設計使用的聚類 JA3 指紋識別中的度量方法屬于離散度量,是專為 CD-HIT 開發的一種離散度量方法。
假設
為進行聚類的兩組離散值,
的相似性為 y,將
進行對比,
為
中較大的集合,則相似性 y 的算法為:

CD-HIT 法通過對所有實驗數據進行分別度量,生成一套完整的度量結果,再將該結果用于連通性模型,進行 CD-HIT 反向分類,得到所有數據的詳細聚類。以此聚類結果作為數據庫,當需要對新的陌生數據進行識別判斷時,就可通過與具備足夠數據特征聚類的數據庫進行對比,進而得出結論。在完成所有數據的度量和聚類后,即可得出最大相似度、相似度和某個數據的最近族簇等聚類屬性。
當該 CD-HIT 法用于 JA3 指紋識別的聚類時,對于 JA3 指紋數據中可能出現的同一數值可代表多重含義的情況,CD-HIT 法用于 JA3 指紋數據的每個部分。
以 CD-HIT 法對 JA3 指紋數據進行聚類后,就可生成 JA3 指紋專用聚類庫,在對聚類庫進行分析和分類后就可通過對比聚類屬性將其用于加密流量識別。JA3 指紋的聚類屬性主要有 3個,分別是組內聚類的平均距離、集合中兩個聚類的最大距離和最大相異度。在對比聚類時必須綜合考慮這 3 個聚類屬性,否則將會導致比對結果出現某一個方向的傾向性。例如,將從某站點抓取的全新流量與該站點的安全流量進行比對,通過比較聚類之間的平均距離即可判斷新的流量是否具有隱藏惡意加密流量的可能性,如果含有惡意加密流量,則平均距離這一屬性將會有顯著區別。當然,在比較平均距離的同時也需綜合比較聚類的最大距離和最大相異度,最終根據綜合比對情況得出相應結論。對不同類型的流量數據來說,其對應的 3 個聚類屬性具有不同的權重分布,需要針對流量數據類型進行具體分析,在實際操作過程中,系統已根據常見流量數據類型進行預分類,可實現快速分配聚類屬性的權重。
經過以上步驟,在面對未知加密流量時就可以結合指紋庫和聚類庫對其進行識別,克服了傳統 JA3 指紋法對新型惡意加密流量識別率低的缺點。
2.4 實驗結果
在實驗室數據庫中選取一定數量的安全流量和惡意加密流量作為實驗樣本,分別以傳統JA3 指紋法和基于聚類法改進的 JA3 指紋法對惡意流量進行識別,實驗結果如表 1 所示。
表 1 惡意流量識別實驗結果

通過實驗可以得出,基于聚類法改進的 JA3指紋識別方法對在庫惡意流量的識別率與傳統JA3 指紋法識別率相當,但對未入庫的全新惡意流量的識別率提升較大。
3
結 語
隨著加密手段的不斷豐富和加密用戶群體的快速擴張,可以預見,未來加密流量通信將會基本取代明文通信,在保護個人信息安全的同時也為惡意加密流量提供了更適宜的隱蔽空間,這些惡意加密流量對個人財產和社會安全有著極大的安全隱患,所以目前迫切需要增強網絡空間的加密流量感知與識別的網絡監管能力,構建基于“可感知、可識別、可防護、可處置”的一體化網絡監管體系,從而提升網絡空間信息安全防護能力。本文提出的基于 JA3 指紋識別的惡意加密流量識別方法,通過使用 CD-HIT法對未知流量進行聚類,克服傳統 JA3 無法識別全新惡意流量特征的缺點,使其在初次面對全新惡意流量時仍可通過聚類分析的方法進行快速且有效的識別。但是目前仍存在一些問題及不足,首先是 JA3 指紋庫的獲取,目前公開的主流 JA3 指紋庫主要可以從 github 和 ja3er 上獲取,其中有效指紋約有上百條,規模不足以應對大流量的加密流量篩選識別,但若想從用戶的加密流量中獲取指紋,就需要對其進行解密,這就涉及用戶隱私及授權問題。通過招募足夠數量的測試用戶作為志愿者,可以有效解決指紋庫的隱私和授權問題。其次是以何種形式、何種規模組織實驗,如何通過實驗模擬出更貼近真實網絡環境中的復雜加密流量數據。以上問題將是我們未來需要對惡意加密流量識別技術繼續研究和推進的關鍵技術點。
中國信息安全
商密君
信息安全與通信保密雜志社
深圳市網絡與信息安全行業協會
信息安全與通信保密雜志社
D1Net
聚銘網絡
一顆小胡椒
GoUpSec
中國信息安全
聚銘網絡
系統安全運維