[发明专利]基于地址随机的反内核挂钩方法在审
申请号: | 201511000483.6 | 申请日: | 2015-12-28 |
公开(公告)号: | CN105653906A | 公开(公告)日: | 2016-06-08 |
发明(设计)人: | 郭玉东;林键;何红旗;董卫宇;王立新;娄睿;李登;周少皇;蔄羽佳;魏小锋;陈刚 | 申请(专利权)人: | 中国人民解放军信息工程大学 |
主分类号: | G06F21/12 | 分类号: | G06F21/12 |
代理公司: | 郑州大通专利商标代理有限公司 41111 | 代理人: | 陈大通 |
地址: | 450052 河*** | 国省代码: | 河南;41 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 地址 随机 内核 挂钩 方法 | ||
技术领域
本发明涉及Linux内核防护技术领域,特别涉及一种基于地址随机的反内核挂钩方法。
背景技术
随着计算机技术的发展,计算机安全已经逐渐被更多人所关注。内核级Rootkit作为当前操作系统及其安全工具的最大威胁之一,严重影响系统内核的完整性和安全性。研究表明,96%的Rookit采用了内核挂钩方式。内核挂钩主要通过修改操作系统内核中的关键数据结构或代码,如文件系统、进程调度、内存管理、系统调用、中断处理等子系统中的函数或数据结构等,将内核程序的执行流程转移到Rootkit模块中的特定函数,从而实现隐藏的功能。因此,设计一种实用性强、可靠性高的内核级Rootkit防护方法尤为重要。
为防治内核挂钩攻击,人们提出了多种检测方法,如特征码扫描法、可执行路径分析(EPA)法、符号执行分析法、数据完整性检测法等。特征码扫描法需预先提取各类内核级Rootkit的特征码,通过扫描内核模块文件并将其与特征码比较即可发现恶意的Rootkit攻击,但该方法不能检测未知的Rootkit。可执行路径分析法需将CPU设为单步执行模式以获得程序的当前执行路径,通过将当前路径与程序的预设路径进行比较,可以发现内核模块的异常行为,但该方法严重影响系统的性能。符号执行分析法属于静态分析法,通过检测对系统重要内存区域的写操作,可以发现内核模块的恶意挂钩行为,但不能完全检测出恶意软件。数据完整性检测法需预先记录一个系统符号快照,通过将当前系统符号与系统未感染前的快照进行比对可以发现恶意的挂钩行为,获取快照的方式通常是读取system.map文件,但该文件可能被Rootkit篡改。现有的内核挂钩攻击防治方法主要侧重于检测,不够及时,可能在Rootkit执行一段时间之后才被检测出来;作用有限,仅能检测出已知的Rootkit;且性能开销大,没法部署到实际的操作系统中去。
发明内容
针对现有技术中的不足,本发明提供一种基于地址随机的反内核挂钩方法,能够在rootkit钩子函数第一次执行时发现rootkit,防止未知的rootkit内核挂钩方法,在模块初始化完毕之后增加随机化处理,并对部分内核接口函数进行改造,添加记录注册函数的功能,性能开销较小。
按照本发明所提供的设计方案,一种基于地址随机的反内核挂钩方法,包含如下步骤:
步骤1.加载内核模块,进行符号解析和地址重定位,执行内核模块中的初始化函数,并记录内核模块在初始化过程中的注册信息,内存模块占用内存空间区域包括模块初始化区域和模块核心区域,初始化完毕后,模块初始化区域被释放;
步骤2.随机申请一个内存空间,将内核模块的数据信息由原内存空间拷贝到随机申请的内存空间中,对随机申请的内存空间中的内核模块进行地址再重定位,并释放内核模块占用的原内存空间,将注册信息在内核子系统中内存地址记录下来;
步骤3.修改内核模块管理信息及注册信息,使其指向内核模块随机申请的内存空间的位置。
上述的,步骤1具体包含如下步骤:
步骤1.1将内核模块中的节信息分别对应加载到模块初始化区域和模块核心区域,内核模块初始化完毕后,模块初始化区域被释放,模块核心区域驻留在内存空间中直到内核模块被卸载;
步骤1.2将内核模块自身符号和内核模块需要用到的外部符号转换成实际内存地址,需要解析的符号的实际内存地址写入内核模块符号表中,内核模块符号表为记录需要解析的符号的名字、地址值及所关联节的索引号的结构体数组;
步骤1.3将内核模块中指令和数据地址修正为实际内存地址,ELF格式的内核模块文件按节组织重定位信息,将一个节中需要修正的地址及修正方法记录在另一个类型为REL或RELA的重定位节中;
步骤1.4内核模块加载到内核空间后执行内核模块初始化函数,完成内核模块自身的初始化工作,记录内核模块在初始化过程中的注册信息,将内核模块注册的函数和操作集地址写入内核子系统,将内核模块通过钩子挂接到内核子系统中,钩子即为内核子系统中用于保存函数和操作集地址的指针。
上述的,步骤2中随机申请一个内存空间在内核模块初始化函数执行完毕之后,内核模块加载函数返回之前进行。
上述的,步骤2具体包含如下步骤:
步骤2.1.将内核模块的数据信息由原内存空间拷贝到随机申请的内存空间中;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军信息工程大学,未经中国人民解放军信息工程大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201511000483.6/2.html,转载请声明来源钻瓜专利网。