Page 160 - 软件工程与项目管理
P. 160

软件工程与项目管理
             Software Engineering & Project Management



            参考了许多精心设计的测量和控制协议,通过仿真得到了训练以及测试数据。该
            方法首先通过发现频繁项对二进制数据进行分割并聚类,粗略地解决了帧定界问
            题;然后基于 KMP 算法构建频繁模式序列候选集,并通过统计特征设定频繁度
            阈值进行筛选。通过多序列比对算法确定报文中的固定域、可变域与变长域字段,
            并以之前的频繁模式序列候选集为基础创建协议特征库,利用基于关联规则的改

            进的 Apriori 算法过滤冗余候选特征帧,最终确定协议特征序列集合。最后引入
            飞行技术文档作为先验知识,以实现进一步的格式推断和语义推理。该方法对两
            类仿真数据帧进行测试,取得了较高的字段定界准确率与语义推断识别率。但该

            方法的局限性在于实验数据存在主观的设计考虑,无法全面地代替真实数据;对
            混合报文分类采用简单提取帧头的方法实现,忽略了存在数据帧前导码、冗余字
            段填充等情况;无法解析复杂的多字段编码协议,对于格式嵌套的复杂报文设计
            无能为力。
                 闫小勇等人提出了一种基于最佳路径搜索的二进制协议格式关键词边界的

            确定方法,有效解决了 ProWord 中 n-gram 算法中 n 值的不易确定以及固定偏移
            位置格式关键词的边界提取问题。该方法主要针对二进制协议报文格式逆向中的
            字段切分问题,对 n-gram 算法进行改进,将位置因子引入 n-gram 算法,基于关

            键词和非关键词的 n-gram 位置值的变化率差异来构造约束条件,提出了基于迭
            代 n-gram-position 的格式关键词边界选择算法 OBPFK,实现了对协议关键词的
            联合最优定界。该方法对 AIS1 以及 AIS18 等五种二进制协议进行测试,并与经
            典的 VDV 以及 AutoReEngine 算法进行比较,这两者均以字节为单位,忽略了二
            进制字段不受字节长度限制的特性,相比起来 OBPFK 算法性能更好。但 OBPFK

            算法的缺陷在于只提取了协议中的部分关键词,这只是协议格式提取的一部分,
            二进制协议的字段边界未完全确定,需要进一步细化。
                 2. 侧重于协议状态机的逆向方法

                 协议有限状态机是协议逆向工程中输出结果的重要表示,它定义了协议实
            体间的交互行为。输出结果侧重于协议状态机推断的协议逆向方法共有 12 种,
            其中有 11 种方法基于网络流量对协议进行逆向,而 1 种方法既基于网络流量也
            基于动态指令执行轨迹作为分析对象对协议进行逆向研究。
                 PEXT(protocol extraction)是一种基于报文聚类的协议状态机逆向研究方案。

            PEXT 报文捕获建立在 libpcap 工具捕包的基础上,并按照最长公共子序列的长度


             150
             150
   155   156   157   158   159   160   161   162   163   164   165