Page 163 - 软件工程与项目管理
P. 163
第四章 软件逆向工程技术与应用
基于概率统计的异常进入度判别及其修剪优化的方法;通过重复状态冗余合并操
作,对相似交互行为进行简化从而得到最优协议状态机。该文使用包含多种网络
协议的实际网络数据(HTTP、SMTP、POP3 和 FTP 协议等应用层协议)进行实验,
在推断的采集协议状态机上进行了一系列性能特征测试和质量评估,取得了很好
的效果,具有支持在线逆向、跨平台、精确度高等优势。但该方法主要基于指针
与控制流污染的逆向方法,容易引发污染问题,可能导致部分字段无法识别的情
况发生。
Meng 等人提出了一种基于网络流量自动生成二进制协议状态机的工具,该
方法基于一种改进的渐进多序列比对算法来对齐协议中相应的字段,并从二进制
协议中提取状态相关字段,最后基于状态相关字段构建协议状态机模型。在提取
状态相关字段的步骤中,基于只有一些协议特定字段代表具体的逻辑语义的事
实,该方法通过基于方差分布的分布(distribution of distribution of the variances,
DDV)的统计学方法提取协议相关字段从而推断协议状态机。该方法思路新颖,
但只对已知协议 TCP 与 ARP 二进制协议做了协议状态机推断,只推断了 TCP 三
次握手的简单通信过程,并没有对实际复杂数据交互情况进行状态机模拟,并不
符合实际应用情况;且在对协议相关字段的推断中,仅凭统计学的方法进行逆向,
脱离了字段语义的推断,无法检验其推断的正确性。
根据推断过程中是否需要与协议实体进行交互,协议状态机推断可分为主
动推断(passive inference)和被动推断(active inference)。王辰等人首次提出了
两种将主动推断与被动推断相结合的协议状态机推断技术,分别为测试驱动融合
的协议状态机推断方法和基于域知识的协议状态机主动推断方法,在发挥每种推
断方式优点的同时尽量避免其缺陷以便更好地满足应用需求。在这两种方法中,
前者在传统协议状态融合的基础上加入了主动推断的思想,主动验证每次融合后
的状态机生成的测试样本和协议实体的交互行为,避免了状态融合的泛化,在较
低的时间下保证了推断结果的正确性;后者在主动学习型算法 L* 的基础上借鉴
被动推断的思想,充分学习捕获的初始样本集获取目标协议特有的域知识,在保
证推断结果是最小且完备的同时减少了无效的询问序列,大幅提升了推断效率。
王军基于在二进制协议中字段由协议规范预定义,但每个字段可能存在可
变长度的特点,提出了一种基于改进的多序列比对算法和基于值分布统计算法相
结合的方法挖掘报文类型字段从而构建协议状态机。该方法首先使用多序列比对
153
153

