[发明专利]内核级return-oriented rootkits的防御方法有效
申请号: | 201110356081.5 | 申请日: | 2011-11-10 |
公开(公告)号: | CN102375957A | 公开(公告)日: | 2012-03-14 |
发明(设计)人: | 李金库;马建峰;谢琨;杨超 | 申请(专利权)人: | 西安电子科技大学 |
主分类号: | G06F21/22 | 分类号: | G06F21/22 |
代理公司: | 陕西电子工业专利中心 61205 | 代理人: | 王品华;朱红星 |
地址: | 710071*** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开一种内核级return-oriented rootkits的防御方法,主要解决现有技术无法抵御最新内核级return-oriented rootkits攻击的问题。其实现步骤是:首先由编译器为每个控制数据分配一个索引并进行相关指令的转换,以在程序跳转时,不直接使用控制数据,而是使用为它分配的索引去查找某个跳转表格,获得真正有效的跳转地址来间接进行;然后将系统中所有有效的跳转地址即控制数据收集到函数指针表和返回地址表中予以保护。本发明使得return-oriented rootkits无法完成实施攻击的第二步,即它需要改写某个控制数据来改变系统原有的执行流程,可用于保护操作系统的安全。 | ||
搜索关键词: | 内核 return oriented rootkits 防御 方法 | ||
【主权项】:
一种内核级return‑oriented rootkits的防御方法,包括:(1)基于编译器的指令转换步骤(1.1)初始化返回索引ret_index为0;(1.2)创建一个空的函数指针索引文件fpindex_file;(1.3)在编译器后端的机器指令生成阶段,编译器取得操作系统中间表示IR指令集中的一条指令I;(1.4)判断指令I的类型,如果I是直接call指令,则执行步骤(1.5);如果I是间接call指令,则执行步骤(1.6);如果I是间接jump指令,则执行步骤(1.7);如果I是ret指令,则执行步骤(1.8);否则执行步骤(1.9);(1.5)对直接call指令I进行如下转换:(1.5a)在指令I前插入指令“push $ret_index”,并将返回索引ret_index加1;(1.5b)取得指令I的目标地址dst;(1.5c)在指令I前插入指令“jmp dst”;(1.5d)删除指令I;(1.5e)跳转到步骤(1.10);(1.6)对间接call指令I进行如下转换:(1.6a)取得指令I的目标地址dst;(1.6b)在指令I前插入指令“mov(dst),%reg”,其中reg表示寄存器;(1.6c)在指令I前插入指令“cmp $functable_size,%reg”,其中functable_size表示函数指针表的最大容量;(1.6d)在指令I前插入指令“jg err_handler”,其中err_handler为系统中定义的错误处理例程;(1.6e)在指令I前插入指令“push $ret_index”,并将返回索引ret_index加1;(1.6f)在指令I前插入指令“shl $0x3,%reg”;(1.6g)在指令I前插入指令“jmp*FuncTable(%reg)”,其中FuncTable表示函数指针表的基地址;(1.6h)删除指令I;(1.6i)跳转到步骤(1.10);(1.7)对间接jump指令I进行如下转换:(1.7a)取得指令I的目标地址dst;(1.7b)在指令I前插入指令“mov(dst),%reg”;(1.7c)在指令I前插入指令“cmp $functable_size,%reg”;(1.7d)在指令I前插入指令“jg err_handler”;(1.7e)在指令I前插入指令“shl $0x3,%reg”;(1.7f)在指令I前插入指令“jmp*FuncTable(%reg)”;(1.7g)删除指令I;(1.7h)跳转到步骤(1.10);(1.8)对ret指令I进行如下转换:(1.8a)在指令I前插入指令“pop%reg”;(1.8b)在指令I前插入指令“cmp $rettable_size,%reg”,其中rettable_size表示返回地址表的最大容量;(1.8c)在指令I前插入指令“jg err_handler”;(1.8d)在指令I前插入指令“shl $0x3,%reg”;(1.8e)在指令I前插入指令“jmp*RetTable(%reg)”,其中RetTable表示返回地址表的基地址;(1.8f)删除指令I;(1.8g)跳转到步骤(1.10);(1.9)遍历指令I的所有操作数,如果某个操作数与操作系统内核中的任意一个函数相关联,则为该关联函数分配一个唯一的函数指针索引,用分配的函数指针索引替换该操作数,并将分配的函数指针索引与其关联函数的映射关系记录到函数指针索引文件fpindex_file中;(1.10)如果操作系统中间表示IR指令集中还有未处理的指令,返回步骤(1.3),开始下一条指令的处理;否则结束;(2)函数指针表和返回地址表的构造步骤(2.1)在系统内存空间为函数指针表分配基地址FuncTable,并指定函数指针表的最大容量为functable_size;(2.2)在系统内存空间为返回地址表分配基地址RetTable,并指定返回地址表的最大容量为rettable_size;(2.3)创建一个空的临时文件temp_file,并将完成指令转换后的操作系统镜像文件中的内容输出到临时文件temp_file;(2.4)从临时文件temp_file中依次取得函数指针索引文件fpindex_file中记录的所有函数的入口地址,并将这些入口地址按照为它们所分配的函数指针索引值依次填入函数指针表的相应位置;(2.5)从临时文件temp_file中依次取得系统中所有有效的返回地址,并将这些返回地址依照它们所对应的返回索引的顺序依次填入返回地址表的相应位置;(2.6)将函数指针表设置为只读;(2.7)将返回地址表设置为只读。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安电子科技大学,未经西安电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201110356081.5/,转载请声明来源钻瓜专利网。
- 上一篇:一种第三横梁钻夹具
- 下一篇:燃料电池系统和配备有该燃料电池系统的电动车辆