[发明专利]一种恶意代码捕获方法有效
| 申请号: | 201110029135.7 | 申请日: | 2011-01-26 |
| 公开(公告)号: | CN102622536A | 公开(公告)日: | 2012-08-01 |
| 发明(设计)人: | 杨轶;冯登国;苏璞睿;应凌云 | 申请(专利权)人: | 中国科学院软件研究所 |
| 主分类号: | G06F21/00 | 分类号: | G06F21/00 |
| 代理公司: | 北京君尚知识产权代理事务所(普通合伙) 11200 | 代理人: | 冯艺东 |
| 地址: | 100190 *** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 恶意代码 捕获 方法 | ||
技术领域
本发明属于网络安全技术领域,具体涉及一种基于硬件模拟器和污点传播的恶意代码捕获方法。
背景技术
随着社会的不断发展和进步,计算机在社会各个领域的应用越来越广泛。由于软件漏洞的广泛存在和用户安全意识的不足,木马的传播速度越来越快,感染范围不断扩大,造成的破坏日益严重。传统的恶意代码捕获和分析手段由于受分析效率和用户技术水平的限制,响应周期难以缩短,响应速度已经逐渐不能适应这种新情况。因此,提高恶意代码的捕获和分析能力显得十分必要。
现有的恶意代码捕获工具,如360云安全平台、金山云安全平台等,必须对操作系统进行修改,如Hook系统函数,或者通过PsSetCreateProcessNotifyRoutine注册回调函数,才能实现相应的捕获功能。而由于对操作系统做修改,本身会引起完整性问题,因此被修改的数据补丁或者注册的函数很容易被恶意代码发现,并产生相应的对抗手段。同时由于当前的恶意代码捕获平台,都是在跟恶意代码同一操作系统上运行,在对系统的控制权上和恶意代码产生竞争关系,不利于准确而稳定的实现恶意代码捕获。
当前的恶意代码捕获技术,通常使用如下的几种方法:
1.系统完整性校验
系统完整性校验方法首先在干净的系统上创建系统快照或记录系统中文件散列数据的记录,在系统运行时随机或在特定行为执行后,将记录的系统快照或文件散列值和当前文件的相比较,当比较结果出现差异时,认为感染了恶意代码并提取恶意代码的样本。
2.启发式检测,提取违规行为
启发式检测的方法是通过定义正常操作,以其为基准比较代码执行流程中所产生的行为,度量当前恶意代码行为和正常操作之间的差异,当行为偏离正常操作较远时,认为是恶意行为,提取执行该行为的恶意代码样本。
目前分析隐藏进程中恶意代码的虚拟机调试分析方法,应用VMware、VirtualPC等虚拟机系统实现。虚拟机系统将虚拟指令直接交给本地的真实CPU执行,同时自身存在后门。隐藏进程中的恶意代码可通过检查代码执行时间,或者调用虚拟机后门功能的方法判别自己在一个虚拟系统上运行,采取操作隐藏真实功能。
综上,目前恶意代码样本提取的主要缺陷在于:隐藏进程和恶意代码处于同一层次上,容易被恶意代码检测并产生相应的对抗手段;仅能够提取恶意代码样本,而对其行为和攻击过程的分析不足。
发明内容
针对现有技术中存在的技术问题,本发明的目的在于提供一种基于硬件模拟器的恶意代码捕获方法,通过构建恶意代码运行环境,操纵和控制模拟CPU指令和各种模拟硬件的访问操作,硬件模拟器中的数据采集模块收集系统中所有进程的信息,以CR3为标志,分析进程执行过程;监控所有进程的运行过程,从虚拟内存中直接提取恶意代码镜像,分析攻击数据和攻击过程的相互关系,提取恶意代码执行的行为特征和攻击数据特征。
本发明的技术方案为:
一种恶意代码捕获方法,其步骤为:
1)配置硬件模拟器,硬件模拟器加载并启动目标操作系统;
2)硬件模拟器读取目标操作系统的虚拟内存,识别当前系统中执行的所有进程及进程所加载的动态库中的导出表,获取所述导出表中所有API的地址并拦截网络接收API函数;
3)根据网络接收API函数的返回值,将进程由网络接收到的数据包标记为污点数据包;
4)硬件模拟器反汇编当前进程执行的指令,如果该指令的源操作数偏移地址和长度在污点数据包范围内,则对该指令进行污点传播计算,如果该指令为API函数调用指令,则根据API地址获取该API名称并查询其传入参数的偏移和长度是否属于污点数据范围,如果属于污点数据范围则对该API调用进行污点传播计算;
5)判定污点传播过程中当前进程的状态是否发生异常行为,如果发生异常行为则判定当前进程为恶意代码,并从目标操作系统的内存中提取恶意代码镜像。
进一步的,所述配置硬件模拟器包括:配置硬件模拟器的模拟内存大小、模拟CPU的类型、虚拟硬盘。
进一步的,配置硬件模拟器的虚拟硬盘的方法为:采用线性寻址的方法创建虚拟镜像文件,将所创建虚拟镜像文件作为虚拟的硬盘。
进一步的,获取所述导出表中所有API的地址的方法为:比较所述动态库的导出表中的名称与API表中的名称,获取所述导出表中所有API的地址。
进一步的,所述污点传播计算的方法为:根据当前进程执行的指令,判定污点数据包所产生的污点数据所影响的变量和寄存器。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院软件研究所,未经中国科学院软件研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110029135.7/2.html,转载请声明来源钻瓜专利网。





