Page 155 - 软件工程与项目管理
P. 155
第四章 软件逆向工程技术与应用
协议逆向工程广泛应用于恶意软件分析、协议重用、网络对抗以及模糊测
试等领域。不同应用对协议的逆向结果有不同的要求,所使用的技术路线也不同。
在理想情况下,协议逆向所得到的协议规范模型应直接作为上述应用的实际输入,
而现实情况却不尽如人意。虽然一些协议逆向应用如 PI、Netzob 等取得了良好的
效果,但都不同程度地存在着一些明显的缺陷,如严重依赖人工分析,无法解析
加密协议和二进制协议,高熵数据、无法很好地逆向动态字段等。随着网络规模
的扩大和应用类型的增加,人们越来越要求协议逆向结果的准确性和实时性,传
统人工方式的协议逆向分析已经不能满足实际应用的需要,因此研究如何提高协
议逆向的自动化程度和识别准确率具有重要的现实意义。
(二)协议逆向方法分类及现状
1. 侧重于协议格式的逆向方法
协议格式解析主要用于确定协议的字段格式以及字段语义,最终形成整个
协议各类帧的格式解析结果。输出结果侧重于协议格式的协议逆向方法共有 13
种,其中有 10 种方法基于网络流量对协议进行逆向,而其余 3 种基于动态指令
执行轨迹的方法对协议进行逆向。
PI(protocol informatics)项目由 Beddoe 在 2004 年启动并发布,它首次引入
了生物信息学领域中的渐进多序列对比算法,并根据相同类型分组的统计特征对
报文格式进行分析。PI 项目首先捕获了大量会话报文,通过预处理后形成了报
文序列集,再对序列集进行了进一步分析。具体过程如下:第一,采用最常用的
Smith Waterman 算法(一种局部序列比对算法)计算序列间的距离矩阵,从而构
造相对距离矩阵;第二,采用启发式的非加权成对群算术平均(unweighted pair
group method with arithmetic mean,UPGMA)算法,首先将两个距离最小的节点聚
在一起形成一个新的节点,然后计算新节点之间的距离,重复此过程,直到所有
节点组合在一起形成新的系统树;第三,采用渐进比对算法执行多序列对比,即
Neeldleman-Wunsch 动态规划算法。PI 项目作为协议逆向工程的开篇之作,给出
了一个通过序列比对进行逆向的可行方案,但仍然存在以下缺陷:第一,只能识
别协议域为常量域或者变量域,具体的语义还需要人工进一步分析;第二,仅由
相似字节序列构成的工具可成功使用,但许多协议就算具有相同的消息格式,字
节序列也是不相同的;第三,对于冗余字段较多的复杂协议识别效果不佳。
与 PI 不同,Discover 首次使用报文序列分析方法实现完整的协议格式提取,
145
145

