
Framework agentique de tests de pénétration automatisés alimenté par de grands modèles de langage
[![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]
Agent de test de pénétration autonome piloté par IA
Publié à USENIX Security 2024
Site officiel : pentestgpt.com »
Article de recherche
·
Signaler un bug
·
Demander une fonctionnalité
Le pipeline CTF autonome est pluggable en backend pour Claude Code et Codex. Le mode interactif modernisé hérité (
pentestgpt-legacy) supporte un ensemble de fournisseurs plus large : OpenAI, Anthropic, Google Gemini, DeepSeek, xAI, Qwen, Moonshot, et Ollama local. Voir Mode interactif multi-LLM.
claude) - installé et authentifié pour les exécutions locales de Claude. Voir docs Claude Codecodex) - installé et authentifié pour les exécutions locales de Codex. Le flux Docker ci-dessous regroupe les deux CLI.git clone https://github.com/GreyDGL/PentestGPT.git
cd PentestGPT
make install # exécute uv sync
| Commande | Description |
|---|---|
make install | Installer les dépendances |
make test | Exécuter tous les tests |
make check | Exécuter lint + vérification de type |
make build | Construire le paquet distribuable |
# Exécuter contre une cible (mode CTF par défaut)
pentestgpt --target 10.10.11.234
# Avec contexte de défi
pentestgpt --target 10.10.11.50 --instruction "Site WordPress, se concentrer sur les vulnérabilités de plugins"
# Mode test de pénétration (découverte d'actifs → vulnérabilités → rapport)
pentestgpt --target 10.10.11.234 --mode pentest
# Lister les sessions précédemment sauvegardées
pentestgpt --list-sessions
L'agent travaille à travers un pipeline multi-étapes, en alimentant les résultats de chaque étape dans la suivante — recon → exploitation → walkthrough pour CTF, découverte d'actifs → identification de vulnérabilités → rapport pour test de pénétration.
Une image autonome regroupe l'outil + les CLI Claude Code et Codex. Vous vous connectez une fois et les sessions persistent dans des volumes nommés — pas de reconnexion lors des exécutions ultérieures.
make docker-build # construire l'image de l'outil
make docker-login # UNE SEULE FOIS, idempotent : vérifie les connexions, ne connecte que ce qui manque
make docker-auth-status # vérifier que les deux sont connectés (ROUNDTRIP=1 pour une vérification en direct d'un jeton)
# Exécuter le pipeline contre une cible (n'importe quel backend / modèle / 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 connecte Claude (setup-token → jeton stocké dans le volume) et Codex (son
propre codex login dans le conteneur, rappel OAuth transféré via socat — non amorcé, car les jetons de rafraîchissement ChatGPT
sont à usage unique). Il est idempotent : ré-exécuter saute ce qui est encore valide. Les connexions persistent à travers
la recréation du conteneur ; make docker-down les conserve, make docker-nuke supprime les volumes de connexion (pour
forcer une nouvelle connexion / faire tourner un jeton). Conception + détails : docs/docker-dev-plan.md.
Le PentestGPT classique, avec humain dans la boucle, de l'article USENIX 2024 est préservé et
modernisé sous pentestgpt-legacy. Il exécute trois sessions LLM coopérantes —
raisonnement / génération / analyse — qui maintiennent une Arborescence de tâches de test de pénétration (PTT) pendant que vous
pilotez la session de manière interactive (next, more, todo, discuss). Le pipeline autonome à étapes fixes
supporte les backends Claude et Codex ; ce mode hérité dialogue nativement avec de nombreux fournisseurs
via leurs SDK officiels.
Définissez une clé API pour tout fournisseur que vous souhaitez utiliser (dans votre environnement ou .env — voir
.env.example). Seuls les fournisseurs que vous configurez sont activés.
OPENAI_API_KEY=... ANTHROPIC_API_KEY=... GEMINI_API_KEY=... # ou GOOGLE_API_KEY
DEEPSEEK_API_KEY=... GROK_API_KEY=... QWEN_API_KEY=... KIMI_API_KEY=...
# Choisir automatiquement les meilleurs modèles disponibles pour chaque session
pentestgpt-legacy
# Choisir les modèles par session
pentestgpt-legacy --reasoning-model claude-opus-4-8 --parsing-model gemini-3.5-flash
# Modèle local via Ollama (compatible OpenAI)
pentestgpt-legacy --reasoning-model ollama:qwen3 --base-url http://localhost:11434/v1
# Lister tous les modèles pris en charge (montre quels fournisseurs sont configurés)
pentestgpt-legacy --list-models
# Test aller-retour en direct de chaque modèle configuré et afficher une matrice réussite/échec
pentestgpt-legacy --smoke-test