一种针对基于Xen的Linux虚拟机恶意代码攻击的隐藏进程检测方法

文档序号:9708661阅读:427来源:国知局
一种针对基于Xen的Linux虚拟机恶意代码攻击的隐藏进程检测方法
【技术领域】
[0001 ]本发明涉及云计算安全技术领域,特别是一种针对基于Xen的Linux虚拟机恶意代码攻击的隐藏进程检测方法。
【背景技术】
[0002]随着云计算的不断发展,其应用领域也越来越大。伴随着云计算安全问题越来越引起人们的关注。恶意代码攻击是一种常见的攻击手段,目前最新的恶意代码尤其是内核态的恶意代码的隐藏性也越来越好,越来越难以被检测到。隐藏进程对于系统内核、关键进程的危害性也越来越大。传统的恶意代码检测方法中多数把检测工具部署在与恶意代码相同的操作系统中,以特征码识别为主要手段对恶意代码进行检测,这种方法能够直接获取被监控操作系统的诸多信息,拥有高可见性,便于判断是否受到攻击,但是也存在以下的弊端:
[0003]1、当被监控的操作系统被恶意代码成功入侵时,检测工具同样会暴露在恶意代码的控制之下,不能发挥正常的检测功能,从而导致隐藏进程检测不出来的问题。
[0004]2、需要占用被监控虚拟机的资源,对系统性能造成了损失。

【发明内容】

[0005]本发明解决的技术问题在于提供一种可靠性、高效的针对虚拟机恶意代码攻击的隐藏进程检测方法,解决现有恶意代码检测工具容易受到攻击、损耗过多资源的问题。
[0006]本发明解决上述技术问题的技术方案是:
[0007]所述的方法包括以下步骤:
[0008]步骤1:将恶意代码检测工具部署在Xen系统的DomainO中;
[0009]步骤2:启动Linux虚拟机;
[0010]步骤3:每隔一段时间,检测工具使用Xen的虚拟机管理器的DomainU访问接口层获取Linux虚拟机中的硬件资源信息。通过这些信息构造出进程列表pi;
[0011 ]步骤4:通过调用Linux虚拟机操作系统内的工具,得到进程列表p2;
[0012]步骤5:对比pi与p2中的每一个进程,如果进程P出现在pi中,而未出现在p2中,则说明P为隐藏进程;如果P出现在两个进程中,则说明系统是安全的,跳转到步骤3。
[0013]所述硬件资源指的是CPU、伪物理内存的数据信息;
[0014]所述的启动Linux虚拟机指的是启动Linux虚拟机的操作系统
[0015]所述的DomainU访问接口层指的是C语言库libxc提供的两个接口xc_vcpu_getcontext及xc_map_foreign_range,通过这两个接口,可以实现在DomainO中访问特定虚拟机DomainU中虚拟CPU和伪物理内存。
[0016]所述调用Linux虚拟机操作系统内的工具指的是使用系统调用的手段调用Linux操作系统内安装的进程信息打印工具并获取打印信息,如调用ps命令。
[0017]所述对比进程指的是对比进程的ID和进程的名称,如果进程P的ID和名称与进程P7的ID和名称一致,那么说明P和K是同一个进程。
[0018]本发明利用Xen虚拟机管理器可以有效的监控DomainU中的硬件资源,包括虚拟CPU、伪物理内存的数据信息。通过这些字节码级别的底层信息构造出来的操作系统进程信息是可信赖的;利用虚拟机架构提供的隔离的特性,保证检测工具不受恶意代码的攻击。本发明的方法能产生如下的有益效果:
[0019]1、本发明不需要在虚拟机内部安装任何恶意代码检测工具,避免恶意代码检测工具受到攻击而失效的问题,同时避免了应用传统方式时在每台虚拟机中安装恶意代码检测工具而带来的大工作量;
[0020]2、本发明使用的恶意代码检测工具在虚拟机外进行检测,能保证虚拟机的性能。
【附图说明】
[0021 ]下面结合附图对本发明进一步说明:
[0022]图1为本发明的流程图。
【具体实施方式】
[0023]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0024]下面以8086系统架构的计算机上,具体讲述本发明的一个【具体实施方式】。
[0025]首先对DomainU访问层进行扩展,实现以下两个函数:
[0026](1)read_register.
[0027](2)read_kemel_vir_addr.
[0028]read_register():在libxc库中xc_vcpu_getcontext函数的基础上实现,对其进行简单的封装。通过r ead_r eg i s ter ()接口可以访问目标Domai n中虚拟CPU的EAX、EBX、EXC、EDX、EBP、ESP、ES1、ED 1、CRO、CR1、CR2、CR3、CR4、⑶TR、LDTR、IDTR等寄存器的数据。
[0029]read_register是对xc_vcpu_getcontext函数的简单封装,本文不进行详细叙述。
[0030]read_kernel_vir_addr():在libxc库中xc_vcpu_getcontex,xc_map_foreign_range函数的基础上实现。部署在DomainO中的检测工具通过该接口可以访问目标Domain中内核态虚拟地址空间的数据。
[0031 ]把上述修改后的接口层编译后部署在DomainO中;
[0032 ] 特定的虚拟机Doma i nU启动后,每隔一段时间通过Doma i nU访问接口层能获取得到目标Domain中的内存信息,重构目标Domain中的进程控制块链表,具体实现步骤如下:
[0033](1)从8}^七6111.1]^。文件读取内核符号;[11;[1:_1381^的地址,记作;[11;[1:_3(1(11',读取配置文件,确定next_task成员的偏移量next_off,确定pid成员的偏移量pid_off,确定comm成员的偏移量comm_of f ;定义变量cur_addr,赋值为init_addr。
[0034](2)调用read_kernel_vir_addr读取cur_addr处长度为sizeof (task_struct)大小的内容,保存在字符数组cur_task_var中。
[0035](3)根据pid_off,comm_off从cur_task_var中确定当前进程控制块的进程号、进程名。
[0036](4)根据next_off从cur_task_var中读取下一个进程控制块的地址next_addr,将cur_addr赋值为next_addr。比较cur_addr与ini t_addr,如果不相同则跳转到第(2)步。
[0037](5)已经重构了目标Domain中的所有进程控制块。
[0038]以上获得进程列表pi
[OO39 ]然后调用操作系统的p s -A命令打印所有进程的信息。
[0040]逐行获取进程的ID和进程的名称列表,组成进程列表p2。
[0041]把pi中的每个进程与P2列表进行对比(对比值进程ID:进程名称),如果进程P出现在pl中,而未出现在P2中,则说明P为隐藏进程,调用处理模块进行处理,向系统管理员告塾目ο
【主权项】
1.一种针对基于Xen的Linux虚拟机恶意代码攻击的隐藏进程检测方法,其特征在于:所述的方法包括以下步骤: 步骤1:将恶意代码检测工具部署在Xen系统的DomainO中; 步骤2:启动Linux虚拟机; 步骤3:每隔一段时间,检测工具使用Xen的虚拟机管理器的DomainU访问接口层获取Linux虚拟机中的硬件资源信息。通过这些信息构造出进程列表pi; 步骤4:通过调用Linux虚拟机操作系统内的工具,得到进程列表p2; 步骤5:对比pi与p2中的每一个进程,如果进程P出现在pi中,而未出现在p2中,则说明P为隐藏进程;如果P出现在两个进程中,则说明系统是安全的,跳转到步骤3。2.根据权利要求1所述的Linux虚拟机恶意代码攻击的隐藏进程检测方法,其特征在于:所述硬件资源指的是CPU、伪物理内存的数据信息; 所述的启动L i nux虚拟机指的是启动L i nux虚拟机的操作系统。3.根据权利要求1所述的Linux虚拟机恶意代码攻击的隐藏进程检测方法,其特征在于:所述的DomainU访问接口层指的是C语言库libxc提供的两个接口 xc_vcpu_getcontext及叉(3_11^口_;1;'(^61811_13叫6,通过这两个接口,可以实现在DomainO中访问特定虚拟机DomainU中虚拟CPU和伪物理内存。4.根据权利要求2所述的Linux虚拟机恶意代码攻击的隐藏进程检测方法,其特征在于:所述的DomainU访问接口层指的是C语言库libxc提供的两个接口 xc_vcpu_getcontext及xc_map_foreign_range,通过这两个接口,可以实现在DomainO中访问特定虚拟机DomainU中虚拟CPU和伪物理内存。5.根据权利要求1至4任一项所述的Linux虚拟机恶意代码攻击的隐藏进程检测方法,其特征在于:所述调用Linux虚拟机操作系统内的工具指的是使用系统调用的手段调用Linux操作系统内安装的进程信息打印工具并获取打印信息,如调用ps命令。6.根据权利要求1至4任一项所述的Linux虚拟机恶意代码攻击的隐藏进程检测方法,其特征在于:所述对比进程指的是对比进程的ID和进程的名称,如果进程P的ID和名称与进程K的ID和名称一致,那么说明P和K是同一个进程。7.根据权利要求5所述的Linux虚拟机恶意代码攻击的隐藏进程检测方法,其特征在于:所述对比进程指的是对比进程的ID和进程的名称,如果进程P的ID和名称与进程K的ID和名称一致,那么说明P和K是同一个进程。
【专利摘要】本发明涉及云计算安全技术领域,特别是一种针对基于Xen的Linux虚拟机恶意代码攻击的隐藏进程检测方法。本发明首先将恶意代码检测工具部署在Xen系统的Domain0中,然后启动Linux虚拟机,每隔一段时间检测工具使用Xen的虚拟机管理器的DomainU访问接口层获取Linux虚拟机中的硬件资源信息。通过这些信息构造出进程列表p1;然后通过调用Linux虚拟机操作系统内的工具,得到进程列表p2;通过对比p1与p2中的每一个进程,如果进程P出现在p1中,而未出现在p2中,则说明P为隐藏进程;如果P出现在两个进程中,则说明系统是安全的,继续进行检测。本发明解决了传统恶意软件检测工具容易受到攻击而失效,从而导致隐藏进程检测不出来的问题;可以用于Linux虚拟机恶意代码攻击的隐藏进程检测。
【IPC分类】G06F21/56, G06F21/53
【公开号】CN105468967
【申请号】CN201510801972
【发明人】莫展鹏, 杨松, 季统凯
【申请人】国云科技股份有限公司
【公开日】2016年4月6日
【申请日】2015年11月19日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1