论文部分内容阅读
模糊测试(Fuzzing)是一种被广泛应用的漏洞挖掘技术。本文研究网络协议模糊测试的脚本自动生成技术,利用网络协议逆向分析技术对输入数据流进行分析,逆向还原出协议的状态机,再根据推断的状态机自动生成模糊测试的脚本。现有的协议逆向研究集中在协议消息格式的逆向分析,针对网络协议状态机的逆向分析工作较少,并且这些工作中假设推断出的状态机是协议的原始状态机,忽略了逆向过程中可能存在的错误以及样本不完全等等的因素。主要工作如下: 1.提出使用指令执行序列分析技术进行消息格式分析的方案,该方案首先利用动态污点分析的方式跟踪记录协议的执行指令以及涉及到的参数,然后利用记录结果分析出消息的字词和分隔符等域元素,最后将消息序列聚类,综合分析出每一类消息的通用结构。 2.提出利用消息格式分析和动态污点分析的结果推断协议状态机的方案,该方案首先根据会话集构建会话前缀树,然后利用消息序列的特性进行状态标注,最后利用确定性有限状态机化简方法化简会话前缀树,推断出协议的状态机。 3.提出状态机比对方案,根据协议状态转换中消息序列的字词和分隔符的特殊性,利用字符串相似度算法比对推断出的状态机和已有的状态机,确定推断出的状态机所属协议的完整状态机;针对FTP协议的测试证明了状态机比对方案的可行性和有效性。 4.设计一个生成模糊测试脚本的系统,该系统包括协议逆向、状态机比对、协议信息存储和模糊测试脚本生成模块,其中协议逆向模块完成协议的逆向工作,推断协议的消息格式和状态机,状态机比对模块比对推断出的状态机与已有状态机,确定协议的原始状态机,模糊测试脚本生成模块生成模糊测试生成案例使用的脚本。经测试表明,系统能够进行消息格式分析和状态机构建、通过比对准确推断所属协议并生成有效的模糊测试脚本。