[发明专利]基于可执行代码逆向分析的漏洞挖掘方法无效
申请号: | 200810207769.5 | 申请日: | 2008-12-25 |
公开(公告)号: | CN101482846A | 公开(公告)日: | 2009-07-15 |
发明(设计)人: | 薛质;王轶骏;施勇 | 申请(专利权)人: | 上海交通大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 上海交达专利事务所 | 代理人: | 王锡麟;王桂忠 |
地址: | 200240*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 可执行 代码 逆向 分析 漏洞 挖掘 方法 | ||
技术领域
本发明涉及一种计算机技术领域的漏洞挖掘方法,具体地说,涉及的是一种基于可执行代码逆向分析的漏洞挖掘方法。
背景技术
目前已有多种针对漏洞进行挖掘及检测的技术,但往往在检测中需消耗大量的人力和物力,如采用黑盒方式的自动挖掘技术。为增加检测效率,在代码检测中也常常采用一些通过规范来检查代码安全性的工具,这种基于匹配查找的方式可以快速检测出固有漏洞,但对于逻辑性的代码漏洞却无法进行详细的检测。基于逆向分析的漏洞发掘实际上属于灰盒测试方法,是采用逆向分析技术来辅助漏洞的挖掘,既能直接对问题域进行衡量,又测试了尽可能多的脆弱点。同时可以降低检测中消耗的人力成本,同时对于逻辑性漏洞也具备较高的检测率。
另外一种对基于目标代码的检测方法,是先用反汇编工具对待测程序进行处理,再依赖基于源码的检测分析技术来对所得结果进行处理。返回点检测技术是一种通过判决调用的返回点位置(堆或者栈)来判决正在执行的代码是否是溢出代码的方法。这种漏洞发掘方法对普通的溢出代码的防范是有效的,但是存在不少众所周知的缺点,许多病毒程序绕过其检测的问题依然可以入侵到系统中。基于可执行代码逆向分析的漏洞挖掘技术由于可以针对程序的决策进行判断,因此对基于目标代码的检测方法可以进行补充的检测,防止病毒程序绕过。
经对现有技术文献的检索发现,中国专利申请号为:200610103592.5,名称为“一种整型溢出漏洞自动化挖掘方法”。该技术自述为:“设置填充字符长度、内容及存储地址,在指定的存储地址用指定的字符填充数据,被测对象执行对文件型数据或网络协议型数据的处理,捕获被测对象是否有错误发生,如果有错误发生,记录出错的位置或/和保存出错的数据,并修改存储地址,如此循环测试,直到被测对象的数据尾为止。”利用该方法,能够实现黑盒测试或独立的安全测试人员在不知道数据格式的情况下,通过自动对数据内容遍历的方法来尝试发现可能存储整型变量的位置,从而有效地进行整型溢出漏洞挖掘工作,提高软件开发的质量及稳定性。该检测技术属于黑盒测试的一种,其发现的漏洞类型比较单一,并且无法知道造成漏洞的输入可能造成的其他问题。采用基于可执行代码逆向分析的漏洞发掘可以对漏洞产生的所有分支进行检查,因此可以挖掘出其他类型及代码分支带来的漏洞。
发明内容
本发明的目的在于克服现有技术中的不足,提供一种基于可执行代码逆向分析的漏洞挖掘方法。使其能够在符合测试要求的前提下,尽可能多地穿越代码树的所有节点,检测受测软件中固有的与逻辑的脆弱点,同时对问题域进行衡量,判断漏洞的危害,主要用来辅助网络服务型软件和本地应用型软件的漏洞挖掘和安全性检测。
本发明是通过以下技术方案实现的,本发明对于可执行文件,这里是指Windows系统下的PE格式文件,采用的是灰箱的检测方法,利用调试软件捕获程序的漏洞信息,通过分析漏洞造成程序脱离安全态时的具体代码,并逆向分析程序指令流及输入决策信息,动态分析交互数据和决策。挖掘出程序中的固有和逻辑漏洞,确定漏洞的危害,从而达到检测漏洞的目的。
本发明包括如下步骤:
第一步,对可执行二进制代码进行软件漏洞的捕捉,软件漏洞捕捉用来提升对软件系统错误的可观测性。具体为:使用受检测软件内置调试程序或附加到软件上的调试程序,将低观测性的软件变成高观测性软件。漏洞捕捉的可行性在一定程度上需要取决于受测软件与调试程序的结合度。其结果将用于指导是否将软件系统错误和导致错误的外部输入进行深入的漏洞探测。
第二步,当漏洞捕捉完成后,由于此时已确定受测软件存在一定的可检测漏洞,则将造成漏洞的输入数据作为主要输入,因为在输入后系统将脱离安全态。对于脱离安全态的程序点检测其完整的代码覆盖情况。代码覆盖主要使用指令流追踪的技术。代码覆盖记录能够测试尽可能多的、已生成的代码树分支。
第三步,通过对代码覆盖检测观察程序执行路径,再通过附加到软件的调试器追踪指令流,尽可能多地收集程序的内部状态信息,实时收集状态信息从而指导重构恶意输入,有效影响正在执行的程序的状态,弥补了黑盒测试的盲目性、片面性,并以此确定出现漏洞的具体位置前执行的指令流,来完成漏洞点的回溯。
第四步,指令流回溯寻找到的漏洞点,通过追踪代码执行分支来确定软件漏洞和外部输入的联系。判断受测软件基于用户提交的数据所做出的决策。通过追踪交互数据在内存页中断点的情况有利于追踪外部输入的流向,确定漏洞和外部输入的关联关系,最终用来确定漏洞的危害性。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海交通大学,未经上海交通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810207769.5/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种基于安全漏洞缺陷模式的检测方法
- 下一篇:闪存文件系统纠错方法和装置