Page 164 - 软件工程与项目管理
P. 164
软件工程与项目管理
Software Engineering & Project Management
来识别固定字段与可变长度字段,直接剔除变长字段,然后使用值分布的统计方
法挖掘消息类型字段。在获得消息类型字段之后,会话从消息序列流的形式转换
为消息类型序列流,并且消息类型流被用作状态机的实际输入以构造初始前缀树。
并对 Prospex 中的启发式算法加以改进从而对状态机状态进行标注,然后采用文
法推断领域中改进的 EDSM 算法对相似的状态进行合并得到最终的协议状态机。
在该方法中,协议状态机的推断在红蓝框架下完成,这有效地减少了在合并过程
期间可能合并的节点对。通过对 TCP、SMB 以及 DHCP 协议进行测试,结果显
示出了良好的完备性,但缺陷在于该方法在多序列比对过程中采用了直接剔除边
长字段的策略,导致样本空间变少,需要大量的人工参与,准确率下降;该方法
只考虑了协议状态机的单向推断,没有从双向数据流的角度去思考,存在一定的
局限性。
PREUGI 工具引入了一种依据语义推断(grammatical inference,GI)的方法
来模拟协议状态,使用一种基于在应用会话中出现符号序列的纠错语法和增量累
积的方法来实现协议状态机的推断。系统主要分为 token 序列推断模块和纠错语
法模块。在 token 序列推断模块中,通过使用已知规范的字段语义集从应用层数
据样本中提取 token 序列,这些序列被抽象为来自协议实体会话的状态转换序列,
随后构建协议路径并与状态机中的路径进行比较从而确定最优匹配路径,构建初
始协议状态机。在纠错语法推断模块中,PREUGI 首先通过定义一个基准来确定
实施纠错的具体位置,然后生成多个错误示例来提高协议状态机推断的准确性,
最后提出了一种基于统计概率的异常入度区分方法以实现协议状态机中异常入度
的修剪从而获得最优状态机模型。PREUGI 创新性地在语法纠错阶段提出了最优
路径选择器来应对协议的复杂交互行为,对 HTTP 等多种公开协议进行测试,取
得了较高的准确率与召回率,缺陷在于其评估指标受限于测试集中协议样本在训
练样本中的覆盖率以及无法处理加密协议报文导致指标的下降。
闫小勇等人针对通信协议规范中报文格式类型和报文状态类型并不存在
一一映射关系的情况,提出了一种基于状态相关字段的二进制私有协议状态机
推 断 算 法(state machine inference for binary protocol based on state-related field,
BSMISRF),在无监督条件下实现二进制私有协议的状态机推断。在状态相关字
段识别算法中,使用基于最长公共子序列距离(the longest common subsequence
distance,LCSD)的识别算法克服了 VDV 算法无法有效表征类似行为逻辑的缺点。
154
154

