首页 / 专利库 / 软件 / 虚拟机迁移 / 一种基于VMI的内核数据监控方法及监控系统

一种基于VMI的内核数据监控方法及监控系统

阅读:494发布:2020-05-12

专利汇可以提供一种基于VMI的内核数据监控方法及监控系统专利检索,专利查询,专利分析的服务。并且本 发明 属于计算机的技术领域,具体涉及一种基于VMI的 内核 数据监控方法,包括如下步骤,步骤S0、从 虚拟机 外部获取和分配虚拟机内存的 指定 大小和连续空间;步骤S1、搜索整个所述虚拟机内存空间,获取所有目标内核结构的内存地址;步骤S2、将所有目标内核数据拷贝至分配的内存空间,并完成相应的 指针 修改 和原内核数据结构体的释放;步骤S3、对分配内存区域实施内存页级别的内存监控。本发明能够对内存区域实施内存页级别的监控,保护虚拟机文件系统的安全,还能降低了传统方法中非目标内核数据引起的额外性能开销。,下面是一种基于VMI的内核数据监控方法及监控系统专利的具体信息内容。

1.一种基于VMI的内核数据监控方法,其特征在于,包括如下步骤:
步骤S0、从虚拟机外部获取和分配虚拟机内存的指定大小和连续空间;
步骤S1、搜索整个所述虚拟机内存空间,获取所有目标内核结构的内存地址;
步骤S2、将所有目标内核数据拷贝至分配的内存空间,并完成相应的指针修改和原内核数据结构体的释放;
步骤S3、对分配内存区域实施内存页级别的内存监控。
2.如权利要求1所述的一种基于VMI的内核数据监控方法,其特征在于,所述步骤S3还包括:
采用轮巡式机制,周期性扫描所述虚拟机的内存空间,判断是否存在虚拟机操作系统新生成的目标内核数据结构,然后重复所述步骤S2和所述步骤S3,将其迁移至目标内存空间中,纳入监控范围。
3.如权利要求1所述的一种基于VMI的内核数据监控方法,其特征在于,所述步骤S0还包括:
获取目标虚拟机内存空间,采用目标系统调用替换掉原来系统调用,待目标系统调用执行完毕后,获取已分配内存空间首地址和内存大小信息,恢复原系统调用执行。
4.如权利要求3所述的一种基于VMI的内核数据监控方法,其特征在于,所述步骤S3中,包括:
利用Libvmi工具,根据已获取内存空间首地址和内存大小信息,对所述内存区域实施内存页级别的监控和捕获、拦截所有文件操作,包括文件读、写、打开操作,虚拟机外部的安全工具根据安全策略对拦截操作做出响应。
5.如权利要求4所述的一种基于VMI的内核数据监控方法,其特征在于,搜索整个所述虚拟机内存空间,包括:
使用Libvmi虚拟机自省工具,判断所述内核数据结构;
若为dentry结构体,则从目标虚拟机的内核符号表中查询dentry_cache首地址,通过遍历整个dentry双向链表获取所有内核中所有所述dentry结构体内存地址;
若为filedescriptor table包括fdt,则从目标虚拟机的内核符号表中查询进程链表头指针地址,通过遍历进程双向链表获取所有进程结构体信息,利用各个内核数据结构体指针关系获取到每个进程结构体对应的fdt地址。
6.如权利要求1所述的一种基于VMI的内核数据监控方法,其特征在于,将所有目标内核数据拷贝至新分配的内存空间前,包括:
判断所述内核结构的内存地址是否已纳入监控范围,若是,则跳过检查下一个内核结构的内存地址,否则,进行迁移工作,将所述数据结构拷贝至新的内存区域中,并将所有指向原来的数据结构的指针重新指向受监控内存页中的数据结构。
7.如权利要求1所述的一种基于VMI的内核数据监控方法,其特征在于,将所述原数据结构的释放,包括:
从内核数据结构体开始,寻找相关指针并修改其指向。
8.如权利要求7所述的一种基于VMI的内核数据监控方法,其特征在于:所述相关指针包括指向内部的内部指针、指向首地址的外部地址和用于连接各类双向链表的外部指针。
9.一种基于VMI的内核数据监控系统,其特征在于:包括互相连接的虚拟机管理器、目标虚拟机和主机用户空间,所述主机用户空间包括内存分配模、内存迁移模块、内存监控模块及数据库,所述目标虚拟机通过所述虚拟机管理器分别与所述内存分配模块、所述内存迁移模块及所述内存监控模块双向连接,所述内存监控模块与所述数据库双向连接,所述数据库用于存储安全策略。

说明书全文

一种基于VMI的内核数据监控方法及监控系统

技术领域

[0001] 本发明属于计算机的技术领域,具体涉及一种基于VMI的内核数据监控方法及监控系统。

背景技术

[0002] 随着计算的发展,越来越多的服务迁移至云端,安全问题成为制约云计算发展的重要因素。虚拟化技术是云计算的关键技术,在虚拟化环境下,安全边界变得模糊,传统的安全防护手段已经不足以抵抗云环境下新型的安全威胁。
[0003] 虚拟机自省(Virtual Machine Introspection,VMI)技术作为云环境下有效提供安全性保障的重要技术之一,受到了研究人员的高度重视。近几年,VMI技术在入侵检测、恶意软件分析、虚拟机管理和内存取证等领域得到了广泛的研究和应用。
[0004] 在云计算中,虚拟机的内核数据监控往往被用以保护虚拟机安全,例如对dentry、inode等文件系统相关的数据结构体监控,就能有效捕获、拦截虚拟机中各类文件操作,但是,受限于因特尔的EPT硬件辅助虚拟化技术,不论现在主流的KVM,还是XEN等虚拟化平台,都只能提供内存页级别的监控,也就是说,如果监控某一内核数据结构,就不得不将整个内存页纳入监控范围,考虑到内存页中存在其他不相关的内核数据,虚拟机操作系统对于他们的访问修改都会触发已部署的监控系统。
[0005] 因此,这种内存页级别的内存监控往往会带来大量监控上的性能开销。

发明内容

[0006] 本发明的目的之一在于:针对现有技术的不足,提供一种基于VMI的内核数据监控方法,能够对内存区域实施内存页级别的监控,保护虚拟机文件系统的安全,还能降低了传统方法中非目标内核数据引起的额外性能开销。
[0007] 为了实现上述目的,本发明采用如下技术方案:
[0008] 一种基于VMI的内核数据监控方法,包括如下步骤:
[0009] 步骤S0、从虚拟机外部获取和分配虚拟机内存的指定大小和连续空间;
[0010] 步骤S1、搜索整个所述虚拟机内存空间,获取所有目标内核结构的内存地址;
[0011] 步骤S2、将所有目标内核数据拷贝至分配的内存空间,并完成相应的指针修改和原内核数据结构体的释放;
[0012] 步骤S3、对分配内存区域实施内存页级别的内存监控。
[0013] 作为本发明所述的一种基于VMI的内核数据监控方法的一种改进,所述步骤S3还包括:
[0014] 采用轮巡式机制,周期性扫描所述虚拟机的内存空间,判断是否存在虚拟机操作系统新生成的目标内核数据结构,然后重复所述步骤S2和所述步骤S3,将其迁移至目标内存空间中,纳入监控范围。
[0015] 作为本发明所述的一种基于VMI的内核数据监控方法的一种改进,所述步骤S0还包括:
[0016] 获取目标虚拟机内存空间,采用目标系统调用替换掉原来系统调用,待目标系统调用执行完毕后,获取已分配内存空间首地址和内存大小信息,恢复原系统调用执行。
[0017] 作为本发明所述的一种基于VMI的内核数据监控方法的一种改进,所述步骤S3中,包括:
[0018] 利用Libvmi工具,根据已获取内存空间首地址和内存大小信息,对所述内存区域实施内存页级别的监控和捕获、拦截所有文件操作,包括文件读、写、打开操作,虚拟机外部的安全工具根据安全策略对拦截操作做出响应。
[0019] 作为本发明所述的一种基于VMI的内核数据监控方法的一种改进,搜索整个所述虚拟机内存空间,包括:
[0020] 使用Libvmi虚拟机自省工具,判断所述内核数据结构;
[0021] 若为dentry结构体,则从目标虚拟机的内核符号表中查询dentry_cache首地址,通过遍历整个dentry双向链表获取所有内核中所有所述dentry结构体内存地址;
[0022] 若为file descriptor table包括fdt,则从目标虚拟机的内核符号表中查询进程链表头指针地址,通过遍历进程双向链表获取所有进程结构体信息,利用各个内核数据结构体指针关系获取到每个进程结构体对应的fdt地址。
[0023] 作为本发明所述的一种基于VMI的内核数据监控方法的一种改进,将所有目标内核数据拷贝至新分配的内存空间前,包括:
[0024] 判断所述内核结构的内存地址是否已纳入监控范围,若是,则跳过检查下一个内核结构的内存地址,否则,进行迁移工作,将所述数据结构拷贝至新的内存区域中,并将所有指向原来的数据结构的指针重新指向受监控内存页中的数据结构。
[0025] 作为本发明所述的一种基于VMI的内核数据监控方法的一种改进,将所述原数据结构的释放,包括:
[0026] 从内核数据结构体开始,寻找相关指针并修改其指向。
[0027] 作为本发明所述的一种基于VMI的内核数据监控方法的一种改进,所述相关指针包括指向内部的内部指针、指向首地址的外部地址和用于连接各类双向链表的外部指针。
[0028] 本发明的目的之二在于提供一种基于VMI的内核数据监控系统,包括互相连接的虚拟机管理器、目标虚拟机和主机用户空间,所述主机用户空间包括内存分配模、内存迁移模块、内存监控模块及数据库,所述目标虚拟机通过所述虚拟机管理器分别与所述内存分配模块、所述内存迁移模块及所述内存监控模块双向连接,所述内存监控模块与所述数据库双向连接,所述数据库用于存储安全策略。
[0029] 本发明的有益效果在于,本发明包括如下步骤,步骤S0、从虚拟机外部获取和分配虚拟机内存的指定大小和连续空间;步骤S1、搜索整个所述虚拟机内存空间,获取所有目标内核结构的内存地址;步骤S2、将所有目标内核数据拷贝至分配的内存空间,并完成相应的指针修改和原内核数据结构体的释放;步骤S3、对分配内存区域实施内存页级别的内存监控。本发明能够有效保护虚拟机文件系统的安全;将所有目标内核数据结构迁移至目标虚拟机一块隔离的内存区域,再对该内存区域实施内存页级别的监控,因为该区域隔离受保护,目标内核数据不会收到其他非相关进程访问读写影响,并且只包含目标监控内核数据,大大降低了传统方法中非目标内核数据引起的额外性能开销,具有更好的性能表现和更低的开销。本发明能够对内存区域实施内存页级别的监控,保护虚拟机文件系统的安全,还能降低了传统方法中非目标内核数据引起的额外性能开销。附图说明
[0030] 图1为本发明的流程示意图。
[0031] 图2为本发明的系统架构图。
[0032] 图3为本发明系统调用复用技术流程图

具体实施方式

[0033] 如在说明书权利要求当中使用了某些词汇来指称特定组件。本领域技术人员应可理解,硬件制造商可能会用不同名词来称呼同一个组件。本说明书及权利要求并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。如在通篇说明书及权利要求当中所提及的“包含”为一开放式用语,故应解释成“包含但不限定于”。“大致”是指在可接受的误差范围内,本领域技术人员能够在一定误差范围内解决技术问题,基本达到技术效果。
[0034] 在本发明的描述中,需要理解的是,术语“上”、“下”、“前”、“后”、“左”、“右”、平”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
[0035] 在发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
[0036] 以下结合附图对本发明作进一步详细说明,但不作为对本发明的限定。
[0037] 实施例1
[0038] 如图1~3所示,一种基于VMI的内核数据监控方法,包括如下步骤:
[0039] 步骤S0、从虚拟机外部获取和分配虚拟机内存的指定大小和连续空间;
[0040] 步骤S1、搜索整个虚拟机内存空间,获取所有目标内核结构的内存地址;
[0041] 步骤S2、将所有目标内核数据拷贝至分配的内存空间,并完成相应的指针修改和原内核数据结构体的释放;
[0042] 步骤S3、对分配内存区域实施内存页级别的内存监控。
[0043] 需要说明的是,本发明的监控方法中,步骤S0中采用系统调用复用,从虚拟机外部获取和分配虚拟机内存的指定大小和连续空间,用户程序通过系统调用进入内核空间,当程序进入内核空间,通过修改寄存器内容,包含系统调用号和系统调用参数等内容,内核将执行指定的系统调用,当指定系统调用执行完毕退出时,恢复寄存器内容,包括指令寄存器等,内核会执行原系统调用,最终返回到用户空间,这样就能在不影响原执行结果下注入执行一次或多次特定系统调用,不仅对虚拟机文件系统提供安全防护,将所有目标内核数据结构迁移至目标虚拟机一块隔离的内存区域,再对该内存区域实施内存页级别的监控,因为该区域隔离受保护,目标内核数据不会收到其他非相关进程访问读写影响,并且只包含目标监控内核数据,大大降低了传统方法中非目标内核数据引起的额外性能开销,具有更好的性能表现和更低的开销,相比于传统监控方法,还能将目标内核数据结构统一迁移至指定内存区域,然后实施内存页级别监控,有效降低监控带给目标虚拟机的负载开销,在实际生产环境中更具有可行性。
[0044] 优选的,步骤S3还包括:
[0045] 优选的,采用轮巡式机制,周期性扫描虚拟机的内存空间,判断是否存在虚拟机操作系统新生成的目标内核数据结构,然后重复步骤S2和步骤S3,将其迁移至目标内存空间中,纳入监控范围。
[0046] 需要说明的是,在步骤S3执行后再加入轮巡式机制,轮巡式机制包括周期性扫描虚拟机内存空间,是否存在虚拟机操作系统新生成的目标内核数据结构优选的,步骤S0还包括:
[0047] 获取目标虚拟机内存空间,采用目标系统调用替换掉原来系统调用,待目标系统调用执行完毕后,获取已分配内存空间首地址和内存大小信息,恢复原系统调用执行。
[0048] 需要说明的是:通过步骤S0自动获取目标虚拟机内存空间,用目标系统调用替换掉原来系统调用。
[0049] 优选的,步骤S3中,包括:
[0050] 利用Libvmi工具,根据已获取内存空间首地址和内存大小信息,对内存区域实施内存页级别的监控和捕获、拦截所有文件操作,包括文件读、写、打开操作,虚拟机外部的安全工具根据安全策略对拦截操作做出响应。
[0051] 优选的,搜索整个虚拟机内存空间,包括:
[0052] 使用Libvmi虚拟机自省工具,判断内核数据结构;
[0053] 若为dentry结构体,则从目标虚拟机的内核符号表中查询dentry_cache首地址,通过遍历整个dentry双向链表获取所有内核中所有dentry结构体内存地址;
[0054] 若为file descriptor table包括fdt,则从目标虚拟机的内核符号表中查询进程链表头指针地址,通过遍历进程双向链表获取所有进程结构体信息,利用各个内核数据结构体指针关系获取到每个进程结构体对应的fdt地址。
[0055] 需要说明的是:搜索整个虚拟机内存空间,使用Libvmi虚拟机自省工具,对不同内核数据结构采取不同的搜寻策略。
[0056] 优选的,将所有目标内核数据拷贝至新分配的内存空间前,包括:
[0057] 判断内核结构的内存地址是否已纳入监控范围,若是,则跳过检查下一个内核结构的内存地址,否则,进行迁移工作,将数据结构拷贝至新的内存区域中,并将所有指向原来的数据结构的指针重新指向受监控内存页中的数据结构。
[0058] 优选的,将原数据结构的释放,包括:
[0059] 从内核数据结构体开始,寻找相关指针并修改其指向。
[0060] 需要说明的是:将原数据结构的释放是指将所有相关指针分为三类,包括指向内部的内部指针,指向首地址的外部地址和用于连接各类双向链表的外部指针,都能从自身内核数据结构体出发,寻找相关指针并修改其指向,从而避免了搜索整个内存空间操作,大大降低了迁移工作搜寻时间。
[0061] 优选的,相关指针包括指向内部的内部指针、指向首地址的外部地址和用于连接各类双向链表的外部指针。
[0062] 实施例2
[0063] 如图2~3所示,一种基于VMI的内核数据监控系统,包括互相连接的虚拟机管理器、目标虚拟机和主机用户空间,主机用户空间包括内存分配模块、内存迁移模块、内存监控模块及数据库,目标虚拟机通过虚拟机管理器分别与内存分配模块、内存迁移模块及内存监控模块双向连接,内存监控模块与数据库双向连接,数据库用于存储安全策略。
[0064] 需要说明的是:内存分配模块、内存迁移模块、内存监控模块和数据库,均是通过虚拟机自省技术在虚拟机外部实现和部署,与目标虚拟机完全隔离开来,与一些将监控工具完全或部分部署在虚拟机内部的传统方法相比,本实施方式从虚拟机外部监控虚拟机内部行为具有更高的安全性,且不需要对虚拟机内核做出修改,因而具有更高的通用型和可移植性。
[0065] 与直接监控目标内核数据所在内存页的传统监控方法相比,通过内存迁移,实现了只对目标内核数据实施监控,具有更好的性能表现和更低的开销。
[0066] 工作流程:系统调用复用技术,用户程序通过系统调用进入内核空间,当程序进入内核空间,通过修改寄存器内容,包含系统调用号和系统调用参数等内容,内核将执行指定的系统调用,当指定系统调用执行完毕退出时,恢复寄存器内容,包括指令寄存器等,内核会执行原系统调用,最终返回到用户空间,这样就能在不影响原执行结果下注入执行一次或多次特定系统调用。
[0067] 首先,查找目标虚拟机的内核符号表,查找到系统调用入口地址和系统调用退出地址,然后借助Libvmi虚拟机自省工具暂停虚拟机,用INT3汇编指令替换原系统调用入口和退出地址,当虚拟机调用任何系统调用而执行INT3指令,触发中断异常退出。
[0068] 此时保存当前所有寄存器内容,此时将eax寄存器内容修改为9,代表mmap系统调用号,内核通过调用mmap系统调用完成内存动态分配,ebx,ecx,edx置为mmap系统调用参数,包括制定分配内存起始地址以及大小,最后恢复虚拟机运行。
[0069] 当虚拟机完成mmap系统调用执行,再一次退出暂停,此时获取eax值,动态分配内存起始地址,恢复各寄存器内容,并将系统调用入口和退出地址换回原指令,最后恢复虚拟机正常运行。
[0070] 这样就获取了指定大小、连续的内核内存空间,而不影响虚拟机正常运行,内存迁移模块:通过遍历dentry_cache双向链表获取所有dentry数据结构内存地址,其中dentry_cache链表地址可从内核符号表查询可得。
[0071] 将所有内核数据结构逐一、连续地拷贝至目标内存空间,然后修改相应指针指向,在修改相关指针时,有两种方案检索方案:搜索整个目标虚拟机内存单元,将所有指向原数据结构地址修改为新的对应地址,从原数据结构作为出发,寻找所有相关指针并修改。
[0072] 为了降低搜寻时间,采用第二种方案,对于指向内部的内部指针,因为地址偏移固定,迁移后的数据结构可直接修改内部指针指向,对于用于连接双向链表的外部指针,从原数据结构找寻下/上一个节点,并修改指针指向,对于指向首地址的外部指针,从dentry结构体获取到inode结构体地址,再从inode结构体获取到file结构体地址,修改file结构体指向dentry结构体的指针指向。
[0073] 最后将原结构体中的引用计数置为0,并通过修改指针将原数据结构连入lru链表,等待系统自动回收。
[0074] 针对file descriptor table迁移,首先从内核符号表中获取0号进程init_task地址,通过遍历整个进程任务双向链表,获取每一个进程描述符,从进程描述符出发,经过task_struct->files_struct->file descriptor table获取到fdt首地址,完成fdt内容拷贝后,修改files_struct指向fdt的指针指向,即完成fdt的迁移工作。
[0075] 监控模块:利用Libvmi虚拟自省工具提供相关api,通过对目标内存页注册内存事件,完成对目标内存页监控,当虚拟机对文件打开、读、写等操作时,通过Libvmi提供的回调函数获取被拦截操作的上下文信息,根据安全策略做出响应,允许或拒绝访问。
[0076] 根据上述说明书的揭示和教导,本发明所属领域的技术人员还能够对上述实施方式进行变更和修改。因此,本发明并不局限于上述的具体实施方式,凡是本领域技术人员在本发明的基础上所作出的任何显而易见的改进、替换或变型均属于本发明的保护范围。此外,尽管本说明书中使用了一些特定的术语,但这些术语只是为了方便说明,并不对本发明构成任何限制。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈