基于云取证的轻量级虚拟机监视器设计

2020-04-01 20:05李嘉鑫马征兆张叶舟唐远新翟继强
计算机与网络 2020年23期

李嘉鑫 马征兆 张叶舟 唐远新 翟继强

摘要:针对云计算中的大多数实时取证工具可能会被受感染的操作系统(OS)欺骗造成取证信息不可靠,或传统的通用虚拟机监视器由于代码量巨大而容易受到攻击的问题,提出了一种专用的虚拟机监视器程序ForenMoni。通过利用轻量级体系结构来减小可信计算基(TCB)的大小,直接从硬件收集证据,使用Filesafe模块保护证据和其他敏感文件,并在Windows平台上实现了概念验证原型。实验结果表明,ForenMoni的TCB大小相对较小,约为13 KLOC,并且只会导致目标系统的性能下降不到10%,即使客户机OS受到Worm.WhBoy等病毒的入侵,ForenMoni仍可以保证受保护文件不受干扰,提高了可靠性。

关键词:云取证;可信计算基;虚拟机监视器

中图分类号:TP316文献标志码:A文章编号:1008-1739(2020)23-61-4

0引言

云计算已被广泛用来提供计算服务,云计算环境中采用了一些复杂的技术,例如虚拟化技术[1]。数字取证用于收集、分析和复现网络犯罪的证据,当前基于虚拟化技术的数字取证面临一些新的挑战[2]。大多数虚拟机监视器(例如Xen和VMware)的源代码量非常庞大,从而可能导致各种代码漏洞。同时,对于大多数虚拟机监视器而言,设置虚拟化环境需要重新启动甚至重新安装目标系统,不可避免地破坏了易失性证据,与实时分析的目的相矛盾。

为了解决安全问题,本文提出了一种轻量级的虚拟机监视器ForenMoni,减小了TCB的大小,增加了实时数据采集和存储的可靠性。同时ForenMoni作为驱动程序加载,而无需重新启动目标OS,只会对内存布局造成很小的影响。

1系统设计

1.1设计原理

ForenMoni的设计考虑虚拟机监视器的安全性、证据获取的可靠性以及证据文件的安全性。从3个方面提高可靠性:①采用这种轻量级的虚拟机监视器架构来减少代码大小并保护取证过程不被篡改;②ForenMoni直接从硬件收集完整的系统状态,包括过程数据、原始内存和I/O数据,而无需依赖设备驱动程序;③ForenMoni将易失性数据存储在磁盘上,并使用Filesafe模块保护它们。Filesafe模块还可以为取证分析所必需的客户OS中的敏感文件(例如日志)提供保护。

由于ForenMoni是作为系统驱动程序加载的,因此有2种方法可以获取实时数据:调用OS接口以及直接从硬件获取数据。前者更易于实现,并且与目标OS没有语义上的差距。但是,因为目标OS可能会受到Rootkit的破坏,收集的数据可能会被恶意软件伪造或篡改。因此ForenMoni采用后一种方法来收集证据,同时在ForenMoni中采用有关虚拟机自省(VMI)来弥合语义鸿沟[3]。

文件保护机制可确保证据保存的可靠性,ForenMoni将证据文件存储在本地磁盘中,并通过访问控制策略对其进行保护。该策略位于块级别,控制对磁盘的任何操作。

1.2轻量级虚拟机监视器架构

用于可靠取证的轻量级虚拟机监视器架构如图1所示,在此体系结构中,取证系统特权级别高于OS内核。由于特权模式不同,应用程序和OS不知道该虚拟机监视器的存在。取证系统由虚拟机控制结构记录器(VMCS Recorder)、内存转储器(Memory Dumper)、键盘记录器(Key logger)、网络接口卡拦截器(NIC Interceptor)和File Safe五个模块组成。前4个模块分别用于记录CPU状态、内存内容、按键和网络数据包,File Safe模块保护收集的数据。

虚拟机监视器是基于硬件辅助虚拟化技术设计的,消除了用于硬件仿真的大量代码,设计基于Intel VT-x技术,可以轻松移植到AMD平台。其次,采用在体系结构中仅拦截感兴趣的操作,以最大程度地减少I/O拦截器的代码大小。

2系统实现

2.1虚拟化方法

在系统收集实时数据之前,预先构建一个虚拟机环境。将本机OS转换为虚拟机可能需要重新引导甚至重新安装,因此不可避免地会丢失实时系统数据。为了避免破坏实时证据,使用后期虚拟化技术动态地建立了取证系统管理程序。后期虚拟化技术意味着在不干扰正在运行的目标OS的执行的情况下,在本机OS和硬件之间动态插入管理程序层。后期虚拟化技术需要硬件辅助虚拟化技术的支持,系统在英特尔平台VT-x上实现[4]。为了实现虚拟化,除了传统的4层保护环之外,CPU模式还引入了另一个特权级别,新级别称为VMX根模式,是为管理程序建立的。客户机OS在由原始4个环组成的VMX非根模式下运行。在新的保护模型中,提供了新的结构VMCS,以保存主机OS和客户机OS的CPU状态并控制应进行模式切换的条件。

启动过程包括:

①启用CPU的VMX根模式;

②初始化VMCS结构以注册虚拟机监视器关心的敏感事件以及虚拟机监视器中相应事件的处理程序;

③配置VMCS之后,目标OS已变成包装在虚拟机监视器中的客户机OS,当客户机OS执行一些特权指令时,将引发对监视系统的陷阱,然后可以执行取证过程;

④虚擬机监视器录好了足够的信息后,一个VMENTRY执行指令以继续客户机OS的运行。

但引发的一个潜在漏洞是启动过程可能会受到内核模式Rootkit的破坏,因为它是在ring0模式而不是VMX root模式下执行的[5]。为避免这种情况,应将虚拟机监视器的映像放置在只读介质中,并由受信任的平台模块(TPM)检查其完整性。

2.2 Filesafe API

记录器VMCS、存储器、键盘记录器和NIC拦截器得到其所需的数据,都依赖File Safe模块来编写和保护证据数据。抽象了File Safe模块的功能为其他模块提供一组API。主要API如下:

①AllocProtect分配受保护的文件,客户机OS不会检测到该文件,新文件块的相应控制策略将立即添加到策略列表中,该文件将被设置为读控制和写控制;

②SetPolicy设置文件的控制策略,参数指示要进行读控制或写控制的访问策略;

③DelProtect删除受保护的文件,并且相关的块级策略也将同时被删除;

④Read读取受保护文件的内容,如果该文件是读控制的,则对该接口以外的文件的任何读操作都将被拒绝;

⑤Write会将一些内容写入受保护的文件,如果未通过此接口执行对写控制文件的任何写操作,将拒绝该操作,将新块附加到文件后,将同时添加到策略列表。

3系统测试

测试环境为Core i5-650 3.2 GHz、4 GB DDR3 RAM、Intel 82578DM千兆以太网NIC和250 GB Seagate SATA2磁盘的Intel机器,主机OS为Windows 7 SP2,安装虚拟机监视器作为客户机OS。

3.1 TCB大小

ForenMoni消除了内存取证不必要的一些通用组件,总代码大小约为13 336源代码行(SLOC),表1中列出了ForenMoni的每个组件的代码大小。

图2中比较了一些流行的当代虚拟环境的TCB大小,可以看到ForenMoni的TCB大小远远小于Xen和KVM等通用虚拟机监视器。与另一个专用虚拟机监视器Bitvisor[6]相比,ForenMoni的TCB大小仍然要小得多。但ForenMoni的TCB大小比TrustVisor的大,是因为TrustVisor仅致力于代码完整性以及数据完整性,因此没有用于收集数据的组件。HyperSleuth是另一个具有与ForenMoni类似功能的专用虚拟机监视器,由于HyperSleuth不是开源访问的,不显示HyperSleuth的TCB大小。

3.2功能评估

(1)数据收集

测试系统启动后,将ForenMoni加载为系统驱动程序,其生成4个文件,分别为proc,mem,key,net。proc包括许多CPU寄存器在内的进程数据,可以从这些数据中轻松提取一些初步信息,例如进程数和进程的页表;mem文件转储原始内存,位于原始结构中,具有与物理内存相同的大小;key文件拦截I/O操作,存储的敲击的键的扫描码;net文件存储链路层数据包。

(2)文件安全模块

ForenMoni可以保护目标系统上的文件免遭各种蠕虫(例如Worm.WhBoy)破坏。Worm.WhBoy用Delphi编写,该病毒删除扩展名为.gho的文件,以使用户无法使用镜像恢复其OS,也可将有问题的URL添加到html文件,会对用户的敏感文件和OS造成极大的损害。

在实验中,测试文件a.jpg,b.mp3,a1.gho,b1.exe,c1. html受File Safe保护。实验表明,即使OS受到威胁,File Safe仍可确保提供强大的保护。

ForenMoni与其他虚拟机监视器之间的功能比较如表2所示,包括专用的监视器(例如HyperSleuth)和通用监视器(例如Xen和KVM)。比较的功能包括虚拟机监视器可以收集哪些数据以及是否可以动态加载它们。HyperSleuth仅收集有限的数据而没有捕获关键的網络流量,并且不为客户机OS中的文件提供保护。通用虚拟机监视器Xen和KVM可以收集与ForenMoni一样多的信息,但是它们也不能保护客户机OS中的文件,此外,它们不能被动态加载,从而限制了可用性。

3.3性能开销

测试Apache http服务器的性能,在速度为100 Mbps的LAN环境中,http_load用于生成不同并发级别的工作负载,范围是10~250。如图3所示,ForenMoni不会对吞吐量和延迟造成明显的开销。原因是ForenMoni的开销非常小,以致于网络速度的变化隐藏了该开销。因此,ForenMoni在不降低用户体验的情况下在实际应用中很实用。

4结束语

本文提出了一个轻量级的虚拟机监视器,专门用于获取和保存数据以进行可靠的现场取证。通过3种方式提高了可靠性,利用硬件辅助的虚拟化技术,消除了未使用的设备驱动程序,以减小TCB的大小,从而降低了虚拟机监视器的漏洞,并在Windows平台上实现了概念验证原型系统。实验结果表明,系统具有较小的代码量、适度的系统开销和稳定的性能,即使客户机OS受到诸如Worm.WhBoy之类的病毒的攻击,ForenMoni仍可以对指定的文件提供强大保护。

参考文献

[1]刘雪花,丁丽萍,刘文懋,等.一种基于软件定义安全和云取证趋势分析的云取证方法[J].计算机研究与发展,2019,56(10):2262-2276.

[2]张瑜,刘庆中,李涛,等.内存取证研究与进展[J].软件学报, 2015,26(5):1151-1172.

[3]张健,高铖,宫良一,等.虚拟机自省技术研究[J].信息网络安全,2017(9):63-68.

[4]卢建平,郭玉东,王晓睿,等.基于协作型VMM的虚拟机执行环境动态配置模型[J].计算机应用,2012,32(3):831-834.

[5]邓良,曾庆凯.引入内可信基的应用程序保护方法[J].软件学报,2016,27(4):1042-1058.

[6]赵明.基于轻量级虚拟机监控器的安全计算环境[D].成都电子科技大学,2020.