[发明专利]基于自动化识别驱动参数辅助内核漏洞挖掘的方法有效
申请号: | 201710195065.X | 申请日: | 2017-03-29 |
公开(公告)号: | CN107169362B | 公开(公告)日: | 2019-08-13 |
发明(设计)人: | 李隐峰;迟欣茹;冉茂锋;李苑;王雅楠;王惟一;肖志刚;吴文凯 | 申请(专利权)人: | 西安电子科技大学 |
主分类号: | G06F21/57 | 分类号: | G06F21/57;G06F8/30 |
代理公司: | 陕西电子工业专利中心 61205 | 代理人: | 田文英;王品华 |
地址: | 710071*** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种基于自动化识别驱动参数辅助内核漏洞挖掘的方法。其实现步骤如下:(1)获取驱动文件的汇编代码和C伪代码;(2)提取汇编代码中的关键特征常量;(3)提取C伪代码中的关键特征常量;(4)对汇编代码和C伪代码两组特征常量进行有效性筛选;(5)得到并输出驱动的有效驱动功能号;(6)输入有效驱动功能号到Windows驱动漏洞挖掘工具中。本发明具有通用性好,识别覆盖面全,准确率高,效率高,且全自动化,简单易用的优点。本发明可用于Windows内核驱动漏洞的挖掘中,可以自动化识别驱动功能号。 | ||
搜索关键词: | 基于 自动化 识别 驱动 参数 辅助 内核 漏洞 挖掘 方法 | ||
【主权项】:
1.一种基于自动化识别驱动参数辅助内核漏洞挖掘的方法,包括步骤如下:(1)获取驱动文件的汇编代码和C伪代码:利用静态二进制分析工具IDA Pro,获取驱动程序的汇编代码和C伪代码,并将获取的驱动文件的汇编代码和C伪代码分别存储到计算机内存中;(2)用描述比较、赋值和减法特征的正则表达式与汇编代码匹配,得到汇编代码中的关键特征常量;所述描述比较、赋值和减法特征的正则表达式如下:((cmp)|(mov)|(sub))((\t)|()|(\t\t))((eax)|(ebx)|(ecx)|(edx)|(esi)|(edi)),((\t)|(\t\t)|())(([0‑9a‑fA‑F]{4,8}))((h)|(H))其中,cmp表示匹配汇编代码中的比较操作指令,|表示或者操作,mov表示匹配汇编代码中的数据传送指令,sub表示匹配汇编代码中的减法指令,(\t),(\t\t)表示匹配汇编代码中指令之间的制表符,()表示匹配汇编代码中指令间的空格,eax,ebx,ecx,edx,esi,edi表示匹配汇编代码中的指令寄存器,([0‑9a‑fA‑F]{4,8})表示匹配汇编代码中的十六进制常量,且常量位数在4到8个常量字符,((h)|(H))表示匹配汇编代码中常量结尾的h或H标识符;(3)提取C伪代码中的关键特征常量:(3a)用描述条件特征的正则表达式与C伪代码匹配,得到C伪代码中if条件判断语句与case语句组合的特征常量;所述描述条件特征的正则表达式如下:((<=)|(>=)|(==)|(!=)|=|(‑)|<|>|(case))((0x[0‑9a‑fA‑F]{5,8})|(‑?[0‑9]{5,10}))其中,(<=),(>=),(==),(!=)分别表示匹配C伪代码中比较运算里的小于等于,大于等于,等于和不等于操作,|表示或者符号,=,(‑),<,>分别表示匹配C伪代码中的赋值操作,相减操作,小于操作和大于操作,(case)表示匹配C伪代码中条件语句中的case语句,(0x[0‑9a‑fA‑F]{5,8})表示匹配十六进制以0x起始的特征常量,且占用5到8个常量字符,(‑?[0‑9]{5,10})表示匹配十进制数,‑?表示匹配的目标常量可以为正数也可以为负数,且占用5到10个常量字符;(3b)用描述减法特征的正则表达式与C伪代码匹配,得到C伪代码中减法操作组合的特征常量;所述描述减法特征的正则表达式如下:(=)()((v|a)[0‑9]{1,5})()(‑)()((0x[0‑9a‑fA‑F]{5,8})|(‑?[0‑9]{5,10}))其中,(=)表示匹配C伪代码中的赋值操作,()表示匹配C伪代码中的空格符,((v|a)[0‑9]{1,5})表示匹配C伪代码中函数的参数和局部变量,(‑)匹配C伪代码中的减法操作,(0x[0‑9a‑fA‑F]{5,8})表示匹配C伪代码中以0x开头的特征常量,且占用5到8个常量字符,(‑?[0‑9]{5,10})表示匹配C伪代码中的十进制数,可以为正数或负数,且占用在5到10个常量字符;(3c)用描述开关语句特征的正则表达式与C伪代码匹配,得到C伪代码中switch条件组合的特征常量;所述描述开关语句特征的正则表达式如下:(switch)()(\\()((v|a)[0‑9]{1,5})()((\\+)|(‑))()((0x[0‑9a‑fA‑F]{5,8})|(‑?[0‑9]{5,10}))其中,switch表示用于匹配C伪代码中switch分支条件语句,()表示匹配C伪代码中的空格符,(\\()表示匹配C伪代码中的括号和空格符,((v|a)[0‑9]{1,5})表示匹配C伪代码中的函数参数和局部变量,((\\+)|(‑))表示匹配C伪代码中的加号或者减号,(0x[0‑9a‑fA‑F]{5,8})表示匹配C伪代码中以0x起始的特征常量,且占用5到8个常量字符,(‑?[0‑9]{5,10})表示匹配C伪代码中的十进制数,可以为正数或负数,且占用5到10个常量字符;(4)对汇编代码和C伪代码两组特征常量进行有效性筛选:(4a)对汇编代码和C伪代码两组特征常量,以高16位相同为标准进行分类;(4b)按照任意两个特征常量需满足差值为4的倍数作为筛选条件,对每一类进行过滤,得到汇编代码和C伪代码的两组有效特征常量;(5)得到并输出驱动的有效驱动功能号:(5a)提取汇编代码的有效特征常量和C伪代码的有效特征常量中相同的常量,存入有效驱动功能号集合中;(5b)将汇编代码的有效特征常量和C伪代码的有效特征常量均存入有效驱动功能号集合中;(5c)输出有效驱动功能号集合中的所有的有效驱动功能号到计算机内存中;(6)输入有效驱动功能号到Windows驱动漏洞挖掘工具中:基于模糊测试的Windows驱动漏洞挖掘工具直接从计算机内存中读取有效驱动功能号,实现自动化内核驱动漏洞挖掘。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安电子科技大学,未经西安电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201710195065.X/,转载请声明来源钻瓜专利网。