一种面向二进制的导向性模糊测试方法与系统与流程

文档序号:16812089发布日期:2019-02-10 13:46阅读:957来源:国知局
一种面向二进制的导向性模糊测试方法与系统与流程

本发明涉及软件系统安全性检测领域,尤其涉及是漏洞挖掘技术中的面向二进制的模糊测试领域。



背景技术:

随着计算机的广泛使用以及计算机网络的飞速发展,人们的生活乃至各个行业如金融证券、国防科技、医疗卫生等都离不开各种各样的计算机软件,软件的数量日益增加,相应的软件安全漏洞隐患问题也越发突出。软件安全漏洞隐患为攻击者提供了可乘之机,攻击者利用软件漏洞发起的攻击事件近些年层出不穷。因此尽早发现和修补漏洞成了软件安全研究领域的热点问题。

在漏洞挖掘领域中,常用的漏洞挖掘方法包括静态分析、污点分析、符号执行、模糊测试等。静态分析误报率高,随着代码复杂度的日益增加,静态分析难以发现软件中潜在的漏洞,而污点分析效率较低,资源消耗大,符号执行又面临路径爆炸、约束求解困难等问题。相比这些方法,模糊测试自动化程度高、误报率低、原理简单并且可扩展性强,因此这些优点使得模糊测试在漏洞挖掘领域中备受青睐。

模糊测试的核心思想是向目标程序输入随机数据并监视程序是否发生崩溃等异常。在实际应用中,很多情况下模糊测试的目标是没有源码的二进制程序,没有程序的内部信息使得模糊测试生成的测试用例因为结构不符合目标程序从而常常使得目标程序在输入文件结构检查阶段就提前终止。当前流行的模糊测试工具采用了遗传算法,并将代码覆盖率作为反馈筛选子代,相比传统的模糊测试该类模糊测试工具提高了模糊测试的效率,但是该类工具仍然存在存一定的局限性,如不知道输入文件中哪些字节值得变异,输入文件中的字节应该如何去变异,所以会经常耗费大量时间去变异一些无关紧要的字节,即使有些时候变异发生在了关键位置,但是由于工具不知道如何去变异,仍然无法有效绕过程序检查。这些问题使得输入文件难以触发程序中复杂的逻辑代码部分,因此难以发现程序深处所潜在的漏洞。

为了解决上述模糊测试中存在的问题,我们提出了一种面向二进制的导向性模糊测试方法,通过使用轻量级的静态分析方法和二进制插桩技术提高模糊测试的效率。



技术实现要素:

“一种面向二进制的导向性模糊测试方法与系统”是在软件安全性检测与漏洞挖掘方法的研究过程中针对当前存在的问题所提出的发明。本发明的一个目标是改善现有的模糊测试中存在的盲目性变异问题,提供一种面向二进制的导向性模糊测试方法,有针对性的对输入文件进行变异。本发明不需要程序源码,不依赖于重量级的程序分析方法,而是通过轻量级的静态分析方法及二进制插桩技术在模糊测试中的变异阶段来推测输入文件中的字节与目标程序之间的关系,从而根据该依赖关系指导之后的变异,提高模糊测试的有效性。该方法在模糊测试过程中能够有效的指导变异,并且在变异阶段该方案针对性强,帮助生成能够进一步深入到目标程序中的输入文件,因此使得模糊测试的效率得到提高。

为了实现上述目标,本发明提供了一种面向二进制的导向性模糊测试系统,该系统能够有效的推测出输入文件中的字节与目标程序中关键指令的依赖关系。该系统包含了:静态分析信息提取器,用于将目标程序转为汇编代码并提取目标程序中阻碍输入文件难以深入到目标程序的比较指令的详细信息;二进制插桩器,用于对目标二进制文件进行插桩,从而在模糊测试过程中获取指令中操作数的具体值;依赖关系推测器,用于推测出输入文件中的字节与目标程序中的比较指令的依赖关系;模糊测试器,用于根据该依赖关系对目标文件进行变异。

附图说明

从下面结合附图的详细描述中,将会更清楚的理解本发明的目标、实现方法、优点和特性,其中:

图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所示,模糊测试器由关键字节查找单元、比较进度反馈单元和变异引导单元组成。关键字节查找单元负责在变异过程中查找输入文件中应该变异的字节。比较进度反馈单元主要负责实时地反馈目标比较指令中两个操作数中相匹配的字节数。变异引导单元主要负责对输入文件相应字节进行采取不同的变异规则有针对性的变异,同时变异引导单元还负责及时将提高了代码覆盖率的变异文件添加到样本队列中。

在变异过程中,一旦根据依赖关系变异相应字节后使得目标比较指令中的比较进度得到提高则将保留该变异文件以进行进一步的变异。变异引导单元优先处理硬编码魔数比较指令即将输入文件中的某些字节直接与立即值进行比较的比较指令,如果依赖关系中存在连续字节影响同一条比较指令并且该比较指令的操作数长度等于连续字节的数量则模糊测试器将其视为硬编码魔数比较指令,将使用获取到的操作数具体值逐字节替换输入文件的相应字节进行变异。变异引导单元处理完魔数比较指令后将处理含有有效比较进度信息的比较指令即比较指令中的两个操作数存在部分字节相同的情况,根据依赖关系针对性的对输入文件中相应字节采用普通变异方式如逐比特翻转、逐字节翻转、算术相加相减操作等进行变异。

图6是一个展示模糊测试系统工作流程的示意图。

如图6所示,确定二进制目标程序后,首先静态分析信息提取器会将目标二进制程序转为汇编代码然后分析提取其中所含有的比较指令信息,该信息将与二进制程序一同作为二进制插桩器的输入,二进制插桩器根据比较指令的地址信息对目标文件进行插桩以在模糊测试过程中获取比较指令中操作数的具体值,插桩完成后使用插桩后的二进制程序运行种子文件获取原始的操作数具体值,之后依赖关系推测器将逐字节对种子文件进行变异并根据比较指令的操作数长度信息推测输入文件中的字节与比较指令之间的依赖关系,模糊测试器将根据依赖关系有针对性的对文件进行变异

如上所述,本发明通过使用轻量级的静态分析方法及二进制插桩技术来推测输入文件结构与目标二进制程序之间的依赖关系,然后根据得到的依赖关系有导向性的对输入文件进行变异,其优点在于:1、检测对象为二进制文件,不依赖于程序源码,符合实际应用中的需求;2、该方法对输入文件并没有要求,能够对任何输入文件进行依赖关系推测从而进行针对性的变异;3、能够根据不同的比较指令采用不同的变异规则,并结合比较进度信息指导变异,使得输入文件能够有效通过阻碍程序深入的比较检查指令;4、本发明的检测方法有别与传统的将污点分析方法与模糊测试方法相结合的方法,通过采用轻量级的程序分析方法推测输入文件与目标程序之间的依赖关系指导变异,节约计算资源,通用性更高。

尽管出于说明的目的描述了本发明的优选实施例子,本领域人员将理解,在不脱离附属权利要求所披露的本发明的范围和精神的情况下,各种修改、增加和替换都是可能的。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1