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
   150   151   152   153   154   155   156   157   158   159   160