Page 157 - 软件工程与项目管理
P. 157
第四章 软件逆向工程技术与应用
获得字段间的约束关系。Tupni 的缺陷是所获得的字段语义不够丰富,并且没有
考虑协议状态机的逆向工作。出于安全考虑,目前绝大多数网络协议都添加了安
全层进行加密,从而防止报文信息被不法分子所盗取。而之前介绍的方法都是对
原始报文进行污点分析或网络轨迹分析,对结构完全破坏的加密协议报文无能为
力。ReFormat 首次尝试从加密协议中开展逆向工作,根据解密过程的算术指令与
比特位操作指令(除了 mov 和 call 指令)在统计特征上明显多于解析过程得出结
论,如果在某函数处理开始后,所有函数的比例明显小于前一函数的比例,那么
该函数处理的起始位置可以被认为是解密处理的结束、报文解析过程的开始。在
ReFormat 启发式的解密过程中,诸如 Triple-DES、AES 和 RC4 等算法应用于原
始消息的所有字节。ReFormat 利用上述方法对 TLS1.2、TRC 和恶意软件 Agobot
使用的加密协议做了测试,结果证明能够成功获得解密以后的明文消息,可行性
得到验证,但识别策略的普适性和准确性需要进一步验证。
Biprominer 是一种统计性工具,旨在提取不同格式的二进制协议并且将其
转换为协议状态机。在 Biprominer 中有三个比较关键的阶段:第一,学习阶段
将获得的消息模式称为 cells;第二,标记在上一阶段获得的 cells,即字段;第
三,构建概率转换模型,它给出了协议格式的概率描述。Biprominer 的核心目
标在于在特定协议中发现相同的消息格式,但 Biprominer 仅仅对已知的几种网
络轨迹(迅雷、QQLive 等)进行了单独测试,并没有考虑协议字段间的语义特
征。通过 Biprominer 方法中构建的概率转移图并不是协议逆向工程中通常定义
的协议状态机,而是通过概率展示了字段之间的转移概率,缺乏协议状态的转
移描述。ProDecoder 是一种使用网络轨迹来推断协议消息格式和语义的工具。在
ProDecoder 中,基于协议的 n-gram 模型展现出高度倾斜的概率分布,因此 n-gram
概念可被应用于去检查协议关键字之间前缀和后缀之间的关系。如果前一个单词
后缀与下一个单词前缀具有相似性,则将这两个修饰符连接起来可获得可能的协
议字段语义。对于消息聚类,该工具应用 IB(information bottleneck)算法对相似
的消息进行聚类。最后再通过基于关键字的聚类和序列对齐方法来推断消息格
式,并对二进制协议 SMB 和文本协议 SMTP 进行评估,取得了良好的效果。但
ProDecoder 的缺陷在于基于 n-grams 的算法将协议应用载荷数据切分为等长的序
列,然而该方法还能将整个特征词分解为多个部分,或者将不相关的特征词部分
揉到一个分组中。ProDecoder 尝试寻找协议字段的频繁子集,这直接会打破载荷
147
147

