一种挖掘Windows内核API漏洞的模糊测试方法技术

技术编号:22363896 阅读:49 留言:0更新日期:2019-10-23 04:37
本发明专利技术涉及一种挖掘Windows内核API漏洞的模糊测试方法,对已知样本进行突变,突变样本按队列执行测试并获取执行路径位图,测试进程崩溃则针对新崩溃样本保存当前突变样本,测试进程未崩溃则根据执行路径位图判断突变样本价值,若有则将突变样本加入有效样本队列,否则丢弃样本,直至队列处理完毕,取有效样本队列中的突变样本再次突变并重复模糊测试,扩大测试覆盖面。本发明专利技术在调用API前满足前置条件,使用路径反馈约束突变样本,有效提高模糊测试覆盖面,可高效率进行模糊测试,提高发现Windows内核提权漏洞的可能性,可以针对Windows下所有系统API调用进行模糊测试,保证获取样本执行路径的速度。

A fuzzy testing method for mining API vulnerabilities in Windows Kernel

【技术实现步骤摘要】
一种挖掘Windows内核API漏洞的模糊测试方法
本专利技术涉及防止未授权行为的保护计算机、其部件、程序或数据的安全装置的
,特别涉及一种样本覆盖面大、路径及执行结果反馈及时的挖掘Windows内核API漏洞的模糊测试方法。
技术介绍
由于微软不断的更新升级,Windows操作系统不但更加易用,也慢慢成为人们最喜爱的操作系统,当然,作为主流商用操作系统,其安全性一直备受关注。内核作为Windows系统的重要组件,其存在的提权漏洞一直被用来突破Windows系统上的安全边界。对于Windows内核模糊测试工具来说,存在两大技术难点:(1)生成样本文件时如何满足API调用前置条件;对于模糊测试工具来说,能否生成有效的样本至关重要,无法满足API调用前置条件意味着无论怎样突变此函数的参数,都将导致内核路径不会发生任何变化,进而直接导致样本的有效性降低,无法深入探测程序内部漏洞;(2)如何高效获取Windows内核执行路径;由于Windows为闭源系统,无法如Linux等开源系统一样进行源码插桩等方式获取执行路径,也无法使用Dr.Memory等二进制代码插桩工具来获取执行路径,由于无法获取有效的反馈路径,最终将导致模糊测试工具无法正确评估样本的价值,发现漏洞的概率降低。现有技术中,对于Windows内核模糊测试工具的相关网络安全技术缺口较大,例如,syzkaller内核模糊测试工具主要基于代码插桩技术获取路径反馈,但无法高效获取Windows内核代码执行路径,KAFL等工具则主要侧重于对内核执行代码路径的获取,而其样本突变模块无法针对复杂的样本进行突变;现有的相关论文亦只是进行简单讨论,无法在保证高效率的获取路径反馈的同时生成有效的API模糊测试样本。
技术实现思路
本专利技术解决了现有技术中,无法同时兼顾生成样本文件时满足API调用前置条件和高效获取Windows内核执行路径,而导致的无法同时解决样本的有效性降低、无法深入探测程序内部漏洞,及模糊测试工具无法正确评估样本的价值、发现漏洞的概率降低的问题,提供了一种优化的挖掘Windows内核API漏洞的模糊测试方法。本专利技术所采用的技术方案是,一种挖掘Windows内核API漏洞的模糊测试方法,所述方法包括以下步骤:步骤1:获得1个或多个已知样本,对所述已知样本进行突变操作;步骤2:获得突变样本队列,所述突变样本队列中有N个突变样本,令n=1;步骤3:对第n个突变样本执行测试,获取突变样本执行路径位图;步骤4:若测试进程崩溃,则基于对应的执行路径位图判断是否为新崩溃样本,若是,则保存当前突变样本,否则,丢弃样本;n=n+1,若n≤N,返回步骤3,否则,进行步骤6;若测试进程未崩溃,直接进行下一步;步骤5:根据突变样本执行路径位图判断突变样本是否有价值,若有,则将突变样本加入有效样本队列,否则丢弃样本;n=n+1,若n≤N,返回步骤3,否则,进行步骤6;步骤6:若有效样本队列中不为空,则取出有效样本队列中的突变样本并进行突变操作,返回步骤2,否则,返回步骤1。优选地,所述步骤1中,突变操作包括以下步骤:步骤1.1:定义API模板信息;步骤1.2:启动,对模板信息进行扫描,并把API信息根据返回数据类型的不同进行分类存储到对应的API列表;步骤1.3:对待突变样本中的数据进行解析,获取每个API调用的若干单元;步骤1.4:对解析后的样本的单元中每一个元素进行突变;步骤1.5:判断参数类型,若所需参数需要调用返回类型与所需参数类型一致的API生成,则选择对应的API插入样本,重复步骤1.5,否则直接生成参数,进行下一步;步骤1.6:若参数具有约束条件,则遵循约束条件生成参数,否则直接生成参数;步骤1.7:输出突变结果到样本文件。优选地,所述步骤1.1中,API模板信息包括API中每个参数的参数类型及参数的个数。优选地,所述步骤1.4中,突变包括生成并插入新API调用、改变API参数、与其他样本的API调用进行组合及删除API调用。优选地,所述步骤3中,基于Intel-pt获取突变样本执行路径位图。优选地,所述步骤4中,以是否执行KeBugCheckEx为标准,对测试内核崩溃进行监控。优选地,所述步骤4中,在Windows内核中开启内核模块调试单元。优选地,所述步骤5中,有价值的突变样本是指在执行的过程中能触发新的路径的突变样本。本专利技术提供了一种优化的挖掘Windows内核API漏洞的模糊测试方法,通过对已知样本进行突变操作,对突变样本按队列执行测试并获取突变样本执行路径位图,测试进程崩溃则针对新崩溃样本保存当前突变样本,测试进程未崩溃,则根据突变样本执行路径位图判断突变样本是否有价值,若有则将突变样本加入有效样本队列,否则丢弃样本,直至队列处理完毕,取出有效样本队列中的突变样本再次突变操作,并重复模糊测试,扩大测试覆盖面。本专利技术提出了Windows下基于Intel-pt与内核API模糊测试相结合的方法,具有以下有益效果:(1)使用API模板来生成API调用样本,保证在调用API前尽可能满足调用所需的前置条件,同时使用路径反馈功能约束突变样本,有效提高API模糊测试的覆盖面,可以高效率的对Windows内核API进行模糊测试,提高发现Windows内核提权漏洞的可能性;(2)具有通用性,可以针对Windows下所有系统API调用进行模糊测试;(3)保证获取样本执行路径的速度,结合样本的高覆盖面,提高样本生成效率。附图说明图1为本专利技术的流程图。具体实施方式下面结合实施例对本专利技术做进一步的详细描述,但本专利技术的保护范围并不限于此。本专利技术涉及一种挖掘Windows内核API漏洞的模糊测试方法,方法以样本生成模块、路径反馈模块以及崩溃监测模块共同协作完成,在方法进行的过程中API调用样本的路径的深度和广度会不断提高,最终可以尽可能多的挖掘出Windows内核漏洞。本专利技术中,样本生成模块用于基于API模板变化生成内核API调用样本,其主要负责在保证生成样本尽可能满足API的情况下,根据现有样本突变获得新样本。本专利技术中,路径反馈模块用于通过KVM与Intel-pt结合来获取调用系统API时的内核执行路径,判断样本价值,决定样本是否保留;简单来说,其会根据样本执行后的内核执行路径位图判断样本是否有价值,排除掉无效样本,提高样本覆盖面的深度和广度。本专利技术中,崩溃检测模块用于通过钩取KeBugCheckEx函数来截获内核崩溃消息,并记录样本文件,即监控测试内核是否发生蓝屏崩溃,捕获可导致测试进程崩溃的样本。所述方法包括以下步骤。步骤1:获得1个或多个已知样本,对所述已知样本进行突变操作。所述步骤1中,突变操作包括以下步骤:步骤1.1:定义API模板信息;所述步骤1.1中,API模板信息包括API中每个参数的参数类型及参数的个数。步骤1.2:启动,对模板信息进行扫描,并把API信息根据返回数据类型的不同进行分类存储到对应的API列表;步骤1.3:对待突变样本中的数据进行解析,获取每个API调用的若干单元;步骤1.4:对解析后的样本的单元中每一个元素进行突变;所述步骤1.4中,突变包括生成并插入新API调用、改变API参数、与其他样本的API调用进行组合及删除API调用。步骤1.5本文档来自技高网
...

【技术保护点】
1.一种挖掘Windows内核API漏洞的模糊测试方法,其特征在于:所述方法包括以下步骤:步骤1:获得1个或多个已知样本,对所述已知样本进行突变操作;步骤2:获得突变样本队列,所述突变样本队列中有N个突变样本,令n=1;步骤3:对第n个突变样本执行测试,获取突变样本执行路径位图;步骤4:若测试进程崩溃,则基于对应的执行路径位图判断是否为新崩溃样本,若是,则保存当前突变样本,否则,丢弃样本;n=n+1,若n≤N,返回步骤3,否则,进行步骤6;若测试进程未崩溃,直接进行下一步;步骤5:根据突变样本执行路径位图判断突变样本是否有价值,若有,则将突变样本加入有效样本队列,否则丢弃样本;n=n+1,若n≤N,返回步骤3,否则,进行步骤6;步骤6:若有效样本队列中不为空,则取出有效样本队列中的突变样本并进行突变操作,返回步骤2,否则,返回步骤1。

【技术特征摘要】
1.一种挖掘Windows内核API漏洞的模糊测试方法,其特征在于:所述方法包括以下步骤:步骤1:获得1个或多个已知样本,对所述已知样本进行突变操作;步骤2:获得突变样本队列,所述突变样本队列中有N个突变样本,令n=1;步骤3:对第n个突变样本执行测试,获取突变样本执行路径位图;步骤4:若测试进程崩溃,则基于对应的执行路径位图判断是否为新崩溃样本,若是,则保存当前突变样本,否则,丢弃样本;n=n+1,若n≤N,返回步骤3,否则,进行步骤6;若测试进程未崩溃,直接进行下一步;步骤5:根据突变样本执行路径位图判断突变样本是否有价值,若有,则将突变样本加入有效样本队列,否则丢弃样本;n=n+1,若n≤N,返回步骤3,否则,进行步骤6;步骤6:若有效样本队列中不为空,则取出有效样本队列中的突变样本并进行突变操作,返回步骤2,否则,返回步骤1。2.根据权利要求1所述的一种挖掘Windows内核API漏洞的模糊测试方法,其特征在于:所述步骤1中,突变操作包括以下步骤:步骤1.1:定义API模板信息;步骤1.2:启动,对模板信息进行扫描,并把API信息根据返回数据类型的不同进行分类存储到对应的API列表;步骤1.3:对待突变样本中的数据进行解析,获取每个API调用的若干单元;步骤1.4:对解析后的样本的单元中每一个元素进行突变;步骤1.5:判断参数类型,若所需参数需要调用返回类型与所需参数...

【专利技术属性】
技术研发人员:熊文彬范渊
申请(专利权)人:杭州安恒信息技术股份有限公司
类型:发明
国别省市:浙江,33

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

1