当前位置: 首页 > 专利查询>四川大学专利>正文

一种面向二进制的导向性模糊测试方法与系统技术方案

技术编号:20285361 阅读:22 留言:0更新日期:2019-02-10 17:53
本发明专利技术涉及软件系统安全性检测领域和漏洞挖掘方法中面向二进制的模糊测试领域,旨在提供一种面向二进制的有导向性的模糊测试方法与系统。该方法采用了轻量级的静态分析方法和二进制源码插桩技术,具体内容包括:首先通过静态分析提取阻碍模糊测试深入到程序内部的比较指令信息,并对根据得到的信息对二进制文件进行插桩以在模糊测试过程中获取操作数的具体值,之后逐字节地对输入文件进行变异,然后推测输入文件与比较指令之间所存在的依赖关系,最后根据该依赖关系以及比较进度信息有导向性的对文件进行变异。该系统不依赖于程序源码,降低了模糊测试中变异的盲目性,节约计算资源,通用性更高。

A Binary Oriented Fuzzy Test Method and System

The invention relates to the field of software system security detection and the field of binary-oriented fuzzy testing in vulnerability mining methods, aiming at providing a binary-oriented oriented fuzzy testing method and system. This method adopts the lightweight static analysis method and the binary source code pile insertion technology. The specific contents include: firstly, extracting the information of comparative instructions that hinder the fuzzy test from penetrating into the program through static analysis, and then inserting the binary file according to the information to get the specific value of the operands in the process of the fuzzy test, and then proceeding to the input file byte by byte. Variation, then infer the dependency between input files and comparison instructions. Finally, according to the dependency and comparison progress information, the document is mutated directively. The system does not depend on program source code, reduces the blindness of mutation in fuzzy testing, saves computing resources and has higher generality.

【技术实现步骤摘要】
一种面向二进制的导向性模糊测试方法与系统
本专利技术涉及软件系统安全性检测领域,尤其涉及是漏洞挖掘技术中的面向二进制的模糊测试领域。
技术介绍
随着计算机的广泛使用以及计算机网络的飞速发展,人们的生活乃至各个行业如金融证券、国防科技、医疗卫生等都离不开各种各样的计算机软件,软件的数量日益增加,相应的软件安全漏洞隐患问题也越发突出。软件安全漏洞隐患为攻击者提供了可乘之机,攻击者利用软件漏洞发起的攻击事件近些年层出不穷。因此尽早发现和修补漏洞成了软件安全研究领域的热点问题。在漏洞挖掘领域中,常用的漏洞挖掘方法包括静态分析、污点分析、符号执行、模糊测试等。静态分析误报率高,随着代码复杂度的日益增加,静态分析难以发现软件中潜在的漏洞,而污点分析效率较低,资源消耗大,符号执行又面临路径爆炸、约束求解困难等问题。相比这些方法,模糊测试自动化程度高、误报率低、原理简单并且可扩展性强,因此这些优点使得模糊测试在漏洞挖掘领域中备受青睐。模糊测试的核心思想是向目标程序输入随机数据并监视程序是否发生崩溃等异常。在实际应用中,很多情况下模糊测试的目标是没有源码的二进制程序,没有程序的内部信息使得模糊测试生成的测试用例因为结构不符合目标程序从而常常使得目标程序在输入文件结构检查阶段就提前终止。当前流行的模糊测试工具采用了遗传算法,并将代码覆盖率作为反馈筛选子代,相比传统的模糊测试该类模糊测试工具提高了模糊测试的效率,但是该类工具仍然存在存一定的局限性,如不知道输入文件中哪些字节值得变异,输入文件中的字节应该如何去变异,所以会经常耗费大量时间去变异一些无关紧要的字节,即使有些时候变异发生在了关键位置,但是由于工具不知道如何去变异,仍然无法有效绕过程序检查。这些问题使得输入文件难以触发程序中复杂的逻辑代码部分,因此难以发现程序深处所潜在的漏洞。为了解决上述模糊测试中存在的问题,我们提出了一种面向二进制的导向性模糊测试方法,通过使用轻量级的静态分析方法和二进制插桩技术提高模糊测试的效率。
技术实现思路
“一种面向二进制的导向性模糊测试方法与系统”是在软件安全性检测与漏洞挖掘方法的研究过程中针对当前存在的问题所提出的专利技术。本专利技术的一个目标是改善现有的模糊测试中存在的盲目性变异问题,提供一种面向二进制的导向性模糊测试方法,有针对性的对输入文件进行变异。本专利技术不需要程序源码,不依赖于重量级的程序分析方法,而是通过轻量级的静态分析方法及二进制插桩技术在模糊测试中的变异阶段来推测输入文件中的字节与目标程序之间的关系,从而根据该依赖关系指导之后的变异,提高模糊测试的有效性。该方法在模糊测试过程中能够有效的指导变异,并且在变异阶段该方案针对性强,帮助生成能够进一步深入到目标程序中的输入文件,因此使得模糊测试的效率得到提高。为了实现上述目标,本专利技术提供了一种面向二进制的导向性模糊测试系统,该系统能够有效的推测出输入文件中的字节与目标程序中关键指令的依赖关系。该系统包含了:静态分析信息提取器,用于将目标程序转为汇编代码并提取目标程序中阻碍输入文件难以深入到目标程序的比较指令的详细信息;二进制插桩器,用于对目标二进制文件进行插桩,从而在模糊测试过程中获取指令中操作数的具体值;依赖关系推测器,用于推测出输入文件中的字节与目标程序中的比较指令的依赖关系;模糊测试器,用于根据该依赖关系对目标文件进行变异。附图说明从下面结合附图的详细描述中,将会更清楚的理解本专利技术的目标、实现方法、优点和特性,其中:图1是一个展示本专利技术的面向二进制的导向性模糊测试系统的架构图。图2是一个展示本专利技术的模糊测试系统静态分析信息提取器内部组成单元的方框图。图3是一个说明本专利技术的模糊测试系统二进制插桩器对目标二进制文件进行插桩的示意图。图4是一个说明本专利技术的模糊测试系统依赖关系推测器进行依赖关系推测的示意图。图5是一个展示本专利技术的模糊测试系统模糊测试器内部组成单元的方框图。图6是一个说明本专利技术的模糊测试系统工作流程的示意图。具体实施方式下面结合附图对本专利技术做进一步的说明。本专利技术旨在为面向二进制的模糊测试中为模糊测试提供一种具有导向性的变异方法,减少传统模糊测试中变异的盲目性,提高模糊测试的效率。图1是一个描述本专利技术系统组成的架构图。如图1所示,模糊测试系统包括静态分析信息提取器、二进制插桩器、依赖关系推测器和模糊测试器四个模块。静态分析信息提取器负责提取目标二进制文件中的比较指令信息;二进制插桩器根据静态分析信息提取器中得到的比较指令信息对目标二进制文件进行插桩;依赖关系推测器用于推测和建立输入文件中的字节与比较指令之间的依赖关系;模糊测试器负责进行具有导向性的模糊测试。图2是一个展示静态分析信息提取器内部组成单元的示意图。如图2所示,静态分析信息提取器由反汇编单元、比较指令筛选单元和指令信息提取单元。反汇编单元负责将目标二进制程序转为汇编代码以便进一步分析。比较指令筛选单元主要负责根据筛选规则筛选出阻碍模糊测试中输入文件深入到程序内部的比较指令,其中操作数长度为1个字节的比较指令将被排除,此外,如果是与立即值0或0xFFFFFFFFh进行比较的比较指令同样会被排除,这些指令在传统模糊测试中能够轻易绕过。指令信息提取单元负责提取经过筛选后的比较指令的地址信息及操作数长度信息。图3是一个描述二进制插桩器对目标二进制文件进行插桩的示意图。如图3所示,二进制插桩器根据静态分析提取器中得到的比较指令信息有针对性的对目标二进制文件进行插桩,插桩目的是为了在模糊测试过程中获取比较指令中操作数的具体值。其中,如果操作数属于内存引用类型则应记录相应内存中的内容,其他类型如寄存器、立即值则记录操作数的对应值。图4是一个描述依赖关系推测器进行依赖关系推测的示意图。如图4所示,依赖关系推测器根据静态分析提取器中得到的操作数的长度以及操作数具体值分析获取输入文件中字节与比较指令的依赖关系。依赖关系推测器将输入文件未经变异时作为目标程序的输入,运行二进制程序并记录此时的操作数具体值,之后逐个字节变异文件,每次变异确保变异文件只有一个字节与原始文件不同,然后记录变异后的操作数具体值,每变异一个字节后,进行一次对比分析,即将变异后的操作数具体值与原始操作数具体值进行对比分析得到其中所不同的字节。然后根据提取器中得到的操作数的长度计算当前操作数中不同的字节是属于哪一条比较指令。此时,便可以得到依赖关系即当变异输入文件中哪一个字节将影响哪一条比较指令。假设第一条操作指令的操作数长度为4,那么该指令中两个操作数的值将被记录在从索引0到7的8个字节中,第二条指令的操作数长度为7,其对应索引应该为8到21的14个字节中,当变异输入文件的第8个字节时(索引为7)发现此时的操作数具体值的第13个字节和原始操作数具体值的第13个字节不同,由于第13个字节属于第二条比较指令,则可以推测出变异输入文件的第8个字节将影响第二条比较指令,于是关系依赖推测器将记录保留该依赖关系用于指导之后的变异。图5是一个展示静态分析信息提取器内部组成单元的示意图。如图5所示,模糊测试器由关键字节查找单元、比较进度反馈单元和变异引导单元组成。关键字节查找单元负责在变异过程中查找输入文件中应该变异的字节。比较进度反馈单元主要负责实时地反馈目标比较指令中本文档来自技高网
...

【技术保护点】
1.一种面向二进制的导向性模糊测试方法,其特征在于,所述方法包括如下步骤:A、对目标二进制文件进行静态分析,筛选目标二进制程序中所包含的比较指令并提取比较指令的详细信息;B、对目标二进制文件进行插桩以在模糊测试中获取指令中操作数的具体值;C、通过操作数的具体值收集比较进度信息;D、变异输入文件,推测当前输入文件中的字节与比较指令之间的依赖关系;E、在模糊测试过程中根据依赖关系对当前输入文件进行变异引导。

【技术特征摘要】
1.一种面向二进制的导向性模糊测试方法,其特征在于,所述方法包括如下步骤:A、对目标二进制文件进行静态分析,筛选目标二进制程序中所包含的比较指令并提取比较指令的详细信息;B、对目标二进制文件进行插桩以在模糊测试中获取指令中操作数的具体值;C、通过操作数的具体值收集比较进度信息;D、变异输入文件,推测当前输入文件中的字节与比较指令之间的依赖关系;E、在模糊测试过程中根据依赖关系对当前输入文件进行变异引导。2.根据权利要求1所述的一种面向二进制的导向性模糊测试方法,其特征在于,所述的步骤A进一步包括如下步骤:A1、对目标二进制文件进行反汇编,将程序转为汇编代码,分析汇编代码中含有的比较指令;A2、根据筛选规则对比较指令进行筛选过滤;A3、根据A2步骤中所得到的比较指令提取比较指令中操作数长度及比较指令的地址信息。3.根据权利要求2所述的一种面向二进制的导向性模糊测试方法,其特征在于,步骤A1中的比较指令具体是指:目标程序中含有的诸如cmp、strncmp、memcmp等对操作数进行比较的指令。目标程序通常会通过比较指令来对输入文件的格式进行检查校验,如果检查校验失败,则程序会提前终止,从而导致模糊测试无法发现程序代码深处所潜在的漏洞,因此本方法主要关注该类指令。4.根据权利要求2所述的一种面向二进制的导向性模糊测试方法,其特征在于,步骤A2中的筛选规则具体是指:筛选出在模糊测试过程中常用的模糊测试方法难以绕过的比较指令。如果比较指令中操作数的长度为1个字节,则忽略该比较指令;如果比较指令中操作数是与立即值0或立即值0xFFFFFFFFh进行比较,则忽略该比较指令。5.根据权利要求1所述的一种面向二进制的导向性模糊测试方法,其特征在于,所述的步骤B进一步包括如下步骤:B1、判断比较指令中操作数的类型;B2、根据插桩规则对目标二进制文件插桩以便在模糊测试中目标程序运行时获取操作数的具体值。6.根据权利要求5所述的一种面向二进制的导向性模糊测试方法,其特征在于,步骤B2中的插桩规则具体是指:如果操作数属于内存引用类型则应记录相应内存中的内容,其他类型如寄存器、立即值则记录操作数的对应值。7.根据权利要求1所述的一种面向二进制的导向性模糊测试方法,其特征在于,步骤C中的比较进度具体是指:根据获取到的操作数具体值对同一条指令中的两个操作数...

【专利技术属性】
技术研发人员:刘亮张瀚方刘露平
申请(专利权)人:四川大学
类型:发明
国别省市:四川,51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1