Kali config script and Dotfiles explained

Updated on 2026-02-14

TLDR: Personal Kali Linux configuration (dotfiles, terminal/prompt config, browser policies/extensions and Burp/BApps settings).

Use at your own risk on a fresh Kali install pasting the following commands on the terminal:

git clone https://github.com/haxowl/kaliconfig.git
cd kaliconfig
chmod 777 install.sh
./install.sh

⣿⣿⣿⣿⣿⣿⣿⣿⣿⣟⡟⢿⡿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢟⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⠄⠐⠛⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠁⠄⢾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡉⡀⠄⠄⣀⠛⠛⠉⠁⠄⠄⠈⠉⠛⠛⣀⠤⠄⢀⢩⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡠⠄⠑⣿⣅⡀⠄⢐⢂⡰⡀⡀⣄⣼⣿⠊⠄⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⢁⢔⠄⠄⠛⣿⣶⣮⠛⢟⣤⣾⡿⠛⠄⡀⡢⡈⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡁⠎⣼⡇⠄⣶⣷⠉⠹⠃⠸⠏⠉⣶⣦⠄⢸⣧⢱⠈⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⠄⢆⢿⣿⣄⡈⠁⣀⡼⢡⡄⢕⣀⡈⢁⣠⣿⡛⡸⠄⣹⣿⣿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⠈⠢⣙⡛⠻⠟⠛⠃⢸⡇⠘⠟⠻⠛⢋⣉⠜⠁⠰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠁⠄⠄⠈⠉⠋⠛⠉⠶⡘⢁⠶⠙⠙⠙⠉⠁⢀⠄⠘⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣿⣿⡟⠄⠄⠄⠐⡽⡰⠄⡠⡄⠄⠁⠈⣀⢠⢀⣐⣄⠻⠢⠄⠄⠠⢻⣿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣿⣿⡏⠄⠄⠄⠄⠃⠗⡜⣿⣿⣽⡄⠰⣯⣿⣿⠢⠹⠔⠄⠄⠄⠄⢽⣿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣿⡯⢢⠂⠄⠄⠄⠄⠄⠘⢇⠉⣸⣼⣻⢇⢇⡸⠁⠄⠄⠄⠄⠄⠐⡄⣟⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣿⣧⠄⠄⠄⠄⠄⠄⠄⠄⠄⠑⢄⢻⡟⠠⢉⠁⠄⠄⠄⠄⠄⠄⠄⢸⣾⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣿⡧⠤⠁⠄⠄⠄⠄⠄⠄⠄⠄⠄⠊⠁⠁⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢻⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣿⣷⣶⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠐⣾⣾⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣿⣿⣗⣠⡆⢐⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠆⢰⡐⣺⣿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣯⡷⠠⢰⠁⡀⠄⠄⠄⠄⠄⠄⠄⠄⡀⠄⠄⠄⡄⠈⢷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣾⣀⣗⣶⠃⡐⠈⠂⠄⠄⠄⠄⠘⠁⢀⠈⣶⣧⡀⢷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣾⣿⣿⣾⣶⡅⠄⠢⡄⢠⡔⠄⢿⣤⣧⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣾⣶⣿⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿

This is my personal config, nothing fancy and far from perfect but it works for me and it might work for you too.

Tested on Kali 2025.4 running on VMWare Workstation 17.x

My main intention for this project is to have a ready-to-go kali VM for each new client.

Credits: thegoodhackertv ippsec pimpmykali blacklanternsecurity

About the files

README.md - usage notes and quick instructions. It instructs cloning the repo and running install.sh.

install.sh - bash script to perform the setup, full details below.

zshrc , p10k.zsh , kitty.conf , qterminal.ini , tmux.conf.local - shell prompt and shell config: full prompt setup, ZSH plugins, terminal config and tmux shortcuts.

policies.json , UserConfigCommunity.json - Firefox / BurpSuite policies: installs specific Firefox extensions and configures Firefox prefs, same for Burp.

install.sh dissection

  • A Kali Linux post-install automation script
  • Installs red-team toolkit
  • Customizes XFCE desktop
  • Configures Zsh + tmux
  • Sets up Burp, Metasploit, AD tools
  • Adds privilege escalation binaries
  • Tweaks system settings

#!/bin/bash

Tells the system to run the script using Bash.


if [ "$UID" -eq 0 ]; then
echo "Cannot run as root."
exit 1
if [ -n "$SUDO_USER" ]; then
echo "Do not use sudo"
exit 1

If current user is root, stop execution.
If script is launched with sudo, stop execution.
The script wants to run as a normal user, and only use sudo internally.


RPATH=`pwd`

Stores current working directory in variable RPATH.
Used later to copy config files from the script’s directory.


xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/presentation-mode -s true --create --type bool
xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/show-tray-icon -s true --create --type bool

Enables presentation mode.
Shows power manager tray icon.
Prevents sleep/auto-lock/screensaver.


sudo apt update -y
sudo DEBIAN_FRONTEND=noninteractive apt upgrade -y

Updates package lists.
Upgrades all installed packages.
Avoids interaction during installation.


sudo apt remove -y python3-httpx

Removes python3-httpx to avoid conflict prevention.


sudo DEBIAN_FRONTEND=noninteractive apt install -y python3 python3-pip feh scrot scrub xclip xsel fastfetch wmname acpi imagemagick python3-pip lsd bpython open-vm-tools-desktop open-vm-tools pipx git python3-argcomplete netexec bat bloodhound gowitness eaphammer seclists bettercap jq kitty rlwrap font-manager cyberchef gobuster nuclei neovim golang subfinder docker.io docker-compose bloodyad certipy-ad feroxbuster oscanner redis-tools sipvicious tnscmd10g libpcap-dev sshpass sliver nishang ssh-audit dnsx airgeddon wifiphisher autorecon coercer openfortivpn libpcap-dev

Installs:
Core tools: python3, pip, git, golang
Recon tools: nuclei, gobuster, subfinder, dnsx
AD tools: bloodhound, certipy-ad
Wireless tools: airgeddon, wifiphisher
Offensive tools: bettercap, sliver
Docker
Editors: neovim
Terminal tools: kitty, bat, lsd
And many more


rm -rf ~/.oh-my-zsh
yes | sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
rm -f ~/.zshrc
cp -v $RPATH/zshrc ~/.zshrc

Deletes existing Oh My Zsh.
Installs fresh version automatically.
Adds shell autocompletion & syntax highlighting.
Replaces user’s .zshrc config with custom one.


rm -rf ~/.tmux
git clone https://github.com/gpakosz/.tmux.git ~/.tmux
ln -s -f ~/.tmux/.tmux.conf ~/
cp -v $RPATH/tmux.conf.local ~/.tmux.conf.local

Installs popular tmux config.
Applies custom configuration.


git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
rm -f ~/.p10k.zsh
cp -v $RPATH/p10k.zsh ~/.p10k.zsh

Installs fancy Zsh theme.
Applies config.


sudo timedatectl set-timezone "Europe/Madrid"

Changes system timezone.


mkdir /tmp/fonts
wget https://github.com/ryanoasis/nerd-fonts/releases/download/v3.3.0/Hack.zip -O /tmp/fonts/Hack.zip
unzip /tmp/fonts/Hack.zip -d /tmp/fonts
sudo font-manager -i /tmp/fonts/*.ttf

Downloads Hack Nerd Font:
Install via font-manager


sudo msfdb init

Sets up Metasploit database.


sudo git clone https://github.com/Flangvik/SharpCollection /opt/sharpcollection
sudo git clone https://github.com/dirkjanm/krbrelayx /opt/krbrelayx
sudo git clone https://github.com/coffinxp/loxs.git /opt/loxs
sudo pip3 install -r /opt/loxs/requirements.txt --break-system-packages
sudo wget https://download.sysinternals.com/files/SysinternalsSuite.zip -O /opt/SysinternalsSuite.zip
sudo unzip /opt/SysinternalsSuite.zip -d /opt/SysinternalsSuite
sudo rm /opt/SysinternalsSuite.zip
sudo wget https://cdn.sanity.io/files/r09655ln/production/c3f3789f35a16bbf88fa6a656a2cdab2369c3b3c.zip -O /opt/pingcastle.zip
sudo unzip /opt/pingcastle.zip -d /opt/pingcastle
sudo rm /opt/pingcastle.zip

Clones tools into /opt/, including:
SharpCollection
krbrelayx
pingcastle
sysinternalssuite


sudo mkdir /opt/misc
sudo wget https://github.com/peass-ng/PEASS-ng/releases/latest/download/linpeas.sh -O /opt/misc/linpeas.sh
sudo wget https://github.com/peass-ng/PEASS-ng/releases/latest/download/winPEAS.bat -O /opt/misc/winPEAS.bat
sudo wget https://github.com/peass-ng/PEASS-ng/releases/latest/download/winPEASany.exe -O /opt/misc/winPEASany.exe
sudo wget https://github.com/peass-ng/PEASS-ng/releases/latest/download/winPEASx64.exe -O /opt/misc/winPEASx64.exe
sudo wget https://github.com/itm4n/PrivescCheck/releases/latest/download/PrivescCheck.ps1 -O /opt/misc/PrivescCheck.ps1
sudo wget https://github.com/DominicBreuker/pspy/releases/download/v1.2.1/pspy32 -O /opt/misc/pspy32
sudo wget https://github.com/DominicBreuker/pspy/releases/download/v1.2.1/pspy32 -O /opt/misc/pspy64
sudo wget https://raw.githubusercontent.com/gladiatx0r/Powerless/refs/heads/master/Powerless.bat -O /opt/misc/Powerless.bat
sudo wget https://raw.githubusercontent.com/The-Z-Labs/linux-exploit-suggester/refs/heads/master/linux-exploit-suggester.sh -O /opt/misc/linux-exploit-suggester.sh
sudo git clone https://github.com/carlospolop/cloudpeass /opt/cloudpeass
sudo wget https://github.com/ohpe/juicy-potato/releases/download/v0.1/JuicyPotato.exe -O /opt/misc/JuicyPotato.exe
sudo wget https://raw.githubusercontent.com/topotam/PetitPotam/refs/heads/main/PetitPotam.py -O /opt/misc/PetitPotam.py
sudo wget https://github.com/topotam/PetitPotam/raw/refs/heads/main/PetitPotam.exe -O /opt/misc/PetitPotam.exe
sudo wget https://raw.githubusercontent.com/maaaaz/nmaptocsv/refs/heads/master/nmaptocsv.py -O /opt/misc/nmaptocsv.py
12 collapsed lines
sudo wget https://github.com/BeichenDream/GodPotato/releases/download/V1.20/GodPotato-NET4.exe -O /opt/misc/GodPotato-NET4.exe
sudo wget https://github.com/BeichenDream/GodPotato/releases/download/V1.20/GodPotato-NET35.exe -O /opt/misc/GodPotato-NET35.exe
sudo wget https://github.com/BeichenDream/GodPotato/releases/download/V1.20/GodPotato-NET2.exe -O /opt/misc/GodPotato-NET2.exe
sudo wget https://github.com/jpillora/chisel/releases/download/v1.11.3/chisel_1.11.3_linux_amd64.gz -O /opt/misc/chisel_1.11.3_linux_amd64.gz
sudo wget https://github.com/jpillora/chisel/releases/download/v1.11.3/chisel_1.11.3_windows_amd64.gz -O /opt/misc/chisel_1.11.3_windows_amd64.gz
sudo gunzip /opt/misc/chisel_1.11.3_linux_amd64.gz
sudo gunzip /opt/misc/chisel_1.11.3_windows_amd64.gz
sudo chmod 777 /opt/misc/chisel_1.11.3_linux_amd64
sudo mv /opt/misc/chisel_1.11.3_windows_amd64 /opt/misc/chisel.exe
sudo wget https://raw.githubusercontent.com/jakehildreth/Locksmith/refs/heads/main/Invoke-Locksmith.ps1 -O /opt/misc/Invoke-Locksmith.ps1
sudo wget https://github.com/ropnop/kerbrute/releases/download/v1.0.3/kerbrute_linux_amd64 -O /opt/misc/kerbrute
sudo chmod 777 /opt/misc/kerbrute

Creates /opt/misc and downloads:
linpeas
winPEAS
PrivescCheck
pspy
PetitPotam
JuicyPotato
GodPotato
chisel
kerbrute
nmaptocsv
Locksmith
These are red-team / pentest utilities.


go install github.com/projectdiscovery/naabu

Installs port scanner.


sudo wget -O code-latest.deb 'https://code.visualstudio.com/sha/download?build=stable&os=linux-deb-x64'
sudo DEBIAN_FRONTEND=noninteractive apt install -y ./code-latest.deb
sudo rm code-latest.deb

Install VSCode.


nuclei
sudo nuclei

Initialize Nuclei Templates


ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ""

Creates SSH keypair with empty passphrase.


sudo mkdir /usr/local/lib/BurpSuite
sudo wget https://repo1.maven.org/maven2/org/jruby/jruby-complete/9.4.9.0/jruby-complete-9.4.9.0.jar -O /usr/local/lib/BurpSuite/jruby-complete.jar
sudo wget https://repo1.maven.org/maven2/org/python/jython-standalone/2.7.4/jython-standalone-2.7.4.jar -O /usr/local/lib/BurpSuite/jython-standalone.jar
sudo chmod 0644 /usr/local/lib/BurpSuite/jruby-complete.jar
sudo chmod 0644 /usr/local/lib/BurpSuite/jython-standalone.jar
/bin/bash -c "timeout 45 /usr/lib/jvm/java-21-openjdk-amd64/bin/java -Djava.awt.headless=true -jar /usr/share/burpsuite/burpsuite.jar < <(echo y) &"
sleep 30
curl http://localhost:8080/cert -o /tmp/cacert.der
sudo cp -v /tmp/cacert.der /usr/local/share/ca-certificates/BurpSuiteCA.der
sudo chmod 0644 /usr/local/share/ca-certificates/BurpSuiteCA.der
sudo rm /tmp/cacert.der
sudo cp -v $RPATH/UserConfigCommunity.json ~/.BurpSuite/UserConfigCommunity.json

Creates /usr/local/lib/BurpSuite
Downloads:
jruby
jython
Generates Burp CA certificate:
Launches Burp headless
Extracts cert
Installs into system CA store
Copies custom Burp config.


sudo cp -v $RPATH/policies.json /usr/share/firefox-esr/distribution/policies.json

Installs Burp certificate into Firefox.
Installs extensions.


mkdir ~/.config/kitty
cp -v $RPATH/kitty.conf ~/.config/kitty/kitty.conf
cp -v $RPATH/qterminal.ini ~/.config/qterminal.org/qterminal.ini

Terminal Config
kitty.conf
qterminal.ini


mkdir ~/tmuxlogs
echo "tmux pipe-pane -o 'cat >>~/tmuxlogs/tmux.#H.#S.#I.#P_%Y.%m.%d_%H.%M.%S.log'" >> ~/tmux_start_logging.sh
chmod 777 ~/tmux_start_logging.sh

Logs all tmux sessions automatically.


xfconf-query -c xfce4-panel -p /plugins/plugin-5/items -t string -a -s 'kali-burpsuite.desktop' --create
xfconf-query -c xfce4-panel -p /plugins/plugin-6/items -t string -a -s 'xfce-text-editor.desktop' --create
xfconf-query -c xfce4-panel -p /plugins/plugin-7/items -t string -a -s 'firefox-esr.desktop' --create
xfce4-panel --add=launcher
xfconf-query -c xfce4-panel -p /plugins/plugin-23/items -t string -a -s 'code.desktop' --create
xfce4-panel --add=launcher
xfconf-query -c xfce4-panel -p /plugins/plugin-24/items -t string -a -s 'kitty.desktop' --create
xfconf-query -c xfce4-panel -p /panels/panel-1/plugin-ids -a -t int -s 1 -t int -s 2 -t int -s 3 -t int -s 4 -t int -s 5 -t int -s 6 -t int -s 7 -t int -s 23 -t int -s 24 -t int -s 8 -t int -s 9 -t int -s 10 -t int -s 11 -t int -s 12 -t int -s 13 -t int -s 14 -t int -s 15 -t int -s 16 -t int -s 17 -t int -s 18 -t int -s 19 -t int -s 20 -t int -s 21 -t int -s 22
xfconf-query -c xfce4-panel -p /plugins/plugin-19/digital-layout -t int -s 1
xfconf-query -c xfce4-panel -p /plugins/plugin-1/favorites -a -n -t string -s 'kitty.desktop' -t string -s 'firefox-esr.desktop' -t string -s 'code.desktop' -t string -s 'kali-burpsuite.desktop' -t string -s 'xfce-text-editor.desktop' -t string -s 'xfce4-terminal-emulator.desktop' -t string -s 'root-terminal.desktop' -t string -s 'xfce4-file-manager.desktop' -t string -s 'exploit-database.desktop' -t string -s 'vulnhub.desktop'
xfconf-query -c thunar -p /last-show-hidden -t bool -s true --create
xfconf-query -c xfce4-panel -p /plugins/plugin-11/show-labels -t bool -s true --create
xfconf-query -c xfce4-panel -p /plugins/plugin-11/grouping -t bool -s false --create

Uses xfconf-query to:
Add launchers:
Burp
Firefox
VSCode
Kitty
Reorder panel
Set clock layout
Add favorites to menu
Show hidden files
Adjust window button behavior


sudo cp -v $RPATH/idorfuzz.txt /usr/share/seclists/idorfuzz.txt

Adds custom wordlist to SecLists.


sudo wget https://github.com/bol-van/zapret/releases/download/v72.9/zapret-v72.9.zip
sudo unzip zapret-v72.9.zip
sudo mv zapret-v72.9 /opt/zapret

Downloads zapret DPI Bypass.


sudo updatedb

Update locate Database


sudo runuser -u postgres -- psql -c 'ALTER DATABASE postgres REFRESH COLLATION VERSION; ALTER DATABASE template1 REFRESH COLLATION VERSION;'

Fix PostgreSQL Collation.
Fixes locale mismatch issues.


sudo rm -rf ~/github
sudo rm -rf $RPATH

Cleanup
Deletes:
~/github
Entire directory where script was run


echo -e "\n[+] Input new ROOT password!\n"
sudo passwd root
echo -e "\n[+] Input new KALI password!\n"
sudo passwd kali

Prompts user to:
Set root password
Set kali password


Share this post on: