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
---
2017-06-05 13:06:11 -04:00
**General reminder:**
2016-06-17 12:19:35 -04:00
- 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
2017-06-05 13:06:11 -04:00
[here ](#templatevm-from-debian ).
2017-01-14 07:39:59 -05:00
2017-06-05 13:06:11 -04:00
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-06-05 13:06:11 -04:00
Debian based Kali Template with Katoolin < a name = "katoolin" / >
----------------------------------------
2017-01-14 07:39:59 -05:00
Katoolin is a script (written in Python) which helps you to install Kali tools.
2016-06-13 20:24:23 -04:00
2017-06-05 13:06:11 -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-06-05 13:06:11 -04:00
5. 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-06-05 13:06:11 -04:00
6. 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
2017-06-05 13:06:11 -04:00
7. 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
2017-06-05 13:06:11 -04:00
8. Start image
2016-06-13 20:24:23 -04:00
2017-06-05 13:06:11 -04:00
9. 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-06-05 13:06:11 -04:00
10. 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-06-05 13:06:11 -04:00
Kali Linux TemplateVM from a Debian template < a name = "debian-upgrade" / > < a name = "templatevm-from-debian" / >
--------------------------------------------
2016-06-13 20:24:23 -04:00
2017-06-05 13:06:11 -04:00
This section will explain how to create your own [Kali] Linux TemplateVM based
on a Debian 9.0 (Stretch) TemplateVM. The basic idea is to personalize the
template with all the tools needed, 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)
2017-06-05 13:06:11 -04:00
3. Install Kali Linux through the ``kali-linux-full`` package
4. Use the template to build AppVM so that you can maintain isolation between
2017-01-14 07:39:59 -05:00
e.g. pentesting jobs
2016-06-13 20:24:23 -04:00
2017-06-05 13:06:11 -04:00
### Get Kali Linux GPG key ###
2016-06-13 20:24:23 -04:00
2017-10-27 22:21:26 -04:00
**CAUTION:** Before proceeding, please carefully read [On Digital Signatures and Key Verification][qubes-verifying-signatures].
This website cannot guarantee that any PGP key you download from the Internet is authentic.
Always obtain a trusted key fingerprint via other channels, and always check any key you download against your trusted copy of the fingerprint.
2017-06-05 13:06:11 -04:00
This step is required since by (security) default a TemplateVM do not have a
direct Internet connectivity. Users understanding the risks of enabling such
access can change this configuration in firewall settings for the TemplateVM.
2016-06-13 20:24:23 -04:00
2017-06-05 13:06:11 -04:00
1. Retrive the Kali Linux GPG key using a DispVM.
2016-06-13 20:24:23 -04:00
2017-06-05 13:06:11 -04:00
[user@xxxx-dvm ~]$ gpg --keyserver hkp://keys.gnupg.net --recv-key 7D8D0BF6
[user@xxxx-dvm ~]$ gpg --list-keys --with-fingerprint 7D8D0BF6
[user@xxxx-dvm ~]$ gpg --export --armor 7D8D0BF6 > kali-key.asc
2016-06-13 20:24:23 -04:00
2017-06-05 13:06:11 -04:00
2. **DO NOT TURN OFF** the DispVM, the `kali-key.asc` file will be copied to
the Kali Linux template in a further step.
2016-06-13 20:24:23 -04:00
2017-10-27 22:21:26 -04:00
3. Make sure the key is the authentic Kali key.
See the [Kali website] for further advice and instructions on verification.
2017-01-14 07:39:59 -05:00
2017-06-05 13:06:11 -04:00
### Create a Kali Linux (rolling) template ###
2017-01-14 07:39:59 -05:00
2017-06-05 13:06:11 -04:00
These instructions will show you how to upgrade a Debian 9 TemplateVM to Kali Linux.
2017-01-14 07:39:59 -05:00
2017-06-05 13:06:11 -04:00
**Note:** The prompt on each line indicates where each command should be entered
(`@dom0`, `@kali-rolling` or `@xxxx-dvm` ).
2017-01-14 07:39:59 -05:00
2017-06-05 13:06:11 -04:00
1. Ensure the base template is not running.
2017-01-14 07:39:59 -05:00
2017-06-05 13:06:11 -04:00
[user@dom0 ~]$ qvm-shutdown debian-9
2017-01-14 07:39:59 -05:00
2017-06-05 13:06:11 -04:00
2. Clone the base template and start a terminal in the new template.
2017-01-14 07:39:59 -05:00
2017-06-05 13:06:11 -04:00
[user@dom0 ~]$ qvm-clone debian-9 kali-rolling
[user@dom0 ~]$ qvm-run -a kali-rolling gnome-terminal
2017-01-14 07:39:59 -05:00
2017-06-05 13:06:11 -04:00
3. Copy the Kali GPG key from the DispVM to the new template:
2016-06-13 20:24:23 -04:00
2017-06-05 13:06:11 -04:00
[user@xxxx-dvm ~]$ qvm-copy-to-vm kali-rolling kali-key.asc
The DispVM can now be turned off.
2017-01-14 07:39:59 -05:00
2017-06-05 13:06:11 -04:00
4. Add the Kali GPG key to the list of keys trusted to authenticate packages:
2017-01-14 07:39:59 -05:00
2017-06-05 13:06:11 -04:00
[user@kali-rolling ~]$ /home/user/QubesIncoming/dispXXX/kali-key.asc | sudo apt-key add -
2017-01-14 07:39:59 -05:00
2017-06-05 13:06:11 -04:00
This command should return `OK` on a line by itself.
2017-01-14 07:39:59 -05:00
2017-06-05 13:06:11 -04:00
5. Attempt the upgrade process in the new template.
2017-01-14 07:39:59 -05:00
2017-06-05 13:06:11 -04:00
[user@kali-rolling ~]$ sudo cat < < EOF > /etc/apt/sources.list.d/kali.list
# Kali Linux repository
deb http://http.kali.org/kali kali-rolling main non-free contrib
EOF
[user@kali-rolling ~]$ sudo apt-get update
[user@kali-rolling ~]$ sudo apt-get dist-upgrade
[user@kali-rolling ~]$ sudo apt-get autoremove
6. Shut down and trim the new template.
[user@dom0 ~]$ qvm-shutdown kali-rolling
[user@dom0 ~]$ qvm-trim-template kali-rolling
7. Ensure a terminal can be opened in the new template.
[user@dom0 ~]$ qvm-run -a kali-rolling gnome-terminal
### Install the Kali tools ###
2017-01-14 07:39:59 -05:00
At this point you should have a working template and you can install the tools you need.
2017-06-05 13:06:11 -04:00
1. [resize the template disk image][qubes-resize-disk-image] 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.
2017-01-14 07:39:59 -05:00
2017-06-05 13:06:11 -04:00
2. Install Kali Linux tools:
2017-01-14 07:39:59 -05:00
2017-06-05 13:06:11 -04:00
[user@kali-rolling ~]$ sudo apt-get install kali-linux-full
2017-01-14 07:39:59 -05:00
2017-06-05 13:06:11 -04:00
3. (Optional) Customise the template's home directory (e.g. install your licensed copy of Burp Suite Professional)
2017-01-14 07:39:59 -05:00
2017-06-05 13:06:11 -04:00
### Use the template ###
2017-01-14 07:39:59 -05:00
2017-06-05 13:06:11 -04:00
The template is ready to be used. You can now spin up AppVMs based on the `kali-rolling` template.
2017-01-14 07:39:59 -05:00
2017-06-05 13:06:11 -04:00
Alternative Options to Kali Linux
---------------------------------
2017-01-14 07:39:59 -05:00
2017-06-05 13:06:11 -04:00
* [PenTester Framework][PTF], with [PTF Qubes OS guide][qubes-ptf]
* BlackArch Linux, with [BA Qubes OS guide][qubes-blackarch]
* [KATOOLIN][katoolin-howto]
* more on the [Penetration Testing page][qubes-pentesting]
2017-01-14 07:39:59 -05:00
Notes
-----
2017-06-05 13:06:11 -04:00
Thanks to the people in [the discussion thread ](https://github.com/QubesOS/qubes-issues/issues/1981 ).
2017-01-14 07:39:59 -05:00
2017-10-27 22:21:26 -04:00
[qubes-verifying-signatures]: /security/verifying-signatures/
2017-06-05 13:06:11 -04:00
[qubes-pentesting]: /doc/pentesting/
2017-01-14 07:39:59 -05:00
[qubes-blackarch]: /doc/pentesting/blackarch/
[qubes-ptf]: /doc/pentesting/ptf/
2017-06-05 13:06:11 -04:00
[qubes-template-debian-install]: /doc/templates/debian/#install
[qubes-resize-disk-image]: /doc/resize-disk-image/
2017-01-14 07:39:59 -05:00
[kali]: https://www.kali.org/
2017-06-05 13:06:11 -04:00
[kali-vbox]: https://www.offensive-security.com/kali-linux-vmware-virtualbox-image-download/
2017-10-27 22:21:26 -04:00
[kali website]: https://docs.kali.org/introduction/download-official-kali-linux-images
2017-06-05 13:06:11 -04:00
2017-01-14 07:39:59 -05:00
[PTF]: https://www.trustedsec.com/may-2015/new-tool-the-pentesters-framework-ptf-released/
2017-06-05 13:06:11 -04:00
2017-01-14 07:39:59 -05:00
[katoolin]: https://github.com/LionSec/katoolin
[katoolin-howto]: http://www.tecmint.com/install-kali-linux-tools-using-katoolin-on-ubuntu-debian/