kali-setup automates the setup and upkeep of a Kali pentest box. Instead of configuring every machine by hand, you declare it once (tool lists + scripts): clone, run one command, and get the exact same environment - clean, with every tool up to date.
Instead of remembering by hand what you installed, where and with which package manager, you declare it once in this repo. From there, any Kali becomes identical with one command - and stays that way over time.
clone โ setup.sh โ ready attacker box. Every week update-all and everything is fresh. Add a tool once, it shows up on every Kali.
A Kali used in the field degrades fast:
โ PATH polluted by pipx venvs โ wrong commands, broken imports โ impacket installed 3 times (apt + pip + pipx), duplicate scripts โ obsolete tools from old versions (crackmapexec, wfuzzโฆ) โ /opt binaries downloaded by hand months ago, never updated โ 3 different Kali boxes (VM, laptop, VPS) configured differently โ redoing everything from scratch on each reinstall
This repo solves all of these automatically and in a versioned way.
/opt/pentest-tools from declarative manifests. Inside update-all, or by hand.~/.local/bin before /usr/binfortra/impacket/opt/pentest-tools ยท installs tools from manifests ยท scaffolds local lists~/.zshrc (source-based auto-sync)One command. Updates everything. It even updates itself.
| # | target | what |
|---|---|---|
| 1 | kali-setup | git pull of the config repo itself โ multi-host auto-sync |
| 2 | tools-sync | /opt/pentest-tools from manifests (git + release, shared + local) |
| 3 | apt | system packages + full-upgrade ยท recovers kept-back ยท purges old kernels ยท reboot notice |
| 4 | pipx | Python tools (impacket, netexec, bloodyad, dploot, git-dumper) |
| 5 | gem | Ruby tools (evil-winrm) |
| 6 | npm | global Node.js tools (from local npm.list) |
| 7 | pip --user | Python libraries (from local pip.list) |
| 8 | /opt | manual clones in /opt/pentest-tools/ (not in the manifests) |
Declarative management of external tools: you declare what you want in a manifest, tools-sync.sh rebuilds it identically on every Kali. No fragile scans, no copying by hand.
| manifest | format | update |
|---|---|---|
tools/git.list | name | git_url | git clone โ then git pull |
tools/release.list | name | owner/repo | glob | latest GitHub release (only if the tag changes) |
tools/*.list in the repo โ commit + push. Propagates to all Kali boxes on the next update-all.~/.config/kali-setup/local.*.list. Stays on this machine, outside git.bin/tools-sync.sh # full sync (git + release) bin/tools-sync.sh --import # suggests found tools (moves nothing) bin/tools-sync.sh --dedup # scattered copies โ keep/backup/trash/delete (asks) bin/tools-sync.sh --prune # removes undeclared tools (opt-in, asks confirmation)
โโโโโโโโโโโโโโโ git push โโโโโโโโโโโโโโโโโโโโโ
โ KALI #1 โ โโโโโโโโโโโโโโโโโโถ โ github.com โ
โ (edit) โ โ SysK69/kali-setup โ
โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโ
โ
update-all โ git pull โ
โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโค
โผ โผ โผ
โโโโโโโโโโโ โโโโโโโโโโโ โโโโโโโโโโโ
โ KALI #2 โ โ KALI #3 โ ... โ KALI #n โ
โโโโโโโโโโโ โโโโโโโโโโโ โโโโโโโโโโโ
You edit update-all.zsh on one machine โ push โ every other Kali receives it on the next update-all. Zero manual copying.
--include=optional + --allow-scripts on npm โฅ11~/.local/bin โ ~/.npm-global/bin โ /usr/local/bin โ /usr/bin