VMware Workstation虚拟机镜像取证技术研究

2019-09-30 01:16蓝朝祥包琦沈长达吴少华
网络空间安全 2019年4期

蓝朝祥 包琦 沈长达 吴少华

摘要:云存储数据取证是电子数据取证领域的一个研究热点,虚拟机镜像文件是云存储虚拟化的一种载体。文章以VMware虚拟机镜像为研究对象,通过对镜像文件分析和比较,深入了解虚拟机镜像文件的结构组成和数据管理方式,提出一种建立数据链表、利用递归和回溯,实现读取虚拟机镜像数据的方法,解决了虚拟机镜像的读取问题,对云存储数据的提取和分析具有一定意义。

关键词:VMware Workstation;虚拟机镜像;电子取证

中图分类号:TP915.08          文献标识码:B

1 引言

云计算[1,2]是当下热门技术之一,云存储是云计算延伸出来的一个新概念。云计算系统的核心是大量数据的处理以及存储和管理,所以云存储是云计算的重要组成之一。而虚拟化技术[3]是云存储的核心技术之一。虚拟化使用软件来模拟硬件并创建虚拟计算机系统,其中VMware Workstation(简称工作站)是常用的虚拟化软件之一。它可以同时创建和运行多个虚拟机,每个虚拟机实例又能运行Windows、Linux、BSD衍生版本,且互不干扰,计算机虚拟能力、性能与物理机隔离效果显著,同时还具有实时快照、拖曳共享文件夹等功能。现实生活中,越来越多的数据及业务被转移到虚拟计算机上,随之带来了云存储数据取证[4,5]的问题。本文通过在VMware工作站 12.5专业版上新建虚拟机,创建虚拟磁盘镜像,然后填充数据进行比较相关镜像文件前后的变化,来研究VMware工作站常见的几种虚拟机镜像的文件格式及其数据结构,并结合相关资料提出对镜像文件的读取方法。

2 VMware Workstation虚拟机文件概述

通过VMware工作站软件创建一个Windows的虚拟机后,在虚拟机的文件夹下可以看到如图1所示,系统生成了一序列文件名为 [vmname].vmdk、[vmname].vmsd、[vmname].vmx、[vmname].vmxf以及[vmname]-s001.vmdk等文件。

其中[vmname].vmdk文件,即VMware Virtual Machine Disk 简称VMDK虚拟机镜像文件[6]。它是虚拟机的核心文件,存储了虚拟机硬盘驱动器里的信息。根据空间分配方式及文件的功能[7,8]可以分为几种类型。

2.1 VMDK单个镜像类型

在创建虚拟机添加硬盘设置时,如图2所示,VMDK新建时可以选择生成单个文件,或者拆分成多个文件。若选择将虚拟磁盘促成为单个文件,则生成单个VMDK镜像文件,此时一个镜像代表一个磁盘数据,随着数据变化不会增加新的文件。

2.2 VMDK 分割镜像类型

若在图2设置时选择将磁盘拆分成多个文件,则会生成如图3虚拟机镜像文件所示的多个VMDK文件。它由一个[vmname].vmdk 和多个[vmname]-s###.vmdk文件(S###为磁盘文件编号)组成一个存储磁盘,其中[vmname].vmdk文件只包含磁盘分区信息,多个[vmname]-s###.vmdk文件存储磁盘数据信息。随着数据写入某个虚拟磁盘文件该虚拟磁盘文件将变大,直到文件大小为2GB,然后新的数据将写入到其他S###编号的磁盘文件中。此类型的优点是可以更轻松地在计算机之间移动虚拟机,但可能会降低大容量磁盘的性能。

如果创建虚拟机时选择的是固定分配类型,则虚拟机镜像文件会预先分配空间大小,在创建虚拟磁盘时已经把所有的空间都分配了,那么这些文件将在初始时就具有最大尺寸并且不再变大了。

2.3 VMDK动态分配类型

如果创建虚拟机时选择的是动态分配大小,则文件采用动态变化方式,这些文件开始较小,随着虚拟机里的数据变化而逐渐变大,直到虚拟机文件达到创建时设置的大小。此时有两种情况:将虚拟磁盘存储为单个文件和将虚拟磁盘拆分成多个文件。新建虚拟机时指定为每2GB单独创建一个磁盘文件的话,虚拟磁盘总大小就决定了虚拟磁盘文件的数量。系统将创建一个[vmname].vmdk 和多个[vmname]-s###.vmdk文件(S###为磁盘文件编号),其中[vmname].vmdk文件只包含磁盘分区信息,多个[vmname]-s###.vmdk文件存储磁盘数据信息。随着数据写入某个虚拟磁盘文件,该虚拟磁盘文件将变大,直到文件大小变为2GB,然后新的数据将写入到其他S###编号的磁盘文件中。

2.4 VMDK快照卷类型

当虚拟机创建一个或多个快照时,就会自动创建[vmname]-[######].vmdk文件。通过对虚拟机填充数据、虚拟机镜像文件变化及文件修改时间对比分析可知。该镜像文件记录了创建某个快照时,虚拟机所有的磁盘数据内容,其中[######]为数字编号,根据快照数量自动增加。分割镜像创建快照时生成[vmname]-[######]-S[###].vmdk文件,其中[######]为数字编号,S[###]为分割镜像数字编号,与原文件一一对应。分割VMDK镜像如图4所示。

在虚拟机开启过程中虚拟机软件会对虚拟磁盘数据产生改动。鉴于电子取证无损原则[9,10],为了防止启动对设备、系统的操作而损毁某些电子数据,造成证件收集不充分,建议在对虚拟机的取证过程中,对虚拟机镜像文件不宜直接使用虚拟机軟件启动取证。因此,如何正确地对虚拟机镜像进行取证成为了值得研究的问题。

3 当前取证中遇到的问题

目前,已经有不少的软件可以支持对虚拟机VMDK镜像文件的加载解析。但对于拥有多磁盘镜像的虚拟机环境下,大多数的软件加载时,只能成功加载虚拟机识别指定的那个文件,即若加载时选择错了镜像文件有可能会加载不起来。当不知需要加载哪个镜像文件进行解析时,可以通过虚拟机磁盘设置查看对应的虚拟机镜像文件名字,如图5所示。为了进一步解决这个问题,根据分析虚拟机镜像的相关结构,使得软件加载任意的一个文件都可成功加载该组磁盘镜像。