针对基于Xen的Linux虚拟机恶意代码攻击的内核完整性检测方法技术

技术编号:12782074 阅读:82 留言:0更新日期:2016-01-28 01:13
本发明专利技术涉及云计算安全领域,特别是一种针对基于Xen的Linux虚拟机恶意代码攻击的内核完整性检测方法。本发明专利技术首先将恶意代码检测工具部署在Xen系统的Domain0中,然后启动Linux虚拟机并使用Xen的虚拟机管理器的DomainU访问接口层获取Linux虚拟机内核关键区域的信息,每隔一段时间获取目标Linux虚拟机内核关键区域的信息,把获取的内核关键区域信息与第一次获取的信息进行对比;如果信息一致,则认为被检测Linux虚拟机是正常的;如果不一致,则调用处理模块,记录下不一致信息所在的具体位置,向系统管理员告警。本发明专利技术解决了传统恶意软件检测工具容易受到攻击导致失效的问题;可以用于Linux虚拟机恶意代码攻击的内核完整性检测。

【技术实现步骤摘要】

本专利技术涉及云计算安全领域,特别是一种。
技术介绍
随着云计算的不断发展,其应用领域也越来越大。伴随着云计算安全问题越来越引起人们的关注。恶意代码攻击是一种常见的攻击手段,目前最新的恶意代码尤其是内核态的恶意代码越来越难以被检测到,对操作系统内核的破坏性也越来越大。传统的恶意代码检测方法中多数把检测工具部署在与恶意代码相同的操作系统中,以特征码识别为主要手段对恶意代码进行检测,这种方法能够直接获取被监控操作系统的诸多信息,拥有高可见性,便于判断是否受到攻击,但是也存在以下的弊端:1、当被监控的操作系统被恶意代码成功入侵时,检测工具同样会暴露在恶意代码的控制之下,不能发挥正常的检测功能。2、由于内核空间的函数指针、函数代码、静态数据结构数量很多,如果按照特征码识别的方法进行全面检测,那么会消耗过大的计算机资源和时间资源,会严重影响计算机系统性能。
技术实现思路
本专利技术解决的技术问题在于提供一种可用、高效的针对虚拟机恶意代码攻击的内核完整性检测方法,解决现有恶意代码检测工具容易受到攻击、损耗过多资源的问题。本专利技术解决上述技术问题的技术方案是,包括如下步骤:所述的方法包括以下步骤:步骤1:将恶意代码检测工具部署在Xen系统的DomainO中;步骤2:启动Linux虚拟机;步骤3:检测工具使用Xen的虚拟机管理器的DomainU访问接口层获取Linux虚拟机内核关键区域的信息;步骤4:每隔一段时间,检测工具获取目标Linux虚拟机内核关键区域的信息;步骤5:检测工具把获取的内核关键区域信息与第一次获取的内核关键区域信息进行对比;如果信息一致,则跳到步骤4 ;如果不一致,则调用处理模块。所述的内核关键区域信息指的是Linux操作系统内核的系统调用表、系统调用函数地址、系统调用入口函数、中断调用表和中断或异常服务函数。所述的启动Linux虚拟机指的是启动Linux虚拟机的操作系统。所述的DomainU访问接口层指的是C语言库1 ibxc提供的两个接口 xc_vcpu_getcontext及xc_map_foreign_range,通过这两个接口,可以实现在DomainO中访问特定虚拟机DomainU中虚拟CPU和伪物理内存。所述的内核关键区域信息对比包括如下步骤:步骤1:中断描述符表完整性检测,如果一致,则继续下一步;如果不一致,则调用处理模块;步骤2:中断或异常服务函数完整性检测,如果一致,则继续下一步;如果不一致,则调用处理模块;步骤3:系统调用入口函数完整性检测,如果一致,则继续下一步;如果不一致,则调用处理模块;步骤4:系统调用表完整性检测,如果一致,则继续下一步;如果不一致,则调用处理模块;步骤5:系统调用服务函数完整性检测,如果一致,则继续下一步;如果不一致,则调用处理模块。本专利技术利用Xen虚拟机管理器对被检测虚拟机的CPU、内存信息完全可见的优势,针对恶意代码攻击内核的方法和目标的特点,对被检测虚拟机操作系统中的内核的关键区域的完整性进行检测从而确定恶意代码;利用虚拟机架构提供的隔离的特性,保证检测工具不受恶意代码的攻击。本专利技术的方法能产生如下的有益效果:1、本专利技术不需要在虚拟机内部安装任何恶意代码检测工具,避免恶意代码检测工具受到攻击而失效的问题,同时避免了应用传统方式时在每台虚拟机中安装恶意代码检测工具而带来的大工作量;2、本专利技术根据恶意代码工具目标的特点,只需要对内核关键区域进行信息收集和信息对比,是一种高效的检测方法。【附图说明】下面结合附图对本专利技术进一步说明:图1为本专利技术的流程图;图2为本专利技术的内核完整性信息检测的流程图。【具体实施方式】下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。下面以8086系统架构的计算机上,具体讲述本专利技术的一个【具体实施方式】。首先对DomainU访问层进行扩展,实现以下两个函数:(1) read_register.(2)read_kernel_vir_addr.read_register ():在 libxc库中 xc_vcpu_getcontext 函数的基础上实现,对其进行简单的封装。通过read_register ()接口可以访问目标Domain中虚拟CPU的EAX、EBX、EXC、EDX、EBP、ESP、ES1、ED1、CRO、CR1、CR2、CR3、CR4、GDTR、LDTR、IDTR 等寄存器的数据。read_register是对xc_vcpu_getcontext函数的简单封装,本文不进行详细叙述。read_kernel_vir_addr ():在 libxc 库中 xc_vcpu_getcontex,xc_map_foreign_range函数的基础上实现。部署在DomainO中的检测工具通过该接口可以访问目标Domain中内核态虚拟地址空间的数据。把上述修改后的接口层编译后部署在DomainO中;DomainO启动后,进行以下初始化:传入中断个数idtNum,sysNum ;从system, map读取中断描述符表的地idtBase,读取系统调用表的地址sysBase,中断入口函数system_call地址enAddrl,中断入口函数sysenter_entry 的地址 enAddr2。特定的虚拟机DomainU启动后,获取内核关键区域信息:1)通过 read_kernel_vir_addr 获取目标 Domain 内 idt Base 处长度为 8*idt Num的内容,存储在数组init Idt Table中。2)对initldtTable表中的每个中断描述符表项(8字节大小),提取出中断或异常处理函数的地址,依次调用read_kernel_vir_addr读取这些函数的前N个字节的内容,存储在二维数组 initldtCode 中。3)通过 read_kernel_vir_addr 获取目标 Domain 内 enAddrl 处长度为 N 的内容,存储在数组 initSysEntlCode中。4)通过 read_kernel_vir_addr 获取目标 Domain 内 enAddr2 处长度为 N 的内容,存储在数组initSysEnt2中。[004当前第1页1 2 本文档来自技高网...

【技术保护点】
一种针对基于Xen的Linux虚拟机恶意代码攻击的内核完整性检测方法,其特征在于:所述的方法包括以下步骤:步骤1:将恶意代码检测工具部署在Xen系统的Domain0中;步骤2:启动Linux虚拟机;步骤3:检测工具使用Xen的虚拟机管理器的DomainU访问接口层获取Linux虚拟机内核关键区域的信息;步骤4:每隔一段时间,检测工具获取目标Linux虚拟机内核关键区域的信息;步骤5:检测工具把获取的内核关键区域信息与第一次获取的内核关键区域信息进行对比;如果信息一致,则跳到步骤4;如果不一致,则调用处理模块。

【技术特征摘要】

【专利技术属性】
技术研发人员:莫展鹏杨松季统凯
申请(专利权)人:国云科技股份有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1