基于系统虚拟化技术的内核态Rootkit检测方法与流程

文档序号:12039178阅读:251来源:国知局
基于系统虚拟化技术的内核态Rootkit检测方法与流程
本发明涉及云计算安全领域,具体涉及云计算环境下一种基于系统虚拟化技术的内核态Rootkit检测技术。

背景技术:
近年来,以虚拟机技术为基础的云计算服务得到了迅速发展,越来越多的用户采用云计算服务,将数据向云计算中心迁移。而此时出现了借助Rootkit技术的跨虚拟机攻击等新型攻击形式。如何在虚拟化环境下,借助于虚拟机技术进行恶意代码及其他恶意攻击的检测,保障云计算中心的安全也成为了一个重要课题。Rootkit是恶意软件中最难以检测的类型,主要被恶意攻击者安装在目标系统中,通过修改目标系统重要系统文件或内核以实现隐藏攻击信息(Rootkit自身及其相关恶意软件)和帮助攻击者获取远程登录权限等功能。Rootkit主要分为用户态Rootkit和内核态Rootkit。用户态Rootkit主要通过替换篡改重要系统文件来达到隐藏攻击信息的目的,但其较容易被发现,生存能力低。而内核态Rootkit通过针对系统调用函数等进行恶意修改,隐蔽性好,攻击能力强,逐渐成为主流。传统针对内核态Rootkit的检测主要采用特征码扫描以及内核完整性检测等手段,但内核态Rootkit的不断发展使得这些检测工具常常受到Rootkit的攻击而失效。迫切需要一种新的检测思路对内核态Rootkit进行有效防治。

技术实现要素:
本发明通过对内核态Rootkit以及系统虚拟化技术进行深入分析,找到了一种利用系统虚拟化技术进行内核态Rootkit检测的新技术,同时为云计算环境下其他恶意代码的检测提供借鉴。为了解决上述问题,本发明提供了一种基于系统虚拟化技术的内核态Rootkit检测方法。一种基于系统虚拟化技术的内核态Rootkit检测方法,采用如下的步骤对虚拟机视图和用户视图进行对比以发现隐藏模块:1)模块监控器初始化包含目标客户机的模块列表module_list信息的 虚拟机视图V1;2)超级管理器模块监控目标客户机的系统调用;3)当超级管理器模块监控到发生系统调用sys_init_module()时记录其发生时间戳t1并通知模块监控器更新模块监控器虚拟机视图为V2,记录下V2构建完成的时间戳t2;sys_init_module():加载内核模块;4)若在t1和t2时间间隔内没有系统调用sys_delete_module()产生,则在分析器模块内对比视图V1和V2,若V1=V2,则说明存在隐藏项,调用超级管理器模块提取sys_init_module()的信息m,若则标记m为Rootkit,给出警告并继续步骤5,否则若sys_delete_module()产生,跳到步骤7;sys_delete_module():删除内核模块;5)模块获取器在被监控系统的用户空间中提取系统进程信息构建用户视图U,并将结果传回给分析器模块;6)在模块监控器利用根据Xenaccess提取process_list信息生成的视图V3,在分析器模块内对比视图U和视图V3,对任意进程P∈V2,若则标记P为Rootkit;process_list:进程列表;7)更新虚拟机视图V1使V1=V2,并重复步骤1)。作为本发明的进一步改进,Linux的系统调用通过两种方式实现:使用int0x80中断方式和使用快速系统调用sysenter/sysexit方式。sysenter/sysexit:系统调用进入\退出。作为本发明的进一步改进,针对0x80中断方式,对中断向量表上的0x80中断向量地址进行改动,使其陷入到中断处理函数中,从而截获系统调用,首先通过VMM读取CPU中GUEST_IDTR_BASE和GUEST_IDTR_LIMIT值,获得客户机的IDT地址,进一步找到0x80中断地址,将其地址设置为NO_PRESENT。VMM:虚拟机监控器;GUEST_IDTR_BASE:客户机中断向量表基址地址;GUEST_IDTR_LIMIT:客户机中断向量表长度;IDT:客户机中断向量表;NO_PRESENT:未显示。作为本发明的进一步改进,针对快速系统调用方式,通过改动SYSENTER_EIP_MSR寄存器值进行系统调用的截获,首先在VMexitHandler内记录实际的MSR寄存器值,然后在SYSENTER_EIP_MSR寄存器中写入一个不可访问的地址并返回。SYSENTER_EIP_MSR:系统调用指针基址特殊模块寄存器;VMexitHandler:虚拟机退出句柄;MSR:特殊模块寄存器;SYSENTER_EIP_MSR:系统调用指针基址特殊模块寄存器。作为本发明的进一步改进,虚拟机视图V1利用XenAccess获得,从System.map文件查找所需的内核符号及其虚拟地址信息,通过地址映射函数找到其物理页面地址,进一步就可以直接读取客户机中的模块列表信息。作为本发明的进一步改进,虚拟机视图V2通过监控模块加载\删除事件获得,通过利用超级管理器模块得到,首先监控模块加载\删除的系统调用,分析其调用信息,若出现模块加载,则将对应信息加入到V2中;若是模块删除,则将对应信息从V2中去除,通过实时监控最后得到稳定的虚拟机视图V2。作为本发明的进一步改进,模块获取器通过对提取客户机中的模块信息来构建用户视图,借助于lsmod工具提取客户机中的模块信息,用户视图只需要在模块监控器进行通知时进行构建。本发明通过在虚拟机监控器层部署,借助虚拟机的强隔离技术避免受到Rootkit的攻击;借助虚拟机技术构建的视图保证其真实性;加入时间戳机制保证能及时有效发现Rootkit的入侵;通过虚拟机视图、用户视图及内核视图的多重对比,从最大程度上检测Rootkit的存在。本发明通过对Rootkit原理与系统调用和LKM进行深入分析,得到内核态Rootkit隐藏自身模块信息这一行为特点。并针对这一特点,利用设计了基于视图交叉验证的Rootkit检测方法。本发明通过对Xen内核进行更改以截获系统调用,从而构建可信视图。利用目标客户机的用户态工具构建被感染视图。通过对比可信视图和被感染视图发现隐藏的模块。附图说明图1是本发明基于系统虚拟化技术的内核态Rootkit检测系统架构图;图2是本发明基于系统虚拟化技术的内核态Rootkit检测方法流程图。具体实施方式下面结合附图对本发明做进一步说明。本文中的英文简称含义如下:1)Rootkit:Rootkit是一种特殊的恶意软件,它的功能是在安装目标上隐藏自身及指定的文件、进程和网络链接等信息,比较多见到的是Rootkit一般都和木马、后门等其他恶意程序结合使用。Rootkit通过加载特殊的驱动,修改系统内核,进而达到隐藏信息的目的。2)LKM(LinuxKernelModule):Linux内核模块,指可以动态加载到Linux系统内核中的程序。3)LKMRootkit:是指可以直接加载到Linux系统内核的Rootkit,也即内核态Rootkit。4)module_list:模块(驱动)列表,记录所有加载到内核的模块信息列表。5)Xen:是英国剑桥大学计算机实验室开发的一个虚拟化开源项目,Xen可以在一套物理硬件上安全的执行多个虚拟机,它和操作平台结合的极为密切,占用的资源最少。6)XenAccess:基于Xen的开源函数库,提供在外部监测系统级虚拟机运行状态的接口。7)XenControlLibray:是一个C语言库,它提供了一些简单易用的接 口,使用户程序可以方便的和虚拟化系统Xen进行通信。8)System.map:包含内核所有符号及其实际内存地址列表的文件。9)Dom0:Xen中具有特权权限的客户机,用以辅助Xen管理其他的客户机,并提供虚拟的资源服务,Dom0内部包含了真实的设备驱动,可直接访问物理硬件,负责与Xen提供的管理API交互,并通过用户模式下的管理工具来管理Xen的虚拟机环境。10)DomU:Xen中的普通客户机。11)lsmod:linux提供的列出内核模块列表的工具。12)MSR寄存器:机器状态寄存器(MachineStatusRegister,MSR),MSR保存处理器的控制和状态标志。在本发明中将采用基于时间戳的视图交叉验证方法:首先利用虚拟机内视技术获得目标客户机模块信息的虚拟机视图,然后对目标客户机的模块加载移除等相关系统调用进行监控,若在加载后移除前,虚拟机视图并未变化,则说明会有Rootkit存在。同样在若用户态提取进程信息生成的用户视图和在内核中提取内核信息生成的视图存在差异,则同样说明会议Rootkit存在。其主要原理如下:Rootkit主要通过修改系统信息来实现自身的隐藏,其分为两个部分:一种在内核态,主要通过修改内核模块列表module_list信息,去除自身的信息来实现隐藏;另一种在用户态,主要通过修改进程信息process_list信息,去除自身的信息来实现隐藏。虚拟机视图V1是根据读取的模块列表module_list信息生成,而且module_list是可能会被Rootkit修改过的。在本发明系统中,先生成虚拟机视图V1,当有模块加载系统调用发生时再生成虚拟机视图V2,若V1=V2,则说明加载的内核模块信息进行了隐藏,故该模块可能就是内核态Rootkit。再进一步对用户空间中利用用户态程序根据进程信息生成的视图U和在内核空间中利用Xenaccess提取process_list信息生成的视图V3,若发现在视图V3中存在的进程项在视图U不存在,则说明Rootkit将自身信息从用户态程序中隐藏则,则标记此项为隐藏项。本发明主要采用如下的方法对虚拟机视图和用户视图进行对比以发现隐藏模块:1)模块监控器初始化包含目标客户机的模块列表module_list信息的虚拟机视图V1;2)超级管理器模块监控目标客户机的系统调用;3)当超级管理器模块监控到发生系统调用sys_init_module()(即有新模块载入到系统内核中)时记录其发生时间戳t1并通知模块监控器更新模块监控器虚拟机视图为V2,记录下V2构建完成的时间戳t2;4)若在t1和t2时间间隔内没有系统调用sys_delete_module()产生,则在分析器模块内对比视图V1和V2,若V1=V2,则说明存在隐藏项,调用超级管理器模块提取sys_init_module()的信息m,若则标记m为Rootkit,给出警告并继续步骤5,否则若sys_delete_module()产生,跳到步骤7;5)模块获取器在被监控系统的用户空间中提取系统进程信息构建用户视图U,并将结果传回给分析器模块;6)在模块监控器利用根据Xenaccess提取process_list信息生成的视图V3,在分析器模块内对比视图U和视图V3,对任意进程P∈V2,若则标记P为Rootkit;7)更新虚拟机视图V1使V1=V2,并重复步骤1)。本发明实现了系统Cross-View(Cross-View:视图交叉验证系统)。Cross-View主要由四个部分组成,超级管理器部分,模块监控器,模块获取器和分析器。由超级管理器部分捕获客户操作系统DomU的相关系统调用,将信息提交给Dom0中的模块监控器构建和更新虚拟机视图。当产生更新事件时,模块监控器通知在DomU中的模块获取器提取客户机中的模块信息构建用户视图,然后提交给分析器进行处理。分析器通过对比模块监控器构建的虚拟机视图与模块获取器构建的用户视图得到隐藏模块。Cross-View大致框架如图1所示。超级管理器模块这部分的功能主要是截获相关的系统调用和系统调用预处理。在实现上本发明主要是借助开源工具Ether对Xen内核进行改动。根据前文,Linux的系统调用主要通过两种方式实现:使用int0x80中断方式和使用快速系统调用sysenter/sysexit方式。在进行系统实现时,本发明对这两种方式均进行考虑。(1)针对0x80中断方式。本发明对中断向量表上的0x80中断向量地址进行改动,使其陷入到本发明的中断处理函数中,从而截获系统调用。在具体实现上,本发明首先通过VMM读取CPU中GUEST_IDTR_BASE和GUEST_IDTR_LIMIT值,获得客户机的IDT(中断向量表)地址,进一步找到0x80中断地址,将其地址设置为NO_PRESENT(通过对Xen的影子页表部分进行改动)。这样,若产生int0x80中断,系统就会触发VMexit命令进入Xen内核中vmx_handle_debug_exception()函数,本发明在其中添加相应的处理代码,从而实现对int0x80系统调用的截获。(2)针对快速系统调用方式。在这种方式下,本发明主要通过改动SYSENTER_EIP_MSR寄存器值进行系统调用的截获。因为在Xen中客户机进行快速系统调用将产生一次VMexit以通知Xen进行特权操作的处理。因此,本发明在系统初始化阶段将MSR寄存器改为系统中断入口地址。首先在VMexitHandler内记录实际的MSR寄存器值,然后在SYSENTER_EIP_MSR寄存器中写入一个不可访问的地址并返回。这样,当系统调用发生时,会由于错误的MSR寄存器地址导致VMexit,此时,本发明就可以截获系统调用进行相关处理。模块监控器模块模块监控器主要负责对虚拟机视图的构建与模块加载\删除事件的处理。这里虚拟机视图主要指被监控客户机的模块列表。虚拟机视图包括利用目标客户机的模块列表module_list信息的虚拟机视图V1和分析模块加载\删除事件构建的虚拟机视图V2。虚拟机视图V1主要利用XenAccess获得。其原理主要是利用Xen中XenControlLibray(libxc)提供的xc_map_foreign_range()地址映射函数,本发明从System.map文件查找所需的内核符号及其虚拟地址信息,通过地址映射函数找到其物理页面地址,进一步就可以直接读取客户机中的模块 列表信息。虚拟机视图V2主要通过监控模块加载\删除事件获得。这里本发明主要通过利用超级管理器模块得到,首先监控模块加载\删除的系统调用,分析其调用信息。若出现模块加载,则将对应信息加入到V2中;若是模块删除,则将对应信息从V2中去除。通过实时监控最后得到稳定的虚拟机视图V2。模块获取器模块获取器主要是通过对提取客户机中的模块信息来构建用户视图。这里主要借助于lsmod工具提取客户机中的模块信息。不同于虚拟机视图需要动态更新,用户视图只需要在模块监控器进行通知时进行构建。分析器模块分析器主要负责对视图进行对比从而发现是否存在隐藏模块。主要分为两种:(1)虚拟机视图V1和V2之间的对比。(2)虚拟机视图V2和用户视图U的对比。经过对比后,若发现存在差异,则认为隐藏模块,本发明认为这个模块就可能是Rootkit。给出警告。并通知模块监控器重新初始化虚拟机视图V1。以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1