VMCloak: Automated Virtual Machine Generation and Cloaking
Today I present you a tool that I’ve been working on for a while,
vmcloak. For those of you familiar with Cuckoo Sandbox
and setting it up you’ll surely be aware of the pain that is configuring
Somewhat complete documentation can be found at readthedocs.org,
however, a quick introduction of the related commands is of course the
easiest. (Do note that VMCloak has mostly been tested on Ubuntu/Debian, so
other distributions might not work, yet.)
Basically you need a few things to get started:
- vmcloak (sudo pip install vmcloak)
- Windows XP Installer ISO file
- Windows XP Serial Key (that works with your installer!)
- genisoimage & VirtualBox (sudo apt-get install genisoimage virtualbox)
- Two directories for VirtualBox files.
First we have to mount the windows installer ISO file:
sudo mkdir -p /mnt/winxp sudo mount -o loop,ro /path/to/your/winxp.iso /mnt/winxp
Now we have to start vboxnet0 if it has not already been started:
# If this returns nothing, then vboxnet0 hasn't # been started. VBoxManage list hostonlyifs # Create vboxnet0 and assign the correct IP address. VBoxManage hostonlyif create VBoxManage hostonlyif ipconfig vboxnet0 --ip 192.168.56.1
And then two directories are required – a directory where VirtualBox’ snapshot
files will be stored, and a directory where the VirtualBox harddisk files and
installer ISO files will be stored. Note that you might want to place the
snapshot files in a tmpfs container to ensure VMs load pretty much
mkdir ~/vms/ ~/vm-data/
Having setup the mount directory, the hostonly interface, and the VirtualBox
directories we’re now good to go with regards to creating our first VM with
VMCloak. It is recommended to use the recommended settings by providing
the -r switch. By default the hostonly IP address will be set to
192.168.56.101, however, if you intend to create multiple VMs then you’ll have
to give each VM a unique IP address (i.e., 192.168.56.102, 192.168.56.103,
etc.) In order to automatically register the newly created VM with Cuckoo
you’ll have to set the cuckoo directory so we’ll do this as well.
We’re now going to make a VM with the name cuckoo1 and the IP address
vmcloak -r -d --vm-dir ~/vms/ --data-dir ~/vm-data/ \ --iso-mount /mnt/winxp --serial-key AAAAA...EEEEE \ --hostonly-ip 192.168.56.101 --cuckoo ~/cuckoo/ \ cuckoo1
The -d switch causes vmcloak to spit out debugging messages which may be
helpful in some cases. This command will take up to 30 minutes to finish -
on the machines I’ve tested it’s usually less than or roughly 10 minutes.
So.. get yourself something to drink, wait for a bit, and you should have a
VM ready to be used by Cuckoo.
Allowing VMs full internet access
It is possible to give VMs full internet access, even after
creating them, without modifying the VMs themselves. If your network
configuration is “regular” (i.e., a working internet connection at either
eth0 or wlan0) then you’ll only have to run one command:
Of course this is a never-ending project and it’s still actively being
developed Things on the TODO list include, but are not limited to:
- Windows 7 support
- Further VM cloaking (making the VM as stealth as possible)
- VMWare Workstation support
- Support for installing Adobe / Microsoft Office / etc in the VM
- Loads more..
Of course there’s an official website and naturally the source code
can be found on github.
Further credits go to Thorsten Sick of Avira and a special thanks to
Avira and the iTES Project for supporting the development of
So much for today! Hope the tool will be useful for people and if there are
any questions don’t hesitate to email me or so.
ps: Please don’t tell me about using vagrant or similar instead of
something custom built unless you’ve actually used it together with Cuckoo
Hi, this rocks. Add support to Vmware ESXi instead of Workstation =).
Pingback: VMCloak 0.2: Windows 7 Support | Development & Security