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

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



            来。在关键字提取步骤中,对关键字相对于报文头部和尾部位置做统计,获取该
            关键字相对于整个报文的位置方差,从而排除一些值相同但位置不同的关键字。
            在给定的消息中,利用频繁字符串来标志字段和识别关键字。在推断协议状态机
            的过程中,AutoReEngine 将消息格式定义为在目标协议消息格式中出现的一系列
            频繁关键字,主要由两个步骤来实现,首先根据他们所述的消息格式进行标记,

            然后利用 Apriori 算法提取频繁字符串,基于位置对这些频繁字符串做方差统计,
            将关键字的衡量标准定义为是否频繁字符串的方差值小于规定的阈值,最终确定
            协议的完整规范。总体架构可分为数据预处理模块、协议关键字推断模块、消息

            格式推断模块以及协议状态机推断模块。缺陷在于只能处理明文的文本协议,无
            法处理加密的二进制协议,而且存在将应用数据中推断成关键字的可能。
                 付光远等人利用单词嵌入(word embedding)的概念将每个报文看做 1 字
            节序列,然后将消息映射到有限维向量空间中使用非负矩阵分解(non-negative
            matrix factorization,NMF)算法进行聚类处理,推断报文格式和协议状态机,并

            将此方法搭载在模糊测试框架 Kitty 上,从而构建一种针对工控专有协议的模糊
            测试工具 APF-Kitty。在单词嵌入过程中,使用 n-gram 模型对协议进行分组以便
            适用于二进制协议。为了防止向量空间过大,APF-Kitty 采用统计测试驱动的降

            维方法将特征空间分为固定、可变和不稳定特征空间;除此之外,APF-Kitty 还
            对事件序列进行模拟以应对双向序列,从而模拟客户端与服务端的交互过程。
            APF-Kitty 对嵌入式实时操作系统 VxWorks 的私有协议 WDBRPC 以及 FTP 进行
            测试,都较好地提取了协议的报文格式和构建了状态机模型。但 APF-Kitty 在很
            大程度上依赖于观测到的网络流量的全面性和完整性,并且无法对加密协议进行

            解析。
                 PoKE(position-based keyword extraction protocol reverse engineer) 是 一 种
            基于位置的自动化网络流协议逆向方法,它是 AutoReEngine 的一种改进,

            AutoReEngine 的位置是用方差来衡量的,用来排除一些位置不太固定的关键字,
            起到关键字过滤的效果。PoKE 同样从关键字的提取角度出发,但它为关键字加
            上了位置属性,位置是每个关键字的固有属性,其本质是不同的。通过报文分割
            和关键字提取的递归循环可以有效地从二进制负载中提取出长度较短的关键字。
            PoKE 使用关键字对报文标记,根据标记序列以及马尔可夫模型建立协议的状态

            转移模型。但 PoKE 基于字节级别进行关键字提取,若能使用比特级别的关键字


             156
             156
   161   162   163   164   165   166   167   168   169   170   171