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
---
2018-08-12 17:18:35 -04:00
# How to create a Kali Linux VM
## Warnings
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.
2017-05-11 04:48:59 -04:00
- Adding additional repositories or tools for installing software extends your trust to those tool providers.
2016-06-17 12:19:35 -04:00
2018-08-05 11:39:01 -04:00
- 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.
2018-08-12 15:47:50 -04:00
- Kali Linux distribution is a rolling distribution based constantly on Debian testing release, so it always will have newer software base than available in Qubes OS debian template. Keep in mind that it may result in problems (especially in regard to package dependency) not covered by this tutorial.
2016-06-17 12:19:35 -04:00
2018-08-12 15:28:51 -04:00
2018-08-12 17:18:35 -04:00
## Qubes 3.2
2018-08-12 15:28:51 -04:00
2018-08-12 17:18:35 -04:00
### How to Create a Kali Linux VM
2016-06-13 20:24:23 -04:00
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
2018-08-12 15:28:51 -04:00
1. Create a HVM and use the offical ISO to install the system or convert a [Virtual Image][kali-vbox]. Explained [here ](#hvm3_2 ).
2018-08-05 11:39:01 -04:00
2. Clone the Qubes OS latest Debian template image and turn it into a Kali Linux distribution:
2018-08-12 15:28:51 -04:00
- using [katoolin]. Explained [here ](#katoolin3_2 ).
- manually. Explained [here ](#templatevm-from-debian3_2 ).
2017-01-14 07:39:59 -05:00
2018-08-12 17:18:35 -04:00
### Kali Linux HVM <a name="hvm3_2"/>
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
2018-08-05 11:39:01 -04:00
[user@dom0 ~]$ qvm-start < hvm-name > --cdrom < vm-name > :/home/user/Downloads/< iso-name > .iso
2016-06-13 20:24:23 -04:00
2018-08-12 17:18:35 -04:00
### Debian based Kali Template with Katoolin <a name="katoolin3_2"/>
2017-01-14 07:39:59 -05:00
2018-08-05 11:39:01 -04:00
**Note:** The prompt on each line indicates where each command should be entered (`@dom0`, `@debian-<X>` or `@kali` ).
1. (Optional) Check for latest Debian stable template and install it (if not already done)
2016-06-13 20:24:23 -04:00
2018-08-05 11:39:01 -04:00
[user@dom0 ~]$ sudo qubes-dom0-update --action="search all" qubes-template-debian
[user@dom0 ~]$ sudo qubes-dom0-update < latest Debian template >
2016-06-13 20:24:23 -04:00
2018-08-05 12:50:32 -04:00
2. Start, update and close your latest Debian template
2016-06-13 20:24:23 -04:00
2018-08-05 11:39:01 -04:00
[user@dom0 ~]$ qvm-start debian-< X >
[user@dom0 ~]$ qvm-run -a debian-< X > gnome-terminal
[user@debian-< X > ~]$ sudo apt-get update
[user@debian-< X > ~]$ sudo apt-get upgrade
[user@dom0 ~]$ qvm-shutdown debian-< X >
2016-06-13 20:24:23 -04:00
2018-08-05 12:50:32 -04:00
3. Clone `debian-<X>` 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
2018-08-05 12:50:32 -04:00
[user@dom0 ~]$ qvm-clone debian-< X > kali
2018-08-05 11:39:01 -04:00
2018-08-12 15:28:51 -04:00
4. Check the name of currently used repository in `/etc/apt/sources.list` and current testing [Debian release][Debian-releases]. Update repository list accordingly
2016-06-13 20:24:23 -04:00
2018-08-05 11:39:01 -04:00
[user@kali ~]$ sudo sed -i 's/< current stable > /< current testing > /g' /etc/apt/sources.list
[user@kali ~]$ sudo sed -i 's/< current stable > /< current testing > /g' /etc/apt/sources.list.d/qubes-r< X > .list
2018-08-12 15:47:50 -04:00
e.g. in this example we update `stretch` stable repository to `buster` testing repository
2018-08-05 11:39:01 -04:00
[user@kali ~]$ sudo sed -i 's/stretch/buster/g' /etc/apt/sources.list
[user@kali ~]$ sudo sed -i 's/stretch/buster/g' /etc/apt/sources.list.d/qubes-r< X > .list
2016-06-13 20:24:23 -04:00
2018-08-05 11:39:01 -04:00
5. Upgrade `kali` template to latest Debian testing release
2016-06-13 20:24:23 -04:00
2018-08-05 11:39:01 -04:00
[user@kali ~]$ sudo apt-get update
[user@kali ~]$ sudo apt-get dist-upgrade
[user@kali ~]$ sudo apt-get autoremove
**Note:** During execution of a `dist-upgrade` command read carefully list of packages to be removed.
If it contains `qubes-*` packages, terminate operation and try to resolve `qubes-*` packages missing dependencies first.
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
2018-08-05 12:50:32 -04:00
[user@kali ~]$ sudo apt-get install git
[user@kali ~]$ git clone https://github.com/LionSec/katoolin.git
[user@kali ~]$ sudo cp katoolin/katoolin.py /usr/bin/katoolin
[user@kali ~]$ sudo chmod +x /usr/bin/katoolin
[user@kali ~]$ 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
2018-08-05 11:39:01 -04:00
[user@kali ~]$ 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
2018-08-05 11:39:01 -04:00
7. Clean up and update `kali` template
2016-06-13 20:24:23 -04:00
2018-08-05 11:39:01 -04:00
[user@kali ~]$ sudo apt-get dist-upgrade
[user@kali ~]$ sudo apt-get autoremove
2016-06-13 20:24:23 -04:00
2018-08-05 11:39:01 -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
2018-08-05 11:39:01 -04:00
[user@kali ~]$ 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
2018-08-05 11:39:01 -04:00
[user@dom0 ~]$ qvm-trim-template kali
9. Start image
2016-06-13 20:24:23 -04:00
2018-08-05 11:39:01 -04:00
[user@dom0 ~]$ qvm-start kali
2016-06-13 20:24:23 -04:00
2018-08-05 11:39:01 -04:00
10. Install tools
**Note** [Resize the template disk image][qubes-resize-disk-image] to at least 20GB if you plan on installing all packages from Kali distribution.
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
2018-08-05 11:39:01 -04:00
[user@kali ~]$ 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
2018-08-05 11:39:01 -04:00
11. 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
2018-08-12 17:18:35 -04:00
### Kali Linux TemplateVM from a Debian template <a name="templatevm-from-debian3_2"/>
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
2018-08-05 11:39:01 -04:00
on a current stable Debian TemplateVM. The basic idea is to personalize the
2017-06-05 13:06:11 -04:00
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
The steps can be summarised as:
2016-06-13 20:24:23 -04:00
2018-08-05 11:39:01 -04:00
1. Install Qubes stable Debian template
2. Upgrade the template to Debian testing release
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
2018-08-12 17:18:35 -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.
2016-06-13 20:24:23 -04:00
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
2018-08-05 11:39:01 -04:00
**Note:** The prompt on each line indicates where each command should be entered
(`@dom0`, `@kali-rolling` , `@xxxx-dvm` or `@debian-<X>` ).
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
2018-08-20 14:45:42 -04:00
[user@xxxx-dvm ~]$ gpg --keyserver hkp://keys.gnupg.net --recv-key 44C6513A8E4FB3D30875F758ED444FF07D8D0BF6
[user@xxxx-dvm ~]$ gpg --list-keys --with-fingerprint 44C6513A8E4FB3D30875F758ED444FF07D8D0BF6
[user@xxxx-dvm ~]$ gpg --export --armor 44C6513A8E4FB3D30875F758ED444FF07D8D0BF6 > 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.
2017-01-14 07:39:59 -05: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
2018-08-12 17:18:35 -04:00
#### Create a Kali Linux (rolling) template
2017-01-14 07:39:59 -05:00
2018-08-05 11:39:01 -04:00
These instructions will show you how to upgrade a Debian TemplateVM to Kali Linux.
2017-01-14 07:39:59 -05:00
2018-08-05 11:39:01 -04:00
1. (Optional) Check for latest Debian stable template and install it (if not already done)
2017-01-14 07:39:59 -05:00
2018-08-05 11:39:01 -04:00
[user@dom0 ~]$ sudo qubes-dom0-update --action="search all" qubes-template-debian
[user@dom0 ~]$ sudo qubes-dom0-update < latest Debian template >
2017-01-14 07:39:59 -05:00
2018-08-05 12:50:32 -04:00
2. Start, update and close your latest Debian template
2017-01-14 07:39:59 -05:00
2018-08-05 11:39:01 -04:00
[user@dom0 ~]$ qvm-start debian-< X >
[user@dom0 ~]$ qvm-run -a debian-< X > gnome-terminal
[user@debian-< X > ~]$ sudo apt-get update
[user@debian-< X > ~]$ sudo apt-get upgrade
[user@dom0 ~]$ qvm-shutdown debian-< X >
2017-01-14 07:39:59 -05:00
2018-08-05 11:39:01 -04:00
3. Clone `debian-X` template
[user@dom0 ~]$ qvm-clone debian-< X > kali-rolling
2018-08-12 15:28:51 -04:00
4. Check the name of currently used repository in `/etc/apt/sources.list` and current testing [Debian release][Debian-releases]. Update repository list accordingly
2017-01-14 07:39:59 -05:00
2018-08-05 11:39:01 -04:00
[user@kali-rolling ~]$ sudo sed -i 's/< current stable > /< current testing > /g' /etc/apt/sources.list
[user@kali-rolling ~]$ sudo sed -i 's/< current stable > /< current testing > /g' /etc/apt/sources.list.d/qubes-r< X > .list
2018-08-12 15:47:50 -04:00
e.g. in this example we update `stretch` stable repository to `buster` testing repository
2018-08-05 11:39:01 -04:00
[user@kali-rolling ~]$ sudo sed -i 's/stretch/buster/g' /etc/apt/sources.list
[user@kali-rolling ~]$ sudo sed -i 's/stretch/buster/g' /etc/apt/sources.list.d/qubes-r< X > .list
5. Upgrade `kali-rolling` template to latest Debian testing release
[user@kali-rolling ~]$ sudo apt-get update
[user@kali-rolling ~]$ sudo apt-get dist-upgrade
[user@kali-rolling ~]$ sudo apt-get autoremove
**Note:** During execution of a `dist-upgrade` command read carefully list of packages to be removed. If it contains `qubes-*` packages, terminate operation and try to resolve `qubes-*` packages missing dependencies first.
6. Copy the Kali GPG key from the DispVM to the new template:
2017-01-14 07:39:59 -05:00
2017-06-05 13:06:11 -04:00
[user@xxxx-dvm ~]$ qvm-copy-to-vm kali-rolling kali-key.asc
2018-08-05 12:50:32 -04:00
2017-06-05 13:06:11 -04:00
The DispVM can now be turned off.
2017-01-14 07:39:59 -05:00
2018-08-05 11:39:01 -04:00
7. Add the Kali GPG key to the list of keys trusted to authenticate packages:
2017-01-14 07:39:59 -05:00
2018-03-29 12:49:00 -04:00
[user@kali-rolling ~]$ cat /home/user/QubesIncoming/dispXXX/kali-key.asc | sudo apt-key add -
2017-01-14 07:39:59 -05:00
2018-08-05 11:39:01 -04:00
This command should return `OK` on a line by itself.
2017-01-14 07:39:59 -05:00
2018-08-05 11:39:01 -04:00
8. Attempt the upgrade process in the new template.
2016-06-13 20:24:23 -04: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
2018-08-05 11:39:01 -04:00
9. Shut down and trim the new template.
2017-01-14 07:39:59 -05:00
2017-06-05 13:06:11 -04:00
[user@dom0 ~]$ qvm-shutdown kali-rolling
[user@dom0 ~]$ qvm-trim-template kali-rolling
2017-01-14 07:39:59 -05:00
2018-08-05 11:39:01 -04:00
10. Ensure a terminal can be opened in the new template.
2017-01-14 07:39:59 -05:00
2017-06-05 13:06:11 -04:00
[user@dom0 ~]$ qvm-run -a kali-rolling gnome-terminal
2017-01-14 07:39:59 -05:00
2018-08-12 17:18:35 -04:00
#### 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.
2018-08-05 12:50:32 -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
2018-08-12 17:18:35 -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
2018-08-12 17:18:35 -04:00
## Qubes 4.0
2018-08-12 15:28:51 -04:00
2018-08-12 17:18:35 -04:00
### How to Create a Kali Linux VM
2018-08-12 15:28:51 -04: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.
Kali Linux is the most widely used penetration testing Linux distribution.
There are multiple ways to create a Kali Linux VM:
1. Create a HVM and use the offical ISO to install the system or convert a [Virtual Image][kali-vbox]. Explained [here ](#hvm4_0 ).
2. Clone the Qubes OS latest Debian template image and turn it into a Kali Linux distribution:
- using [katoolin]. Explained [here ](#katoolin4_0 ).
- manually. Explained [here ](#templatevm-from-debian4_0 ).
2018-08-12 17:18:35 -04:00
### Kali Linux HVM <a name="hvm4_0"/>
2018-08-12 15:28:51 -04:00
1. Download the Kali installation DVD
2. Create a new HVM
3. Start the HVM with attached CD/DVD
[user@dom0 ~]$ qvm-start < hvm-name > --cdrom < vm-name > :/home/user/Downloads/< iso-name > .iso
2018-08-12 17:18:35 -04:00
### Debian based Kali Template with Katoolin <a name="katoolin4_0"/>
2018-08-12 15:28:51 -04:00
**Note:** The prompt on each line indicates where each command should be entered (`@dom0`, `@debian-<X>` or `@kali` ).
1. (Optional) Check for latest Debian stable template and install it (if not already done)
[user@dom0 ~]$ sudo qubes-dom0-update --action="search all" qubes-template-debian
[user@dom0 ~]$ sudo qubes-dom0-update < latest Debian template >
2. Start, update and close your latest Debian template
[user@dom0 ~]$ qvm-start debian-< X >
[user@dom0 ~]$ qvm-run -a debian-< X > gnome-terminal
[user@debian-< X > ~]$ sudo apt-get update
[user@debian-< X > ~]$ sudo apt-get upgrade
[user@dom0 ~]$ qvm-shutdown debian-< X >
3. Clone `debian-<X>` template (two options)
1. Via Qubes VM Manager
![Clone Debian Template ](/attachment/wiki/Kali/clone-kali.png )
2. Via command line
[user@dom0 ~]$ qvm-clone debian-< X > kali
4. Check the name of currently used repository in `/etc/apt/sources.list` and current testing [Debian release][Debian-releases]. Update repository list accordingly.
[user@kali ~]$ sudo sed -i 's/< current stable > /< current testing > /g' /etc/apt/sources.list
[user@kali ~]$ sudo sed -i 's/< current stable > /< current testing > /g' /etc/apt/sources.list.d/qubes-r< X > .list
2018-08-12 15:47:50 -04:00
e.g. in this example we update `stretch` stable repository to `buster` testing repository
2018-08-12 15:28:51 -04:00
[user@kali ~]$ sudo sed -i 's/stretch/buster/g' /etc/apt/sources.list
[user@kali ~]$ sudo sed -i 's/stretch/buster/g' /etc/apt/sources.list.d/qubes-r< X > .list
5. Upgrade `kali` template to latest Debian testing release
[user@kali ~]$ sudo apt-get update
[user@kali ~]$ sudo apt-get dist-upgrade
[user@kali ~]$ sudo apt-get autoremove
**Note:** During execution of a `dist-upgrade` command read carefully list of packages to be removed.
If it contains `qubes-*` packages, terminate operation and try to resolve `qubes-*` packages missing dependencies first.
6. Install Katoolin and add Kali Linux repositories
1. Install Katoolin
[user@kali ~]$ sudo apt-get install git
[user@kali ~]$ git clone https://github.com/LionSec/katoolin.git
[user@kali ~]$ sudo cp katoolin/katoolin.py /usr/bin/katoolin
[user@kali ~]$ sudo chmod +x /usr/bin/katoolin
[user@kali ~]$ rm -rf katoolin
2. Add Kali Linux repositories
- start katoolin
[user@kali ~]$ sudo katoolin
- select 'Add Kali repositories & Update'
1) Add Kali repositories & Update
2) View Categories
3) Install classicmenu indicator
4) Install Kali menu
5) Help
kat > 1
![Add Kali repositories and Update menu ](/attachment/wiki/Kali/katoolin-add-update-repo-menu.png )
- select 'Add kali linux repositories'
1) Add kali linux repositories
2) Update
3) Remove all kali linux repositories
4) View the contents of sources.list file
What do you want to do ?> 1
![Add Kali repositories ](/attachment/wiki/Kali/katoolin-add-repos-menu.png )
- update Kali repositories
1) Add kali linux repositories
2) Update
3) Remove all kali linux repositories
4) View the contents of sources.list file
What do you want to do ?> 2
- quit katoolin by pressing `CRTL` + `c` keys
What do you want to do ?> ^CShutdown requested...Goodbye...
7. Clean up and update `kali` template
[user@kali ~]$ sudo apt-get dist-upgrade
[user@kali ~]$ sudo apt-get autoremove
8. Install tools
**Note** [Resize the template disk image][qubes-resize-disk-image] to at least 20GB if you plan on installing all packages from Kali distribution.
1. View Categories
- start katoolin
[user@kali ~]$ sudo katoolin
- select `2) View Categories`
2. Select the categories/tools you want to install
- For more information on how to use Katoolin see [How to Auto Install All Kali Linux Tools Using “Katoolin” on Debian/Ubuntu][katoolin-howto].
- **Note:** The `all` option does not work for `Information Gathering` , `Web Apps` , `Forensic Tools` , `Reverse Engineering` and `Extra` .
9. Create a AppVMs based on the `kali` template
- (Optional) Attach necessary devices
2018-08-12 17:18:35 -04:00
### Kali Linux TemplateVM from a Debian template <a name="templatevm-from-debian4_0"/>
2018-08-12 15:28:51 -04:00
This section will explain how to create your own [Kali] Linux TemplateVM based
on a current stable Debian TemplateVM. The basic idea is to personalize the
template with all the tools needed, and then spin up isolated AppVMs based on
the template.
The steps can be summarised as:
1. Install Qubes stable Debian template
2. Upgrade the template to Debian testing release
3. Install Kali Linux through the ``kali-linux-full`` package
4. Use the template to build AppVM so that you can maintain isolation between
e.g. pentesting jobs
2018-08-12 17:18:35 -04:00
#### Get Kali Linux GPG key
2018-08-12 15:28:51 -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.
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.
**Note:** The prompt on each line indicates where each command should be entered
(`@dom0`, `@kali-rolling` , `@xxxx-dvm` or `@debian-<X>` ).
1. Retrive the Kali Linux GPG key using a DispVM.
2018-08-20 14:45:42 -04:00
[user@xxxx-dvm ~]$ gpg --keyserver hkp://keys.gnupg.net --recv-key 44C6513A8E4FB3D30875F758ED444FF07D8D0BF6
[user@xxxx-dvm ~]$ gpg --list-keys --with-fingerprint 44C6513A8E4FB3D30875F758ED444FF07D8D0BF6
[user@xxxx-dvm ~]$ gpg --export --armor 44C6513A8E4FB3D30875F758ED444FF07D8D0BF6 > kali-key.asc
2018-08-12 15:28:51 -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.
3. Make sure the key is the authentic Kali key.
See the [Kali website] for further advice and instructions on verification.
2018-08-12 17:18:35 -04:00
#### Create a Kali Linux (rolling) template
2018-08-12 15:28:51 -04:00
These instructions will show you how to upgrade a Debian TemplateVM to Kali Linux.
1. (Optional) Check for latest Debian stable template and install it (if not already done)
[user@dom0 ~]$ sudo qubes-dom0-update --action="search all" qubes-template-debian
[user@dom0 ~]$ sudo qubes-dom0-update < latest Debian template >
2. Start, update and close your latest Debian template
[user@dom0 ~]$ qvm-start debian-< X >
[user@dom0 ~]$ qvm-run -a debian-< X > gnome-terminal
[user@debian-< X > ~]$ sudo apt-get update
[user@debian-< X > ~]$ sudo apt-get upgrade
[user@dom0 ~]$ qvm-shutdown debian-< X >
3. Clone `debian-X` template
[user@dom0 ~]$ qvm-clone debian-< X > kali-rolling
4. Check the name of currently used repository in `/etc/apt/sources.list` and current testing [Debian release][Debian-releases]. Update repository list accordingly
[user@kali-rolling ~]$ sudo sed -i 's/< current stable > /< current testing > /g' /etc/apt/sources.list
[user@kali-rolling ~]$ sudo sed -i 's/< current stable > /< current testing > /g' /etc/apt/sources.list.d/qubes-r< X > .list
2018-08-12 15:47:50 -04:00
e.g. in this example we update `stretch` stable repository to `buster` testing repository
2018-08-12 15:28:51 -04:00
[user@kali-rolling ~]$ sudo sed -i 's/stretch/buster/g' /etc/apt/sources.list
[user@kali-rolling ~]$ sudo sed -i 's/stretch/buster/g' /etc/apt/sources.list.d/qubes-r< X > .list
5. Upgrade `kali-rolling` template to latest Debian testing release
[user@kali-rolling ~]$ sudo apt-get update
[user@kali-rolling ~]$ sudo apt-get dist-upgrade
[user@kali-rolling ~]$ sudo apt-get autoremove
**Note:** During execution of a `dist-upgrade` command read carefully list of packages to be removed. If it contains `qubes-*` packages, terminate operation and try to resolve `qubes-*` packages missing dependencies first.
6. Copy the Kali GPG key from the DispVM to the new template:
[user@xxxx-dvm ~]$ qvm-copy kali-key.asc
The DispVM can now be turned off.
7. Add the Kali GPG key to the list of keys trusted to authenticate packages:
[user@kali-rolling ~]$ cat /home/user/QubesIncoming/dispXXX/kali-key.asc | sudo apt-key add -
This command should return `OK` on a line by itself.
8. Attempt the upgrade process in the new template.
[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
9. Ensure a terminal can be opened in the new template.
[user@dom0 ~]$ qvm-run -a kali-rolling gnome-terminal
2018-08-12 17:18:35 -04:00
#### Install the Kali tools
2018-08-12 15:28:51 -04:00
At this point you should have a working template and you can install the tools you need.
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.
2. Install Kali Linux tools:
[user@kali-rolling ~]$ sudo apt-get install kali-linux-full
3. (Optional) Customise the template's home directory (e.g. install your licensed copy of Burp Suite Professional)
2018-08-12 17:18:35 -04:00
#### Use the template
2018-08-12 15:28:51 -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
2018-08-12 17:18:35 -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]
2018-08-12 15:28:51 -04:00
2017-01-14 07:39:59 -05:00
2018-08-12 17:18:35 -04:00
## Notes
2017-01-14 07:39:59 -05:00
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/
2018-08-05 11:39:01 -04:00
[Debian-releases]: https://www.debian.org/releases/
2018-08-12 17:18:35 -04:00