Zurück zu den Updates
UpdatedAug 31, 2026

nightcrawler — Updated!

Lokaler KI-gestützter Red-Teamer auf einem Telefon

Teilen

Nightcrawler

Ein autonomer Penetrationstest-Agent, der vollständig auf einem Smartphone läuft. Legen Sie das Telefon in ein Netzwerk, gehen Sie weg, und es entdeckt Hosts, kartiert Dienste, findet Schwachstellen und erstellt einen Pentest-Bericht – ganz ohne Cloud-Anbindung.

 ░█▄░█ █ █▀▀ █░█ ▀█▀ █▀▀ █▀█ ▄▀█ █░█░█ █░░ █▀▀ █▀█
 ░█░▀█ █ █▄█ █▀█ ░█░ █▄▄ █▀▄ █▀█ ▀▄▀▄▀ █▄▄ ██▄ █▀▄  v0.1.0

 AUTONOMOUS MOBILE PENTEST AGENT
 OnePlus 8 · NetHunter · LFM2.5-1.2B · OpenCL GPU

Was ist das?

Penetrationstests (Pentesting) sind die Praxis, die Sicherheit eines Computernetzwerks zu testen, indem ein Angriff simuliert wird – mit ausdrücklicher Genehmigung des Netzwerkbesitzers. Professionelle Pentester werden beauftragt, Schwachstellen zu finden, bevor echte Angreifer es tun.

Nightcrawler automatisiert diesen Prozess auf einem Telefon. Es verwendet ein kleines KI-Modell (LFM2.5-1.2B-Instruct-Heretic, 1,2 Milliarden Parameter), das lokal auf der GPU des Telefons läuft, um zu entscheiden, was als Nächstes zu tun ist – welcher Host untersucht wird, welches Tool verwendet wird, wonach gesucht werden soll. Keine Internetverbindung oder Cloud-API erforderlich.

Demo

▶️ Sehen Sie Nightcrawler in Aktion auf Instagram

So funktioniert es

  1. WiFi-Breach (optional) – Wenn ohne WiFi bereitgestellt, kann es autonom WPA2-Netzwerke mit einem externen USB-WiFi-Adapter knacken
  2. Aufklärung – Entdeckt Geräte im Netzwerk mithilfe von Stealth-Scans
  3. Enumeration – Untersucht entdeckte Dienste (Webserver, Dateifreigaben, SSH, DNS usw.)
  4. Exploitation – Testet auf bekannte Schwachstellen und Standard-Anmeldedaten
  5. Berichterstellung – Erstellt einen strukturierten Pentest-Bericht mit Erkenntnissen und Behebungsempfehlungen

Der Agent arbeitet wie ein geduldiger menschlicher Pentester – er rotiert zwischen Hosts, führt eine kleine Aktion pro Zug aus und baut über Stunden hinweg schrittweise Wissen auf. Dadurch ist er viel schwerer zu erkennen als herkömmliche Schwachstellenscanner, die jeden Host auf einmal attackieren.

Kernkonzepte

BegriffBedeutung
Drop BoxEin Gerät, das in einem Zielnetzwerk zurückgelassen wird, um autonom Tests durchzuführen
ScopeDie Gruppe von Netzwerken/Hosts, die Sie testen dürfen
Rules of Engagement (ROE)Ein rechtliches Dokument, das festlegt, was Sie tun dürfen
StealthTechniken zur Vermeidung der Erkennung durch Netzwerküberwachung (IDS/IPS)
MCPModel Context Protocol – eine Standardschnittstelle für die KI-Werkzeugnutzung
C2Command and Control – das Web-Dashboard zur Überwachung und Steuerung des Agents

Architektur

┌──────────────────────────────────────────────────────────┐
│                   PHONE (OnePlus 8)                       │
│                                                           │
│  ┌─────────────┐     ┌──────────────────┐                │
│  │  LFM2.5     │     │  Agent Loop      │                │
│  │  1.2B model │◄───►│  (main.py)       │                │
│  │  on GPU     │     │  Decides what     │                │
│  │  (:8080)    │     │  to do next       │                │
│  └─────────────┘     └────────┬─────────┘                │
│                               │                           │
│                      ┌────────▼─────────┐                │
│                      │  Scope Proxy     │  ← Safety layer │
│                      │  Validates every │    Blocks out-  │
│                      │  command before  │    of-scope     │
│                      │  execution       │    actions      │
│                      └────────┬─────────┘                │
│                               │                           │
│                      ┌────────▼─────────┐                │
│                      │  Kali MCP Server │  ← Runs the    │
│                      │  nmap, curl,     │    actual       │
│                      │  smbclient, ...  │    commands     │
│                      └──────────────────┘                │
│                                                           │
│  ┌──────────────────┐  ┌──────────────────┐              │
│  │  Web Dashboard   │  │  SQLite DB       │              │
│  │  (:8888)         │  │  Hosts, vulns,   │              │
│  │  Monitor & steer │  │  creds, commands │              │
│  └──────────────────┘  └──────────────────┘              │
└──────────────────────────────────────────────────────────┘

Für das vollständige Systemdesign siehe docs/ARCHITECTURE.md.

Funktionen

  • Vollständig autonom – kein Mensch im Regelkreis während des Betriebs
  • 100 % lokale Inferenz – KI läuft auf der GPU des Telefons, keine Cloud erforderlich
  • Scope-erzwungen – zweischichtige Verteidigung verhindert Aktionen außerhalb des Scopes
  • Stealth-first – langsame Scanraten, Host-Rotation, Tarnverkehr, nur nmap -T2
  • 27 Exploit-Playbooks – mehrstufige Angriffsketten, die automatisch ausgeführt werden
  • 24.956-Einträge-CVE-Datenbank – versionsbewusster Schwachstellenabgleich
  • Web-Dashboard – Echtzeitüberwachung, Host-Verwaltung, C2-Steuerung
  • WiFi-Breach-Modus – autonomes WPA2-Knacken mit USB-Adapter (Pwnagotchi-inspiriert)
  • Passive Erkennung – Hintergrund-Erfassung von mDNS/NBNS/DHCP/ARP-Broadcasts
  • Multi-Netzwerk – Daten pro Netzwerk isoliert, übersteht DHCP-Änderungen durch MAC-Schlüssel-Hosts
  • Selbstheilend – Garbage-Erkennung, Kontext-Reset, Watchdogs, Erkennung von Hängern
  • Trainingserfassung – protokolliert erfolgreiche Interaktionen für zukünftiges Modell-Feintuning
  • Berichtserstellung – herunterladbarer Pentest-Bericht mit Schwachstellen, Exploit-Ketten und Behebung

Siehe docs/FEATURES.md für die vollständige Funktionsreferenz.

Hardware

Erforderlich

  • Android-Telefon mit Kali NetHunter (getestet auf OnePlus 8, Snapdragon 865)
  • Root-Zugriff über Magisk
  • 12 GB+ RAM (Modell benötigt ~1,3 GB, Android ~4 GB, Rest für Tools)

Optional

  • USB-WiFi-Adapter für den Offline-WiFi-Breach-Modus (Ralink RT3572 empfohlen)
  • Benutzerdefinierter Kernel mit MAC80211 für den Monitor-Modus (Build-Anleitung)
  • NVIDIA AGX zum Auslagern auf ein größeres Modell über Tailscale

GPU-Leistung

Alle Inferenzen über OpenCL auf der Adreno-650-GPU:

ModellQuantisierungPrompt-GeschwindigkeitGenerierungsgeschwindigkeit
LFM2.5-1.2B-Instruct-Heretic (Produktion)Q8_0115 tok/s13 tok/s
Qwen3.5-0.8BQ8_030,5 tok/s6,3 tok/s
Qwen3.5-4BQ4_010,1 tok/s2,0 tok/s

Hinweis: Android drosselt die GPU im Akkubetrieb (6-fache Verlangsamung). Nightcrawler enthält einen GPU-Governor-Daemon, der maximale Leistung erzwingt und bei ≤15 % Akku automatisch drosselt.

Schnellstart

# 1. Installation (innerhalb des Kali NetHunter chroot)
bash INSTALL.sh

# 2. Warten, bis llama-server startet (~5 Min nach dem Booten)
curl -s http://127.0.0.1:8080/health  # Sollte {"status":"ok"} zurückgeben

# 3. Alle Dienste starten
bash scripts/run-36h.sh

# 4. Web-Dashboard öffnen (von jedem Gerät in Ihrem Tailscale-Netzwerk)
# https://<your-tailscale-hostname>:8888

Trockenlauf (keine echten Befehle werden ausgeführt)

NC_DRY_RUN=1 python3 main.py

Dies verwendet einen Mock-Kali-Server, sodass Sie die Agent-Schleife testen können, ohne echte Netzwerkbefehle auszuführen.

Manueller Start (wenn kein tmux-Launcher verwendet wird)

kali-server-mcp --port 5000 &
python3 scope_proxy.py --config config.yaml --port 8800 --upstream http://127.0.0.1:5000 &
bash scripts/webui-daemon.sh start
python3 main.py &

Konfiguration

Bearbeiten Sie config.yaml vor der Bereitstellung:

mission:
  id: "CLIENT-YYYY-XXX"           # Ihre Engagement-ID
  scope:
    networks: ["auto"]             # "auto" = vom wlan0 beim Start erkennen
    excluded_hosts: ["auto"]       # "auto" = Gateway + eigene IP
    excluded_ports: [502, 503]     # SCADA/ICS-Ports, die nie berührt werden
  authorization: "ROE-YYYY-XXX.pdf"
  max_runtime_hours: 0             # 0 = keine Begrenzung

model:
  local:
    ctx_size: 8192
    port: 8080

Dynamische Scope-Erkennung bedeutet null Konfigurationsänderungen beim Wechsel zwischen Netzwerken – der Agent liest das aktuelle Subnetz beim Start von wlan0.

Projektstruktur

nightcrawler/
├── main.py                  # Einstiegspunkt
├── config.yaml              # Missions-Scope + Modellkonfiguration
├── scope_proxy.py           # Scope-Durchsetzungs-Proxy
├── INSTALL.sh               # Installationsprogramm
│
├── agent/                   # Kern-Agent-Logik
│   ├── loop.py              # Entscheidungsschleife + Fehlerbehebung
│   ├── planner.py           # Phasen-Zustandsmaschine (recon → exploit)
│   ├── llm_client.py        # LLM-API-Client (llama.cpp / remote)
│   ├── db.py                # SQLite-Backend (Hosts, Schwachstellen, Anmeldedaten)
│   ├── host_memory.py       # Beobachtungen pro Host + Auto-Tagging
│   ├── cve_db.py            # 24.956-Einträge-CVE-Datenbank
│   ├── attack_planner.py    # Strategische Anweisungen für die Exploit-Phase
│   ├── output_parser.py     # Extrahiert strukturierte Daten aus Tool-Ausgaben
│   ├── offline_manager.py   # WiFi-Breach-Pipeline-Zustandsmaschine
│   ├── net_detect.py        # Automatische Netzwerkerkennung von wlan0
│   ├── cover_traffic.py     # Stealth-Vermischung mit realistischem Web-Traffic
│   ├── passive_capture.py   # Hintergrund-tcpdump für Broadcast-Traffic
│   └── ...
│
├── proxy/                   # Scope-Durchsetzungskomponenten
│   ├── scope.py             # IP-/Port-/Host-Validierung
│   ├── rate_limiter.py      # Befehlsratenbegrenzung + Jitter
│   └── command_filter.py    # Blockliste für destruktive Befehle
│
├── webui/                   # Web-Dashboard (Flask)
│   ├── server.py            # API + Stealth-Middleware
│   └── templates/index.html # Dashboard-UI
│
├── data/                    # Statische Datendateien
│   ├── cve_exploits.json    # CVE→Exploit-Befehlszuordnungen
│   └── playbooks.json       # 27 mehrstufige Angriffs-Playbooks
│
├── prompts/                 # LLM-Prompt-Vorlagen (hot-reloadable)
├── scripts/                 # Betriebsskripte (Start, Stopp, Watchdogs)
├── tests/                   # Test-Suiten (API, UI, Offline-Modus)
├── kernels/                 # WiFi-Treibermodule + Kernel-Dokumentation
├── simulation/              # Trockenlauf-Mock-Server
├── docs/                    # Architektur, GPU-Setup, Funktionen
├── logs/                    # Laufzeitdaten (gitignored)
└── models/                  # Modelldateien (gitignored)

Wie der Agent denkt

Der Agent verwendet eine einfache, aber effektive Schleife:

  1. Ziel auswählen – gewichtete Zufallsauswahl (70 % Hosts mit bekannten Ports, 30 % neue Erkennung)
  2. Kontext aufbauen – Host-Speicher, Netzwerkbeobachtungen und Phasenanweisungen in den Prompt einfügen
  3. LLM fragen – Modell erzeugt REASONING: ... COMMAND: ...
  4. Validieren – Scope-Proxy prüft, ob der Befehl im Scope liegt und nicht destruktiv ist
  5. Ausführen – Befehl läuft über den Kali-MCP-Server
  6. Lernen – Ausgabe-Parser extrahiert Erkenntnisse, aktualisiert Host-Speicher
  7. Kontext zurücksetzen – Konversation löschen, persistenten Speicher behalten, wiederholen

Das 1,2B-Modell hat eine ~50 %ige Befehls-Erfolgsrate (seiner Größe inhärent). Der Agent kompensiert dies mit:

  • Garbage-Erkennung – 5er-Serie-Reset mit variierten Few-Shot-Beispielen
  • Duplikaterkennung – erzwingt Tool-/Ziel-Diversifizierung
  • Zeitbasierte Hänger-Erkennung – 5-Minuten-Backstop erzwingt Kontext-Reset
  • Direkte Playbook-Ausführung – mehrstufige Angriffe umgehen das LLM vollständig

Web-Dashboard

Das Dashboard unter :8888 bietet Echtzeitüberwachung und -steuerung:

  • Live-Feed – jeder Befehl, jede Erkenntnis und jede Agent-Entscheidung
  • Host-Karten – klickbare Karten mit Ports, Diensten, Schwachstellen
  • Netzwerkkarte – interaktiver kraftgerichteter Graph (ziehen, zoomen, schwenken)
  • Schwachstellendetails – CVE-Tags, Exploit-Ketten, Behebungsschritte
  • C2-Steuerung – Hosts markieren/blacklisten, Phase erzwingen, pausieren/fortsetzen, Befehle einfügen
  • Offline-Modus – Pwnagotchi-inspirierte WiFi-Angriffs-UI mit animiertem Gesicht

Das Dashboard ist stealth-gefiltert: Es spoofed nginx-Header und gibt leere 404s an Verbindungen aus dem Zielnetzwerk zurück.

Getestete Ergebnisse

Aus 72+ Stunden autonomen Betriebs über mehrere Netzwerke:

  • 30+ Hosts pro Netzwerk entdeckt
  • 2.000+ Befehle autonom ausgeführt
  • 10+ Schwachstellen über mehrere Dienste gefunden
  • 6+ Playbooks über direkte Ausführung ausgeführt
  • Agent-Speicher stabil bei 35–50 MB während des gesamten Betriebs (keine Lecks)

Mitwirken

Beiträge sind willkommen! Siehe CONTRIBUTING.md für Richtlinien.

Bereiche, in denen Hilfe benötigt wird

  • Modell-Feintuning – Verbesserung der Befehlsformat-Konformität von ~50 % auf 85 %+
  • Neue Playbooks – Hinzufügen von Exploit-Ketten für weitere Dienste
  • CVE-Datenbank – Erweiterung der Abdeckung über die aktuellen 24.956 Einträge hinaus
  • Adapter-Unterstützung – Testen mit weiteren USB-WiFi-Chipsätzen
  • Dokumentation – Tutorials, Setup-Anleitungen für verschiedene Telefone
  • Tests – mehr Testabdeckung, insbesondere für Randfälle

Entwicklungseinrichtung

# Repo klonen
git clone https://github.com/garagehq/nightcrawler.git
cd nightcrawler

# Trockenlauf-Modus (keine echten Befehle, keine Hardware erforderlich)
NC_DRY_RUN=1 python3 main.py

# Tests ausführen
python3 -m pytest tests/

Rechtliches

Dieses Tool ist nur für autorisierte Penetrationstests bestimmt. Sie müssen eine schriftliche Genehmigung (Rules of Engagement) vom Netzwerkbesitzer haben, bevor Sie Nightcrawler einsetzen. Die unbefugte Verwendung gegen Netzwerke, die Sie nicht besitzen oder für die Sie keine Testgenehmigung haben, ist illegal.

Lizenz

MIT – siehe LICENSE für Details.

Unterstützung

Wenn Ihnen dieses Projekt gefällt, können Sie mir einen Kaffee kaufen ☕:

Buy Me A Coffee

buymeacoffee.com/cyrilengmann

Kategorien