Kali Linux (is) Everywhere!

One of the primary goals of Kali Linux is to put the tools you need as close to you as possible. Over the years this has resulted in a number of different ways to get Kali, but not everyone knows about all the options! In this post we are going to do an overview of different options you have for running Kali, and where you can go for more information for each option.

You should keep in mind as we review options what will be best for you, in your specific use case. What do you intend to use Kali for? Where will you be when you need access to Kali? One of the items that is unique to Kali is most instances are actually pretty short lived, and replaced often. For instance, in the penetration testing space it is considered best practice by many to wipe your install and start over with each new customer or assessment. On the other hand, there are instances of Kali that are around for a very long time; for instance, running scanning engines for enterprises.

You won’t find a singular “right” way to interact with Kali, you have to determine what works best for you. Which is why we provide so many options. Let’s look at an overview of all of the various ways to get Kali. Should anything seem interesting, the table contains hyperlinks directly to our documentation on a platform where available.

Platform Overview

Please note that this is the state of Kali Linux at the time of publishing. For a consistently updated table, please check here.

InstallationsVirtual MachinesCloudContainersUSBARM (Single Board Computer)Mobile
Standard Single-bootVirtualBoxAmazon AWSDockerLive boot – Linux / macOS / WindowsGateworks Newport / Gateworks VentanaGeneric NetHunter
macOS Single-Boot / Dual-bootImport VirtualBoxMicrosoft AzureLXC/LXDPersistencePinebook / Pinebook ProGeneric NetHunter Lite
Dual-booting LinuxVMwareDigital OceanPodmanEncrypted PersistenceRaspberry Pi 1 (Original) / 2 (1.1) / 3 / 4 / 400Generic NetHunter Rootless
Dual-booting WindowsImport VMwareLinodeProxmoxRaspberry Pi Zero / Zero W / Zero 2 W
Installing directly to USBHyper-VWSLUSB Armory MKIINetHunter Pro
Adding BTRFS snapshotsParallels
Over a network (PXE)ProxmoxFor more devices, see hereFor more devices, see here
QEMU/Libvirt
UTM
Vagrant

As we can see, there are a lot of options. This can be quite difficult to look at initially. However, if we keep in mind our needs we can easily figure out what image we want to download or even learn about a new image:

  • Are we going to be doing an on-site pentest and need to use a dedicated Kali instance?
  • Are we going to want a leave behind system to connect to later?
  • How long is the instance going to stay around?
  • Are we using it for personal use?

These are all questions that can help to pinpoint what type of Kali instance we will need to create. Though keep in mind these are just example questions and there may be more, or less, that need to be answered.


What should I use?

So we asked and answered what type of situation we will be using Kali under. Now what? Well, now it is time to take a look at what options are normally used for what purposes:

  • Installations: A very traditional way of using Kali, and very familiar as well. During installation there is quite a bit of customization that can occur, and post-installation even more so. This is useful for a wide number of circumstances, ranging from a daily use Linux system to a dedicated pentest machine. If you are looking for a personal computer, this would be the image to use.
  • Virtual Machines: Another familiar way to use Kali. Virtual machines provide a very similar experience to a bare-metal installation. Useful for short or long lived instances, virtual machines can utilize snapshots to revert back to an earlier point in time to have a system ready made for a pentest whenever. If you are looking for something to use for work occasionally, use a virtual machine. When in doubt, virtual machines are always the way to go.
  • Cloud: A fairly popular way of using Kali. The images are kept bare-bones so it is easy to only use what is needed. Useful for short or long lived instances, and especially useful for remote pentests. If you need to work remote, try out a cloud system.
  • Containers: There is a growing popularity for containers. Containers are not a complete replacement for virtual machines, however the ability to run a full traditional Kali desktop environment out of them is not something to discount. Especially useful for Apple Silicon users as virtual machines are still not quite as easy to use as on traditional architectures. If you need to quickly get a port scan setup and ran, go with a container.
  • WSL: A very useful feature of modern Windows systems. While there is not enough ways to acquire WSL to warrant a column on the table, do check it out under the virtual machines category. WSL in its current form operates on the back end as an integrated virtual machine but presents itself as a highly integrated solution allowing you to run Kali apps alongside your traditional Windows apps. We have a number of deep customization options such as Win-Kex to make this as easy as possible. WSL is useful for daily Windows users. If you are thinking of using a container or a virtual machine, but are on Windows, try WSL instead.
  • USB: Live boot is a more dated method of using Kali that is becoming less popular over time. You can choose between standard live boot, where all data is stored in ram and wiped when the machine is powered off, or a persistence mode, where data will be written to the USB drive. This is especially useful for repairing machines, investigating potential harmful programs installed to a machine, or keeping a personalized Kali instance around to be used on different computers. If you aren’t quite sure if you want to use Kali yet, a USB may be the way to go.
  • ARM (Single Board Computer): An important platform to Kali from the start, ARM Single Board Computer devices serve quite a lot of purposes. Able to be used as daily computers or a remote access system, ARM devices are quite versatile. Especially useful for “leave behind” systems. Go with an ARM device if you want something inexpensive but reliable.
  • Mobile (NetHunter): This is a super fun solution that allows you to run Kali from your Android mobile device. A modern phone is a great platform for executing any number of traditional attacks or unique items that only make sense from a mobile device such as pretending to be a keyboard or network device when plugged into a computer. Especially useful for a more low profile setting. If you aren’t able to carry around a laptop or don’t want to drop an ARM device, NetHunter will be there.

Pros and Cons

Each way to interact with Kali will have its own pros and cons. Going over all of them would be impossible, but we can lay out some of the most obvious.

Installations:

  • Pros: Familiar, very customizable, able to be dual-booted
  • Cons: Takes up a large amount of hard drive space

Virtual Machines:

  • Pros: Familiar, quick and easy to create, can utilize snapshots, variable hard drive size
  • Cons: Slower than a bare-metal install, difficult to get direct access to hardware

Cloud:

  • Pros: Easy to create and delete, able to use anywhere, collaboration is easy
  • Cons: Reliance on an external resources, potentially slower due to connection speeds, potential additional running costs

Containers:

  • Pros: Lightweight, very customizable, easy to create and delete, can run in the background
  • Cons: Restrictions involving software and hardware, can be unstable the larger the container gets

USB:

  • Pros: Easy to carry around, utilizes all system resources, fully customizable, small form factor, can be used to recover a system
  • Cons: Slower than a bare-metal install

ARM (Single Board Computer):

  • Pros: Lightweight, small form factor, low power consumption, easy to carry around, cheap
  • Cons: Generally less system resources, not all software is available for ARM

Mobile (NetHunter):

  • Pros: Is a phone, able to access a desktop environment, low profile, easy to carry around, useful preloaded attacks
  • Cons: Small display, for a full experience it requires a rooted Android device, may require external hardware such as keyboards or Wi-Fi cards

Closing thoughts

Before completely wrapping up it may be helpful to point out a few of the most popular ways of using Kali and the image that would work best, for those who may want advice or examples.

Daily driver – Use the installer image and single boot Kali. With the docs and our forums you will be able to use Kali daily just fine with no worries. Be sure to follow the barebones install method!

Professional pentester – Most likely you will be wanting to use the cloud images or a virtual machine. While installing bare-metal is a possibility, the frequency of having to wipe the system or re-install to protect client data may prove tiresome.

Hobbyist or student – A virtual machine is almost always going to be the way to go for these situations. ARM and Nethunter will also be fun to explore. Bare-metal installs are recommended against due to the potential of “bricking” installs from inexperience.

To restate it, you won’t find a singular “right” way to interact with Kali, you have to determine what works best for you. We hope to have provided enough information for you to determine what will work best for you and understand what drawbacks may come with that solution. If not, then you can always come ask in our Discord server!