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 协议状态机推断
协议状态机推断是指通过分析捕获的网络协议报文序列和协议实体对该报文序列的解析过程,获得协议实体处理状态迁移的逻辑结构以及行为语义信息,最终构成协议的状态机。
在协议状态机推断过程中,通常需要将报文序列中的报文实例抽象为其所属的报文类型,进而将一个或连续的多个抽象类型标注为一个状态。
经过输入预处理,协议格式提取,协议状态机推断后,形成协议规范文本,为后续网络协议逆向应用奠定基础,比如基于协议的模糊测试技术等。