[发明专利]Windows操作环境下基于插桩工具的漏洞检测方法在审
申请号: | 201510585330.6 | 申请日: | 2015-09-14 |
公开(公告)号: | CN105184169A | 公开(公告)日: | 2015-12-23 |
发明(设计)人: | 张小松;向琦;牛伟纳;鲍凯;唐海洋;曹思宇;岳豪 | 申请(专利权)人: | 电子科技大学 |
主分类号: | G06F21/57 | 分类号: | G06F21/57 |
代理公司: | 电子科技大学专利中心 51203 | 代理人: | 周刘英 |
地址: | 611731 四川省成*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | windows 操作 环境 基于 工具 漏洞 检测 方法 | ||
技术领域
本发明属于计算机领域,具体涉及一种在Windows操作环境下的基于插桩工具的漏洞检测。
背景技术
软件漏洞是造成蠕虫、木马等各类攻击逐渐猖獗的重要原因。近几年来,重大安全事件屡见不鲜,如2010年1月Google受Microsoft的极光漏洞影响,被黑客攻击,导致系统故障;2011年12月全球最大的中文IT社区CSDN被脱库,造成600万注册用户的个人信息被泄露。国家信息安全漏洞共享平台(ChinaNationalVulnerabilityDatabase)从2004年到2014收集的漏洞数据显示,只有在06年到08年间漏洞数量有所下降,从08年起,漏洞数量开始反弹,被曝光的漏洞不仅在数量上越来越多,其危害程度也在急速增长,由此带来的安全问题也会日益增多。
漏洞验证是归类于软件系统安全领域的黑盒测试,目标文件二进制级的测试通过对大量的漏洞样本文件的获取来完成,在测试过程中,将探针插入目标代码中来监控运行过程中是否有异常行为出现。Pin是目前国内外广泛采用的二进制动态插桩工具,其采用JIT(Just-In-Time)编译,通过在进程中插入探针实现对目标进程进行监控的目的。另一方面,动态污点分析技术(DynamicTaintAnalysis)被外界普遍采纳,其在代码动态运行过程中对利用软件漏洞的攻击行为进行探测,从而实现对漏洞文件样本的验证。
缓冲区溢出、本地提权和ROP这三类漏洞,是非常普遍、非常危险的漏洞,在各种操作系统、应用软件广泛存在,但是当前研究仅仅对一种漏洞进行分析处理,比较单一。同时,为保护互联网中用户的信息安全,国家安全部门以及企业随时都会捕获到大量的文件样本,仅仅依靠静态扫描或者人工分析文件样本会导致分析进度迟缓,特别是在当今如此复杂的网络环境下,海量的文件数据有分析需求,而单纯的手工分析只能处理有限的样本。另一方面,多数样本文件中的恶意代码隐藏极深,手工分析等方法无法准确地判断出文件中是否存在对软件漏洞的利用等恶意行为。因此,有必要提供一个稳定的自动化平台,用于动态执行过程中,快速且精确地验证文件中是否存在对漏洞的触发等恶意行为。
发明内容
本发明的发明目的在于:针对上述存在的问题,提供一种能检查多种类型的漏洞检测方法。
本发明的Windows操作环境下基于插桩工具的漏洞检测方法,能实现对缓冲区溢出漏洞、本地提权漏洞和ROP漏洞的检测。即对给定的漏洞样本文件,采用插桩工具(例如Inter公司的Pin技术)对样本动态运行过程中的指令进行实时反汇编,对目标指令(如call函数调用、ret函数返回等)执行前后插入相应处理函数来获得进程运行过程中的相应信息(如寄存器、内存分配状态、栈帧等),从而可以监控进程运行状态。其具体包括下列步骤:
当检测到目标进程执行函数调用指令时(例如通过检测目标进程调用call指令来判断是否执行函数调用指令),将下一指令的地址存入第一预设存储单元中(例如采用堆栈的方式进行存储),并且将当前被调用函数的返回地址存入第二预设存储单元中;
检查目标进程的跳转目的地址,若所述目的地址对应的指令不是被调用函数的起始指令,则判定目标进程存在ROP漏洞;
当检测到目标进程执行函数返回指令时(例如通过检测目标进程调用ret指令来判断是否执行函数返回指令),检测当前线程栈中的返回地址是否在第一预设存储单元中存在,若是,则判定目标进程存在缓冲区溢出漏洞;判断所述函数返回指令的地址与第二预设存储单元中的当前被调用函数的返回地址是否相同,若否,则保存所述函数返回指令的地址,当检测到该地址的函数返回指令被执行K(K≥2)次时,则判定目标进程存在ROP漏洞;针对缓冲区溢出漏洞,还可以通过检测是否存在未匹配到函数调用指令的函数返回指令来判定,例如,系统运行的指令存在未匹配到call指令的ret指令,则对应于该ret指令的目标进程存在缓冲区溢出漏洞。另外,针对ROP漏洞,还可以通过判断目标进程的提权指令地址和跳转目的地址是否在一个库来判定,即若两者不在同一个库(操作系统本身所构建的对应库),则认为目标进程存在ROP漏洞。
基于函数调用接口(API)打开预设被调试进程(例如可获取的已有漏洞样本),再判断所述预设被调试进程能否打开目标进程,若否,则目标进程存在本地提权漏洞。
综上所述,由于采用了上述技术方案,本发明的有益效果是:能够并发地对多个样本进行处理,对于满足缓冲区溢出,本地提权和ROP这三类漏洞的样本,能够自动进行识别和检测。
具体实施方式
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于电子科技大学,未经电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510585330.6/2.html,转载请声明来源钻瓜专利网。