发明名称 一种二进制程序漏洞的挖掘装置和方法
摘要 一种融合遗传算法与动态污染跟踪的二进制程序漏洞的挖掘装置与方法,该装置设有顺序连接的静态分析模块、调试器模块、遗传算法模块、测试输入生成模块和异常监控模块,以及位于调试器模块、遗传算法模块之间的动态污染跟踪模块;该装置利用遗传算法的适应度函数指导生成测试用例,设计了多目标的适应度函数,从定量角度评价测试用例的好坏;再用动态污染跟踪识别出输入文件中的关键字节,缩小遗传算法的搜索空间。该装置结合遗传算法和动态污染跟踪两者优点,指导生成测试用例,故生成的测试用例针对性强,生成的测试数据准确度和效率都高,且把定性分析与定量计算相结合,避免了基于符号执行与约束求解技术的二进制程序测试中的路径爆炸问题。
申请公布号 CN102622558A 申请公布日期 2012.08.01
申请号 CN201210051642.5 申请日期 2012.03.01
申请人 北京邮电大学 发明人 崔宝江;梁晓兵
分类号 G06F21/22(2006.01)I 主分类号 G06F21/22(2006.01)I
代理机构 北京德琦知识产权代理有限公司 11018 代理人 夏宪富
主权项 一种融合传算法与动态污染跟踪的二进制程序漏洞挖掘的装置,其特征在于:所述装置设有顺序连接的静态分析模块、调试器模块、遗传算法模块、测试输入生成模块和异常监控模块,以及位于调试器模块、遗传算法模块之间的动态污染跟踪模块;其中:静态分析模块,基于交互式反汇编器专业版IDAPro开发实现的该模块,用于提取被测试二进制程序中的控制流结构、基本块的起始地址和危险函数的调用地址,并将这些信息传送给调试器模块作为配置信息;即该模块通过分析二进制程序中的跳转指令,获取二进制程序基本块的起始地址和基本块之间的跳转关系;然后利用IDAPro的库函数获取二进制程序中的危险函数的调用地址;调试器模块,作为该装置的基础平台,用于监控被测试二进制程序的执行过程,并记录相关信息:根据静态分析模块提供的配置信息,识别和拦截Windows底层的应用程序编程接口API函数,获取被测试二进制程序打开输入文件的位置和记录由输入文件导致的被测试二进制程序执行过的基本块、输入文件对应的被测试二进制程序的执行轨迹及该被测试二进制程序中危险函数的执行次数;读取二进制程序中寄存器和堆栈内的数据,计算并更新二进制程序中的寄存器变量和内存变量的数值;实现对给定的内存地址对被测试二进制程序下断点的功能;然后调试器模块将上述计算获取的信息传送给遗传算法模块,用于计算输入文件对应的适应度函数值;动态污染跟踪模块,用于实现单字节水平细粒度的动态污染跟踪,识别被测试二进制程序对应的输入文件中的关键字节,并将该关键字节作为遗传算法模块交叉和变异的空间,提高遗传算法的收敛速度:该模块为被测试二进制程序的输入数据中每个字节都赋予一个唯一标签,再跟踪该标签在被测试二进制程序中的传递过程;且在跟踪输入数据传递过程中,既考虑数据间的传递依赖关系,也考虑不同变量间的控制依赖关系;同时识别被测试二进制程序对应的输入文件中的关键字节,并把关键字节信息提供给遗传算法模块,用作遗传算 法模块的交叉和变异的空间;遗传算法模块,负责根据调试器模块提供的包括每个输入文件所覆盖被测试二进制程序的基本块与其对应的二进制程序执行轨迹和其中危险函数的执行次数,以及动态污染跟踪模块识别出来的关键字节,计算每个输入文件对应的被测试二进制程序的基本块覆盖率、最小执行路径信息和该输入文件对应的危险函数的执行次数,然后计算每个输入文件对应的适应度函数值,并将该适应度函数值传递给测试输入生成模块,用于生成新的输入文件而进行下一轮测试;而且,如果输入文件对应的适应度函数值较高,则输入文件可能导致被测试二进制程序覆盖的基本块较多、导致被测试二进制程序的执行路径为“稀少路径”或导致被测试二进制程序执行的危险函数次数较多;当输入文件的上述三个数值都较高时,该输入文件就非常可能触发其对应的被测试二进制程序潜在的安全漏洞;测试输入生成模块,负责根据来自遗传算法模块的每个输入文件对应的适应度函数值的大小对被测试二进制程序的输入文件进行排序,然后根据用户设置的规模,选择适应度函数值高的输入文件送至调试器模块进行下一轮测试,因适应度函数值高的输入文件更容易触发被测试二进制程序潜在的安全漏洞;异常监控模块,用于监控每个输入文件中的被测试二进制程序的执行过程,若出现异常,则记录导致该被测试二进制程序出现异常的输入文件,并记录异常在被测试二进制程序中的出现位置、异常类型和异常出现的上下文信息。
地址 100876 北京市海淀区西土城路10号