基于内存自省技术的虚拟化安全防护模型
张淑慧1,2, 孟祥旭1, 王连海2, 徐淑奖2     
1. 山东大学 计算机科学与技术学院, 济南 250101;
2. 山东省计算中心(国家超级计算济南中心), 山东省计算机网络重点实验室, 济南 250014
摘要

提出了一种基于内存自省技术的虚拟化安全防护模型,能够在无任何先验知识的前提下,通过实时分析物理主机物理内存重构物理主机状态信息、发现正在运行的虚拟机以及重构虚拟机高级语义信息,及时发现虚拟机中存在的恶意行为,并对恶意行为做出智能响应.实验结果表明,该模型具有透明、抗攻击、通用和高效等特性.

关键词: 虚拟化安全     虚拟机自省     内存自省     内存分析    
中图分类号:TN911.22 文献标志码:A 文章编号:1007-5321(2017) 增-0043-05 DOI:10.13190/j.jbupt.2017.s.010
A Security Protection Model for Virtualization Based on Memory Introspection
ZHANG Shu-hui1,2, MENG Xiang-xu1, WANG Lian-hai2, XU Shu-jiang2     
1. School of Computer Science and Technology, Shandong University, Jinan 250101, China;
2. Shandong Provincial Key Laboratory of Computer Networks, Shandong Computer Science Center(National Supercomputer Center in Jinan), Jinan 250014, China
Abstract

A security protection module for virtualization based on memory introspection is proposed. By analyzing the physical memory of host machine, this model can detect running virtual machines in real time and reconstruct their high-level semantic information without any priori knowledge. Then, malicious activity in virtual machines can be identified timely and intelligent response will be made. Experimental results show that the system is transparent, attack-resistant, universal and efficient.

Key words: virtualization security     virtual machine introspection     memory introspection     memory analysis    

随着云计算技术的飞速发展,其所面临的安全问题日益凸显,虚拟机(VM, virtual machine)成为各种恶意软件的重点攻击目标[1].为保护虚拟机的安全,2003年Garfinkel等提出了虚拟机自省技术,通过获取虚拟机所依托的物理机状态和事件推导甚至控制虚拟机内部行为[2].根据获取信息类型不同,虚拟机自省技术分为内存自省、系统事件自省以及系统调用自省等[3-5].由于获取到的信息为宿主机系统底层信息,如何将其还原为具有语义含义的字符序列或者数据结构这一问题被称为语义鸿沟(semantic gap)问题[6].

为解决语义鸿沟问题,提高虚拟机自省的准确性和高效性,提出了一种基于内存自省技术的虚拟化安全防护模型VEDefender.在无任何先验知识的前提下,该模型能够通过实时分析物理主机物理内存重构虚拟机运行状态,及时发现虚拟机中存在的恶意行为,并根据恶意行为等级做出智能响应.在基于内核的虚拟机(KVM,kernel virtual machine)虚拟机监控器(VMM, virtual machine monitor)上实现了VEDefender系统原型,并详细描述了在KVM下的实现技术.最后,通过仿真实验验证了其可行性.

1 VEDefender:虚拟化安全防护模型

为便于描述,所用到的术语和缩写描述如下:所需防护的虚拟机称为客户虚拟机(GM,guest virtual machine),虚拟机所依托的物理主机简称为HM(host machine);物理主机的物理地址简称为HPA (host physical address),物理主机的虚拟地址简称为HVA (host virtual address);虚拟机的物理主机简称为GPA (guest physical address),虚拟机的虚拟主机简称为GVA (guest virtual address).

1.1 问题描述

在假定物理主机以及虚拟机监控器为可信的前提下,研究针对虚拟机的安全防护模型,该模型应当满足以下需求.

1) 透明性及抗攻击性:该模型无须在目标虚拟机中安装软件或者插入模块,无须改变目标虚拟机中的执行逻辑,能够免受目标虚拟机的直接攻击;

2) 全面性:该模型能够获取到目标虚拟机较为全面的运行状态信息;

3) 通用性:在虚拟化环境中,虚拟机的操作系统版本具有多样性的特征,该模型应当能够处理当前主流操作系统内核的虚拟机;

4) 动态响应:该模型应当能够根据检测到的威胁类型和等级进行自动响应并采取隔离、备份等必要措施;

5) 性能影响的最小化:该模型应当尽可能地减少对虚拟机和物理机的性能产生影响.

1.2 模型设计

图 1所示,VEDefender主要分为以下几个部分.

图 1 VEDefender:虚拟化安全防护模型

1) HM内存获取:实时获取物理主机指定地址和长度的物理内存.

2) HM内存分析:通过分析物理主机物理内存获取物理主机运行状态,并发现正在运行的虚拟机及其对应的虚拟机控制结构(VMCS,virtual machine control structure)结构体,在此基础上实现对虚拟机指定长度和地址物理内存的实时获取.

3) GM行为抓取:在无须先验知识的情况下,对虚拟机操作系统进行判断.根据虚拟机版本采用相应的内存分析方法获取虚拟机进程、驱动以及网络连接等基本运行状态信息.

4) GM行为分析:在获取到目标虚拟机基本运行状态信息的基础上,进行隐藏进程和rootkit检测.在此部分,深度分析辅助模块通过使用机器学习、专家系统等人工智能技术进行深入分析.

5) 智能响应:当隐藏进程或者rootkit被检测到后,为防止恶意代码进一步扩散,造成更多损失,根据预定策略,采取必要措施,主要采取两种措施:对目标虚拟机状态进行备份和将可疑虚拟机迁移至特定虚拟网络中的物理机中.

2 虚拟化安全防护系统实现

在KVM虚拟机监控器上实现了VEDefender的系统原型,整个防护系统主要包括以下4个部分.

2.1 HM内存获取

HM物理内存信息的获取主要有两种方式:基于硬件的方法和基于软件的方法.为了减少系统开销,设计了一种通过内核模块实现内存访问,使用pfn_to_page和kmap内核函数进行地址映射实现对任意物理内存地址的访问,从而提取任意地址的物理内存信息.

2.2 HM内存分析及GM检测

获取到物理内存后,系统内核符号表是物理内存分析的切入点.内核符号表中存储的是内核关键数据结构、关键数据的入口地址和存储地址.内核符号表的获取通过从正在运行的系统中拷贝或者从内核可执行链接格式(ELF,executable and linking format)执行文件中提取.获取到内核符号表后,选取重要内核符号进行内存分析,如根据init_task内核符号获取正在运行的系统进程信息、根据modules内核符号获取加载的内核模块等,从KVM内核模块导出的内核符号vm_list用来实现对GM的检测.

图 2所示,内核符号vm_list指向了一个双向链表,链表中每个地址对应一个结构体KVM,KVM结构体包含了对应虚拟机的全局信息,如物理地址区域、vcpus指针、内存管理单元等,其中vcpus指针指向kvm_vcpu结构体. kvm_vcpu结构体是vcpu_vmx结构体的一部分,vcpu_vmx结构体包含了虚拟处理器虚拟中央处理器(VCPU, virtual central processor unit)信息,如中断信息、异常信息以及loaded_vmcs指针等,其中loaded_vmcs指针指向此VCPU对应的VMCS结构体.不同内核版本和系统配置下KVM、kvm_vcpu以及vcpu_vmx结构体的元素及其偏移有所不同,可以通过反编译vm_stat_get、kvm_vcpu_init、vmx_vcpu_run等函数进行结构体的重构.

图 2 基于vm_list内核符号的虚拟机检测和分析方法

在VMCS数据区中,保存了虚拟机以及主机的各种状态参数,包括控制寄存器、调试寄存器、分段寄存器、扩展业表(EPT,extended page table)指针等信息.其中EPT指针用来实现GPA到HPA的地址转换,实现虚拟机的物理内存的按需访问.

2.3 GM行为抓取及分析

获取到虚拟机的物理内存后,进行虚拟机操作系统版本的判定.本研究面向的虚拟机系统是指主流的Windows或Linux系统.对于Windows系统,通过判断内存中是否存在内核处理控制区(KPCR,kernel processor control region)结构体,随后解析获取到的KPCR结构体获取到系统版本详细信息以及内核符号.对于Linux系统,提出一种通过搜索vmcoreinfo_data内容的方式进行系统版本的判断.系统启动时,crash_save_vmcoreinfo_init内核函数对vmcoreinfo_data区域的内容进行初始化,初始化后vmcoreinfo_data以“OSRELEASE=”字符串为开端,并包含“SYMBOL(swapper_pg_dir)=”和“SYMBOL(_stext)=”字符串,通过搜索这3个特征串进行vmcoreinfo_data区域的定位,定位后从中解析出系统版本信息.获取到虚拟机系统版本后,根据已有技术进行物理内存分析,获取系统正在运行的进程信息、加载的模块信息以及建立的网络连接等信息.

在上述信息基础上进行隐藏进程和rootkit检测,以Windows为例说明隐藏进程的发现过程.在Windows系统中使用两个进程列表:一个用以调度;另外一个用以追踪,恶意进程从追踪列表中进行脱离以逃逸追踪.此外,每个线程之间以双向链表的形式相互连接,获取到所有线程后遍历所有线程对应的进程.通过对不同链表的遍历结果进行交叉比对获取隐藏进程.

2.4 智能响应

隐藏进程一旦被发现,智能响应功能将自动启动,将发现的恶意行为与策略库进行比对后采取必要的措施.

1) 对可疑虚拟机的状态信息进行备份,一方面需要将整个内存进行镜像,另外需要对磁盘进行镜像.对于KVM,磁盘文件在宿主机中表现为一个或者多个raw或者qcow2格式的文件,从虚拟机配置信息中读取磁盘文件路径后对文件进行镜像.

2) 为防止恶意行为的进一步扩散,将可疑虚拟机进行在线迁移,虚拟机的实时迁移通常会导致短暂的停机时间,迁移停机时间主要取决于内存的虚拟机、网络带宽和迁移策略等因素.所以在执行迁移操作之前,应评估一下最长的停机时间.

3 仿真结果

从功能和性能两个方面对VEDefender进行测试,功能测试用于验证VEDefender有效性,性能测试用于验证VEDefender的效率.实验环境配置如表 1所示.

表 1 实验环境配置
3.1 功能测试

在物理主机中运行4个虚拟机后,执行VEDefender可以检测出虚拟机对应的VMCS结构体位置、磁盘版本以及操作系统版本.在其中一个虚拟机中使用FU-rookit对calc.exe进程进行隐藏,运行VEDefender中的隐藏进程检测功能,通过比对分析,检测出隐藏进程为clac.exe.此外,根据需要对进程动态链接库、驱动、注册表和日志等信息进行转储,进行进一步的深度分析.

3.2 性能测试

本节主要对VEDefender执行虚拟机检测、虚拟机版本判断、对不同系统的虚拟机获取进程和驱动的时间开销进行测试,并与LibVMI执行速度进行了对比. LibVMI常被用来配置在Xen虚拟化环境下获取虚拟机进程链表和模块链表等信息.

测试结果如图 3所示,每增加一个虚拟机,检测时间增加约为50 ms;操作系统为Linux时,版本判断时间约在40 ms左右;获取进程和驱动的时间在10~40 ms之间不等,而LibVMI获取进程、驱动时间在200~600 ms之间,可见VEDefender监控效率是较高的.

图 3 测试结果

经过以上功能分析和性能分析可以看到,VEDefender能够自动判断目标虚拟机操作系统版本信息,能够获取到目标虚拟机较为全面的运行状态信息,运行速度较快,对目标机器性能影响较小.

4 结束语

现有虚拟机自省技术需要在已知虚拟机版本以及操作系统内核结构体等知识的前提下对虚拟机进行分析,智能化程度较低.针对此问题,提出了一种基于内存自省技术的虚拟化安全防护模型VEDefender.该模型通过实时分析物理主机物理内存,在无任何先验知识的前提下自动判断虚拟机操作系统版本、重构虚拟机运行状态,从而及时发现虚拟机中存在的恶意行为,并对恶意行为做出智能响应.在KVM虚拟机监视器中实现了VEDefender系统原型,该系统不需要在虚拟机中安装软件,对目标虚拟机具有透明性及抗攻击性;该系统提出了一种基于vm_list内核符号表的虚拟机检测方法,在此基础上实现了从虚拟机物理地址到宿主机物理地址的转换,从而获取虚拟机较为全面的运行状态信息;该系统所能够处理的虚拟机包括Windows和Linux,针对Linux系统提出了一种自动判断操作系统版本方法.通过第3部分的仿真测试,可以看到系统耗费时间在几十毫秒左右,对系统影响较小. VEDefender是一个通用的安全防护模型,但是在虚拟机检测方面针对不同的VMM虚拟机检测方法有所不同,在下一步的工作中将在Xen Server、VMWareESX环境下展开深入研究.

参考文献
[1] 董晓霞, 吕廷杰. 云计算研究综述及未来发展[J]. 北京邮电大学学报, 2010, 12(5): 76–81.
Dong Xiaoxia, Lü Tingjie. Overview and future of cloud computing[J]. Journal of Beijing University of Posts and Telecommunications, 2010, 12(5): 76–81.
[2] Bauman E, Ayoade G, Lin Zhiqiang. A survey on hypervisor-based monitoring: approaches, applications, and evolutions[J]. ACM Computing Surveys, 2015, 48(1): 1–33.
[3] 林杰, 刘川意, 方滨兴. IVirt:基于虚拟机自省的运行环境完整性度量机制[J]. 计算机学报, 2015, 38(1): 191–203.
Lin Jie, Liu Chuanyi, Fang Binxing. IVirt: runtime environment integrity measurement mechanism based on virtual machine introspection[J]. Chinese Journal of Computer, 2015, 38(1): 191–203.
[4] Jiang Xuxian, Wang Xinyuan, Xu Dongyan. Stealthy malware detection through VMM-based "out-of-the-box" semantic view reconstruction[C]//14th ACM Conference on Computer and Communications Security. New York: ACM, 2007:128-138.
[5] Hay B, Nance K. Forensics examination of volatile system data using virtual introspection[J]. ACM Sigops Operating System Review, 2008, 42(3): 74–82. doi: 10.1145/1368506
[6] Fu Y, Lin Z. Space traveling across VM: automatically bridging the semantic gap in virtual machine introspection via online kernel data redirection[C]//2012 IEEE Symposium on Security and Privacy. San Francisco: IEEE, 2012:586-600.