(7.2)【虚拟机的数据隐藏】VMware(虚拟机文件)中的隐藏

本文详细介绍了如何利用虚拟环境,尤其是VMware,来隐藏和提取数据。重点讲解了VMware文件的组成部分,如.vmdk、.nvram、.vmsd、.vmx和.vmxf文件。并详细阐述了在.vmdk文件中隐藏数据的步骤,包括选择合适的嵌入位置,使用Dsfok-tools工具进行编辑,以及如何确保文件在虚拟机中正常运行。同时,文章还提到了隐藏数据的潜在风险和提取隐藏文件的方法。
摘要由CSDN通过智能技术生成

目录

一、虚拟环境

1.1、概述:

1.2、优点

二、VMware文件

2.1、组成:

三、在VMware镜像中隐藏数据

3.1、概述:

3.2、Dsfok-tool

简介:

下载:

原理:

使用:

3.3、隐藏文件

第一步:分析嵌入位置

第二步:分析嵌入方法

第三步:嵌入文件

第四步:检测文件是否正常运行

3.4、缺点:

3.5、提取文件


一、虚拟环境

1.1、概述:

MojoPac这个可以在宿主操作系统中运行的虚拟环境。

除MojoPac外,还有很多虚拟机产品, 其中最常用的就是VMware。

这些虚拟机产品都可以包含一个完整的操作系统。


要隐藏较大的数据块时, 人们通常会选择使用多媒体文件, 因为多媒体文件本身的体积就很大。  多媒体文件可以隐藏的数据量更多, 质量更好, 与2MB的JPEG文件比起来, 在一个100MB的多媒体文件中隐藏文件对载体文件的影响是极小的。多媒体文件嵌入数据后, 音频或视频效果基本不受影响。 而JPEG文件中如果嵌入大最的数据(例如2MB), 就会变得模糊不清, 或者一块一块的, 像打了马赛克一样。

1.2、优点

虚拟机的体积很大,也可以隐藏大量的数据。但是,与静态多媒体文件不同,虚拟机在使用过程中,大小总是动态变化的。这样就可以躲过数据有效性工具(主要目的是识别对文件的非法修改)的检查了。总之,要想在虚拟机中隐藏数据,我们必须先了解虚拟机的组织结构。

 



二、VMware文件

2.1、组成:

为了在虚拟机中隐藏数据,我们必须先研究虚拟机的各个组成部分。一个VMware虚拟机镜像通常包括一组文件。


*.vmdk

表示虚拟硬盘,文件大小上限为2GB。其中包含虚拟机的数据及空间开销。 在老版本的VMware中,该文件的扩展名为".dsk”。


*.nvram

虚拟机的BIOS和硬盘数目


*.vmsd

通过生成快照并保存快照的元数据来存储虚拟机的状态


*.vmx

一个用于存储虚拟机配置信息的文本文件,主要包括操作系统、设备、网卡等信息。图8.7为一个*.vmx配置文件示例


*.vmxf

是一个附加文件,当虚拟机以工作组模式运行时,该文件用于存储虚拟机的元数据。



三、在VMware镜像中隐藏数据

3.1、概述:

在虚拟机中隐藏较大的文件,因为*.vmdk虚拟硬盘文件是唯一一个大文件,我们就选择它来作 为载体。该文件大小一般为50MB~ 2GB不等,在大型的企业环境中还可能扩展到TB级别。但是,如果我们用来隐藏数据的话,文件大小还需要方便下载或者在网络中传输,因此50MB是最好不过的了


如果没有*vmdk文件,可以到VMware官网上免费下载虚拟镜像。VMware官网中有很多虚拟镜像可供下载。随便下载一个,就可以得到所有运行虚拟机所必需的文件。当然,其中包括虚拟硬盘文件*.vmdk。注意,如果你还没有VMware Player,请到VMware官网上下载

3.2、Dsfok-tool

简介:

基于Windows 的工具, 可以在不需要用十六进制编辑器打开VMDK 文件的情况下, 对其进行编辑操作。通常, Dsfok-tools 用来编辑VMDK文件中的描述符文件。这个工具套件里包含两个工具:dsfo 和dsfi。dsfo 可以从VMDK 文件中提取配置信息, 而dsfi 可以用来在VMDK文件中嵌入数据。


下载:

dsfok (softwareandgames.com)icon-default.png?t=M4ADhttps://dsfok.softwareandgames.com/


原理:

目的是在VMDK 载体文件中嵌入JPEG 载荷文件, 那就直接用dsfi , 使用dsfi 可以直接修改其中的字节, 而不是在文件中增加数据, 这样就不会更改VMDK 文件的大小, 也不会损坏文件了(如果通过增加数据的方式嵌入数据就会改变文件大小, 造成实际文件大小与描述符文件中的文件大小参数不一致, 这样打开虚拟机时就会上报运行时错误)。


使用:

根据sunbarrow.com, dsfi 的语法如下:

dsfi <destination> <offset> <size> <source>

• "size" 值为"NULL": 表示按最大可能嵌入数据, 即目标位置的全部填充区域。

• "size" 值为负数:表示按当前文件大小计算

• "offset" 值为负数:表示从文件末尾开始计算偏移量

• "offset" 值为 “ e":表示嵌入位置为文件末尾

•"destination" 值为 " $ ” :表示仅检查MD5签名

3.3、隐藏文件

第一步:分析嵌入位置

在开始*vmdk文件中嵌人数据前,请确保虚拟机处于未运行状态或已关机,否则会有不利影响

——————

关闭虚拟机,用WinHex打开*.vmdk文件,我们来分析一下在什么位置嵌入载荷才合适。

(WinHex45天后要收费,我用的010 Editor)

不同*vmdk文件的文件头各异,最常见的就是momolithicSparse文件头中的K.DMV"(vmdk的倒序拼写),MonolithicSparse文件本质上就是一个仅有一个文件的虚拟磁盘。

——————

*.vmdk文件中还有一个描述符文件,其中记录了磁盘布局、形状(类似于物理磁盘的一定要保持形状)、虚拟镜像的大小和它们在磁盘中的位置(通过偏移量表示)。

注意,*.vmdk 的大小不变, 以免在虚拟机运行时产生不一致性错误。此外,由于*.vmdk文件本质上是物理硬盘的虚拟版,*vmdk文件中也存在同物理硬盘的分区和扇区中类似的填充区域。因此,你可以在整个虚拟磁盘中发现大量的、聚集在一起的填充区域,而且越到文件末尾填充区域越多


第二步:分析嵌入方法

如果我们把一个2MB 的JPEG文件嵌入到虚拟磁盘文件*.vmdk 中。我们要用JPEG 文件的内容替换*.vmdk 中的填充区域, 而不是简单地附加到文件中。具体替换操作, 可以使用WinHex 的替换功能, 把JPEG 文件内容直接复制到*.vmdk 文件中, 并使用WinHex 的替换功能逐字节地替换。

——————

还有一个专用的VMDK文件编辑工具Dsfoktools,可以替代WinHex 实现同样的功能。

——————

首先, 我们需要确定JPEG文件的确切大小: 用WinHex打开JPEG, 在界面左侧可以看到原始文件大小

——————

然后从虚拟文件末尾开始(EOF文件标识符)逐渐向上查找, 直到找到可以嵌入那个JPEG载荷文件的填充区域。


第三步:嵌入文件

用dsfi在*vmdk文件中嵌人JPEG文件了。 在嵌入命令中可以使用负的偏移量, 表示从文件末尾开始计算嵌入点。 如果虚拟磁盘文件名为"root.vmdk",那么嵌入命令则为

C:\ dsfi root.vmdk -1571228 1571228(嵌入文件的大小) scuba.jpg(文件名)

第四步:检测文件是否正常运行

用WinHex重新打开root.vmdk文件, 可以看到JPEG文件已经嵌入其中,root.vmdk文件尾部的1 571 228字节已替换为JPEG文件的内容了

——————

嵌入图像的VMDK文件还能用VMware Player打开, 且能像正常的虚拟机一样运行, 没有任何被篡改的迹象。 虚拟机中图像和其他从网络中刚下载的图像没什么区别。所以打开图像时,没有任何告警信息。VMwarePlayer不会弹出告警,甚至没有任何提示性信息提醒用户在打开前复制或移除它。虚拟机运行时,也没有任何消息提示用户该 虚拟机被修改过。如果我们手上有图像嵌入前后的两个wmdk文件,则可以通过十六进制编辑器打开文件对比,就可以发现其中嵌入的JPEG文件。

3.4、缺点:

反复运行虚拟机对其中隐藏的图像不会产生任何影响。 但是, 既然我们讨论的是虚拟磁盘, 那么如果长期运行虚拟机, 则藏在其中的数据势必会被其他数据重新覆盖。


然而, 如果要用.vmdk文件来传递秘密情报, 这个虚拟磁盘文件则只是作为一个隐蔽的载体而已。接收者不会关心其他人是否会下载这个虚拟机, 是否反复运行并将隐藏的信息覆写。 实际 上, 也许这还是接收者希望发生的。

3.5、提取文件

从VMware虚拟机vrndk文件中提取隐藏图像的方法和嵌入方法类似。提取图像时,我们需要用前面提到的dsfok-tools工具套件中的另一个工具dsfo:

C:\ dsfo root.vmdk -1571228 1571228 scuba.jpg 

执行完上述命令后,即可从root.vmdk文件中提取出文件末尾的1571 228字节,提取 后的图像名称为"scuba.jpg"。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑色地带(崛起)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值