
Marco de trabajo agéntico de pruebas de penetración automatizadas potenciado por modelos de lenguaje grandes
Agente Autónomo de Pruebas de Penetración Impulsado por IA
Publicado en USENIX Security 2024
Sitio web oficial: pentestgpt.com »
Artículo de Investigación
·
·
El pipeline autónomo de CTF es conectable por backend para Claude Code y Codex. El modo interactivo legado modernizado (
pentestgpt-legacy) soporta un conjunto más amplio de proveedores: OpenAI, Anthropic, Google Gemini, DeepSeek, xAI, Qwen, Moonshot y Ollama local. Ver Modo Interactivo Multi-LLM.
claude) - instalado y autenticado para ejecuciones locales de Claude. Ver documentación de Claude Codecodex) - instalado y autenticado para ejecuciones locales de Codex. El flujo de Docker a continuación incluye ambas CLIs.git clone https://github.com/GreyDGL/PentestGPT.git
cd PentestGPT
make install # ejecuta uv sync
| Comando | Descripción |
|---|---|
make install | Instalar dependencias |
make test | Ejecutar todas las pruebas |
make check | Ejecutar lint + typecheck |
make build | Construir paquete distribuible |
# Ejecutar contra un objetivo (modo CTF por defecto)
pentestgpt --target 10.10.11.234
# Con contexto del desafío
pentestgpt --target 10.10.11.50 --instruction "Sitio WordPress, enfócate en vulnerabilidades de plugins"
# Modo prueba de penetración (descubrimiento de activos → vulnerabilidades → informe)
pentestgpt --target 10.10.11.234 --mode pentest
# Listar sesiones guardadas previamente
pentestgpt --list-sessions
El agente trabaja a través de un pipeline de múltiples etapas, alimentando los hallazgos de cada etapa a la siguiente — recon → exploit → walkthrough para CTF, descubrimiento de activos → identificación de vulnerabilidades → informe para pentest.
Una imagen autocontenida incluye la herramienta + las CLIs de Claude Code y Codex. Inicias sesión una vez y las sesiones persisten en volúmenes con nombre — sin necesidad de reiniciar sesión en ejecuciones posteriores.
make docker-build # construir la imagen de la herramienta
make docker-login # ÚNICA VEZ, idempotente: verifica inicios de sesión, solo inicia sesión en lo que falta
make docker-auth-status # verificar que ambos estén autenticados (ROUNDTRIP=1 para verificación en vivo con 1 token)
# Ejecutar el pipeline contra un objetivo (cualquier backend / modelo / modo):
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 inicia sesión en Claude (setup-token → token almacenado en el volumen) y Codex (su
propio codex login dentro del contenedor, reenvío de OAuth callback via socat — no precargado, ya que los tokens de actualización de ChatGPT son de un solo uso). Es idempotente: al volver a ejecutarlo omite lo que aún sea válido. Los inicios de sesión persisten entre recreaciones de contenedores; make docker-down los mantiene, make docker-nuke elimina los volúmenes de inicio de sesión (para forzar un nuevo inicio de sesión / rotar un token). Diseño + detalles: docs/docker-dev-plan.md.
El clásico PentestGPT con intervención humana del artículo de USENIX 2024 se conserva y
moderniza como pentestgpt-legacy. Ejecuta tres sesiones LLM cooperativas —
razonamiento / generación / análisis — que mantienen un Árbol de Tareas de Pentesting (PTT) mientras
tú diriges la sesión interactivamente (next, more, todo, discuss). El pipeline autónomo de etapas fijas
soporta backends Claude y Codex; este modo legado se comunica nativamente con muchos proveedores
a través de sus SDK oficiales.
Establece una clave API para cualquier proveedor que quieras usar (en tu entorno o archivo .env — ver
.env.example). Solo los proveedores que configures estarán habilitados.
OPENAI_API_KEY=... ANTHROPIC_API_KEY=... GEMINI_API_KEY=... # o GOOGLE_API_KEY
DEEPSEEK_API_KEY=... GROK_API_KEY=... QWEN_API_KEY=... KIMI_API_KEY=...
# Seleccionar automáticamente los mejores modelos disponibles para cada sesión
pentestgpt-legacy
# Elegir modelos por sesión
pentestgpt-legacy --reasoning-model claude-opus-4-8 --parsing-model gemini-3.5-flash
# Modelo local via Ollama (compatible con OpenAI)
pentestgpt-legacy --reasoning-model ollama:qwen3 --base-url http://localhost:11434/v1
# Listar todos los modelos soportados (muestra qué proveedores están configurados)
pentestgpt-legacy --list-models
# Prueba de ida y vuelta en vivo con cada modelo configurado e imprime una matriz de aprobado/fallo
pentestgpt-legacy --smoke-test
pentestgpt-legacy --list-models siempre muestra el registro en vivo. Vuelve a ejecutar --smoke-test
después de cambios en los IDs de los modelos. Captura actual:
| Proveedor | Modelos actuales | Legado (conservado) | Clave de entorno |
|---|---|---|---|
| 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 por defecto; establece MOONSHOT_BASE_URL para .ai) |
| Local (Ollama) | ollama:<model> (ej. ollama:qwen3) |
El registro vive en
pentestgpt_legacy/llm/registry.py(la única fuente de verdad). Añadir un modelo es una entradaModelSpec; los proveedores compatibles con OpenAI reutilizan un conector.
PentestGPT recopila datos de uso anónimos para ayudar a mejorar la herramienta. Estos datos se envían a nuestro proyecto de Langfuse e incluyen:
No se recopilan datos sensibles: las salidas de comandos, credenciales o valores reales de banderas nunca se transmiten.
# Mediante bandera de línea de comandos
pentestgpt --target 10.10.11.234 --no-telemetry
# Mediante variable de entorno
export LANGFUSE_ENABLED=false
PentestGPT logró una tasa de éxito del 86,5% (90/104 benchmarks) en un experimento del conjunto de validación XBOW
en diciembre de 2025. Ese número es un resultado de investigación histórico, no una garantía de regresión
actual de pentestgpt-agent.
Los entornos de prueba XBOW y los archivos de resultados se mantienen fuera de este repositorio de producto como artefactos de investigación solo de referencia. La CLI, Makefile, CI y tiempo de ejecución Docker de PentestGPT no exponen un ejecutor XBOW. Una evaluación futura podría reutilizar ese corpus a través de un adaptador de propiedad separada sin convertirlo en una dependencia del producto.
Si usas PentestGPT en tu investigación, por favor cita nuestro artículo:
@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
}
Distribuido bajo la Licencia MIT. Consulta LICENSE.md para más información.
Aviso legal: Esta herramienta es solo para fines educativos y pruebas de seguridad autorizadas. Los autores no aprueban ningún uso ilegal. Úsala bajo tu propio riesgo.
| — |
ninguna (OLLAMA_BASE_URL) |