[发明专利]内核级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的防御方法,可用于保护操作系统的安全。
背景技术
作为一种当代恶意流行软件,内核级rootkits由于能够隐藏攻击者的踪迹并从根本上颠覆整个操作系统,给用户计算机系统安全带来了巨大威胁。rootkits可以在被攻陷的计算机上获得并保持不受限制的访问权限,包括盗取用户的敏感信息,升级恶意程序的系统权限和开启后门访问通道等。更糟糕的是,所有的这些恶意操作都能够逃过防病毒软件的检测。
传统的内核级rootkits通常需要执行新注入的代码,用户通过保证内核代码完整性,即只允许经过授权的代码才能运行就能够予以阻止。但新生代return-oriented rootkits[Hund et al.,USENIX Security 2009]已经不再需要任何新注入的代码,它们仅仅利用已有合法代码就能构造出完整的攻击,从而可以逃过代码完整性防护机制的检测,相关研究者已经在美国选举投票机上验证了return-oriented rootkits的可行性。
第一代return-oriented rootkits在构造攻击时,由于它精心选择的所有指令片段都必须以return指令结尾,Li等提出了一种基于编译器的去除所有return操作码字节的技术方法-return-less[Li et al.,ACM EuroSys 2010]。Return-less通过三个子技术:return indirection,peephole优化和寄存器分配算法来去除操作系统内核中所有的return操作码字节,从而使得攻击者无法选择可用的指令片段构造攻击。然而,最新的return-oriented rootkits变种已经不再依赖于return指令,而是改为利用return-like指令来串接指令片段,比如利用“pop+jump”指令序列[Checkoway et al.,ACM CCS 2010]或间接跳转指令[Bletsch et al.,ACM ASIACCS 2011],非常难以对付。
发明内容
为了弥补现有技术的不足,本发明提出了一种基于编译器的内核级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”;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安电子科技大学,未经西安电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110356081.5/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种第三横梁钻夹具
- 下一篇:燃料电池系统和配备有该燃料电池系统的电动车辆