[发明专利]一种基于QEMU的内核级代码重用型攻击检测方法有效
申请号: | 201510574168.8 | 申请日: | 2015-09-10 |
公开(公告)号: | CN105260659B | 公开(公告)日: | 2018-03-30 |
发明(设计)人: | 李金库;程坤;孙聪;卢笛;姚青松;马建峰 | 申请(专利权)人: | 西安电子科技大学 |
主分类号: | G06F21/56 | 分类号: | G06F21/56 |
代理公司: | 西安通大专利代理有限责任公司61200 | 代理人: | 徐文权 |
地址: | 710065 陕*** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种基于QEMU的内核级代码重用型攻击检测方法,主要解决现有技术依赖硬件或需要修改内核源代码的问题。它通过对QEMU虚拟机管理器的功能模块进行扩展,遍历检测运行在其上的操作系统内核中的每一条指令,从中识别出与控制流程相关的跳转指令,包括ret和间接call指令,通过记录它们的跳转目标地址,然后将这些目标地址与系统正常执行流程中的合法目标地址进行对比来检测系统是否正常执行;同时,它对中断发生时压入栈中的中断返回地址和中断实际返回时使用的返回地址进行对比验证,以判断是否发生了攻击。本发明针对代码重用型攻击均需要改变系统原有执行流程的特点,通过对改变内核执行流程的指令(和地点)进行监测,能有效发现攻击,可用于保护操作系统的安全。 | ||
搜索关键词: | 一种 基于 qemu 内核 代码 重用 攻击 检测 方法 | ||
【主权项】:
一种基于QEMU的内核级代码重用型攻击检测方法,其特征在于,包括以下步骤:1)预处理1.1)创建一个空的临时文件temp_file,并将操作系统内核镜像文件中的内容输出到临时文件temp_file中;1.2)创建一个记录内核中函数入口地址的文件func_addr_file,从temp_file文件中依次取得内核所有函数的入口地址,并将这些地址写入func_addr_file文件中;1.3)创建一个记录内核中函数返回地址的文件ret_addr_file,从temp_file文件中依次取得系统中所有有效的函数返回地址,并将这些地址写入ret_addr_file文件中;2)基于QEMU的跳转指令目标地址的记录和中断流程验证,具体方法如下:2.1)使用QEMU启动虚拟机内核;2.2)在QEMU的从客户机指令到主机指令的翻译阶段,取得内核指令中的一条指令I;2.3)在对指令I进行翻译之前,首先判断是否发生了中断事件,如果发生了中断,则跳转到步骤2.7);2.4)判断指令I的类型:如果I是间接call指令,则跳转到步骤2.5);如果I是ret指令,则跳转到步骤2.6);否则跳转到步骤2.8);2.5)对间接call指令I进行如下操作:2.5a)若文件call_addr.out不存在,则创建记录间接call指令目标地址的文件call_addr.out;2.5b)在翻译间接call指令I时,对其标志call_flag赋值为1;2.5c)若此时发生中断,进入中断处理函数时判断call_flag是否为1,若是,则记录中断处理时压栈的返回地址到call_addr.out文件中,然后将call_flag赋值为0,跳转到步骤2.5e);2.5d)QEMU跳转到间接call指令的目标地址进行翻译,在翻译之前判断标志call_flag是否为1,若是,则记录翻译块首地址到call_addr.out文件中,即为间接call指令的目标地址,然后将call_flag赋值为0;2.5e)跳转到步骤2.8);2.6)对ret指令I进行如下操作:2.6a)若文件ret_addr.out不存在,则创建记录ret指令的目标地址的文件ret_addr.out;2.6b)在翻译ret指令I时,对其标志ret_flag赋值为1;2.6c)若此时发生中断,进入中断处理函数时判断ret_flag是否为1,若是,则记录中断处理时压栈的返回地址到ret_addr.out文件中,然后将ret_flag赋值为0,跳转到步骤2.6e);2.6d)QEMU跳转到ret指令的目标地址进行翻译,在翻译之前判断ret_flag是否为1,若是,则记录翻译块首地址到ret_addr.out文件中,即为ret指令的目标地址,然后将ret_flag赋值为0;2.6e)跳转到步骤2.8);2.7)对中断进行如下操作:2.7a)若int_addr.out文件不存在,则创建记录中断信息的文件int_addr.out;2.7b)若无自定义栈,则初始化栈int_addr,栈顶指针指向第一个位置;2.7c)在QEMU处理中断的函数中将系统压栈的返回地址同时压入自定义栈int_addr中;2.7d)当QEMU执行中断程序完毕后,调用中断返回指令时,将自定义栈int_addr中的返回地址出栈,与中断返回指令的返回地址相比较,如果二者不同,则报告发生了攻击,并将对比结果不同的返回地址记录到int_addr.out文件中;2.7e)跳转到步骤2.4);2.8)如果操作系统内核还有未处理的指令,返回步骤2.2),开始下一条指令的处理;否则结束;3)跳转指令目标地址验证在指令翻译的同时,对QEMU记录的跳转指令的目标地址进行验证,检测是否发生了攻击。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安电子科技大学,未经西安电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201510574168.8/,转载请声明来源钻瓜专利网。
- 上一篇:幕墙板安装的连接组件
- 下一篇:海洋重防腐涂料用腰果胺环氧固化剂及其制备方法