[发明专利]一种攻击时漏洞检测方法及其系统有效
申请号: | 200910081510.5 | 申请日: | 2009-04-10 |
公开(公告)号: | CN101515320A | 公开(公告)日: | 2009-08-26 |
发明(设计)人: | 陈恺;苏璞睿;司端锋 | 申请(专利权)人: | 中国科学院软件研究所 |
主分类号: | G06F21/22 | 分类号: | G06F21/22;H04L29/06 |
代理公司: | 北京君尚知识产权代理事务所(普通合伙) | 代理人: | 余长江 |
地址: | 100190北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 攻击 漏洞 检测 方法 及其 系统 | ||
技术领域
本发明主要涉及一种漏洞的检测方法和系统,尤其涉及一种攻击时漏洞检测方法和系统,属于网络安全领域。
背景技术
未知漏洞是黑客与软件开发者希望率先掌握的第一手资料。对于黑客,获取一定数量的未知漏洞,可以随意进入存在相应漏洞的计算机,进行权限提升,甚至可以进一步产生更大的破坏。随着网络的不断发展以及各种软件数量和种类的不断增多,未知漏洞产生的危害更为明显。危害巨大的蠕虫几乎都是未知漏洞的产物。例如,众所周知的冲击波利用了微软的MS03-026漏洞,震荡波利用了微软的MS04-011漏洞,SQL蠕虫王利用了微软SQLServer的漏洞等等。因此,如何在漏洞被成功利用前保护系统并检测出未知漏洞,就成为软件安全工作的重中之重了。
目前主要的漏洞检测手段为基于源程序的静态漏洞检测。可是由于多数软件不提供源程序,大大限制了这类分析方法的检测范围。因此人们试图将基于源程序的漏洞检测方法移植到可执行程序上。但可执行程序本身的不确定性极大地降低了分析结果的准确性,例如间接跳转、指针别名等都是目前静态分析中难以解决的问题。软件保护技术亦增加了分析的难度,例如多态、变形、加密等方式迫使静态分析甚至不能反编译出有效的代码。事实上,只要在漏洞被成功利用前阻止漏洞产生危害并且暴露漏洞本身,就可以有效防止利用这个漏洞产生的攻击。因此,如何在漏洞被成功利用之前保护系统并找出漏洞成为目前漏洞研究的热点。
发明内容
针对上述问题,本发明的目的在于提供漏洞检测方法,在攻击产生时,根据攻击本身的信息进行漏洞分析,准确定位软件漏洞。这部分漏洞信息,可以加快软件生产商补丁发布工作,也可以在补丁未发布前提供临时解决方案。
根据以上目的,如图1所示,漏洞的攻击时检测方法包括步骤:
1)虚拟机加载:由虚拟加载器将被分析的程序加载到虚拟环境中,同时执行。虚拟环境中事先安装操作系统作为被分析程序的运行平台,称为客户操作系统。客户操作系统根据被分析程序的不同选择Windows或者Linux等。
2)进程定位:由于目前多数操作系统是多任务同时执行的,所以虚拟环境中所有的程序共同运行在虚拟CPU上。因此,有必要对当前在虚拟CPU上执行的代码进行区分,识别出这段代码所隶属的程序。虚拟CPU中有个特殊的检测器CR3,存储着页目录地址。根据操作系统的知识,页目录相对于进程是唯一的。因此可以根据当前虚拟CPU中CR3的值区分进程,并且根据虚拟内存中的相应内容获取进程名称信息,由此可以判断当前运行中的进程是否是需要分析的进程。如果是,转步骤3),否则转步骤8)。
3)循环判断:如果当前代码处于循环中,转步骤4),否则转步骤5)。循环判断方法可以采用动态方式或者静态方式进行判断,这里使用静态DJ图的方式进行判断。
4)状态记录:记录当前状态,包括堆、栈、CPU寄存器信息。
5)攻击检测:判断当前程序指针是否指向堆或者栈中,如果处于,则表示存在攻击,转步骤6),否则表示不存在攻击,转步骤8)。
6)状态回滚:设程序指针所依赖的变量为a,在记录的状态集中寻找最后一次a被改变的记录位置。由于并不是每条指令都被记录,因此找到的程序记录状态并不一定是改变a的位置。
7)再运行检测:将步骤6中的找到的状态记为s,恢复s中保存的寄存器、堆、栈信息,重新从s位置开始运行,此时找出修改a的具体指令。如果能找出,即找到漏洞的位置,返回此位置;否则表示记录下的状态并不足以指示漏洞的位置,返回错误。
8)继续虚拟环境的执行,如果程序运行结束则返回,否则转步骤2)。
本发明的积极效果为:
与现有技术相比,本发明使用虚拟环境执行,可以最大限度的避免干扰被分析程序的运行,同时可以获取最准确的内存以及寄存器数据,保持更好的操纵性;有选择的记录状态,可以使得状态数量尽量少,降低内存使用率,提高分析效率;攻击时进行漏洞分析,可以有针对性的进行漏洞检测,提高检测效率,同时保证漏洞不被成功利用,保证了系统的安全性;使用二进制代码分析,可以在缺乏源代码的情况下进行直接分析,避免了商业软件缺乏源代码无法分析的问题。
附图说明
图1为攻击时漏洞检测的流程图;
图2为攻击时漏洞检测系统结构示意图。
具体实施方式
如图1所示,为最简化模式下的攻击时漏洞检测流程图。具体的实现方式如下:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院软件研究所,未经中国科学院软件研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910081510.5/2.html,转载请声明来源钻瓜专利网。