
Automatisiertes Penetrationstest-Agenten-Framework basierend auf Großen Sprachmodellen
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 |
# 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:
Das Register befindet sich in
pentestgpt_legacy/llm/registry.py(der einzigen Quelle der Wahrheit). Das Hinzufügen eines Modells ist einModelSpec-Eintrag; OpenAI-kompatible Anbieter verwenden einen Connector wieder.
PentestGPT sammelt anonyme Nutzungsdaten, um das Tool zu verbessern. Diese Daten werden an unser Langfuse-Projekt gesendet und umfassen:
Es werden keine sensiblen Daten gesammelt – Befehlsausgaben, Anmeldedaten oder tatsächliche Flag-Werte werden nie übertragen.
# Über die Befehlszeilenoption
pentestgpt --target 10.10.11.234 --no-telemetry
# Über die Umgebungsvariable
export LANGFUSE_ENABLED=false
PentestGPT erreichte eine Erfolgsrate von 86,5 % (90/104 Benchmarks) in einem XBOW-Validierungssuite-Experiment im Dezember 2025. Diese Zahl ist ein historisches Forschungsergebnis, keine aktuelle pentestgpt-agent-Regressionsgarantie.
XBOW-Harness- und Ergebnisarchive werden außerhalb dieses Produkt-Repositorys als reine Referenz-Forschungsartefakte gepflegt. Die unterstützte PentestGPT-CLI, Makefile, CI und Docker-Laufzeitumgebung legen keinen XBOW-Runner frei. Eine zukünftige Evaluierung könnte dieses Korpus über einen separat verwalteten Adapter wiederverwenden, ohne es zu einer Produktabhängigkeit zu machen.
Wenn Sie PentestGPT in Ihrer Forschung verwenden, zitieren Sie bitte unser Papier:
@inproceedings{299699,
author = {Gelei Deng and Yi Liu and Víctor Mayoral-Vilches and Peng Liu and Yuekang Li and Yuan Xu and Tianwei Zhang and Yang Liu and Martin Pinzger and Stefan Rass},
title = {{PentestGPT}: Evaluating and Harnessing Large Language Models for Automated Penetration Testing},
booktitle = {33rd USENIX Security Symposium (USENIX Security 24)},
year = {2024},
isbn = {978-1-939133-44-1},
address = {Philadelphia, PA},
pages = {847--864},
url = {https://www.usenix.org/conference/usenixsecurity24/presentation/deng},
publisher = {USENIX Association},
month = aug
}
Verteilt unter der MIT-Lizenz. Siehe LICENSE.md für weitere Informationen.
Haftungsausschluss: Dieses Tool ist nur für Bildungszwecke und autorisierte Sicherheitstests bestimmt. Die Autoren befürworten keine illegale Nutzung. Nutzung auf eigene Gefahr.
make check| Linting + Typenprüfung ausführen |
make build | Verteilbares Paket bauen |
| Anbieter | Aktuelle Modelle | Legacy (behalten) | Umgebungsvariable |
|---|
| OpenAI | gpt-5.5, gpt-5.5-pro, gpt-5.4-mini, gpt-5.4-nano, gpt-5.2, gpt-5.3-codex | gpt-4o, gpt-4o-mini, o3, o4-mini | OPENAI_API_KEY |
| Anthropic | claude-opus-4-8, claude-sonnet-4-6, claude-haiku-4-5-20251001 | — | ANTHROPIC_API_KEY |
| Google Gemini | gemini-3.1-pro, gemini-3.5-flash, gemini-3-pro, gemini-3.1-flash-lite | gemini-2.5-pro, gemini-2.5-flash | GEMINI_API_KEY / GOOGLE_API_KEY |
| DeepSeek | deepseek-v4-flash, deepseek-v4-pro | deepseek-chat, deepseek-reasoner | DEEPSEEK_API_KEY |
| xAI Grok | grok-4.3 | — | GROK_API_KEY / XAI_API_KEY |
| Alibaba Qwen | qwen3.7-max, qwen3.5-flash | qwen3-max | QWEN_API_KEY / DASHSCOPE_API_KEY |
| Moonshot Kimi | kimi-k2.6 | — | KIMI_API_KEY (.cn-Standard; setzen Sie MOONSHOT_BASE_URL für .ai) |
| Lokal (Ollama) | ollama:<model> (z.B. ollama:qwen3) | — | keine (OLLAMA_BASE_URL) |