VMware虚拟磁盘结构分析及在电子数据取证中的应用
2011-09-26钱伟沙晶
钱伟,沙晶
(上海辰星电子数据司法鉴定中心公安部第三研究所信息网络安全公安部重点实验室,上海200035)
VMware虚拟磁盘结构分析及在电子数据取证中的应用
钱伟,沙晶
(上海辰星电子数据司法鉴定中心公安部第三研究所信息网络安全公安部重点实验室,上海200035)
详细分析了VMware的虚拟磁盘结构,并针对电子数据取证中的磁盘镜像虚拟加载、虚拟机数据迁移、虚拟磁盘文件的搜索和虚拟磁盘数据的鉴定与恢复等实际问题提出相应的解决方案。
虚拟机;磁盘;电子数据;取证
Abstract:This paper gave a detailed structural analysis of VMware virtual disk and corresponding solutions to problems emerged in electronic data examination,like virtual disk image loading,data migration of virtual machines,files search on virtual disk,examination and restoration of virtual disk data.
Key words:virtual machine;disk;electronic data;electronic evidence
1 引言
计算机虚拟技术是通过软件来模拟计算机硬件的技术。目前,物理计算机的计算量、存储量有了非常大的进步。计算机上安装了虚拟机之后可以在一台机器上模拟出多台机器的效果,能完成架设多计算机服务程序、隐蔽网络访问等需求,因此,越来越多的数据以及服务被存储和移植到了虚拟计算机上。随之带来的针对虚拟机的数据恢复与取证需要对虚拟机磁盘结构有一定的了解。本文详细分析了最常用的VMware虚拟机磁盘的文件结构并阐述其在电子数据取证中的应用。
2 VMware虚拟磁盘结构概述
VMDK(Virtual Machine Disk)是VMware虚拟机存储虚拟磁盘镜像的一种文件格式,虚拟机磁盘文件代表了虚拟机的存储卷,它以.vmdk后缀命名。
VMware虚拟磁盘有两个关键的特征:
1)虚拟磁盘可能使用包含在同一个文件中的后备存储器,也可能使用包含许多更小文件集合的存储。
2)所有虚拟磁盘所需的磁盘空间可能在虚拟磁盘创建的时候被分配,也可能从小开始、逐步增大来容纳更多的数据。
特定的一个虚拟磁盘可能有符合上述两个特征的任意组合。
从虚拟机的差分控制来说,虚拟磁盘文件可以分为两类:基础磁盘文件(Base)和差分控制链接(Delta)。图1所示的为磁盘差分控制结构,这些链接文件串连在一起便构成了虚拟磁盘文件。
图1 磁盘差分控制结构
在虚拟机刚被创建时,虚拟磁盘仅仅包括基础磁盘文件。当虚拟机创建了一个快照,那么虚拟磁盘就包括基础磁盘文件和差分控制链接两者。从创建快照之刻起,客户操作系统写到磁盘的所有改变都保存在差分控制链接处。有可能有不止一个差分控制链接与一个特定的基础磁盘文件相关联。基础磁盘文件和差分控制链接都由一个或者多个Extent(数据存储文件,是物理存储的一个范围,通常是一个文件)组成。该文件被虚拟磁盘使用。图2显示的是基础磁盘文件以及差分控制链接文件的构成方式。
图2 磁盘文件的构成方式
从虚拟磁盘存储的信息来说,虚拟磁盘文件也分为两种:第一种是描述文件,该文件包括磁盘的版本、ID、类型等多种信息。第二种是Extent文件,该文件中存储了虚拟机的数据。Extent文件分为两类:平板Extent和稀疏Extent。
3 VMware描述文件分析
图3为虚拟机VMware的描述文件内容。文件记录了文件版本、创建类型等一系列信息。该文件在分片存储时会单独生成,在分配方式为单个磁盘文件时将会被嵌在该文件内。
图3 描述文件结构
3.1 描述文件结构分析
3.1.1 磁盘文件描述
(1)version:后面的数字是描述文件的版本号,默认为1。
(2)CID:显示内容ID(content ID)。在虚拟磁盘被打开后,第一次被修改时生成的随机32位值。每个链接头(link header)同时包含了内容ID和父内容ID(parent content ID)。如果一个链接有父链接,如图1中的B和C链接,那么它的父内容ID就是父链接的内容。如果一个链接没有父链接,如图1中的链接A一样,那么它的父内容ID就设置为CID_NOPARENT。
(3)parentCID:显示了父链接的内容ID。如果一个链接没有任何父链接,换句话说该链接就是基础磁盘,那么就设置为如下值:#define CID_NOPARENT,也就是全为1。
(4)createType:显示了虚拟磁盘的类型。
(5)parentFileNameHint:该项只在本描述文件为嵌入式并且为差分控制文件时才会出现,其中包含了该差分控制文件父链接的路径。
3.1.2 Extent描述
在图4中把Extent分成四个属性进行详细分析:
图4 Extent描述
(1)访问方式:可供选择的有:RW、RDONLY和NOACCESS。
(2)扇区大小:属性的数值是后面文件名对应文件的扇区数量,而每一个扇区的大小为512个字节,两者相乘即是文件大小。
(3)Extent类型:类型可以是平板或者稀疏。
(4)文件名:显示的是相对于描述文件的Extent路径。
3.1.3 磁盘数据库
ddb是一个结构体,其中ddb.adapterType的类型表示为ide。adapterType的类型一共有三种,在创建虚拟磁盘的时候可以用参数指定,这三种类型分别是:
(1)ide:老的适配器格式,可以兼容比较老的软件;
(2)buslogic:一种BusLogic SCSI适配器,性能较高;
(3)lsilogic:LSI Logic SCSI适配器,在新的系统中有比较高的性能。
4 VMware数据存储文件分析
经过描述文件的分析,可知Extent的类型有平板和稀疏两种类型。
4.1 平板文件
虚拟机磁盘文件在虚拟机创建时就分配了全部的空间,分配方式可分为两种:第一种为单个磁盘文件,Extent文件将所有需要的虚拟磁盘空间申请为一个指定大小的.vmdk文件。第二种为多个2GB的磁盘文件,将生成多个大小为2GB的.vmdk文件来占据预先就分配的虚拟磁盘空间。
当虚拟文件按照这种方式构成时,描述文件与Extent文件将都为独立的文件,描述文件不作为嵌入扇区写在Extent内部。
4.2 稀疏文件[1]
数据存储空间并不是在创建时就已经全部分配,而是在需要的时候才动态申请。在稀疏Extent中将通过索引来确定数据在Extent文件中的位置。分配方式也可分为两种:第一种为单个磁盘文件。将不生成单独的描述文件,描述文件将被嵌入到稀疏数据文件的第二个扇区中,所有的差分控制文件都是该种类型的文件。第二种为多个2GB的磁盘文件,分割成的多个磁盘文件在创建初期就会被全部生成,但是仅仅包含虚拟机的头信息以及为稀疏数据检索所预留的磁盘空间,其他具体存放数据区域将在使用中逐步增加。
稀疏文件通过层次结构的索引机制,来达到模拟存储磁盘数据的目的。图5是稀疏文件结构的具体组成(图中的颗粒文件为Grain,指的是一系列扇区组成的存储数据的块文件)。
图5 稀疏文件结构
4.2.1 稀疏文件头
文件头是存放在链接文件第一个扇区中的文件数据。图6为稀疏文件头中的具体数据,并在表1中详细解释各个字段的含义。
4.2.2 可选描述文件
4种磁盘空间分配方式中,只有稀疏分配的单文件模式没有独立的描述文件,把描述信息写在了嵌入式描述文件段中。其他的3种分配方式都有单独的描述文件。
表1 稀疏文件头各字段含义
4.2.3 稀疏文件存储方式
VMware软件为了提高虚拟机的恢复能力,在虚拟磁盘上保存了两份颗粒目录以及颗粒表,对应图5中的冗余颗粒目录、冗余颗粒表、颗粒目录和颗粒表。
稀疏文件的存储区域管理是一个包括三层的层次结构:
(1)最高层次颗粒目录:颗粒目录中的项保存着稀疏Extent上对应颗粒表的扇区偏移量,颗粒目录的大小取决于稀疏Extent文件的长度,每一个颗粒目录的项是一个32位的值。
(2)次级层次颗粒表:颗粒表中的项保存着稀疏Extent上对应颗粒的扇区偏移量。一般来说在颗粒表中有512个项,而每个项是一个32位的值,所以每个颗粒表的大小为2KB。在一个新创建的稀疏Extent文件中所有的颗粒表的项都会被初始化为0,这意味着,颗粒表项指向的颗粒还未被分配。当颗粒被创建时,颗粒表的项将会被初始化,并指向颗粒在稀疏Extent文件中对应的位置。
图6 文件头数据
(3)最低层次颗粒:颗粒是在虚拟磁盘上存储数据的一系列扇区的组合,由多少扇区组成一个颗粒在头文件中的grainsize参数中会给出,在默认情况下是128,因此在默认情况下每个颗粒保存64KB的虚拟机数据。
以图6所示的稀疏文件为例:冗余颗粒目录在第0x15个扇区,也就是对应位置0x2A00处。
图7中可以看到第一个颗粒目录项所显示的颗粒表的扇区偏移量为0x17,每个颗粒表之间的扇区偏移量之差为4,也就是2KB大小。
图8中每4位表示一个颗粒的扇区偏移量(32位最多可以表示2048GB),全零的区域表示该位置的空间还没有被分配。上图说明,磁盘的开始128个扇区被存放在扇区偏移量为0x880的位置,接下来的三个颗粒中的扇区没有被存放数据。
图9中的数据是windows第一扇区,引导扇区中的内容。存储方式与操作系统无关,此处仅仅是演示正确性。
5 电子数据取证中的应用
在电子数据取证中,常常会有这样的几种情况出现:
(1)受鉴定取证的计算机中保存有两个或者多个操作系统,其中重要的数据被保存在虚拟计算机中。
(2)得到的并不是物理磁盘,而是磁盘镜像文件。
所以说虚拟技术对于数据的鉴定和恢复、服务迁移等都有着重要的作用。本节将结合电子数据取证中的具体问题来详解Vmware虚拟机的多功能取证工具MyVirtualTools.exe在实际中的应用。
表2 MyVirtualTools.exe的主要参数
5.1 磁盘镜像的虚拟加载
在数据鉴定中常常得到的不是一个可以被直接加载的硬盘,而是一个物理磁盘的镜像文件。当有某些鉴定取证需要进入磁盘文件内的操作系统时,便出现了问题。因为在磁盘上的一个数据文件计算机是不会把它引导成系统启动的。这时可以使用MyVirtualTools.exe软件把该磁盘数据文件转换成VMware虚拟机文件并通过VMware虚拟机加载启动。这样的方式比起使用DUMP工具把磁盘镜像文件拷贝到物理磁盘便捷了许多。具体使用分类以及参数如下:
(1)若对于转换磁盘文件生成的.vmdk文件大小没有要求,可以仅仅生成平板模式的虚拟机文件。
参数示例:MyVirtualTools.exe–f–pv源路径;目的路径
参数中的源路径表示镜像文件的路径以及文件名,目的路径表示生成的虚拟机系统文件夹存放的路径以及文件夹的名称。
图7 部分冗余颗粒目录
图8 部分颗粒表
图9 偏移0x880处数据
(2)若磁盘镜像文件中实际数据占用的空间与镜像占用的空间差距太大时,可以选择把文件转换成稀疏文件模式的虚拟机文件。在这种情况下MyVirtualTools.exe软件会自行构造三层索引结构,并分配合理的存储颗粒文件。由于系统申请的空间并不一定是连续的,所以若是按序存放的话必定会出现很多的空白区域浪费了磁盘的存储空间。而使用稀疏文件模式时,空白的文件将会在索引中注明00,表示该区域的空间并没有被分配。转换之后能节约大量的磁盘空间,对于存储备份鉴定所需的磁盘数据有着重要的作用。
参数示例:MyVirtualTools.exe–s–pv源路径;目的路径。
以上两种方式运行之后将会产生一个虚拟系统的文件夹,之后便可以使用VMware虚拟机进行加载启动了。
5.2 虚拟机数据迁移[2]
电子数据的取证和鉴定的数据与应用服务有时为了各自的独立性会把自己加载在虚拟机中进行工作。但是随着时间不断的推移,各个数据与服务之间的进展各不相同。有些可能没有什么变化,有些可能随着鉴定处理数据的不断增大,图像处理精度的不断提高等原因,虚拟机已经无法再提供处理的环境。这时便需要把虚拟磁盘文件转化为物理磁盘在真实的计算机上进行操作。使用MyVirtualTools.exe可以把两种模式的虚拟机系统转化为物理磁盘镜像文件,接着可以通过计算机DUMP镜像到物理磁盘,最后在物理计算机上运行原来的虚拟系统。
(1)平板文件模式:当VMware虚拟机的磁盘模式是平板模式时,虚拟磁盘的结构类似于物理磁盘。
参数示例:MyVirtualTools.exe–f–vp源路径;目的路径。
参数中的源路径是虚拟机系统文件夹存放的路径以及文件夹的名称,目的路径是生成的镜像文件的路径以及文件名。
(2)稀疏文件模式:由于在这种模式下虚拟磁盘文件的内容不是按序存放在磁盘文件中,而是通过一个三层索引结构,以一定的存储颗粒大小存放起来的。转换时,通过查各级的索引表对于已经被申请空间中的数据,找到对应的地址并以存储颗粒为大小拷贝到物理磁盘镜像上;对于还未被分配的空间在其上填充00空出该区域以备以后使用。转换之后,物理磁盘镜像文件的大小为磁盘完全分配时的大小。
参数示例:MyVirtualTools.exe–s–vp源路径;目的路径。
以上两种方式运行之后可以生成一个物理磁盘的镜像文件。然后就可以使用磁盘DUMP工具把生成的物理镜像文件拷贝到物理磁盘。这样便完成了鉴定虚拟平台迁移到物理平台的任务。不但可以保留原先所有的数据以及资料,并且实际的性能由于迁移也得到了提高。
5.3 虚拟磁盘文件搜索
在实际的电子数据取证中,有时仅仅需要在虚拟计算机中搜索一个文件,或者打开在指定文件路径下的文件。这种情况下使用VMware虚拟机软件加载虚拟磁盘文件或者通过Mount命令挂载虚拟磁盘来完成以上的两种需求都略显繁琐。使用MyVirtualTools.exe工具可以通过输入文件名来搜索或打开指定文件。
(1)搜索虚拟计算机中的文件:MyVirtualTools.exe–f–search文件名,工具将会返回同文件名的所有文件的路径。
(2)打开指定文件:MyVirtualTools.exe–s–open文件路径加文件名,工具将会返回文件的内容,在此常常被用来查看文本文件。
5.4 虚拟磁盘数据鉴定与恢复[3]
在实际的电子数据鉴定中,得到的虚拟磁盘中的数据有时已经被删除或者被破坏,这便使得取证遇到了障碍。MyVirtualTools.exe主要完成的功能是还原恢复虚拟机中已经被删除的文件,输入参数运行之后将会在指定文件夹内产生恢复文件。
参数示例:MyVirtualTools.exe–f–recovery源路径;目的路径。
参数中的源路径是虚拟机系统文件夹存放的路径以及文件夹的名称,目的路径是恢复出来的文件存放的路径文件夹名称。
更进一步的虚拟数据恢复工作可以把该工具和物理磁盘取证恢复工具结合使用。例如,先把虚拟操作系统的磁盘转化为物理磁盘文件,然后再使用encase等恢复工具进行工作。
6 结论
通过对VMware虚拟机虚拟磁盘文件结构的分析,并结合工具对于电子数据取证中的实际问题提出了解决方案。今后还将会对VPC、Xen等其他虚拟机的虚拟磁盘文件结构进行分析并给出适合需求的应用实例、方法以及工具。
[1]戴士剑,涂彦晖.数据恢复技术[M].北京:电子工业出版社,2005:3.
[2]何欢,何倩.数据备份与恢复[M].北京:机械工业出版社,2010:9.
[3]刘伟.数据恢复技术深度揭秘[M].北京:电子工业出版社,2010.5.
(本文编辑:施少培)
Structural Analysis of VMware Virtual Disk and its Application in Electronic Data Examination
QIAN Wei,SHA Jing
(Shanghai Stars Digital Forensic Center,Key Laboratory of Information Network Security,Ministry of Public Security,Shanghai 200035,China)
TP393
A
10.3969/j.issn.1671-2072.2011.02.013
1671-2072-(2011)02-0060-05
2009-08-06
钱伟(1984-),男,助理工程师,硕士研究生,主要从事网络攻防虚拟技术研究。E-mail:smile1_9_8_4@hotmail.com。