[发明专利]一种恶意代码捕获方法有效
| 申请号: | 201110029135.7 | 申请日: | 2011-01-26 |
| 公开(公告)号: | CN102622536A | 公开(公告)日: | 2012-08-01 |
| 发明(设计)人: | 杨轶;冯登国;苏璞睿;应凌云 | 申请(专利权)人: | 中国科学院软件研究所 |
| 主分类号: | G06F21/00 | 分类号: | G06F21/00 |
| 代理公司: | 北京君尚知识产权代理事务所(普通合伙) 11200 | 代理人: | 冯艺东 |
| 地址: | 100190 *** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 恶意代码 捕获 方法 | ||
1.一种恶意代码捕获方法,其步骤为:
1)配置硬件模拟器,硬件模拟器加载并启动目标操作系统;
2)硬件模拟器读取目标操作系统的虚拟内存,识别当前系统中执行的所有进程及进程所加载的动态库中的导出表,获取所述导出表中所有API的地址并拦截网络接收API函数;
3)根据网络接收API函数的返回值,将进程由网络接收到的数据包标记为污点数据包;
4)硬件模拟器反汇编当前进程执行的指令,如果该指令的源操作数偏移地址和长度在污点数据包范围内,则对该指令进行污点传播计算,如果该指令为API函数调用指令,则根据API地址获取该API名称并查询其传入参数的偏移和长度是否属于污点数据范围,如果属于污点数据范围则对该API调用进行污点传播计算;
5)判定污点传播过程中当前进程的状态是否发生异常行为,如果发生异常行为则判定当前进程为恶意代码,并从目标操作系统的内存中提取恶意代码镜像。
2.如权利要求1所述的方法,其特征在于所述配置硬件模拟器包括:配置硬件模拟器的模拟内存大小、模拟CPU的类型、虚拟硬盘。
3.如权利要求2所述的方法,其特征在于配置硬件模拟器的虚拟硬盘的方法为:采用线性寻址的方法创建虚拟镜像文件,将所创建虚拟镜像文件作为虚拟的硬盘。
4.如权利要求3所述的方法,其特征在于获取所述导出表中所有API的地址的方法为:比较所述动态库的导出表中的名称与API表中的名称,获取所述导出表中所有API的地址。
5.如权利要求1或2或3或4所述的方法,其特征在于所述污点传播计算的方法为:根据当前进程执行的指令,判定污点数据包所产生的污点数据所影响的变量和寄存器。
6.如权利要求5所述的方法,其特征在于所述异常行为包括:当前进程对应堆栈中的函数返回地址被污点数据包或者由污点数据包产生的污点数据覆盖、当前进程执行的API调用序列与预定义的异常行为序列匹配。
7.如权利要求6所述的方法,其特征在于判定当前进程的状态是否发生异常行为的方法为:
1)设置一异常行为序列,硬件模拟器读取并在内存中维护一个异常行为序列的单链表数据结构;
2)在当前进程的对应结构中创建污点记录;同时建立污点行为列表,记录当前进程对污点数据包或由污点数据包产生的污点数据进行操作的指令和API调用;
3)从当前进程网络数据接收函数返回的时刻开始,分析该进程后续执行的每一条指令:
如果该指令操作了污点数据,则将当前指令得到的结果作为由污点数据包产生的污点加入到所述污点记录中,并将该指令加入污点行为列表;如果是API调用,并且该API调用的参数含有污点数据包或由污点数据包产生的污点数据,则将该API调用加入污点行为列表;
4)判定污点数据操作的目标地址是否覆盖了函数的返回地址,如果覆盖则判定当前进程的状态发生异常行为;根据污点行为列表判定进程执行的API调用与内存中的异常行为序列是否匹配,如果匹配,则判定当前进程的状态发生异常行为。
8.如权利要求7所述的方法,其特征在于提取所述恶意代码镜像的方法为:对污点行为列表进行回溯,根据异常行为进程所调用的API和执行的指令,找到该进程的行为序列依赖的污点数据,即为捕获到的恶意代码;同时提取攻击过程执行的数据在整个污点数据包中的偏移、长度和内容。
9.如权利要求7所述的方法,其特征在于所述异常行为序列为一系列连续的API操作。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院软件研究所,未经中国科学院软件研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110029135.7/1.html,转载请声明来源钻瓜专利网。





