Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

134 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pentest Lab - Modernisiertes Setup

Version: 2.0
Platform: Raspberry Pi Zero 2 W
OS: Raspberry Pi OS Lite 64-bit (Bullseye+)
Python: 3.11+


⚠️ WICHTIGER LEGAL NOTICE

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.


Übersicht

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

Phase 5 (optional, nur Laborbetrieb)

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 demo

Weitere Details: phase5/README.md

Was ist neu?

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

Hardware-Anforderungen

Empfohlen

  • Raspberry Pi Zero 2 W (Quad-Core, 512MB RAM)
  • MicroSD-Karte (min. 8GB, empfohlen 16GB+)
  • USB OTG-Kabel

Alternative (mit Einschränkungen)

  • Raspberry Pi Zero W (langsamer, aber funktional)

Installation

1. Basis-System vorbereiten

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=progress

Boot und SSH aktivieren:

# SD-Karte mounten
touch /boot/ssh

2. Repository klonen

sudo apt-get update
sudo apt-get install -y git
git clone https://github.com/YOUR-REPO/pentest-lab
cd pentest-lab

3. Installer ausführen

sudo python3 install.py

Der 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

4. System neu starten

sudo reboot

5. Verifizieren

# 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

Architektur

Komponenten-Stack

┌─────────────────────────────────────────────┐
│           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                        │  │
│  └──────────────────────────────────────┘  │
└─────────────────────────────────────────────┘

Verzeichnisstruktur

/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

Verwendung

Basis-Workflow

  1. 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
  2. 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
  3. Services starten automatisch

    • DHCP-Server (dnsmasq) vergibt IP an Target
    • Responder lauscht auf LLMNR/NBT-NS/mDNS
    • Traffic kann mit tcpdump captured werden

Manuelle Service-Steuerung

# 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 -wF

OS-Detection manuell ausführen

sudo python3 /opt/pentest-lab/scripts/os_detect.py \
    --interface br0 \
    --timeout 30

Forensik-Export

# 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-pcaps

Export-Archive landen in: ~/forensic_exports/


Blue-Team-Training-Szenarien

Szenario 1: LLMNR-Poisoning-Detektion

Ziel: Blue-Team lernt LLMNR-Poisoning zu erkennen

Setup:

  1. Pi Zero mit Corporate-Laptop verbinden (in Lab-Umgebung!)
  2. Responder startet automatisch
  3. 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.py

Szenario 2: USB-Device-Detektion

Ziel: Unerwartete USB-Netzwerk-Adapter erkennen

Setup:

  1. Pi Zero während Boot-Phase einstecken
  2. 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

Szenario 3: Man-in-the-Middle-Traffic-Analyse

Ziel: MITM-Attacken im Network-Traffic identifizieren

Setup:

  1. mitmproxy starten für HTTP-Traffic-Interception
  2. 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

Troubleshooting

USB Gadget wird nicht erkannt

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 50

Lösungen:

# Module neu laden
sudo modprobe -r g_ether
sudo modprobe dwc2
sudo modprobe libcomposite

# Gadget neu initialisieren
sudo systemctl restart pentest-gadget

DHCP-Server vergibt keine IPs

Symptom: 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 br0

Lösungen:

# dnsmasq neu starten
sudo systemctl restart dnsmasq

# Bridge-Interface neu aktivieren
sudo systemctl restart pentest-network

Keine Credentials captured

Symptom: 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 -n

Lö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 -v

Performance-Probleme

Symptom: Langsamer Network-Traffic, hohe CPU-Last

Checks:

# CPU-Auslastung
top
htop

# Memory-Usage
free -h

# Temperatur (wichtig für Pi Zero!)
vcgencmd measure_temp

Optimierungen:

  • CPU-Governor auf "performance" setzen (nur während Tests!)
  • Nicht benötigte Services stoppen
  • Log-Level reduzieren
  • PCAP-Captures nur wenn benötigt

Security-Hinweise

Systemd-Hardening

Alle Services laufen mit Hardening-Optionen:

  • NoNewPrivileges=yes
  • PrivateTmp=yes
  • ProtectSystem=strict
  • ProtectHome=yes
  • Dedizierter Service-User (nicht root)

Network-Isolation

  • Bridge-Interface ist isoliert
  • Keine Forwarding zu produktiven Netzwerken
  • Firewall-Regeln limitieren Traffic

Audit-Logging

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

Credentials

  • 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

Erweiterungen

Custom mitmproxy Scripts

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 transparent

WebSocket-Telemetry-Client

Eigene 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())

Custom Payloads

Backdoor-Simulation für Blue-Team-Training:

⚠️ NUR in autorisierten Lab-Umgebungen!

# 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 einbinden

Updates

cd /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-*

Dokumentation (Docusaurus / GitHub Pages)

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 build

GitHub Pages:

  • Settings → Pages → Source: GitHub Actions
  • Workflow: .github/workflows/docs.yml

Deinstallation

# 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 reboot

Lizenz

Dieses Projekt basiert auf HackPi.

Nur für legale, autorisierte Nutzung!


Credits


Support & Contribution

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.


Changelog

Version 2.0 (2024)

  • ✨ 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

Version 1.0 (Original)

  • Basis-Funktionalität
  • Node.js + Bash Scripts
  • rc.local-basiertes Setup

About

- Pi 4B als C2-Server / Haupt-Einstiegspunkt - Pi Zero 2W als USB-Gadget "Hidden Device" - Backdoor-Installation mit Streaming zum Server - Alles für Blue&Red-Team-Training

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages