網(wǎng)絡監(jiān)聽、網(wǎng)絡對抗、網(wǎng)絡管理、惡意代碼分析、軟件安全漏洞挖掘等應用領域常常需要分析未知協(xié)議的格式,高效、準確的自動化協(xié)議逆向分析技術一直是人們追求的目標。
《網(wǎng)絡與信息安全前沿技術叢書:網(wǎng)絡協(xié)議逆向分析及應用》是國內全面介紹自動化網(wǎng)絡協(xié)議逆向分析及應用的學術專著,反映了協(xié)議逆向分析領域的新研究成果,可作為從事軟件及協(xié)議逆向分析、網(wǎng)絡管理、網(wǎng)絡安全與對抗等方向的教學、科研及工程技術人員的參考書。
第1章 緒論
1.1 協(xié)議
1.1.1 定義
1.1.2 網(wǎng)絡體系結構
1.2 協(xié)議分析
1.2.1 應用需求
1.2.2 協(xié)議逆向工程
參考文獻
第2章 協(xié)議設計原理
2.1 協(xié)議模型
2.2 協(xié)議設計的基本內容
2.2.1 協(xié)議的通信環(huán)境
2.2.2 協(xié)議提供的服務
2.2.3 協(xié)議功能
2.2.4 協(xié)議元素
2.3 差錯控制技術
2.3.1 差錯類型
2.3.2 差錯檢測技術
2.3.3 報文丟失、重復、失序處理技術
2.3.4 差錯控制與層次的關系
2.4 典型協(xié)議
2.4.1 HDLC協(xié)議
2.4.2 PPP協(xié)議
2.4.3 IP協(xié)議
2.4.4 TCP協(xié)議
2.4.5 HTTP協(xié)議
2.5 總結與展望
參考文獻
第3章 協(xié)議規(guī)范描述模型
3.1 概述
3.2 協(xié)議規(guī)范描述需求分析
3.3 高階屬性方法
3.3.1 協(xié)議格式分析
3.3.2 高階屬性文法
3.4 基于高階屬性方法的協(xié)議規(guī)范描述模型
3.5 模型實現(xiàn)
3.6 總結與展望
參考文獻
第4章 基于網(wǎng)絡流量的協(xié)議格式逆向分析
4.1 概述
4.2 序列比對技術
4.2.1 雙序列比對
4.2.2 多序列比對
4.2.3 問題分析
4.3 典型報文序列分析方法
4.3.1 PI
4.3.2 PEXT
4.3.3 BFS
4.3.4 ScriptGen
4.3.5 Discoverel
4.3.6 Automaton
4.3.7 Netzob
4.4 基于遞歸聚類的協(xié)議格式提取方法
4.4.1 基本塊劃分
4.4.2 遞歸分析
4.4.3 報文結構信息分析
4.4.4 語義及取值約束推斷
4.4.5 算法復雜度分析
4.5 人工知識在逆向分析中的應用
4.5.1 人工知識
4.5.2 半自動協(xié)議逆向分析
4.6 RPRA實現(xiàn)
4.6.1 輸入模塊
4.6.2 自動分析模塊
4.6.3 輸出模塊
4.6.4 糾正模塊
4.7 應用實例
4.7.1 樣本集的獲取
4.7.2 數(shù)據(jù)預處理
4.7.3 已知協(xié)議分析
4.8 總結與展望
參考文獻
第5章 動態(tài)二進制程序分析技術
5.1 概述
5.2 動態(tài)污點分析技術
5.2.1 動態(tài)污點分析的原理
5.2.2 污點屬性的傳播特征
5.2.3 動態(tài)污點分析技術的應用
5.3 動態(tài)符號執(zhí)行技術
5.3.1 符號執(zhí)行的原理
5.3.2 符號執(zhí)行技術的局限
5.3.3 動態(tài)符號執(zhí)行的原理及應用
5.4 二進制分析平臺簡介
5 4 1Intel Pin
5.4.2 BltBlaze
5.4.3 其他二進制分析平臺
5.5 總結與展望
參考文獻
第6章 基于執(zhí)行軌跡的協(xié)議格式逆向分析
6.1 概述
6.2 典型指令序列分析方法
6.2.1 Polyglot
6.2.2 AutoFormat
6.2.3 Tupni
6.2.4 Prospex
6.2.5 ReFormat
6.2.6 Dispatcher
6.3 基于混合符號執(zhí)行的協(xié)議格式提取方法
6.3.1 概述
6.3.2 基本思想
6.3.3 基于中間語言的混合符號執(zhí)行技術
6.3.4 語義解析層次的協(xié)議格式提取技術
6.3.5 原型實現(xiàn)及應用
6.4 總結與展望
參考文獻
第7章 協(xié)議狀態(tài)機推斷技術
7.1 概述
7.2 基本定義
7.3 狀態(tài)機推斷技術研究現(xiàn)狀
7.3.1 基于指令序列的狀態(tài)機推斷研究
7.3.2 基于報文序列的狀態(tài)機推斷研究
7.3.3 兩類方法的比較
7.4 測試驅動狀態(tài)融合的協(xié)議狀態(tài)機推斷方法-
7.4.1 狀態(tài)融合問題分析
7.4.2 方法概述
7.4.3 初始狀態(tài)機構造
7.4.4 狀態(tài)匹配與融合
7.4.5 狀態(tài)融合驗證
7.4.6 實例分析
7.5 基于域知識的協(xié)議狀態(tài)機主動推斷算法
7.5.1 概述
7.5.2 L+N算法
7.5.3 基于強順序約束關系的output query過濾機制
7.5.4 基于EPTT的output query預響應機制
7.5.5 基于正例樣本變異的equivalence queor近似判定算法
7.5.6 實例分析
7.6 總結與展望
參考文獻
第8章 協(xié)議逆向分析的應用
8.1 概述
8.2 Fuzzing測試技術
8.3 基于模型的Fuzzing技術面臨的問題
8.3.1 數(shù)據(jù)格式的描述
8.3.2 測試用例的生成
8.4 文法驅動的Fuzzing測試技術
8.4.1 文法分析樹的構造
8.4.2 測試節(jié)點的選擇
8.4.3 基于語義的測試用例生成
8.5 應用實例
8.6 總結與展望
參考文獻
附錄 縮略語
協(xié)議是計算機網(wǎng)絡和分布式系統(tǒng)中各種通信實體間相互交換信息時必須遵守的一組規(guī)則或約定,這些規(guī)則明確規(guī)定了所交換的數(shù)據(jù)格式及有關的同步問題,從而保證了通信雙方有條不紊、可靠地交換信息。自從英格蘭國家物理實驗室(National Physical Laboratory,NPL)的R.A.Scantlebury和K.A.BaItlett在1967年將“協(xié)議”(protocol)一詞用于描述數(shù)據(jù)通信過程以來,已有大量通信協(xié)議出現(xiàn)并被標準化,廣泛用于各種各樣的網(wǎng)絡和通信應用中。比較著名的網(wǎng)絡協(xié)議有TCP/IP協(xié)議棧中的一系列協(xié)議,如lP、TCP、UDP、POP3、SMTP、HTTP協(xié)議等。
除了大量標準化的通信協(xié)議外,網(wǎng)絡中還存在大量私有協(xié)議(也稱為未知協(xié)議),各軟件廠商或個人出于經(jīng)濟利益、安全、隱私等因素的考慮,并沒有公開協(xié)議細節(jié);一些惡意軟件也采用了自己的私有協(xié)議防止被跟蹤和分析。
網(wǎng)絡協(xié)議規(guī)范對于網(wǎng)絡管理、網(wǎng)絡攻防有著重要意義。從網(wǎng)絡管理的角度看,識別網(wǎng)絡流量使用的傳輸協(xié)議對于提高網(wǎng)絡服務質量、了解網(wǎng)絡運行狀態(tài)、監(jiān)控惡意網(wǎng)絡應用具有重要意義。從網(wǎng)絡攻擊的角度來看,假冒攻擊、網(wǎng)絡監(jiān)聽等主動和被動攻擊技術都需要以協(xié)議格式為前提。從網(wǎng)絡防護的角度看,識別軟件使用的通信協(xié)議、分析軟件間網(wǎng)絡交互報文是軟件安全性分析、漏洞挖掘、流量控制和網(wǎng)絡安全策略制定等工作的重要內容。而對于迅速傳播的蠕蟲、僵尸程序、木馬等惡意軟件,快速分析其通信協(xié)議、掌握其命令控制方式更是對惡意軟件做出及時反應的關鍵步驟。因此,以網(wǎng)絡協(xié)議為主要研究對象的協(xié)議分析技術應運而生。
協(xié)議分析技術主要分為兩大類,一類是對已知協(xié)議的識別與分析,另一類是對未知協(xié)議的逆向分析。前者以協(xié)議特征(如協(xié)議格式特征、端口特征、流量特征等)為基礎,識別應用使用的通信協(xié)議并根據(jù)協(xié)議規(guī)范對協(xié)議報文進行分析,其前提是協(xié)議規(guī)范已知。后者則是在協(xié)議特征未知的條件下,通過協(xié)議報文或協(xié)議軟件執(zhí)行過程分析得到協(xié)議規(guī)范(包括協(xié)議格式和協(xié)議狀態(tài)機),即協(xié)議逆向分析。
協(xié)議逆向工程(ProtocolReverseEngineering),是指在不依賴于協(xié)議描述的情況下,通過對協(xié)議實體的網(wǎng)絡輸入/輸出、系統(tǒng)行為和指令執(zhí)行流程進行監(jiān)控和分析,提取協(xié)議語法、語義和同步信息的過程,是工程化的協(xié)議逆向分析方法。人工方式的協(xié)議逆向雖然取得了較為理想的效果,但其過程冗長耗時、費力,且準確率依賴于分析人員的經(jīng)驗。隨著網(wǎng)絡規(guī)模的擴大和應用種類的增多,對協(xié)議逆向的準確性和時效性的要求越來越高,自動化的協(xié)議逆向分析技術成為人們追求的目標。
在江蘇省自然科學基金項目“協(xié)議逆向工程關鍵技術研究”以及軍隊有關項目資助下,解放軍理工大學協(xié)議逆向分析課題組經(jīng)過多年研究,在自動化的協(xié)議逆向分析方面取得了一些研究成果。這些研究成果以及國內外在協(xié)議逆向分析方向的新研究進展形成了本書的主體內容。
全書共8章,主要介紹協(xié)議逆向分析原理及應用技術。第1章緒論,主要介紹協(xié)議、協(xié)議逆向工程等相關概念、研究現(xiàn)狀。第2章主要介紹協(xié)議設計原理,內容包括協(xié)議設計模型、內容、差錯控制技術以及典型協(xié)議簡介等,以此作為協(xié)議逆向分析的背景知識。第3章主要介紹協(xié)議規(guī)范描述模型,內容涉及協(xié)議逆向分析對協(xié)議規(guī)范描述模型的要求、著者提出的基于高階屬性文法的協(xié)議規(guī)范描述模型,這部分內容是一體化的協(xié)議逆向分析技術的基礎。協(xié)議格式逆向分析主要有兩種方法:基于網(wǎng)絡流量的協(xié)議格式逆向分析和基于執(zhí)行軌跡的協(xié)議格式逆向分析。第4章主要介紹基于網(wǎng)絡流量的協(xié)議格式逆向分析,內容包括該方法的一般原理、研究現(xiàn)狀、著者提出的基于遞歸聚類的協(xié)議格式提取方法、人工知識在逆向分析中的應用等。第5章主要介紹動態(tài)二進制程序分析技術,內容包括動態(tài)污點分析、動態(tài)符號執(zhí)行技術以及常見的二進制程序分析平臺,本章是基于執(zhí)行軌跡的協(xié)議格式逆向分析技術的基礎。第6章介紹基于執(zhí)行軌跡的協(xié)議格式逆向分析方法,包括該方法的一般原理、研究現(xiàn)狀以及作者在此方向上的研究成果。第7章介紹協(xié)議狀態(tài)機推斷技術,包括狀態(tài)機推斷原理、研究現(xiàn)狀以及著者提出的兩種狀態(tài)機推斷方法。第8章以針對網(wǎng)絡協(xié)議的模糊測試技術為例,介紹網(wǎng)絡協(xié)議逆向分析技術的應用。