
Automatisiertes Penetrationstest-Agenten-Framework basierend auf Großen Sprachmodellen
[![Contributors][contributors-shield]][contributors-url] [![Forks][forks-shield]][forks-url] [![Stargazers][stars-shield]][stars-url] [![Issues][issues-shield]][issues-url] [![MIT License][license-shield]][license-url] [![Discord][discord-shield]][discord-url]
KI-gestützter autonomer Penetrationstest-Agent
Veröffentlicht auf der USENIX Security 2024
Offizielle Website: pentestgpt.com »
Forschungspapier
·
Fehler melden
·
Funktion anfragen
Die autonome CTF-Pipeline ist backend-plugbar für Claude Code und Codex. Der interaktive modernisierte Legacy-Modus (
pentestgpt-legacy) unterstützt einen breiteren Anbieter-Set: OpenAI, Anthropic, Google Gemini, DeepSeek, xAI, Qwen, Moonshot und lokales Ollama. Siehe Interaktiver Multi-LLM-Modus.
claude) – installiert und authentifiziert für lokale Claude-Ausführungen. Siehe Claude Code-Dokumentation.codex) – installiert und authentifiziert für lokale Codex-Ausführungen. Der Docker-Workflow unten bündelt beide CLIs.git clone https://github.com/GreyDGL/PentestGPT.git
cd PentestGPT
make install # führt uv sync aus
| Befehl | Beschreibung |
|---|---|
make install | Abhängigkeiten installieren |
make test | Alle Tests ausführen |
make check | Linting + Typenprüfung ausführen |
make build | Verteilbares Paket bauen |
# Gegen ein Ziel (Standardmäßig CTF-Modus)
pentestgpt --target 10.10.11.234
# Mit Challenge-Kontext
pentestgpt --target 10.10.11.50 --instruction "WordPress-Site, fokussiere dich auf Plugin-Schwachstellen"
# Penetrationstest-Modus (Asset-Erkennung → Schwachstellen → Bericht)
pentestgpt --target 10.10.11.234 --mode pentest
# Zuvor gespeicherte Sitzungen auflisten
pentestgpt --list-sessions
Der Agent arbeitet mit einer mehrstufigen Pipeline, die die Ergebnisse jeder Stufe an die nächste weitergibt – Erkundung → Ausnutzung → Walkthrough für CTF, Asset-Erkennung → Schwachstellenidentifizierung → Bericht für Pentests.
Ein eigenständiges Image bündelt das Tool sowie die CLIs von Claude Code und Codex. Sie melden sich einmal an und die Sitzungen bleiben in benannten Volumes erhalten – kein erneutes Anmelden bei späteren Läufen.
make docker-build # Tool-Image bauen
make docker-login # EINMALIG, idempotent: prüft Anmeldungen, meldet nur fehlende an
make docker-auth-status # Überprüft, ob beide angemeldet sind (ROUNDTRIP=1 für Live-1-Token-Prüfung)
# Pipeline gegen ein Ziel ausführen (beliebiges Backend/Modell/Mode):
make docker-run TARGET=http://127.0.0.1:8000 BACKEND=codex MODEL=gpt-5.5 MODE=ctf
make docker-run TARGET=10.10.11.234 BACKEND=claude MODEL=opus MODE=pentest
make docker-login meldet Claude an (setup-token → Token im Volume gespeichert) und Codex (eigenes codex login innerhalb des Containers, OAuth-Callback über socat weitergeleitet – nicht gesied, da ChatGPT-Refresh-Tokens nur einmal verwendbar sind). Es ist idempotent: Bei erneuter Ausführung wird übersprungen, was noch gültig ist. Anmeldungen bleiben über Container-Neuerstellung hinweg erhalten; make docker-down bewahrt sie, make docker-nuke entfernt die Anmelde-Volumes (um eine frische Anmeldung zu erzwingen / ein Token zu rotieren). Design + Details: docs/docker-dev-plan.md.
Der klassische PentestGPT mit Mensch-in-der-Schleife aus dem USENIX-2024-Papier ist erhalten und als pentestgpt-legacy modernisiert. Er führt drei zusammenarbeitende LLM-Sitzungen aus – Reasoning / Generierung / Parsing – die einen Pentesting Task Tree (PTT) verwalten, während Sie die Sitzung interaktiv steuern (next, more, todo, discuss). Die autonome Pipeline mit festen Stufen unterstützt Claude- und Codex-Backends; dieser Legacy-Modus spricht nativ mit vielen Anbietern über deren offizielle SDKs.
Setzen Sie einen API-Schlüssel für jeden Anbieter, den Sie verwenden möchten (in Ihrer Umgebung oder .env – siehe .env.example). Nur die konfigurierten Anbieter sind aktiviert.
OPENAI_API_KEY=... ANTHROPIC_API_KEY=... GEMINI_API_KEY=... # oder GOOGLE_API_KEY
DEEPSEEK_API_KEY=... GROK_API_KEY=... QWEN_API_KEY=... KIMI_API_KEY=...
# Automatisch die besten verfügbaren Modelle für jede Sitzung auswählen
pentestgpt-legacy
# Modelle pro Sitzung auswählen
pentestgpt-legacy --reasoning-model claude-opus-4-8 --parsing-model gemini-3.5-flash
# Lokales Modell über Ollama (OpenAI-kompatibel)
pentestgpt-legacy --reasoning-model ollama:qwen3 --base-url http://localhost:11434/v1
# Alle unterstützten Modelle auflisten (zeigt, welche Anbieter konfiguriert sind)
pentestgpt-legacy --list-models
# Live-Roundtrip jedes konfigurierten Modells und Ausgabe einer Bestanden/Nicht bestanden-Matrix
pentestgpt-legacy --smoke-test
pentestgpt-legacy --list-models rendert stets das Live-Register. Führen Sie --smoke-test nach Änderungen der Modell-IDs erneut aus. Aktueller Stand: