2016-06-13 20:24:23 -04:00
---
layout: doc
title: How to create a Kali Linux VM
2016-06-27 14:53:54 -04:00
permalink: /doc/pentesting/kali/
redirect_from:
- /doc/kali/
2016-06-13 20:24:23 -04:00
---
2016-06-17 12:19:35 -04:00
**General Remainder:**
- The installation scripts and provided tools may have bugs, be vulnerable to Man in the Middle (MitM) attacks or other vulnerabilities.
- Adding additional repositories or tools for installing software extends your trust to those tool provider.
Please keep in mind that using such a VM or VM's based on the template for security and privacy critical tasks is not recommended.
2016-06-13 20:24:23 -04:00
How to Create a Kali Linux VM
=============================
2017-01-14 17:50:32 -05:00
This guide is being created to give guidance on ways in which you could create a [Kali Linux][kali] penetration testing VM (qube) in Qubes OS.
2016-06-13 20:24:23 -04:00
Kali Linux is the most widely used penetration testing Linux distribution.
2017-01-14 07:39:59 -05:00
There are multiple ways to create a Kali Linux VM:
2016-06-13 20:24:23 -04:00
2017-01-14 07:39:59 -05:00
1. Create a HVM and use the offical ISO to install the system or convert a [Virtual Image][kali-vbox]. Explained [here ](#hvm ).
2. Clone the Qubes OS Debian image and turn it into a Kali Linux distribution using [katoolin]. Explained [here ](#katoolin ).
3. Clone the Qubes OS 'jessie' Debian template, upgrade it to 'stretch'
(Debian 9.0) and turn it into a Kali linux template. Explained
[here ](#debian-upgrade ).
## Alternative Options to Kali
- [BlackArch][qubes-blackarch]
- [PenTester Framework (PTF)][qubes-ptf]
- [Pentesting][qubes-pentesting]
## Kali Linux HVM <a name="hvm"/>
2016-06-13 20:24:23 -04:00
2016-06-25 20:20:13 -04:00
1. Download the Kali installation DVD
2016-06-13 20:24:23 -04:00
2016-06-25 20:20:13 -04:00
2. Create a new HVM
2016-06-13 20:24:23 -04:00
2016-06-25 20:20:13 -04:00
3. Start the HVM with attached CD/DVD
2016-06-13 20:24:23 -04:00
2016-06-25 20:20:13 -04:00
qvm-start < hvm-name > --cdrom < vm-name > :/home/user/Downloads/< iso-name > .iso
2016-06-13 20:24:23 -04:00
2017-01-14 07:39:59 -05:00
## Create Debian Based Kali Template <a name="katoolin"/>
Katoolin is a script (written in Python) which helps you to install Kali tools.
2016-06-13 20:24:23 -04:00
2016-06-25 20:20:13 -04:00
1. *(Optional)* Install `debian-8` template (if not already installed)
2016-06-13 20:24:23 -04:00
2016-06-25 20:20:13 -04:00
2. Update your `debian-8` template
2016-06-13 20:24:23 -04:00
2016-06-25 20:20:13 -04:00
sudo apt-get update
sudo apt-get dist-upgrade
2016-06-13 20:24:23 -04:00
2016-06-25 20:20:13 -04:00
3. Clone `debian-8` template (two options)
2016-06-13 20:24:23 -04:00
2016-06-25 20:20:13 -04:00
1. Via Qubes VM Manager
2016-06-13 20:24:23 -04:00
2016-06-25 20:20:13 -04:00
![Clone Debian Template ](/attachment/wiki/Kali/clone-kali.png )
2016-06-13 20:24:23 -04:00
2016-06-25 20:20:13 -04:00
2. Via command line
2016-06-13 20:24:23 -04:00
2016-06-25 20:20:13 -04:00
qvm-clone debian-8 kali
2016-06-13 20:24:23 -04:00
2016-06-25 20:20:13 -04:00
4. Start and upgrade the `kali` Template from Debian 8 to Debian 9
2016-06-13 20:24:23 -04:00
2016-06-25 20:20:13 -04:00
sudo sed -i 's/jessie/stretch/g' /etc/apt/sources.list
sudo sed -i 's/jessie/stretch/g' /etc/apt/sources.list.d/qubes-r3.list
sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get autoremove
2016-06-13 20:24:23 -04:00
2017-01-14 07:39:59 -05:00
6. Install Katoolin and add Kali Linux repositories
2016-06-13 20:24:23 -04:00
2016-06-25 20:20:13 -04:00
1. Install Katoolin
2016-06-13 20:24:23 -04:00
2016-06-25 20:20:13 -04:00
sudo apt-get install git
git clone https://github.com/LionSec/katoolin.git
sudo cp katoolin/katoolin.py /usr/bin/katoolin
sudo chmod +x /usr/bin/katoolin
rm -rf katoolin
2016-06-13 20:24:23 -04:00
2016-06-25 20:20:13 -04:00
2. Add Kali Linux repositories
2016-06-13 20:24:23 -04:00
2016-06-25 20:20:13 -04:00
- start katoolin
2016-06-13 20:24:23 -04:00
2016-06-25 20:20:13 -04:00
sudo katoolin
2016-06-13 20:24:23 -04:00
2016-06-25 20:20:13 -04:00
- select 'Add Kali repositories & Update'
2016-06-13 20:24:23 -04:00
2016-06-25 20:20:13 -04:00
1) Add Kali repositories & Update
2) View Categories
3) Install classicmenu indicator
4) Install Kali menu
5) Help
2016-06-13 20:24:23 -04:00
2016-06-25 20:20:13 -04:00
kat > 1
2016-06-13 20:24:23 -04:00
2016-06-25 20:20:13 -04:00
![Add Kali repositories and Update menu ](/attachment/wiki/Kali/katoolin-add-update-repo-menu.png )
2016-06-13 20:24:23 -04:00
2016-06-25 20:20:13 -04:00
- select 'Add kali linux repositories'
2016-06-13 20:24:23 -04:00
2016-06-25 20:20:13 -04:00
1) Add kali linux repositories
2) Update
3) Remove all kali linux repositories
4) View the contents of sources.list file
2016-06-13 20:24:23 -04:00
2016-06-25 20:20:13 -04:00
What do you want to do ?> 1
2016-06-13 20:24:23 -04:00
2016-06-25 20:20:13 -04:00
![Add Kali repositories ](/attachment/wiki/Kali/katoolin-add-repos-menu.png )
2016-06-13 20:24:23 -04:00
2016-06-25 20:20:13 -04:00
- update Kali repositories
2016-06-13 20:24:23 -04:00
2016-06-25 20:20:13 -04:00
1) Add kali linux repositories
2) Update
3) Remove all kali linux repositories
4) View the contents of sources.list file
2016-06-13 20:24:23 -04:00
2016-06-25 20:20:13 -04:00
What do you want to do ?> 2
2016-06-13 20:24:23 -04:00
2016-06-25 20:20:13 -04:00
- quit katoolin by pressing `CRTL` + `c` keys
2016-06-13 20:24:23 -04:00
2016-06-25 20:20:13 -04:00
What do you want to do ?> ^CShutdown requested...Goodbye...
2016-06-13 20:24:23 -04:00
2017-01-14 17:50:32 -05:00
7. Clean up and update `kali` template
2016-06-13 20:24:23 -04:00
2017-01-14 17:50:32 -05:00
sudo apt-get dist-upgrade
sudo apt-get autoremove
2016-06-13 20:24:23 -04:00
2016-06-25 20:20:13 -04:00
8. Shutdown and trim `kali` template
2016-06-13 20:24:23 -04:00
2016-06-25 20:20:13 -04:00
- Shutdown `kali` template
2016-06-13 20:24:23 -04:00
2016-06-25 20:20:13 -04:00
sudo shutdown -h now
2016-06-13 20:24:23 -04:00
2016-06-25 20:20:13 -04:00
- In `dom0` console:
2016-06-13 20:24:23 -04:00
2016-06-25 20:20:13 -04:00
qvm-trim-template kali
2016-06-13 20:24:23 -04:00
2016-06-25 20:20:13 -04:00
9. Start image
2016-06-13 20:24:23 -04:00
2017-01-14 07:39:59 -05:00
11. Install tools
2016-06-13 20:24:23 -04:00
2017-01-14 07:39:59 -05:00
1. View Categories
2016-06-15 20:11:12 -04:00
2017-01-14 07:39:59 -05:00
- start katoolin
2016-06-13 20:24:23 -04:00
2017-01-14 07:39:59 -05:00
sudo katoolin
2016-06-13 20:24:23 -04:00
2017-01-14 07:39:59 -05:00
- select `2) View Categories`
2016-06-13 20:24:23 -04:00
2017-01-14 07:39:59 -05:00
2. Select the categories/tools you want to install
2016-06-13 20:24:23 -04:00
2017-01-14 07:39:59 -05:00
- For more information on how to use Katoolin see [How to Auto Install All Kali Linux Tools Using “Katoolin” on Debian/Ubuntu][katoolin-howto].
2016-06-13 20:24:23 -04:00
2017-01-14 07:39:59 -05:00
- **Note:** The `all` option does not work for `Information Gathering` , `Web Apps` , `Forensic Tools` , `Reverse Engineering` and `Extra` .
2016-06-13 20:24:23 -04:00
2017-01-14 07:39:59 -05:00
12. Create a AppVMs based on the `kali` template
2016-06-13 20:24:23 -04:00
2017-01-14 07:39:59 -05:00
- (Optional) Attach necessary devices
2016-06-13 20:24:23 -04:00
2017-01-14 07:39:59 -05:00
## Installing Kali from a Debian template <a name="debian-upgrade"/>
2016-06-13 20:24:23 -04:00
2017-01-14 07:39:59 -05:00
This section will explain how to create your own [Kali] Linux VM as a VM
template. The basic idea is to personalize the template with the tools you need
and then spin up isolated AppVMs based on the template.
2016-06-13 20:24:23 -04:00
2017-01-14 07:39:59 -05:00
This has been tested on Qubes OS 3.2.
2016-06-13 20:24:23 -04:00
2017-01-14 07:39:59 -05:00
The steps can be summarised as:
2016-06-13 20:24:23 -04:00
2017-01-14 07:39:59 -05:00
1. Install Qubes' Debian 8.0 (Jessie) template
2. Upgrade the template to Debian 9.0 (Stretch)
3. Install kali through the ``kali-linux-full`` package
4. Use the template to build appVM so that you can maintain isolation between
e.g. pentesting jobs
2016-06-13 20:24:23 -04:00
2017-01-14 07:39:59 -05:00
Steps to build a Kali template
------------------------------
2016-06-13 20:24:23 -04:00
2017-01-14 07:39:59 -05:00
### Get the GPG key
2016-06-13 20:24:23 -04:00
2017-01-14 07:39:59 -05:00
1. You'll need to fetch the Kali GPG key from a dispVM as the template you'll
build won't have direct internet connectivity unless you enable it from the
firewall:
2016-06-13 20:24:23 -04:00
2017-01-14 07:39:59 -05:00
# in a dispVM
gpg --keyserver hkp://keys.gnupg.net --recv-key 7D8D0BF6
gpg --list-keys --with-fingerprint 7D8D0BF6
gpg --export --armor 7D8D0BF6 > kali.asc
2016-06-13 20:24:23 -04:00
2017-01-14 07:39:59 -05:00
2. **DO NOT TURN OFF** the dispVM
2016-06-13 20:24:23 -04:00
2017-01-14 07:39:59 -05:00
3. Make sure the key ID is the valid one listed on the [Kali website]. Ideally,
verify the fingerprint through other channels as recommended on that link.
Once you have the key, keep the dispVM on as you'll need to copy the key over
to the Kali template.
### Customize the template
1. Install [the debian-8 template] if not already installed
2. Clone the debian template and start a terminal in it:
# in dom0:
qvm-clone debian-8 debian-9
qvm-run -a debian-9 gnome-terminal
# in the debian-9 template terminal:
# substitute jessie for stretch in
sudo -s
sensible-editor /etc/apt/sources.list
sensible-editor /etc/apt/sources.list.d/qubes-r3.list
apt-get update & & apt-get dist-upgrade
# (hat tip: [the Debian wiki])
Restart the template when done and make sure you can open a terminal.
3. Prepare the kali template:
# in dom0:
qvm-shutdown debian-9
qvm-clone debian-9 kali-tpl
qvm-run -a kali-tpl gnome-terminal
3. Add the sources to install Kali linux to the `kali-tpl` template:
# in kali-tpl:
sudo -s
echo 'deb http://http.kali.org/kali kali-rolling main non-free contrib' >> /etc/apt/sources.list
4. Copy the Kali key from the dispVM into the template:
# in the dispVM:
qvm-copy-to-vm kali-tpl kali.asc
# in kali-tpl:
cat /home/user/QubesIncoming/dispXXX/kali-key.asc | sudo apt-key add -
2016-06-13 20:24:23 -04:00
2017-01-14 07:39:59 -05:00
The last command should return `OK` on a line by itself.
5. Update the system:
# in kali-tpl:
sudo -s
apt-get update & & apt-get dist-upgrade
6. Shut down the `kali-tpl` template:
# in dom0:
qvm-shutdown kali-tpl
### Install the Kali tools
At this point you should have a working template and you can install the tools you need.
1. [resize the template] if you plan on installing the full Kali distribution. For example to install `kali-linux-full` you must **grow** the size of the VM system from 10Gb to at least 20Gb.
1. Install Kali linux:
# in kali-tpl:
sudo apt-get install kali-linux-full
2. [optional] Customise the template's home directory (e.g. install your licensed copy of Burp Suite Professional)
### Use the template
The template is ready to be used. You can now spin up AppVMs based on the `kali-tpl` template.
Alternative Options to Kali
===========================
* PenTester Framework: [PTF] ([PTF Qubes OS guide])
* Black Arch with [BA Qubes OS guide])
* [KATOOLIN]
Notes
-----
Thanks to the people in [the discussion thread].
[qubes-blackarch]: /doc/pentesting/blackarch/
[qubes-ptf]: /doc/pentesting/ptf/
[qubes-pentesting]: /doc/pentesting/
[kali-vbox]: https://www.offensive-security.com/kali-linux-vmware-virtualbox-image-download/
[kali]: https://www.kali.org/
[kali website]: https://docs.kali.org/introduction/download-official-kali-linux-images.
[KATOOLIN]: http://www.tecmint.com/install-kali-linux-tools-using-katoolin-on-ubuntu-debian/
[the debian-8 template]: https://www.qubes-os.org/doc/templates/debian/#install
[PTF]: https://www.trustedsec.com/may-2015/new-tool-the-pentesters-framework-ptf-released/
[audio CDs]: https://www.reddit.com/r/Nirvana/comments/3hmra1/the_main_character_in_the_tv_show_mr_robot_has_a/
[resize the template]: https://www.qubes-os.org/doc/resize-disk-image/
[the Debian wiki]: https://wiki.debian.org/Qubes#Install_Debian_Templates
[the discussion thread]: https://github.com/QubesOS/qubes-issues/issues/1981
[PTF Qubes OS guide]: https://www.qubes-os.org/doc/pentesting/ptf/
[BA Qubes OS guide]: https://www.qubes-os.org/doc/pentesting/blackarch/
[katoolin]: https://github.com/LionSec/katoolin
[katoolin-howto]: http://www.tecmint.com/install-kali-linux-tools-using-katoolin-on-ubuntu-debian/