Primary Resources

Monash students/staff can access our list of resources.

Access our workshop CTF scoreboard.

Missed a workshop? Recordings are on our YouTube channel!

Kali Linux Set-up


  • Download a hypervisor (virtual machine manager) either via the official website or via your preferred package manager.

From here, you can set-up you Kali Linux virtual machine (VM) either manually with Kali’s pre-built images, or automatically with Windows Subsystem for Linux or Vagrant.

VM Set-up

Option 1: Manually

  1. Download your Kali Linux installer:
  2. Follow Kali’s documentation for your hypervisor:

Option 2: Windows Subsystem for Linux

Please make sure to review the following configuration before proceeding.

According to Microsoft’s documentation regarding Windows Subsystem for Linux (WSL) set-up:

  1. Install Kali’s WSL distribution by running wsl --install -d kali-linux in an administrator command-line shell.
  2. Restart your machine.
  3. Open the Kali app from the Start menu, and follow Microsoft’s best practices for setting-up your Kali user account.
  4. (Optional) Install Windows Terminal for easier access to Kali, PowerShell, cmd and other WSL distros you might have installed (e.g. Ubuntu)

The default WSL installation provides a minimal Kali system without a GUI. In order to use the desktop as found in the VM or ISO version of Kali or launch GUI apps, you need to install Win-KeX.

  1. Install kali-win-kex package:
    sudo apt update
    sudo apt install kali-win-kex
  2. Launch Win-KeX from your Kali WSL app:

Refer to the Win-KeX documentation for more information.

Option 3: Vagrant

Please make sure to review the following configuration before proceeding.

  1. Download Vagrant either via their website or via your preferred package manager.
  2. Create a new file, named Vagrantfile in your current directory, with the following configuration:
    • Preferred hypervisor provider (virtualbox or vmware_desktop)
    • Allocated memory
    • Allocated threads
    • Optional: Launch with graphical interface (true or false)
    • Optional: VM name
    • Synced folder between host machine and guest machine
  3. Run vagrant plugin install vagrant-vbguest in your command-line in order to download the plugin that makes sure that VirtualBox Guest Additions is installed on the guest machine.
    • Note: This command will fail to complete if you run it on an Arch-based distribution of Linux. In this case, the Vagrantfile example below uses a password-based authentication instead of the key-based authentication in order to complete the VM set-up. For further information, refer to the Vagrant SSH configuration documentation.
  4. Run vagrant up in your command-line (at the same directory as your Vagrantfile) in order to start the VM.
    • You can follow Kali’s guide on setting-up a Vagrantfile.
    • At this stage you can wait for the VM to boot and interact with it graphically when it is ready.
  5. You can shut-down your VM either graphically, or by running vagrant halt at the same directory as your Vagrantfile.
  6. Run vagrant ssh in your command-line (at the same directory as your Vagrantfile), in order to start an command-line session. This is a great option if your host machine does not have lots of resources for a graphical session, or if you like working with the integrated terminal of your preferred IDE.
  • Example Vagrantfile:
    • VirtualBox hypervisor
    • 2 GiB of memory
    • 2 CPU threads
    • Vagrantfile’s directory on the host is synced to /home/vagrant/Documents/CTFs on the guest machine.
Vagrant.configure("2") do |config|
	if Vagrant.has_plugin?("vagrant-vbguest")
		config.ssh.insert_key = false
		config.ssh.forward_agent = true
		config.ssh.username = "vagrant"
		config.ssh.password = "vagrant"
	config.vm.provider "virtualbox" do |virtualbox|
		virtualbox.memory = 2048
		virtualbox.cpus = 2
		virtualbox.gui = true = "Kali"
	end = "kalilinux/rolling"
	# creating a synced folder from current directory on host to /home/vagrant/Documents/CTFs on guest
	config.vm.synced_folder ".", "/home/vagrant/Documents/CTFs", create: true

Alternative Kali Mirrors

Please make sure to review the following configuration before proceeding.

It might be the case that the Administrator of your currently-used network intentionally blocked the and websites from being accessed. This means that Kali’s apt package manager is rendered unusable by default. In this case, in order to download additional packages, you have to change to default mirror to a different one.

Notable Kali mirrors include:

Option 1: Manually

Run the following script from your Kali command-line session, with the alternative mirrors of your choosing:

sudo sed -i 's$$$' /etc/apt/sources.list
sudo apt update

Option 2: Automatically (Vagrant only)

Please make sure to review the following configuration before proceeding.

Add the following configuration to your Vagrantfile, with the alternative mirrors of your choosing:

config.vm.provision "shell", inline: <<-SCRIPT
	cp -f /etc/apt/sources.list{,.bkup}
	cp -f /etc/apt/sources.list /tmp
	sed -i 's$$$' /tmp/sources.list
	cat /tmp/sources.list > /etc/apt/sources.list
	sudo apt update

Additional Software


sudo apt install ghidra python3-pycryptodome ropper python3-ropgadget sherlock python3-pwntools steghide stegcracker binwalk


pip install pwndbg

apt Troubleshooting

  • If sudo apt upgrade fails, try running sudo apt update and then sudo apt full-upgrade.