Version: 2.0
Platform: Raspberry Pi Zero 2 W
OS: Raspberry Pi OS Lite 64-bit (Bullseye+)
Python: 3.11+
AUSSCHLIESSLICH FÜR AUTORISIERTE NUTZUNG
Dieses Tool ist ausschließlich konzipiert für:
- ✅ Autorisierte Penetration-Tests mit schriftlicher Genehmigung
- ✅ Blue-Team-Training in kontrollierten Lab-Umgebungen
- ✅ Sicherheitsforschung mit expliziter Erlaubnis
- ✅ Testing eigener Systeme und Netzwerke
- ✅ Netzwerk-Forensik-Übungen in isolierten Umgebungen
NICHT GESTATTET:
- ❌ Unautoriserter Zugriff auf fremde Systeme
- ❌ Nutzung ohne explizite schriftliche Genehmigung
- ❌ Einsatz in produktiven Umgebungen ohne Autorisierung
- ❌ Jegliche illegale Aktivitäten
Durch die Installation und Nutzung bestätigen Sie die Einhaltung aller geltenden Gesetze und Regulations.
Modernisiertes Pentest-Lab basierend auf dem ursprünglichen HackPi, vollständig überarbeitet für:
- Blue-Team-Detektion-Training: Simulierte Angriffe erkennen
- Netzwerk-Forensik: Traffic-Analyse und Incident Response
- Security-Härtung: Eigene Systeme gegen MITM-Attacken testen
Die Phase-5-Komponenten sind ausschließlich für autorisierte, isolierte Lab-Umgebungen gedacht.
# Setup (erstellt venv, installiert Abhängigkeiten)
bash phase5/setup.sh
# Demo starten
python phase5/phase5_main.py demoWeitere Details: phase5/README.md
| Komponente | Original | Modernisiert |
|---|---|---|
| Kernel | Patching erforderlich | Native USB Gadget Support |
| Init-System | rc.local Scripts | Systemd mit Dependencies |
| DHCP-Server | isc-dhcp-server | dnsmasq (aktiv maintained) |
| Programmiersprache | Node.js + Bash | Python 3.11+ |
| OS-Detection | Kernel-Patch für USB-Tracing | Network-Fingerprinting (scapy) |
| Security | Minimal | Systemd-Hardening + Audit-Logging |
| Logging | Verstreut | Strukturiert + Zentralisiert |
| Credential Capture | Veraltet | Responder (neueste Version) |
| Telemetrie | Keine | FastAPI WebSocket-Server |
| Forensik | Manuell | Automatischer Export-Tool |
- Raspberry Pi Zero 2 W (Quad-Core, 512MB RAM)
- MicroSD-Karte (min. 8GB, empfohlen 16GB+)
- USB OTG-Kabel
- Raspberry Pi Zero W (langsamer, aber funktional)
Raspberry Pi OS Lite (64-bit) auf SD-Karte flashen:
# Mit Raspberry Pi Imager oder:
wget https://downloads.raspberrypi.org/raspios_lite_arm64/images/...
unzip ...
sudo dd if=raspios-lite.img of=/dev/sdX bs=4M status=progressBoot und SSH aktivieren:
# SD-Karte mounten
touch /boot/sshsudo apt-get update
sudo apt-get install -y git
git clone https://github.com/YOUR-REPO/pentest-lab
cd pentest-labsudo python3 install.pyDer Installer wird:
- ✅ Legal Consent einholen
- ✅ Backups existierender Configs erstellen
- ✅ Dependencies installieren (Python 3.11+, dnsmasq, etc.)
- ✅ Systemd-Services einrichten
- ✅ USB Gadget konfigurieren
- ✅ Firewall-Regeln setzen
sudo reboot# Services prüfen
systemctl status pentest-gadget
systemctl status pentest-network
systemctl status dnsmasq
# Logs prüfen
journalctl -u pentest-gadget -f
# USB-Gadget-Status
ls /sys/kernel/config/usb_gadget/pentest_gadget/
# Bridge-Status
brctl show br0
ip addr show br0┌─────────────────────────────────────────────┐
│ Target System (Windows/Mac/Linux) │
│ │
│ ┌───────────────────────────────────────┐ │
│ │ USB Gadget Interface (RNDIS/ECM) │ │
│ └───────────────┬───────────────────────┘ │
└──────────────────┼─────────────────────────┘
│ USB OTG
┌──────────────────┴─────────────────────────┐
│ Raspberry Pi Zero 2 W │
│ │
│ ┌──────────────────────────────────────┐ │
│ │ USB Gadget (libcomposite) │ │
│ │ • RNDIS (Windows) │ │
│ │ • ECM (Linux/Mac) │ │
│ │ • Serial Console │ │
│ └──────────┬───────────────────────────┘ │
│ │ │
│ ┌──────────┴───────────────────────────┐ │
│ │ Bridge Interface (br0) │ │
│ │ IP: 1.0.0.1/1 │ │
│ └──────────┬───────────────────────────┘ │
│ │ │
│ ┌──────────┴───────────────────────────┐ │
│ │ Network Services │ │
│ │ • dnsmasq (DHCP + DNS) │ │
│ │ • iptables (NAT + Redirect) │ │
│ └──────────┬───────────────────────────┘ │
│ │ │
│ ┌──────────┴───────────────────────────┐ │
│ │ Application Services │ │
│ │ • Responder (Credential Capture) │ │
│ │ • mitmproxy (Traffic Analysis) │ │
│ │ • WebSocket Server (Telemetry) │ │
│ │ • tcpdump (Packet Capture) │ │
│ └──────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────┐ │
│ │ Logging & Forensics │ │
│ │ • journald (System Logs) │ │
│ │ • Structured JSON Logs │ │
│ │ • PCAP Files │ │
│ └──────────────────────────────────────┘ │
└─────────────────────────────────────────────┘
/opt/pentest-lab/
├── config/
│ ├── gadget.conf # USB Gadget Konfiguration
│ ├── network.conf # Netzwerk-Parameter
│ └── services.conf # Service-Einstellungen
│
├── services/
│ ├── gadget_setup/
│ │ └── (Reserved)
│ ├── network_bridge/
│ │ └── (Reserved)
│ ├── credential_capture/
│ │ └── Responder/ # Git clone von lgandx/Responder
│ ├── traffic_analysis/
│ │ └── mitm_scripts/ # mitmproxy Scripts
│ └── telemetry/
│ └── websocket_server.py # FastAPI WebSocket Server
│
├── scripts/
│ ├── install.py # Installer
│ ├── gadget_setup.sh # USB Gadget Setup
│ ├── gadget_teardown.sh # USB Gadget Cleanup
│ ├── network_setup.sh # Bridge-Konfiguration
│ ├── os_detect.py # OS Fingerprinting
│ └── forensic_export.py # Forensik-Daten-Export
│
├── logs/
│ ├── access/ # Access Logs
│ ├── telemetry/ # Telemetrie-Daten
│ ├── forensics/ # PCAP Files
│ └── *.log # Diverse Log-Files
│
├── venv/ # Python Virtual Environment
│ └── ...
│
└── README.md # Diese Datei
-
Pi Zero mit Target verbinden
- USB OTG-Port des Pi Zero mit USB-Port des Target-Systems verbinden
- Pi Zero bootet und initialisiert USB Gadget
-
OS-Detection läuft automatisch
- Erste 30 Sekunden: Network Traffic wird analysiert
- OS wird erkannt via DHCP/TCP/mDNS Fingerprinting
- Ergebnis:
/opt/pentest-lab/logs/detected_os.txt
-
Services starten automatisch
- DHCP-Server (dnsmasq) vergibt IP an Target
- Responder lauscht auf LLMNR/NBT-NS/mDNS
- Traffic kann mit tcpdump captured werden
# Gadget neu initialisieren
sudo systemctl restart pentest-gadget
# Network-Bridge neu starten
sudo systemctl restart pentest-network
# Telemetrie-Server starten
sudo systemctl start pentest-telemetry
# Responder manuell starten
cd /opt/pentest-lab/services/credential_capture/Responder
sudo python3 Responder.py -I br0 -wFsudo python3 /opt/pentest-lab/scripts/os_detect.py \
--interface br0 \
--timeout 30# Export aller Logs der letzten 24h
sudo python3 /opt/pentest-lab/scripts/forensic_export.py \
--since-hours 24
# Nur Telemetrie-Logs
sudo python3 /opt/pentest-lab/scripts/forensic_export.py \
--log-type telemetry \
--since-hours 12
# Ohne PCAPs (nur Logs)
sudo python3 /opt/pentest-lab/scripts/forensic_export.py \
--no-pcapsExport-Archive landen in: ~/forensic_exports/
Ziel: Blue-Team lernt LLMNR-Poisoning zu erkennen
Setup:
- Pi Zero mit Corporate-Laptop verbinden (in Lab-Umgebung!)
- Responder startet automatisch
- Warten auf LLMNR-Queries
Blue-Team-Aufgaben:
- Netzwerk-Traffic mit Wireshark analysieren
- LLMNR-Responses von unbekanntem Host identifizieren
- SIEM-Alerting-Rules schreiben
- Incident Response durchführen
Forensik:
# PCAP exportieren
sudo tcpdump -i br0 -w /opt/pentest-lab/logs/forensics/llmnr_capture.pcap
# Credentials prüfen (Responder Logs)
cat /opt/pentest-lab/services/credential_capture/Responder/logs/*.txt
# Export für Analyse
sudo python3 /opt/pentest-lab/scripts/forensic_export.pyZiel: Unerwartete USB-Netzwerk-Adapter erkennen
Setup:
- Pi Zero während Boot-Phase einstecken
- OS erkennt automatisch Ethernet-Adapter
Blue-Team-Aufgaben:
- USB-Events in Windows Event Log finden (Device Installation)
- Network-Adapter-Changes detektieren
- Endpoint-Detection-Rules testen (z.B. für "verdächtige" Vendor-IDs)
- Hardware-Inventory-Anomalien identifizieren
Ziel: MITM-Attacken im Network-Traffic identifizieren
Setup:
- mitmproxy starten für HTTP-Traffic-Interception
- Target-System leitet Traffic über Pi Zero
Blue-Team-Aufgaben:
- TLS-Certificate-Anomalien erkennen
- Unerwartete DNS-Responses identifizieren
- Traffic-Patterns analysieren
- IDS/IPS-Signaturen entwickeln
Symptom: Target-System erkennt keine Ethernet-Adapter
Checks:
# Gadget-Status prüfen
sudo systemctl status pentest-gadget
# ConfigFS prüfen
ls /sys/kernel/config/usb_gadget/pentest_gadget/
# UDC-Binding prüfen
cat /sys/kernel/config/usb_gadget/pentest_gadget/UDC
# Kernel-Module prüfen
lsmod | grep dwc2
lsmod | grep libcomposite
# Logs prüfen
journalctl -u pentest-gadget -n 50Lösungen:
# Module neu laden
sudo modprobe -r g_ether
sudo modprobe dwc2
sudo modprobe libcomposite
# Gadget neu initialisieren
sudo systemctl restart pentest-gadgetSymptom: Target erhält keine IP-Adresse
Checks:
# dnsmasq-Status
sudo systemctl status dnsmasq
# dnsmasq-Logs
journalctl -u dnsmasq -f
# DHCP-Leases prüfen
cat /var/lib/misc/dnsmasq.leases
# Bridge-Status
brctl show br0
ip addr show br0Lösungen:
# dnsmasq neu starten
sudo systemctl restart dnsmasq
# Bridge-Interface neu aktivieren
sudo systemctl restart pentest-networkSymptom: Responder fängt keine Credentials
Checks:
# Responder läuft?
ps aux | grep Responder
# Responder-Logs
tail -f /opt/pentest-lab/services/credential_capture/Responder/logs/*.txt
# Network-Traffic vorhanden?
sudo tcpdump -i br0 -nLösungen:
# Responder manuell starten (Debug)
cd /opt/pentest-lab/services/credential_capture/Responder
sudo python3 Responder.py -I br0 -wF -v
# Firewall-Regeln prüfen
sudo iptables -L -n -vSymptom: Langsamer Network-Traffic, hohe CPU-Last
Checks:
# CPU-Auslastung
top
htop
# Memory-Usage
free -h
# Temperatur (wichtig für Pi Zero!)
vcgencmd measure_tempOptimierungen:
- CPU-Governor auf "performance" setzen (nur während Tests!)
- Nicht benötigte Services stoppen
- Log-Level reduzieren
- PCAP-Captures nur wenn benötigt
Alle Services laufen mit Hardening-Optionen:
NoNewPrivileges=yesPrivateTmp=yesProtectSystem=strictProtectHome=yes- Dedizierter Service-User (nicht root)
- Bridge-Interface ist isoliert
- Keine Forwarding zu produktiven Netzwerken
- Firewall-Regeln limitieren Traffic
Alle Aktionen werden geloggt:
- systemd journal für Service-Events
- Strukturierte JSON-Logs für App-Events
- PCAP-Captures für Network-Forensik
- SHA256-Hashes für File-Integrity
- Responder-captured Credentials NIEMALS in produktiven Systemen verwenden!
- Alle Logs mit sensitiven Daten sicher löschen nach Training
- Forensik-Exports verschlüsseln für Transfer
Eigene Traffic-Analysis-Scripts hinzufügen:
# Script erstellen
nano /opt/pentest-lab/services/traffic_analysis/mitm_scripts/my_script.py
# mitmproxy mit Script starten
mitmproxy -s my_script.py -p 8080 --mode transparentEigene Clients für Telemetrie-Empfang:
import websockets
import asyncio
async def connect():
uri = "ws://1.0.0.1:9090/ws?token=YOUR_TOKEN"
async with websockets.connect(uri) as ws:
async for message in ws:
print(f"Received: {message}")
asyncio.run(connect())Backdoor-Simulation für Blue-Team-Training:
# Payload-Directory
mkdir /opt/pentest-lab/services/payloads
# Payload erstellen (Beispiel: DNS-Exfil-Simulation)
nano dns_exfil_sim.py
# In rc.local oder systemd-Service einbindencd /opt/pentest-lab
git pull
# Dependencies aktualisieren
source venv/bin/activate
pip install --upgrade -r requirements.txt
# Responder aktualisieren
cd services/credential_capture/Responder
git pull
# Services neu starten
sudo systemctl restart pentest-*Die strukturierte Wiki-Dokumentation liegt unter docs-site/ und wird via GitHub Pages
ausgerollt (GitHub Actions).
Lokaler Build:
cd docs-site
npm ci
npm run buildGitHub Pages:
- Settings → Pages → Source: GitHub Actions
- Workflow:
.github/workflows/docs.yml
# Services stoppen und deaktivieren
sudo systemctl stop pentest-*
sudo systemctl disable pentest-*
# Files entfernen
sudo rm -rf /opt/pentest-lab
sudo rm /etc/systemd/system/pentest-*.service
# Configs wiederherstellen (falls Backup vorhanden)
sudo cp ~/pentest-lab-backup/* /boot/
sudo cp ~/pentest-lab-backup/* /etc/
# Reboot
sudo rebootDieses Projekt basiert auf HackPi.
Nur für legale, autorisierte Nutzung!
- Original HackPi: wismna
- Poisontap: Samy Kamkar
- Responder: Laurent Gaffié
- mitmproxy: mitmproxy team
Bei Fragen, Bugs oder Feature-Requests:
- GitHub Issues öffnen
- Pull Requests willkommen
- Code-Reviews für Security-Improvements
Bitte beachten: Support nur für legale, autorisierte Use-Cases.
- ✨ Komplette Neuimplementierung in Python 3.11+
- ✨ Systemd-basiertes Service-Management
- ✨ OS-Detection ohne Kernel-Patching
- ✨ Forensik-Export-Tool
- ✨ WebSocket-Telemetrie-Server
- ✨ Moderne dnsmasq-Konfiguration
- ✨ Security-Hardening
- ✨ Extensive Dokumentation
- Basis-Funktionalität
- Node.js + Bash Scripts
- rc.local-basiertes Setup