首页> 中国专利> 基于Xen虚拟化环境的内核级rootkit检测和处理方法

基于Xen虚拟化环境的内核级rootkit检测和处理方法

摘要

基于Xen虚拟化环境的内核级rootkit检测和处理方法,所述Xen虚拟化环境包括管理域、虚拟机监控器和半虚拟化的客户机;管理域包括控制模块,虚拟机监控器包括安全链表维护模块、检测模块和敏感信息备份模块,客户机包括运行时维护模块和rootkit处理模块。还包括客户机启动过程中敏感信息备份、内核模块加载时安全链表更新、内核模块加载成功后交叉对比检测rootkit、内核敏感信息攻击性检测和在管理域对客户机中的rootkit进行处理的步骤。本发明同步构建用户视图并与内核视图和虚拟机监控器层视图进行交叉对比,避免误检与漏检;准确地提供内核态rootkit的数量与其在内存中的位置并对检测到的rootkit的攻击行为及时恢复避免扩散;还提供了在管理域统一处理检测到的内核态rootkit的方法。

著录项

  • 公开/公告号CN103886259A

    专利类型发明专利

  • 公开/公告日2014-06-25

    原文格式PDF

  • 申请/专利权人 四川大学;

    申请/专利号CN201410103002.3

  • 发明设计人 陈兴蜀;任益;张磊;陈林;曾雪梅;

    申请日2014-03-19

  • 分类号G06F21/56(20130101);

  • 代理机构51200 成都信博专利代理有限责任公司;

  • 代理人卓仲阳

  • 地址 610065 四川省成都市武侯区一环路南一段24号

  • 入库时间 2024-02-20 00:20:11

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-09-21

    授权

    授权

  • 2014-07-16

    实质审查的生效 IPC(主分类):G06F21/56 申请日:20140319

    实质审查的生效

  • 2014-06-25

    公开

    公开

说明书

技术领域

本发明涉及云计算平台上的恶意软件检测和处理技术领域,具体来讲是一种基于Xen虚 拟化环境的内核级rootkit检测和处理方法。

背景技术

云计算,是继互联网之后业界又一个突破性的发展,它通过Internet以服务的方式提供 动态可伸缩的虚拟化资源供用户使用。云计算使资源的利用与信息的共享达到了空前的高度。 而与此同时,系统的安全威胁也日益加剧,恶意软件常常对系统造成严重的危害,对用户造 成巨大的损失。平台的安全,已成为了用户将资源与服务迁移到云计算平台上的顾虑。

恶意软件在入侵系统后,常常会通过提高自身权限进行非授权操作,同时为了维持对系 统的继续控制,会在系统中留有后门,如监听进程和网络连接等。当前,恶意软件更呈现出 隐蔽性与伪装性,为安全软件的检测带来了极大的困难,rootkit便是这类恶意软件中危害 十分严重的代表。rootkit主要分为两类:用户级rootkit和内核级rootkit,其常见的攻击 行为包括隐藏攻击者的恶意进程、文件及网络连接,提供未授权的高级权限、监听、系统日 志清除及系统后门等。用户级rootkit存在于操作系统的用户空间层,较易被检测到。内核 级rootkit存在于内核空间中,通常以LKM的形式插入内核,与内核拥有同样的特权级,此 类rootkit的攻击常常是通过修改内核关键数据实现,隐藏性强,难以被检测,本发明针对 内核级rootkit进行检测。

云计算的核心技术是虚拟化技术,由于虚拟机监控器(Virtual Machine Monitor,简称 VMM)具有更小的可信计算基、强隔离性、可干涉性及高特权级等优势,虚拟化环境下的rootkit 检测已经成为一种重要的恶意软件检测方式。Xen是一个开放源代码虚拟机监控器,由剑桥 大学开发。当前基于虚拟化环境下的rootkit检测主要是通过交叉视图的对比,检测系统中 隐藏的rootkit,但是由于当前方式中视图获取的异步性,特别是用户视图获取的异步性, 常常导致rootkit的误检与漏检。当前的检测方式由于信息有限,往往只能检测出系统中存 在有隐藏的rootkit或则存在rootkit数量,但却无法进一步获取rootkit在系统内存中的 位置,为后续的处理带来了困难。

发明内容

本发明的目的是提供一种基于Xen虚拟化环境的内核级rootkit检测和处理方法,利用 以Xen为虚拟机监控器的虚拟化环境,实现对目标客户机中rootkit的检测。

实现本发明目的的技术方案如下:

一种基于Xen虚拟化环境的内核级rootkit检测和处理方法,所述Xen虚拟化环境包括 管理域、虚拟机监控器和半虚拟化的客户机,管理域包括控制模块,虚拟机监控器包括安全 链表维护模块、检测模块和敏感信息备份模块,半虚拟化的客户机包括运行时维护模块和 rootkit处理模块;还包括

步骤1:在客户机启动过程中,内核敏感数据初始化完成,没有用户进程运行和内核模块加 载时,敏感信息备份模块对内核中的敏感信息进行备份,包括

客户机初始化时,客户机发起超级调用HYVERVISOR_set_trap_table向虚拟机监控器注 册虚拟机中断描述符表;

虚拟机监控器调用do_set_trap_table函数进行虚拟机中断描述符表注册; 在do_set_trap_table函数中,添加敏感信息备份模块,敏感信息备份模块通过 copy_from_guest函数读取内核敏感信息,对内核中的敏感信息进行备份;所述内核中的 敏感信息包括系统调用表、中断描述表、系统调用处理例程头部和敏感系统调用头部;

步骤2:客户机内核模块通过应用层工具进行加载时,运行时维护模块收集正在被加载内核 模块的信息,进行安全链表更新操作,包括

应用程序进行内核模块加载,触发内核的sys_init_module系统调用,在sys_init_module 函数进一步调用load_module函数进行模块加载,运行时维护模块通过对 sys_init_module函数与load_module函数的劫持,收集被加载内核模块的信息,调用超 级调用向安全链表维护模块传递内核模块信息并发起安全链表更新请求;所述被加载内 核模块的信息包括内核模块名称与内核模块控制结构体在内存中的位置;

安全链表维护模块检查安全链表更新请求的合法性,如果合法则获取运行时维护模块所 传递的内核模块信息并进行安全链表更新操作,如果不合法,则忽略此请求;

步骤3:客户机内核模块加载成功后,运行时维护模块同步建立用户视图,并收集用户视图 和内核视图信息,触发超级调用,陷入虚拟机监控器,与安全链表提供的安全链表视图交叉 对比进行rootkit检测,包括

运行时维护模块通过call_usermodehelper调用用户态程序lsmod产生用户态视图文件; 运行时维护模块根据用户态视图文件在内核中分配内存,重构用户视图Vu

运行时维护模块收集用户视图Vu和内核视图Vk的信息,触发超级调用向检测模块发起检 测请求;

检测模块进行隐藏性检测,如果存在内核模块E,其出现在Vk中却不在Vu中,则E为 rootkit,查询安全链表中E的信息,记录到检测记录中;如果存在内核模块e,其出现 在安全链表视图Vs中却不在Vk中,则e为rootkit,将e的信息记录到检测记录中;

步骤4:检测模块进行内核敏感信息攻击性检测,包括 检测模块读取客户机当前的IDT表信息,与虚拟机监控器中的敏感信息备份进行对比, 查看客户机的IDT表内容是否被篡改;如果被篡改,则当前所加载内核模块为rootkit, 检测模块恢复被篡改的内容并记录下此rootkit具体的攻击到检测记录中;

检测模块检测系统调用处理例程的头部是否被篡改,检测系统调用处理例程中call指令 后的系统调用表地址是否被篡改;如果被篡改则当前所加载内核模块为rootkit,检测模 块恢复被篡改的内容并记录下此rootkit具体的攻击到检测记录中;

检测模块检测敏感系统调用的头部是否被篡改,以及其在系统调用表中的地址是否正确; 如果被篡改则当前所加载内核模块为rootkit,检测模块恢复被篡改的内容并记录下此 rootkit具体的攻击到检测记录中;

步骤5:在管理域对客户机中的rootkit进行处理,包括

通过控制模块,查看虚拟机监控器中的检测记录,获取到客户机当前遭受rootkit攻击 的情况,根据攻击情况,发出出信息恢复或rootkit卸载的处理命令;

控制模块通过通信区域传递处理命令;

rootkit处理模块监控通信区域的变化,当新的命令到达时,rootkit处理模块获取命令, 分析命令,根据命令对rootkit进行处理,包括rootkit信息恢复:通过读取安全链表 中的信息,在客户机内核中将rootkit缺失的链表信息进行恢复;以及rootkit卸载: 利用客户机中的应用层工具实现对rootkit的卸载。

本发明的有益效果在于,基于rootkit的隐藏性与其对内核敏感信息的攻击性进行检测, 能够同步构建用户视图并与内核视图和VMM层视图进行交叉对比避免了误检与漏检;能够准 确地提供客户机中内核态rootkit的数量与其在内存中的位置;对检测到的rootkit对客户 机内核的攻击行为及时恢复以避免攻击扩散;并提供了一种在管理域统一处理Xen虚拟化平 台上虚拟机中检测到的内核态rootkit的方法。

附图说明

图1是本发明的整体框架图;

图2是本发明安全链表维护流程图;

图3是本发明安全链表更新维护操作合法性检测原理图;

图4是本发明rootkit隐藏性检测流程图;

图5是本发明rootkit敏感信息攻击检测流程图。

具体实施方式

本发明是基于Xen虚拟化环境的内核态rootkit检测与处理方法,从rootkit的隐藏性 和rootkit对内核敏感信息的攻击情况,检测存在于客户机中的rootkit,并对检测到的 rootkit提供了定位、卸载与信息恢复的处理方式。

图1为本发明的整体框架图,如图所示,本发明包括三个部分:管理域、虚拟机监控器 Xen和客户机。

控制模块

控制模块位于Xen虚拟化架构的管理域Dom0中,其功能包括:1)通过privcmd驱动, 与虚拟机监控器Xen进行交互,查看攻击记录获取虚拟化平台上客户机所受rootkit攻击的 情况;2)利用libxc库与Xenstore交互,向位于客户机中的rootkit处理模块发送rootkit 处理命令,并接收处理结果信息。

敏感信息备份模块

敏感信息备份模块位于虚拟机监控器Xen层,当客户机机向Xen注册虚拟中断描述符表 时利用copy_from_guest与IDT表提供的地址信息,负责在客户机初始化时获取客户机内核 敏感信息并存储于敏感信息备份库。

安全链表维护模块

安全链表维护模块根据客户机中的运行时维护模块传递的模块信息,在虚拟机监控器层 建立起客户机内核模块的安全链表,安全链表中存储有内核模块的名称与其控制模块在内核 中的信息。

运行时维护模块

运行时维护模块位于客户机中,可通过修改内核源码或以内核模块形式存在于内核中, 通过对sys_init_module函数与load_module函数的劫持,收集所加载内核模块的信息,通 过触发特定的超级调用,将信息传递到虚拟机监控器层,并进一步由虚拟机监控器层通过安 全链表维护模块建立起安全链表。

在模块初始化函数执行后,运行时维护模快借助用户态工具lsmod生成用户视图信息, 并将生成的用户视图信息与内核中存在的内核模块信息module_list链表传递到虚拟机监控 器层,触发rootkit检查。

检测模块

检测模块位于虚拟机监控器层,包括隐藏性检测与敏感信息攻击检测。隐藏性检测通过 对比用户视图Vu、客户机内核视图Vk、安全链表视图Vs,对比它们之间的差异以发现隐藏内 核模块。敏感性攻击检测通过对比内核中的敏感信息与敏感信息备份库中的信息以发现 rootkit对内核敏感信息的攻击,并在检测到rootkit对内核敏感信息攻击时及时恢复敏感 信息以保证内核的完整性。

rootkit处理模块

rootkit处理模块通过Xenstore与管理域中的控制模块进行交互,rootkit处理模块监 听Xenstore上的特定键,获取来自控制模块的命令,执行信息恢复或rootkit卸载命令,并 将处理结果返回给控制模块。信息恢复可以将内核态rootkit缺失的链表信息恢复到内核管 理的内核模块链表module_list中,rootkit卸载利用用户层的rmmod及modprobe工具对 rootkit进行卸载。

本发明的rootkit检测与处理包含三个重要步骤:第一,在客户机初始化过程中,在客 户机尚处于可信阶段时,对内核敏感信息进行备份;第二,在内核模块加载时,同步进行 rootkit的隐藏性和对内核敏感信息攻击的检测;第三,根据检测结果,对检测到的rootkit 进行处理。

下面结合附图具体描述本发明的实施方式:

(一)客户机初始化过程中,敏感信息备份模块对内核敏感信息备份。

1)在客户机启动过程中,内核敏感数据初始化完成,没有用户进程运行和内核模块 加载时,对内核敏感信息进行备份,备份步骤如下:

(1)当客户机初始化的时候,Xen中半虚拟化的客户机发起超级调用 HYVERVISOR_set_trap_table向虚拟机监控器Xen注册虚拟机中断描述符表 (Virtual Interrupt Descriptor Table,简称VIDT)以处理异常;

(2)虚拟机监控器Xen调用do_set_trap_table函数进行VIDT注册,此时客户机 内核敏感数据初始化结束,系统中没有运行任何用户进程也还未加载内核模 块,此时内核中信息可信;

(3)在do_set_trap_table函数中,添加敏感信息备份模块,模块通过 copy_from_guest函数读取内核敏感信息,对内核中的敏感信息进行备份,备 份敏感信息内容包括系统调用表、中断描述表、系统调用处理例程头部、敏感 系统调用头部;

(二)内核模块加载时进行检测

1)在内核模块通过insmod、modprobe等应用层工具进行加载时,运行时维护模块收 集正在被加载内核模块的信息,包括内核模块名称与内核模块控制结构体在内存 中的位置,进行安全链表更新操作,如图2所示,步骤如下:

(1)应用程序insmod、modprobe等进行内核模块加载,应用程序触发内核的 sys_init_module系统调用,在sys_init_modue函数进一步调用 load_module函数进行模块加载,运行时维护模块通过对sys_init_module 函数与load_module函数的劫持,收集内核模块的信息,调用超级调用向VMM 传递内核模块信息并发起安全链表更新请求;

(2)安全链表维护模块首先检查安全链表更新请求的合法性,如果合法则获取运 行时维护模块所传递的内核模块信息并进行安全链表更新操作,如果不合 法,则忽略此请求。对安全链表更新操作合法性验证原理如图3所示,通过 函数调用栈,利用函数调用时压入调用栈中的EBP和EIP逆向追踪重构出函 数的调用路径,根据重构的函数调用路径与正常安全链表更新操作的函数调 用路径进行对比,判断安全链表更新的合法性。

2)内核模块加载成功后,运行时维护模块同步建立用户视图,并收集用户视图和内 核视图信息,触发超级调用,陷入VMM层与安全链表提供的安全链表视图Vs交叉 对比进行rootkit检测,内核视图为内核中的module_list链表,rootkit隐藏 性检测如图4所示,步骤如下:

(1)运行时维护模块通过call_usermodehelper调用用户态程序lsmod产生用户态 视图文件;

(2)运行时维护模块根据用户态视图文件在内核中分配内存,重构用户视图Vu

(3)内核视图为内核中维护的内核模块链表,运行时维护模块收集用户视图Vu和内 核视图Vk的信息,触发超级调用向检测模块发起检测请求;

(4)检测模块进行隐藏性检测,如果存在内核模块E,其出现在Vk中却不在Vu中, 则E为rootkit,查询安全链表中E的信息,记录到检测记录中;如果存在内 核模块e,其出现在安全链表视图Vs中却不在Vk中,则e为rootkit,将e的 信息记录到检测记录中;

3)检测模块进行内核敏感信息攻击性检如图5所示,敏感信息攻击检测步骤如下:

(1)检测模块读取客户机当前的IDT表信息,与VMM中的敏感信息备份进行对比, 查看客户机的IDT表内容是否被篡改,如果被篡改,则当前所加载内核模块为 rootkit,检测模块及时恢复被篡改的内容并记录下此rootkit具体的攻击到 检测记录中;

(2)检测模块检测系统调用处理例程,检测系统调用处理例程的头部是否被篡改, 检测系统调用处理例程中call指令后的系统调用表地址是否被篡改,如果被 篡改则当前所加载内核模块为rootkit,检测模块及时恢复被篡改的内容并记 录下此rootkit具体的攻击到检测记录中;

(3)检测模块检测敏感系统调用,检测其头部是否被篡改,以及其在系统调用表中 的地址是否正确,如果被篡改则当前所加载内核模块为rootkit,检测模块及 时恢复被篡改的内容并记录下此rootkit具体的攻击到检测记录中;

4)返回客户机中继续运行,rootkit检测过程结束。

(三)rootkit的处理。

本发明提供了一种在Xen的管理域实现对Xen虚拟化环境的客户机中的rootkit进 行统一处理的办法,而无需单独进入各个客户机进行处理。rootkit处理过程包含两个 模块:管理域的控制模块和客户机的rootkit处理模块。rootkit处理模块包含rootkit 信息恢复与rootkit卸载,处理步骤如下:

1)通过控制模块,管理员可以查看VMM中的检测记录,获取到客户机当前遭受rootkit 攻击的情况,根据攻击情况,管理员可以发出出信息恢复或rootkit卸载的处理 命令;

2)控制模块通过由Xenstore建立起的通信区域传递处理命令;

3)位于客户机中的rootkit处理模块监控通信区域的变化,当新的命令到达时, rootkit处理模块获取命令,分析命令,根据命令对rootkit进行相应处理;

信息恢复通过读取安全链表中的信息,在客户机内核中将rootkit缺失的链表信息进行 恢复;rootkit卸载根据命令中提供的信息,利用客户机中的rmmod、modprobe等应用层 工具实现对rootkit的卸载。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号