Previous Step

Why this Post?
This post was added to this guide much later after the original publication, because as of this writing, Vulnhub is more or less out of commission. Since OffSec acquired Vulnhub, they have been steering people over to their OffSec Proving Grounds platform, but you still have access to past-published Vulnhub VMs.
Proxmox and HackMyVM Boxes
Again, as is the case with Vulnhub, with HackMyVM boxes, in most cases, we are looking for a .vmdk file. The .vmdk file is a format used for a VM’s virtual hard disk
Using HackMyVM Responsibly
The VMs you find on HackMyVM are developed by the community, and we thank them for their efforts, but your network and the security of said network are paramount.
The steps can be condensed to the following:
- Downloading the VM from HackMyVM
- Extracting the contents
- Locating the
.vmdkfile - Creating a VM in Proxmox
- Importing the
.vmdkdisk to the VM in Proxmox - And changing the boot order to boot off the imported disk
Before you turn on the VM, double check your settings.
Double check your network settings, double check your boot settings
Troubleshooting DHCP Issues
Please note that you might get some Ubuntu or Debian boxes where the DHCP client doesn't pull an IP address from pfSense. I've written an article on troubleshooting that issue here:

Even though this is for Vulnhub VMs, the issue will be resolved the same way
Importing a HackMyVM Box
Two Ways to Use HackMyVM
- Anonymously — you can use the platform without creating an account, but you need to use the RSS feed to see the full list of VMs
- Registered — you can register for an account on the platform and have access to more features, either way the platform costs nothing
Example Import Process

Download Source: https://downloads.hackmyvm.eu/atom.zip
Downloading and Transferring the Archive

scp on Windows (also available on Linux and Mac OS).# Syntax: scp <source_file> user@proxmox_node:<destination_path>
scp ~/Downloads/atom.zip root@172.16.1.6:/tmp/atom.zip
Importing via the PVE Shell

# This is a comment. Just to add some comments about commands.
# If you see this, you do not need to type this in your shell.
# Install the unzip tool
apt install unzip# Enter the /tmp directory
cd /tmp# Unzip to the hackmyvm_atom directory
unzip -d hackmyvm_atom atom.zip
.ova file (which is yet another archive)tar -xvf atom.ova
.vmdk file we're aftergrep --color -iE 'disk|ram|cpu|size|quantity|ostype' Atom.ovf
.ovf file to get more info about the VM requirements: 64-bit Debian, 1 hard disk (40 GiB) which we'll be importing later, 1 CPU (1 core), 3048 MiB RAM, 16 MiB VMSVGA Video RAM# Let's create a VM and put in on the pfSense Isolated VLAN
# --name "<name of the VM>"
# --net0 model=virtio,bridge=vmbr1,firewall=0,tag=999
# net0 is the first network adapter
# model=virtio is the driver to use
# bridge=vmbr1 is the pfSense switch
# firewall=0 means no Proxmox firewall
# tag=999 is the VLAN tag
# --memory 3048 means 3048 MiB of RAM
# --cores 2 means give the VM 2 coress
# --vga type=std,memory=16 means use the default display adapter with 16 MiB
# --ostype l26 means Linux kernel 2.6 (older systems like Metasploitable)
# --storage local-lvm is VM disk storage
VM_ID='401'
qm create "$VM_ID" --name "HackMyVM-Atom" \
--net0 model=virtio,bridge=vmbr1,firewall=0,tag=999 \
--memory 3048 --cores 2 --vga type=std,memory=16 \
--ostype l26 --storage local-lvmCreate the VM using the parameters identifies in the .ovf file, adapted for Proxmox
# Let's import the disk to the new VM
# Importing Atom.vmdk to VM 401 on local-lvm as QCOW2 format
# This is just the disk import we have to attach it next
# We use --format qcow2 to allow for snapshots
qm importdisk "$VM_ID" Atom-disk001.vmdk local-lvm --format qcow2Importing the disk to the VM (this will take a while depending the size of the disk)
# Attach the disk to the VM
# --sata0 is the first SATA disk
# local-lvm:vm-401-disk-0
# In the step above we imported the disk to local-lvm
# The imported disk is stored in local-lvm:vm-401-disk-0
# We are attaching it to sata0
qm set "$VM_ID" --sata0 "local-lvm:vm-${VM_ID}-disk-0"Attach the disk to the VM on the SATA storage controller
# Set the disk as the primary boot
# --boot is setting the boot order settings
# We attached sata0 in the step above. Now, we want to boot from it.
qm set "$VM_ID" --boot="order=sata0"Set the VM to boot first from the attached hard disk
qm start "$VM_ID"Test booting up the VM


cd /tmp
rm atom.zip
rm -r ./hackmyvm_atomClean up the files
nmap scans and have fun!Next Step

