Page 153 - 软件工程与项目管理
P. 153
第四章 软件逆向工程技术与应用
应用,其中只有一部分通信协议规范为人们所知。当前协议规范的挖掘过于依赖
于人工分析,使得这项工作成为一项容易出错、工作量大、耗时且具有挑战性的
任务。例如开源项目 Samba 通过人工分析的方法花了 12 年的时间才基本生成私
有协议 SMB 的协议规范。因此,研究规范化、自动化的协议逆向分析技术在信
息安全领域具有重要意义。
近年来,协议逆向工程领域的研究取得了丰硕成果,特别是自动协议逆向
工程取得了长足的进展。潘璠等人以协议逆向工程的分析对象作为切入点,重点
从网络流量和指令分析的角度介绍了协议格式提取、语义挖掘工作,但对协议行
为的完整规范挖掘不够深入。此外,他们将格式提取工作与状态机规范挖掘两种
方法综合在一起进行描述,分类不够详细与合理。刘渊等人重点介绍了基于网络
流量的协议逆向工程的协议规范描述。吴礼发等人则将网络流量和执行轨迹作为
分析对象,单独对协议状态机的推断技术进行介绍,两者对协议规范的完整描述
缺少系统的总结与归纳。
由于目前在协议逆向工程领域主要通过形式化自然语言进行描述,缺乏形
象性与简明性。基于不同的分析对象,协议逆向工程技术可具体分为以下两类:
第一,基于网络轨迹(network-trace)的协议逆向技术,又称为基于报文的
协议逆向技术,是指通过 Tshark 和 Tcpdump 等抓包工具从网络捕获的真实流量
进行协议逆向的技术。该方法根据协议字段的取值变化和特征来推断协议格式,
具有时效性强、基本不依赖于终端、无法解析加密协议的特点。其理论依据在于:
首先,单个分组样本的数据流为分组格式的一个实例,并且对应于相同分组格式
的多个分组样本具有相似性;其次,会话模拟了两个或多个协议实体之间的通信
过程,协议实体之间的一次会话中的状态转换序列构成了协议状态机的一个子集。
同一会话内协议报文的时序关系蕴涵了部分协议状态之间的转换信息。
第二,基于执行轨迹(execution-trace)的协议逆向技术,又称为基于指令
序列的协议逆向技术,是指两个或多个通信实体之间的单个应用程序中运行的程
序代码分析,是利用动态污点技术跟踪程序对报文数据的解析,并根据协议实体
解析消息字段的具体过程提取协议格式,具有依赖动态协议终端、难以实现跨平
台移植的特点。其理论依据在于:首先,协议实体接收消息的过程,即解析消息
的过程,可以利用该方法处理字段边界和,从而获取协议格式的表达和属性;其
次,完整会话的指令序列可划分为单个报文指令序列的排列,子序列之间的顺序
143
143

