1 協議逆向工程概述
1.1 協議
協議是計算機網絡與分布式系統中各種通信實體鍵相互交互信息時必須遵守的一組規則和約定,這些規則明確規定了所交換的數據格式以及有段的同步問題,從而保證了雙方通信有條不紊、可靠地交換信息。
比較著名的網絡協議有TCP/IP協議棧中的一些協議,比如IP、TCP、UDP、POP3、SMTP、HTTP等。除了大量標准化的通信協議外,網絡中還存在大量私有協議,各種軟件廠商或個人處於經濟利益、安全、隱私等因素的考慮,並沒有公開協議細節;一些惡意軟件也采用了自己的私有協議防止被跟蹤和分析。
1.2 協議分析技術
協議分析技術主要分為兩大類:
(1)對已知協議的識別與分析。
(2)對未知協議的逆向分析。
第一類以協議特征(比如協議格式特征、端口特征、流量特征等)為基礎,識別應用使用的通信協議並根據協議規范對協議報文進行分析,前提是協議規范已知。
第二類在協議特征未知的條件下,通過協議報文或協議軟件執行過程分析得到協議規范(比如協議字段格式和協議狀態機),即協議逆向分析。
1.3 協議逆向工程
協議逆向工程是指在不依賴協議描述的情況下,通過對協議實體的網絡輸入輸出、系統行為和指令執行流程進行監控和分析,提取協議語法、語義和同步信息的過程,是工程化的協議逆向分析方法。隨着網絡規模的擴大和應用種類的增多,對協議逆向的准時性和時效性要求越來越高,自動化協議逆向分析技術成為人們追求的目標。
2 協議逆向分析流程
以協議規范描述模型為目標,協議逆向分析系統應當包括輸入預處理,協議格式提取,協議狀態機推斷三個階段。
2.1 輸入預處理
協議逆向的原始輸入為連續的網絡數據流或者處理網絡數據流的指令執行軌跡。要實現協議格式提取以及協議狀態機推斷,首先要以會話個報文為粒度對輸入進行分割。分析之前要提出原始輸入中的冗余和干擾,比如報文序列中可能出現的重傳、亂序、分片。會話划分和報文定界是網絡流量分析領域的重要研究方向。目前研究已較為成熟。
2.2 協議格式提取
字段符號特征和結構是格式文法的屬性。協議格式提取需依次經過字段識別、結構提取、語義與取值約束判斷三個步驟,才可識別每個報文對應的格式。對報文所有格式進行合並,得到統一的協議格式文法和各個報文結構屬性。根據分析對象的不同,協議格式提取技術分為兩類:
(1)基於網絡流量的協議格式逆向分析
(2)基於執行軌跡的協議格式逆向分析
第一類基於網絡流量的協議格式逆向分析技術,也叫作基於報文的協議逆向分析技術,或者報文序列分析技術。即以截獲的網絡數據流作為分析對象,依據協議字段的取值變化頻率和和特征推斷得到協議格式。其依據是:數據流中的當個報文是協議格式的一個實例,相同格式的報文樣本往往具有相似性,可以將具有相似性的報文匯集到一起,推斷他們所遵循的報文格式。
第二類是基於執行軌跡的協議格式逆向分析技術,也成為基於指令序列的逆向分析技術,或者指令序列分析技術。以指令執行軌跡為分析對象,利用動態污點分析技術跟蹤程序對報文的解析過程,並依據協議實體解析報文字段的具體過程實現協議格式的提取。
基於網絡流量的分析技術與基於執行軌跡的分析技術相比,存在以下優點:
(1)時效性強。在報文樣本數量大,協議種類多的情況下,運行速度快,能夠快速得到結果。
(2)對終端依賴小。在未知目標通信軟件的情況下,不需要跟蹤報文在終端運行情況。
(3)通用性強。報文序列分析方法不關心報文所在協議的層次,只對報文的格式進行分析。
基於網絡流量的分析技術與基於執行軌跡的分析技術相比,存在以下缺點:
(1)在僅提供正例網絡流量的前提下,正則語言不可能通過學習得到。
(2)對采用加密和壓縮機制的協議,報文字節的取值已被破壞,無法通過網絡流量分析進行逆向。
(3)對樣本集的覆蓋率依賴大,樣本中不存在的報文格式,無法網絡流量分析逆向。
2.3 協議狀態機推斷
協議狀態機推斷是指通過分析捕獲的網絡協議報文序列和協議實體對該報文序列的解析過程,獲得協議實體處理狀態遷移的邏輯結構以及行為語義信息,最終構成協議的狀態機。
在協議狀態機推斷過程中,通常需要將報文序列中的報文實例抽象為其所屬的報文類型,進而將一個或連續的多個抽象類型標注為一個狀態。
經過輸入預處理,協議格式提取,協議狀態機推斷后,形成協議規范文本,為后續網絡協議逆向應用奠定基礎,比如基於協議的模糊測試技術等。