基于網絡數據流的未知密碼協議逆向分析
摘 要:
針對新的應用和協議不斷涌現而導致的網絡數據流無法識別的問題,對未知密碼協議逆向分析技術進行了研究。首先,對密碼協議的行為模式進行分析,將密碼協議分為安全連接建立階段和數據傳輸階段;其次,分析了安全連接建立階段和數據傳輸階段的數據特點,提出從安全連接建立階段入手進行密碼協議逆向分析的思想;針對密碼協議變長字段多的特點,提出了隨機采樣、多序列對齊、數據挖掘相結合的字段劃分方案,提高了字段劃分的準確性和效率;分析了長度字段的特點,提出了長度字段的特征提取方法。基于網絡數據流的未知密碼協議逆向分析技術為網絡監管提供技術支撐。
由于用戶對隱私數據保護的需求不斷增加,促使網絡應用大量使用密碼協議,在網絡數據流中的加密流量的比例不斷提高。為了對加密網絡應用進行網絡監管,必須對加密流量進行識別。
當 前, 大 量 的 網 絡 應 用 使 用 私 有 的 密 碼協 議 進 行 加 密, 如 即 時 通 信 軟 件 WhatsApp、Telegram, 代 理 軟 件 Shadowsocks、V2Ray 等。對這些流量進行網絡監管的一種重要方法是對密碼協議的格式進行逆向分析,恢復協議格式。
目前網絡協議格式解析技術主要包括 2 類方法,即基于目標主機程序執行軌跡的方法和基于網絡數據流信息的方法。其中,基于目標主機程序執行軌跡的方法借助特定二進制分析平臺對應用程序執行路徑進行跟蹤,從而恢復網絡協議格式。該類方法需要在目標主機上獲取執行協議的應用程序,應用局限性較大,無法真正滿足網絡環境對數據報文監測需求。基于網絡數據流信息的方法主要以捕獲的網絡流量數據為分析對象,依據協議字段的取值變化頻率和特征推斷得到協議格式,但目前研究主要是針對明文協議,對于密碼協議的逆向分析研究較少。
本文對密碼協議的執行流程進行了分析,將密碼協議交互過程分為安全連接建立階段和數據傳輸階段,重點對安全連接建立階段的協議格式進行分析,提出了基于網絡數據流的密碼協議逆向分析方法,通過逆向得到的數據格式,可以得到協議識別方案。
1 研究現狀
針對文本協議、二進制協議、密碼協議,研究人員提出了基于網絡數據流的未知協議逆向分析的不同分析方法。
針對文本協議的逆向分析研究較早。2004年,Beddoe 通過引入生物信息學的多序列比對算法,對報文的結構信息進行提取,稱為 PI 項目;2007 年,Cui 等 人 依 賴 于 ASCII 為 典 型字符編碼的定界符,提出了 Discoverer 方案,提 取 字 段 域 格 式;2014 年, 鐘 曉 歡 等 人 引入 TF-IDF 文本特征模型,對文本類協議消息進行分析;2014 年,詹成等人 提出一種基于統計分析的協議格式推測技術,利用 N-gram 方法得到候選特征詞集合,使用統計學中的 K-S(Kolmogorov-Smirnov)測試,篩選冗余特征詞。
針對二進制協議的逆向研究是為了彌補上述分析方法無法對二進制協議進行分析的問題來分析的。2009 年,Trifilo 等人提出方差分布的方法確定二進制特征;2013 年,羅建楨等人 采用基于位置的協議逆向方法,使用關聯挖掘方法,確定字段域邊界的可能位置;2014 年,Zhang 等人提出 ProWord 方法,設計關鍵字內接邊界和外接邊界的信息熵來確定字段域的位置。
針對密碼協議的研究相對較少。2015 年,朱玉娜等人 提出 SPFPA 方案,在序列模式挖掘和關鍵詞提出的基礎上,依照密文長度域啟發式識別規則,識別密文域;2019 年,何旭東等人 提出基于混合網絡軌跡的安全協議格式逆向方法,輸出目標協議軌跡的格式。
2 典型密碼協議分析
密碼協議是指兩個或兩個以上的參與者為完成密碼通信中某項特定任務而約定的一系列步驟。新應用使用的密碼協議通常是現有密碼協議的變體。本文對典型密碼協議的交互行為特點和數據特點進行分析,為未知密碼協議逆向分析提供技術支撐。
2.1 密碼協議交互行為分析
圖 1 和圖 2 分別給出了互聯網上常用密碼協議安全傳輸層協議(Transport Layer Security,TLS)和點對點隧道協議(Point-to-Point Tunneling Protocol,PPTP)的協議交互過程。不失一般性,密碼協議交互過程一般分為兩個階段:安全連接建立階段和數據傳輸階段。第一階段是建立安全連接,也稱為“密碼協議協商階段”,包括握手、認證和密鑰交換,在這個過程中通信雙方協商支持的加密算法,交換加密參數,互相認證并生成密鑰;第二階段采用第一階段產生的密鑰,按協商好的加密算法加密傳輸應用數據。

圖 1 TLS 協議的交互過程

圖 2 PPTP 協議的交互過程
在安全連接建立階段,密碼協議交互過程中,一個參與者在接收到對端在該階段需要傳輸的所有數據后,才會對該階段的數據進行處理,生成全部響應并發送。
在密碼協議從安全連接建立階段向數據傳輸階段轉換時,通常會在安全連接建立階段產生一個固定格式的雙向確認信息,確保安全協議的所有參與者生成了相同的密鑰。
2.2 密碼協議數據分析
安全連接建立階段,除文本信息外,還包括各種二進制值,如枚舉類型的二進制值、具有特定范圍的二進制值、隨機數等。枚舉類型的二進制值通常是協議的版本、協議的類型、可選參數集合等。具有特定范圍的二進制值通常表示長度信息。隨機數通常是消息認證碼、時鮮值、公鑰、簽名等。
數據傳輸階段通常不包含任何文本信息,其主要組成是表示協議類型、長度等的二進制域及密文域。其中,二進制域的長度分為固定長度和非固定長度。非固定長度的字段組成可能為:(1)長度、非固定長度二進制域;(2)長度、固定長度二進制域、非固定長度二進制域;(3)長度、長度、非固定長度二進制域、非固定長度二進制域。
3 未知密碼協議逆向分析
根據密碼協議交互行為特點及數據特點,本文設計了未知密碼協議逆向分析的步驟,并以 TLS 協議為例驗證了基于網絡數據流的逆向分析技術的有效性。
3.1 未知密碼協議逆向分析框架
未知密碼協議逆向分析框架包括 4 個主要部分,如圖 3 所示。

圖 3 未知密碼協議逆向分析框架
3.1.1 數據預處理
協議逆向的原始輸入為某個特定密碼協議的連續網絡數據流。先以會話和報文為粒度對輸入進行分割,再剔除原始數據中的冗余和干擾,如報文序列中可能出現的重傳、亂序、分片等。
3.1.2 密碼協議階段劃分
根據密碼協議交互特點,先根據時間特征和數據流方向特征將報文進行合并和排序,再針對合并后的雙向數據流的各種統計特征和熵特征,劃分密碼協議的安全連接建立階段和數據傳輸階段。
3.1.3 協議關鍵詞提取
協議關鍵詞提取階段,首先,通過隨機采樣獲取樣本的子集,對樣本子集進行多序列對齊;其次,利用對齊后的樣本以數據挖掘方法獲取報文載荷序列中的頻繁模式集;最后,根據啟發式方法計算頻繁模式是協議關鍵詞的概率,取概率大的頻繁模式作為協議關鍵詞。
3.1.4 協議格式識別
在獲取協議關鍵詞后,根據序列比對算法對關鍵詞之間的順序關系、從屬關系等進行識別,并對協議語義分析,對非定長字段進行進一步識別,獲取協議格式。
3.2 密碼協議階段劃分
根據第 2 節的分析,密碼協議劃分為安全連接建立階段和數據傳輸階段。
首先,對報文進行預處理。對于時間序列上連續的多個報文,如果這些報文都是同一個方向,即都是從客戶端發往服務器,或都是從服務器發往客戶端,則將這些報文組合成一個報文。用 + 表示報文方向為從客戶端發往服務器;用 - 表示報文方向為從服務器發往客戶端,用
表示報文到達的時間,則每個報文可以用二元組
表示。若報文的序列為
,則合并報文為
;若報文的序列為
,則合并報文為(
;若報文的序列為
,則不合并報文,即保留兩個報文;若報文的序列為
和
,也不合并報文。
其次,對密碼協議的交互行為進行初步識別。對于組合后的報文,取前 10 個報文進行分析,按照報文字節數(具體數值)、報文方向(+/-)、報文序號(
的下標 i )對報文進行統計分析,根據不同階段的統計特點,初步劃分出安全連接建立階段和數據傳輸階段。
最后,對密碼協議的交互行為進行精細化識別。對于初步劃分出的不同階段,分別計算不同階段報文序列的多元組熵,根據多元組熵的特征在加密和非加密流量數據上的明顯差異,進一步確定階段劃分的正確性。多元組熵特征是指在以 n 元組集合的形式對報文序列進行切割后,滿足不同長度、頻率條件的字符組集合的一系列熵值。
3.3 協議關鍵詞提取
對于 3.2 節劃分得到的安全連接建立階段的報文,利用層次化分析的方式進行字段劃分,然后進行協議關鍵詞提取。
一是隨機選取相同方向、相同序號的若干個報文,采用多序列比對算法,將報文進行對齊。在多序列比對算法之前隨機選取報文,可以有效地減小對齊所需的時間。對于隨機選取的報文進行對齊,協議中出現次數最多的不變字段仍然得以保存。在基于隨機采樣的多序列對齊后,完成了協議格式的初步提取,得到的不變字段中,包含了協議報文格式中包含的關鍵字,如版本號、枚舉類型的關鍵字等。二是對于對齊后的報文,將相同不變字段之間的部分作為輸入,通過數據挖掘的方法,得到兩個關鍵字之間的頻繁模式集。頻繁模式集挖掘得到的信息中通常包含了協議的子協議中包含的關鍵字。三是將不變字段和頻繁模式集組合,統一稱為協議的格式信息集。利用多模式匹配算法對所有樣本進行匹配,得到協議的格式信息集中的所有項在樣本中的存在性和位置信息,并根據格式信息集在所有樣本中出現的頻度,對協議的格式信息集進行更新,得到關鍵詞的候選集合。四是得到關鍵詞候選集合后,采用啟發式關鍵詞提取方法提取協議的關鍵詞。關鍵詞候選集合中的每一項稱為一個預選關鍵詞。按預選關鍵詞對所有報文進行分類,對于每一個預選關鍵詞,先計算類內報文的相似性、類間報文的相似性、分類后的類數、分類后報文結構的相似度;再采用概率因子圖模型,計算預選關鍵詞為協議關鍵詞的概率,取概率最高的前 N項為協議的關鍵詞。
3.4 協議格式識別
根據 3.3 節中得到的協議關鍵詞,以及協議關鍵詞在樣本中的位置,確定關鍵詞之間的順序關系、從屬關系及語義關系。
如果關鍵詞 A 與關鍵詞 B 出現的位置存在先后關系,則它們之間存在順序關系;如果關鍵詞 A 后總是出現關鍵詞 B,但是與關鍵詞 A相同位置的關鍵詞 C 與關鍵詞 B 之間不存在順序關系,則關系詞 A 與關鍵詞 B 之間存在從屬關系。
字段的語義是指協議將如何使用該字段,本文主要對長度字段相關的語義關系進行了分析。根據 2.2 節的分析,長度字段或者緊跟著關鍵詞,或者在關鍵詞后的固定位置上。長度字段的表示方法分為兩種:一種是采用固定長度的字符來表示長度;另外一種是通過某種固定格式表示長度。
對于采用固定長度字符表示長度的方法,第一步,計算報文樣本最大長度 M,然后,分別計算特征詞后固定位置固定長度的字符表示的長度的最大值 L,若 L 大于 M,則該固定位置固定長度的字符肯定不是長度字段。第二步,查找未被排除的字段與樣本長度的對應關系,若能對應上,說明該固定位置固定長度的字符是長度字段,否則,重復第一步和第二步,將其中的報文最大長度變換為關鍵詞到報文結尾的最大長度、關鍵詞之間的報文長度等。
對于采用固定格式表示長度的方法,首先,查找兩個關鍵詞之間是否存在頻繁項,該頻繁項出現的位置即是長度字段開始的位置。其次,嘗試對該字段開始的格式進行解析,查找長度字段與報文長度的對應關系,確定長度字段。
3.5 實驗結果
本文以 TLS 協議作為驗證協議,驗證了本文方法的有效性。
3.5.1 網絡數據流生成
驗證所需的原始協議流量數據集由作者所在實驗室局域網環境中采集得到。實驗室局域網環境中包括 12 臺普通臺式機、4 臺筆記本電腦、1 臺交換機(型號為 TP-LINK TL-SH6428)和 1 臺 流 量 鏡 像 服 務 器(Intel(R) Xeon(R) CPU X5670、60GB 內存、128GB 硬盤)。流量鏡像服務器在 2021 年 11 月 1 日至 11 月 5 日之間采集到所有數據構成了本文實驗結果所使用的原始協議流量數據集。
在獲取原始協議流量數據集后,將原始協議流量數據集中的流量,通過 tcpreplay 命令進行流量重放,通過開源軟件 Ntop 對原始協議流量數據集進行識別。Ntop 軟件中,標簽的不同數值表明不同的協議類型。由于本文使用 TLS協議驗證方案的有效性,因此,僅保留了對應TLS 的標簽的 50 000 條流量作為輸入。
3.5.2 未知密碼協議逆向分析
(1)數據預處理。先從 50 000 條 TLS 協議數據流中篩選得到包含完整的前 20 個數據包的流量,然后對其中的重傳、亂序和分片進行了處理,得到交互流程完整、協議格式準確的協議數據流。(2)密碼協議階段劃分。通過合并同方向的報文,并利用統計分析和多元組熵檢測的方法,將從服務器發往客戶端的 ChangeCipherSpec數據包作為分界點,準確地區分了安全連接建立階段和數據傳輸階段。(3)協議關鍵詞提取。成功選取 TLS 記錄協議版本號、記錄協議長度、握手協議類型、握手版本號等作為協議關鍵詞。(4)協議格式識別。成功恢復了記錄協議長度、握手協議長度、會話 ID 長度、擴展長度等字段,并進一步獲取了關鍵詞與長度字段的相互關系,恢復了 TLS 記錄協議的基本格式。
4 結 語
對密碼協議網絡流量的監管是網絡監管中的重點和難點問題,也是進行網絡對抗的基礎。在對已知密碼協議網絡流量監管方面,已有大量的研究成果和相應的監管產品,但是對于未知密碼協議網絡流量的監管技術目前仍處于探索階段。本文在未知密碼協議網絡流量監管的技術研究點之一,即基于網絡數據流的密碼協議逆向分析方面,展開了研究工作。一方面,對典型密碼協議的結構特點和數據特點進行了分析,采用基于網絡數據流的密碼協議逆向分析方法搭建了圍繞數據預處理階段、密碼協議階段劃分、協議關鍵詞提取和協議格式識別的未知密碼協議逆向分析的基本框架;另一方面,對于逆向分析的每個階段進行了算法設計,以 TLS 協議為對象,驗證了本文提出的基于網絡數據流的密碼協議逆向分析方法的有效性。