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

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



            其创新点在于它模拟了报文解析的层次化过程,提出了在协议解析过程中存在某
            些字段决定报文子结构解析方式的假设。Discover 对协议格式的推断可大致分为
            分词以及初始聚类、递归聚类和格式融合三个步骤。在分词与初始聚类过程中,
            首先按照文本和二进制两种属性分析报文字节流,并采用改进的 Needleman-
            Wunsch 算法进行初始聚类;在初始聚类的基础上采用启发式的语义规则识别

            FD、length、offset、cookie 等字段,实现语义推断;最后为了解决递归聚类可能
            导致的样本格式过分类问题,Discover 对属性和语义序列相似度高的子类进行格
            式融合。但 Discover 中字段的长度被强制限制为 token 级别,文本协议的字段边

            界为作者自定义的一些分隔符所确定,这导致解析结果中存在字段格式冗余且不
            精确的问题,Discover 也没有涉及协议状态机的分析。但相比 BFS 和 PEXT 采用
            Byte 级序列比对相比,Discover 采用 token 级的序列比对更有针对性。Discover 针
            对字段之间的约束关系和解析结构,最终得到带有字段语义、层次化的协议格式
            逆向结果。

                 Auto Format 针对 PI 与 Discover 项目中逆向得到的报文格式为平坦的线性结
            构,通过构造一个字段树去研究字段之间存在的层次关系(hierarchic alfield)、
            并列关系(sequential field)和序列关系(parallel field),提出了基于指令轨迹的

            字段结构识别方案。Auto Format 可大体分为执行监控模块和协议字段识别模块。
            给定消息格式的每个字段运行时在其自己的执行上下文中被处理,执行上下文
            在每个消息字节中被收集,并通过偏移量加以注释从而创建整个消息格式。Auto
            Format 的最大优点就是它能应用于未知二进制协议以便完美地实现协议格式的识
            别,获得更为精确并且可以识别复杂的结构关系,但其缺陷在于 Auto Format 采

            用启发式的策略对预定义的字段属性和依赖关系进行识别,没有充分考虑字段与
            字段之间存在的约束关系,也没有充分考虑字段或者结构的类型和语义。
                 Tupni 沿用 Auto Format 的思想,利用多条协议信息发现协议格式。Tupni 首

            先识别一般字段,接下来基于结构类型的结构序列被识别。在字段的识别阶段,
            那些携带必要信息的基本字段的短分区字节序列作为输入流,然后通过观察 CPU
            中的映射指令循环,准确发现 Tupni 中的字段。在结构类型识别中,Tupni 针对
            同一类型的结构所对应的解析代码具有相似性这一特点,采用了一种基于指令集
            比对的方法对未知类型的结构进行聚类。可以看出,Tupni 根据二进制程序处理

            的流程特点,不仅可以划分字段格式以及边界情况,还可以识别字段的复杂结构


             146
             146
   151   152   153   154   155   156   157   158   159   160   161