Vulnhub靶机测试——将VirtualBox导出的ova文件强行导入VMware中 – 作者:niguang

如何将VirtualBox导出的ova文件强行导入VMware中

前言

最近在针对vulnhub上的靶机进行练习,由于vulnhub提供下载的靶机为.ova格式,是由virtualbox导出的,需使用virtualbox打开。而我的电脑上只安装了VMware,因此我就想尝试将其导入到VMware中。

OVA、OVF格式介绍

首先,介绍一下ova和ovf两种文件格式。

OVA(Open Virtualization Appliance:开放虚拟化设备)是一个单一的压缩文件,其中包含了OVF文件包中的所有文件,即OVF的一种压缩模式,后缀为.ova。

OVF(Open Virtualization Format:开放虚拟化格式)是一个文件夹,其中包含的文件是定义和部署虚拟机时必须用到的。OVF一般包含三种文件类型,分别为.ovf文件、.mf文件、.vmdk文件。

.ovf 是一个XML描述符,定义了虚拟机的元数据信息,如名称、硬件要求,并且包含了OVF文件包中其他文件的参考信息。

.mf 文件是一些文件SHA的集合,目的是为了防止镜像文件被非法篡改。

.vmdk 文件包含了虚拟磁盘资源,OVF包中可以包含多个.vmdk文件,用来创建不同的磁盘镜像。

问题描述

在vulnhub上下载的靶机均为.ova格式
image.png

问题一

在导入 Os-hackNos-1虚拟机时很快就遇到了第一个问题
image.png
点击重试按钮后,会放松OVF规范与虚拟硬件合规性检查,之后便可正常导入。
若出现了新的错误,可以参考https://www.cnblogs.com/sn1per/p/11947433.html

问题二

可是,在导入 Os-Hax虚拟机时,出现了新的问题
image.png
在网上查阅相关资料后得知,我下载的 Os-Hax虚拟机是由VirtualBox导出的,格式为 开放式虚拟化格式2.0
2.0格式的ova文件在导入VMware中时,就会出现上图中的错误。
image.png
网上给出的解决方案是在导出时不要选 2.0,而是选开放式虚拟化格式1.0。选了1.0之后再导入,就会出现问题一中描述的错误。
但该方法对我们来说不适用,不可能去要求发布者发布一个1.0格式的镜像。因此只能采取其他手段。

解决方案

首先将 Os-Hax.ova文件使用bindzip解压,得到了三个文件
image.png
用文本编辑器打开 Os-Hax.ovf
根据报错的位置,定位到文件中的105、114和123行
image.png
image.png
其次解压 Os-hackNos-1.ova,打开 Os-hackNos-1.ovf,并与 Os-Hax.ovf进行对比
image.png
二者最大的不同之处是三个 ITem标签中的内容
由于导入 Os-hackNos-1.ova时未出现问题二中的错误,猜测Os-hackNos-1.ova的格式可能为1.0。因此用 Os-hackNos-1.ovf中第112-140行中的内容替换 Os-Hax.ovf中105-130行的内容。

<Item>
    <rasd:AddressOnParent>0</rasd:AddressOnParent>
    <rasd:AutomaticAllocation>true</rasd:AutomaticAllocation>
    <rasd:Caption>cdrom1</rasd:Caption>
    <rasd:Description>CD-ROM Drive</rasd:Description>
    <rasd:ElementName>cdrom1</rasd:ElementName>
    <rasd:InstanceID>8</rasd:InstanceID>
    <rasd:Parent>4</rasd:Parent>
    <rasd:ResourceType>15</rasd:ResourceType>
</Item>
<Item>
    <rasd:AddressOnParent>0</rasd:AddressOnParent>
    <rasd:Caption>disk2</rasd:Caption>
    <rasd:Description>Disk Image</rasd:Description>
    <rasd:ElementName>disk2</rasd:ElementName>
    <rasd:HostResource>/disk/vmdisk2</rasd:HostResource>
    <rasd:InstanceID>9</rasd:InstanceID>
    <rasd:Parent>5</rasd:Parent>
    <rasd:ResourceType>17</rasd:ResourceType>
</Item>
<Item>
    <rasd:AutomaticAllocation>true</rasd:AutomaticAllocation>
    <rasd:Caption>Ethernet adapter on 'Bridged'</rasd:Caption>
    <rasd:Connection>Bridged</rasd:Connection>
    <rasd:ElementName>Ethernet adapter on 'Bridged'</rasd:ElementName>
    <rasd:InstanceID>10</rasd:InstanceID>
    <rasd:ResourceSubType>E1000</rasd:ResourceSubType>
    <rasd:ResourceType>10</rasd:ResourceType>
</Item>

Os-Hax.mf文件中保存了 Os-Hax.ovfOs-hackNos-1-disk001.vmdk的SHA1值。替换之后 Os-Hax.ovf文件信息发生了改变,其SHA1值与 Os-Hax.mf中的内容出现了不一致的现象,此时仍不能成功导入。

解决方法有两种:

1.通过重新计算 Os-Hax.ovf的SHA1值,并对 Os-Hax.mf进行修改。

此方法较为繁琐,不推荐

2.删除 Os-Hax.mf

较简便,推荐使用

在导入成功后,也会出现因网卡信息配置的原因,导致虚拟机无法获得IP地址。解决方法参考https://blog.csdn.net/qq_45290991/article/details/114189156

总结

我使用的VMware版本为15.5.7,目前只遇到了上述两个问题。对于其他版本的虚拟机可能还会出现新的问题,对于新的问题,仍可以尝试依据本文的思路进行解决。若还有其他疑问,欢迎与我进行探讨。

来源:freebuf.com 2021-06-26 12:46:13 by: niguang

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论