Bash für Pentests — recon, das du wiederholen kannst
Gute Tester tippen denselben Dreizeiler nicht dreimal. In diesem Guide baust du kleine, lesbare Skripte für Aufklärung in einem Netz, das dir gehört: Scope aus Datei, saubere Logs, kein Blindfeuer.
Jedes Skript bekommt einen Scope. Ohne Liste keine Pakete.
Grundregeln
set -euo pipefail— lieber hart sterben als still weitermachen.- Ziele stehen in
scope.txt, eine IP oder ein Hostname pro Zeile. - Ausgaben nach
out/$(date +%F)/, nie ins Repo mit Kundendaten. - Kein
eval, keine ungeprüften Variablen in SSH/SQL.
#!/usr/bin/env bash
set -euo pipefail
SCOPE="${1:-scope.txt}"
OUT="out/$(date +%F)"
mkdir -p "$OUT"
while read -r host; do
[[ -z "$host" || "$host" =~ ^# ]] && continue
echo "[*] $host"
nmap -Pn -sV --top-ports 100 -oA "$OUT/nmap-$host" "$host"
done < "$SCOPE"
Was sich wirklich lohnt zu automatisieren
- Scope laden und validieren (IP, CIDR, Hostname — Rest verwerfen).
- Portscan in Wellen: erst top ports, dann nachziehen, was offen war.
- HTTP-Fingerprinting nur auf gefundenen 80/443/8080, nicht auf alles.
- Zusammenfassung: eine
summary.mdmit Host → Ports → Titel.
Was sich nicht lohnt: ein 2000-Zeilen-Framework, das niemand außer dir anfasst.
Enumeration, die nicht nervt
probe_http() {
local host="$1" port="$2"
curl -ksI --max-time 8 "https://${host}:${port}/" \
| tr -d '\r' \
| awk 'BEGIN{print "## '"$host:$port"'"} /^HTTP|^Server:|^X-/' \
>> "$OUT/http.txt"
}
Kleine Funktionen, klare Namen, eine Datei pro Zweck. Morgen verstehst du sie noch.
Typische Fallen
nmapohne-oA: die Session ist weg, wenn das Terminal stirbt.cat file | grepstattgrep file.- Wordlists gegen Login-Formen ohne Auftrag und ohne Rate-Limit — das ist Lärm, kein Test.
- Skripte mit Root, die
rm -rf $OUT/ausführen, wennOUTleer ist. Immer"$OUT"quoten, immer vorher prüfen.
Mini-Übung
Nimm drei Labor-Hosts. Schreib ein Skript, das:
- den Scope einliest,
- nur 22/80/443 prüft,
- für jeden offenen HTTP-Port den Statuscode speichert,
- am Ende eine Tabelle auf stdout druckt.
Wenn das in unter 40 Zeilen läuft und du es in sechs Monaten noch liest, ist das der Standard.
Nächster Schritt
Packe die Skripte in ein privates Repo, eine README mit Scope-Format, und einen make recon. Das ist der Kern einer wiederholbaren Methodik — nicht ein einzelner One-Liner aus einem Forum.