
pentest-ai v1.2.0
Pentester de IA de código abierto que demuestra cada hallazgo. Los oráculos automáticos re-ejecutan cada exploit; los errores verificados incluyen una cápsula de prueba que puedes reproducir tú mismo.
pentest-ai
La herramienta de pentest que demuestra sus hallazgos. Sin oráculo, no hay insignia.
Sitio web · Instalación · Por qué la verificación · Documentación · Benchmarks · Agentes · Discord
⚠️ Herramienta ofensiva, solo para pruebas autorizadas. Al instalarla aceptas la AUP y los Términos. Texto completo en Uso responsable ↓
ptai es una herramienta de pentest impulsada por IA que vuelve a ejecutar cada exploit para confirmarlo. Realiza reconocimiento, inicia sesión y encadena hallazgos en rutas de ataque de varios pasos, pero no te pide que confíes en los resultados. Del mismo modo que TruffleHog confirma un secreto filtrado iniciando sesión con él, ptai confirma un hallazgo web re-ejecutando el exploit: un hallazgo permanece como candidato hasta que un oráculo de máquina lo reproduce N de N veces, y solo entonces obtiene la insignia VERIFIED. La salida de escáneres de terceros (nuclei, nikto, zap) se retiene hasta que un oráculo la vuelve a probar. El ruido de los escáneres es lo que enseña a los equipos a ignorar sus herramientas, así que el informe solo incluye lo que ptai pudo probar, cada hallazgo VERIFIED con una cápsula de prueba portátil que puedes reproducir tú mismo.
Hoy 14 clases de vulnerabilidades están verificadas por oráculo. En un honeypot de prueba deliberadamente vulnerable, 23 hallazgos se verifican en esas clases con 100% de precisión y cero falsos positivos. En un OWASP Juice Shop estándar, 12 se verifican en un solo escaneo. Se ejecuta en tu portátil. Sin nube, sin telemetría.
Míralo funcionar
Escaneando un OWASP Juice Shop estándar: 12 hallazgos verificados por oráculo en un solo escaneo. Los hallazgos son reales; el ritmo está ajustado para que se pueda ver cómodamente.
Reproduce la idea central por ti mismo en dos minutos, sin necesidad de un objetivo propio:```bash pip install ptai && ptai demo
`ptai demo` escanea una aplicación vulnerable incluida e informa `4 findings, 4 oracle-VERIFIED`, reproduce una en vivo desde una cápsula de prueba (`replay 3/3`), y luego ejecuta las mismas rutas con el endurecimiento aplicado e informa `0 findings`. Lo único que cambió entre las dos ejecuciones es la corrección, así que los hallazgos aparecen y desaparecen con la vulnerabilidad, no porque la herramienta se haya quedado callada. Dos minutos, sin clave API, sin un objetivo propio. Vuelve a probar cualquier cápsula tú mismo con `ptai replay`.
> **Números honestos.** La ejecución del honeypot (23 verificados en 14 clases, 100% de precisión, cero falsos positivos) y la ejecución de Juice Shop (12 verificados en un solo escaneo) son puntos de referencia individuales reproducibles, no tasas de falsos positivos de campo. La puerta del oráculo compra precisión, no tasa de detección: elimina falsos positivos, no eleva la detección. Juice Shop es la aplicación vulnerable más estudiada de internet, así que lee su volumen bruto como amplitud y el recuento verificado como la historia de la precisión; el honeypot, con errores que escribimos nosotros mismos, es la señal honesta. El arnés del honeypot (`tests/honeypot/`) y una puerta de cero FP con una aplicación limpia (`tests/cleanapp/`) se incluyen en el repositorio, de modo que las afirmaciones son reproducibles en lugar de capturas de pantalla.
## Novedades en 1.1.0
La cobertura de verificación se duplicó aproximadamente, y un escaneo ya no informa cero en un objetivo que derribó a mitad de ejecución. Cada hallazgo VERIFIED proviene de un oráculo máquina con nombre, nunca de una afirmación del LLM, aplicado en el código: un veredicto que no puede nombrar su oráculo es rechazado. Esta versión añade:
- **Diez clases de oráculos nuevas (14 en total).** Bypass de cabecera de confianza, JWT `alg:none`, intoxicación de cabecera de host, XXE, confusión de tipos, XSS almacenado, IDOR secuencial, asignación masiva, SSRF no ciega y bypass de login por SQLi, que se suman a SQLi (booleano/cegado), BOLA/IDOR, XSS reflejado, redirección abierta y path traversal. Cada oráculo tiene un control que debe fallar en un objetivo seguro, de modo que una aplicación no vulnerable se abstiene en lugar de ganarse una insignia.
- **Resiliencia de la verificación.** Un barrido agresivo podía derribar un objetivo frágil de un solo contenedor, tras lo cual la fase de verificación fallaba en todos los oráculos e informaba 0 a pesar de haber recetas válidas y reproducibles. Ahora espera a que el objetivo vuelva a responder antes de volver a probar, lo que llevó un escaneo de OWASP Juice Shop de 0 a 12 verificados por oráculo.
- **Seguridad de alcance.** Las herramientas activas (sqlmap, dalfox) están bloqueadas al host del objetivo del compromiso; el escaneo ya no alimenta a las herramientas de ataque con URL de terceros extraídas del contenido de una página.
- **Cápsulas de prueba portátiles** con `ptai replay`, una TUI en vivo que cambia los veredictos a VERIFIED en pantalla, y una puerta de CI (`--fail-on verified`) que rompe la compilación solo con hallazgos probados.
## Sobre un objetivo real: OWASP Juice Shop
Apuntado a un OWASP Juice Shop estándar, ptai **verifica con oráculos 12 hallazgos en un solo escaneo**: JWT `alg:none` aceptado en endpoints protegidos, lecturas BOLA entre usuarios, IDOR secuencial y confusión de tipos, cada uno re-probado por un oráculo máquina, no afirmado. Detecta más de lo que verifica (bypass de auth por SQLi en `/rest/user/login`, SQLi por UNION en `/rest/products/search`, XXE que divulga `/etc/passwd`, asignación masiva, bypass de restablecimiento de contraseña); solo el subconjunto verificado llega al informe. Condúcelo a través de Claude Code sobre MCP sin clave API, o de forma independiente.
> **Advertencia de honestidad.** Juice Shop es la aplicación vulnerable más documentada de internet, así que tanto el LLM como los autores de las sondas parten con ventaja. Contra un objetivo novedoso, la tasa de detección es lo que cubra la biblioteca de sondas curada (más de 60 sondas web hoy, en crecimiento cada versión); el LLM coordina y razona sobre los resultados, no reemplaza a las sondas. Un arnés de honeypot privado en `tests/honeypot/` mide la cobertura contra errores que escribimos nosotros mismos y se valida en CI (`tests/honeypot/test_mcp_honeypot_e2e.py`); sus números son más bajos que los de Juice Shop, y ese es el punto. Publicamos ambos. Consulta el [benchmark completo de Juice Shop vs ZAP / Nuclei / HexStrike](https://github.com/0xsteph/pentest-ai/blob/HEAD/docs/benchmarks/juice-shop.md).
## Instalación```bash
pip install ptai
Ruta 1: Úsalo desde Claude Code (sin clave de API)
Si ya pagas por Claude Pro / Max / Team, tu suscripción ES el LLM. Conecta ptai como servidor MCP:```bash claude mcp add pentest-ai -- ptai mcp
Restart Claude Code, then ask:
> *"Ejecuta un pentest autenticado contra staging.acme.com. El inicio de sesión está en /login, la contraseña está en $APP_PASS."*
> **Lo que toca la red**: las herramientas y sondas de ptai se ejecutan localmente contra tu objetivo. Tus indicaciones y la salida de herramientas que Claude Code lee pasan a través de la API de Anthropic, igual que en cualquier sesión de Claude Code. Si necesitas una ruta aislada, consulta la Ruta 3 (Ollama / LLM local).
Claude Code maneja ptai mediante estas herramientas MCP (47 en la actualidad):
- `list_tools` / `run_tool`: lista e invoca cualquiera de las más de 200 herramientas de seguridad integradas
- `plan_tools` / `ensure_tools_installed`: obtén la lista canónica de herramientas para un engagement, instalación por lotes
- `list_probes` / `run_probe`: 60 sondas compatibles con SPA para clases de fallos del OWASP Top 10
- `http_request`: HTTP crudo bajo una estricta protección de alcance para cadenas novedosas
- `start_engagement` / `get_findings` / `get_attack_chains`: el registro del engagement
- además de `test_web_app`, `test_active_directory`, `test_cloud`, `test_api_security` y el resto
### Ruta 2: Otros clientes MCP (Cursor, VS Code Copilot, Codex, Claude Desktop)```bash
ptai setup --mcp
Auto-detects every MCP-compatible client you have installed and writes their config files. Restart the client and the same 47 tools are there.
Ruta 3: CLI independiente cuando NO tienes un cliente MCP
Si usas Claude Code, Cursor, Codex o Claude Desktop, usa la Ruta 1 o 2 de arriba y omite esta sección. No se necesita clave de API allí.
La Ruta 3 es para pipelines de CI/CD, trabajos cron programados, terminales aislados y usuarios sin un cliente MCP. La CLI independiente no tiene LLM propio, así que tú aportas uno mediante una variable de entorno:```bash export ANTHROPIC_API_KEY=sk-ant-... # Claude (best results)
or
export OPENAI_API_KEY=sk-... # OpenAI
or, fully local, no cloud
export PENTEST_AI_LLM_PROVIDER=ollama # Ollama (default localhost:11434)
or, any of 300+ models via LiteLLM (OpenRouter, Azure, DeepSeek, Groq, Mistral, ...)
pip install litellm
ptai start https://your-target.com
¿Usas un endpoint compatible con OpenAI (DeepSeek cloud, Groq, Together AI, vLLM, etc.)? Configura `OPENAI_BASE_URL` + `PENTEST_AI_MODEL` y usa el proveedor openai. Las recetas completas para cada proveedor, incluidos nombres de modelos personalizados, solución de problemas y la lista de más de 300 de LiteLLM, están en [`docs/llm-providers.md`](https://github.com/0xsteph/pentest-ai/blob/HEAD/docs/llm-providers.md).
#### Límite de gasto (solo Path 3)
El bucle del agente independiente gestiona su propio LLM, por lo que los bucles descontrolados cuestan dinero real. ptai limita el gasto por engagement a **$10 USD por defecto**. Un barrido normal de aplicaciones web con Sonnet 4.6 y almacenamiento en caché de prompts termina muy por debajo de esa cifra; una ejecución profunda con Opus 4.7 puede superarlo con creces.
Cámbialo mediante la variable de entorno (sin flag de CLI: la variable de entorno es la única opción de ajuste):```bash
export PTAI_PRICE_LIMIT=25 # raise to $25
export PTAI_PRICE_LIMIT=0 # unlimited (logs a warning)
unset PTAI_PRICE_LIMIT # back to the $10 default
Si el tope se activa a mitad del compromiso, el compromiso se marca como aborted_cost_limit y su punto de control se conserva. Aumenta el tope y reanuda desde donde se detuvo:```bash
export PTAI_PRICE_LIMIT=25
ptai resume <engagement_id>
Paths 1 y 2 (MCP) no usan este límite: tu cliente de IA (Claude Code, Cursor, etc.) gestiona su propia facturación de LLM.
### Instalando herramientas de seguridad
ptai envuelve más de 200 herramientas externas. Hay tres formas de obtenerlas en el sistema:```bash
# 1. Zero-config (recommended). At engagement start, the planner predicts
# which tools the LLM will need and asks ONCE to install the missing
# ones. Decline once and the answer persists in
# ~/.pentest-ai/install-preferences.json.
ptai start https://target.example.com
# 2. Batch install upfront. Skips the engagement-time prompt entirely.
ptai setup --tier core # ~6 essentials, ~30s
ptai setup --tier recommended # + fuzzers, crawlers, password tools, ~5m
ptai setup --tier full # everything, ~30m
# 3. Install specific tools by name.
ptai setup --per-tool wpscan,dalfox,paramspider
ptai setup --wizard # interactive picker
En contextos no interactivos (PTAI_NON_INTERACTIVE=1 o sin TTY), ptai usa lo que hay en PATH y registra (en lugar de solicitar) cualquier elemento que falte.
Otras rutas: REST API, composición MCP, teleoperación HITL, espacio de trabajo en la nube, benchmarks públicos
HTTP REST API (para paneles e integraciones)```bash
pip install ptai[api] ptai serve --port 8888
Endpoints: `/health`, `/version`, `/agents`, `/tools`, `/engagements` (lista, detalle, hallazgos, cadenas, reglas de detección, exportación SARIF). Los endpoints de escritura (`POST /engagements`, `POST /engagements/{id}/abort`) requieren `Authorization: Bearer $PENTEST_AI_API_TOKEN`. Transmisión de eventos en vivo en `WS /engagements/{id}/stream`.
### Cargar otros servidores MCP como fuentes de herramientas
Combínalo con hexstrike o cualquier otro servidor de seguridad compatible con MCP. Edita `~/.pentest-ai/mcp_servers.json`:```json
{
"servers": [
{"name": "hexstrike", "command": "python3 hexstrike_mcp.py", "transport": "stdio"}
]
}
Tomar el control a mitad de ejecución (teleoperación HITL)
Mientras una operación está en curso, pulse Ctrl+C dos veces en 600 ms para pausar el orquestador y entrar en un REPL: step, inspect findings, inject <instruction>, skip, resume, abort. Los LLM actuales no son totalmente autónomos. El operador tiene la última palabra cuando importa.
Benchmarks públicos
Las mediciones reproducibles de tasa de resolución se encuentran en benchmarks/:```bash
./benchmarks/scripts/run_all.sh # writes JSON per run + RESULTS.md
Spec, harness y resultados, todo en git. La comparación completa de Juice Shop frente a ZAP / Nuclei / HexStrike está en [`docs/benchmarks/juice-shop.md`](https://github.com/0xsteph/pentest-ai/blob/HEAD/docs/benchmarks/juice-shop.md). Sin afirmaciones de «tasa de detección del 98,7 %» que no puedas auditar.
### Espacio de trabajo en la nube (Pro / Team / Enterprise)
La CLI es gratuita para siempre y lo almacena todo localmente. Si quieres historial de engagements, informes PDF de marca listos para el cliente y colaboración en equipo, enlaza la CLI a un espacio de trabajo de [app.pentestai.xyz](https://app.pentestai.xyz):```bash
# Sign up, then Dashboard -> API Keys -> Generate -> copy ptai_...
ptai auth login # paste the key (hidden prompt)
ptai auth status # confirm link
# or use an env var for CI:
export PENTESTAI_API_KEY=ptai_...
ptai start sincroniza automáticamente los hallazgos con tu espacio de trabajo en la nube cuando estás autenticado. Sin nube = sin llamadas; la integración está desactivada silenciosamente a menos que inicies sesión.
Sin LLM en absoluto (lanzador interactivo)```bash
ptai menu
Navegación numérica por categorías, búsqueda (`/term`), filtrado por etiquetas (`t web`), recomendación basada en palabras clave. Los compromisos reales siguen pasando por `ptai start` con confirmación completa del alcance.
</details>
## Por qué es diferente
| | |
|---|---|
| 🤖 **Coordinado por LLM, no dependiente de LLM** | Diecisiete agentes cubren reconocimiento, web, API, AD, nube, móvil, inalámbrico, navegador, credenciales, escalada de privilegios, escaneo de vulnerabilidades, encadenamiento, PoC, detección, informe, ingeniería social y equipo rojo de LLM. El LLM ejecuta el bucle de fases y razona sobre los resultados; la detección de errores está en la biblioteca de sondas deterministas y seleccionadas. Sin establecer ninguna clave de API, las mismas sondas siguen ejecutándose. El LLM coordina; no escanea. |
| 🔓 **Sin clave de API en la ruta MCP** | Los usuarios de Claude Code / Cursor / Codex manejan ptai a través de MCP usando su suscripción existente. Más de 200 wrappers de herramientas y 60 sondas son invocables por LLM sin una clave de Anthropic. La CLI independiente (`ptai start --agent-mode`) es donde importa la clave de API; esas son las rutas Codex-sin-MCP, CI y aisladas (air-gapped). |
| 🔐 **Inicia sesión** | La mayoría de los escáneres mueren en la página de inicio de sesión. Este mantiene una sesión, renueva las credenciales cuando expiran, y cada herramienta posterior hereda la cookie. Los perfiles de autenticación almacenan *referencias* (variables de entorno, `op://`, rutas de Vault, ARNs de AWS Secrets Manager), nunca el valor. |
| 🧪 **Cada hallazgo está comprobado** | Se ejecuta una prueba de concepto no destructiva contra el objetivo. Se acabó el triaje de 40 posibles hallazgos de un escáner ruidoso. |
| ⚡ **Nativo de CI** | Acción de GitHub, compuertas de severidad, salida SARIF, comentarios en PR. Colócalo en tu archivo de workflow y se ejecutará en la siguiente PR. |
| 💾 **Se ejecuta en tu laptop** | Licencia MIT, sin llamadas a la nube. Funciona sin conexión con Ollama. Los hallazgos permanecen en tu disco. |
## Cómo funciona```
┌─────────────────────────────────────────────────────────────┐
│ ptai start <target> │
└─────────────────────────────────────────────────────────────┘
│
┌──────────────────┼──────────────────┐
▼ ▼ ▼
┌────────┐ ┌────────┐ ┌─────────┐
│ recon │ -> │ auth │ -> │ web │
└────────┘ └────────┘ └─────────┘
│
┌────────────────────────────────────┤
▼ ▼
┌────────┐ ┌─────────┐
│ ad │ ┌──────────────────┐ │ cloud │
└────────┘ │ Findings DB │ └─────────┘
│ │ (sqlite + evidence)│ │
└───────▶│ scope-guarded │◀──────┘
│ deduplicated │
└──────────────────┘
│
┌────────────┼────────────┐
▼ ▼ ▼
┌──────┐ ┌─────────┐ ┌──────────┐
│chain │ │validate │ │ detect │
└──────┘ └─────────┘ └──────────┘
│
▼
┌──────────┐
│ report │ md · html · pdf · SARIF · JUnit
└──────────┘
Cada agente se ejecuta con un LLM cuando has configurado una clave, o como un bucle de herramientas determinista cuando no la has configurado. En cualquier caso, el orden de fases es el mismo.
Agentes
| Agente | Fase | Función |
|---|---|---|
recon | 1 | Escaneo de puertos, enumeración de DNS y subdominios, fingerprinting de servicios |
web | 2 | Pasada autenticada de la Guía de Pruebas OWASP v4 |
api_security | 2 | Análisis de superficie OpenAPI/GraphQL/REST, OWASP API Top 10 |
browser | 2 | Análisis DOM con Playwright, captura de XHR, clasificación de cabeceras de seguridad |
ad | 3 | Enumeración de AD, Kerberoasting, búsqueda de rutas con BloodHound, abuso de delegación |
cloud | 4 | AWS, Azure, GCP IAM, mala configuración, RBAC de K8s, serverless |
credential_tester | 4 | Password spraying, credential stuffing, comprobaciones de bypass de MFA |
privesc | 5 | Recomendaciones de escalada de privilegios local y lateral a partir del contexto recopilado |
vuln_scanner | 5 | Agregación transversal de vulnerabilidades contra la base de datos de hallazgos |
exploit_chain | 6 | Correlaciona hallazgos en rutas de ataque de varios pasos |
poc_validator | 7 | Prueba de concepto no destructiva por hallazgo |
detection | 8 | Reglas Sigma, SPL y KQL para el equipo azul |
report | 9 | Markdown, HTML, PDF, SARIF, JUnit, mapas de cumplimiento |
llm_redteam | opt | Sondas OWASP LLM Top 10 |
social_engineer | opt | Corpus de phishing y generación de pretextos |
mobile | opt | Comprobaciones estáticas y dinámicas de Android/iOS |
wireless | opt | Reconocimiento inalámbrico y captura de handshake |
Playbooks
Tu metodología como archivo. Gestionada con git. Compartida con tu equipo.```yaml name: internal-ad-pentest inputs: domain: { required: true, prompt: "AD domain" } dc_ip: { required: true, prompt: "DC IP" }
phases:
-
id: recon tools: [nmap, masscan]
-
id: ad-enum depends_on: [recon] condition: "any_finding(type='open_port', port=445)" tools: [enum4linux, ldapsearch, bloodhound-python]
-
id: kerberoast requires_finding: { type: ad_user_enumerated } tools: [impacket-getuserspns] llm_decide: true # let the LLM skip if context says useless
No se proporcionó contenido para traducir.```bash
ptai playbook list # show installed playbooks
ptai playbook show web-app-quick # preview before running
ptai playbook run ./my-ad.yaml # execute
Cinco playbooks se incluyen de serie. Se acerca un catálogo comunitario.
Introdúcelo en tu CI```yaml
.github/workflows/security.yml
name: Security scan on: [pull_request]
jobs:
ptai:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: pip install ptai
- run: |
ptai start ${{ vars.STAGING_URL }}
--ci
--fail-on high
--sarif pentest.sarif
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
- uses: github/codeql-action/upload-sarif@v3
if: always()
with:
sarif_file: pentest.sarif
Findings post as a PR comment, SARIF uploads to GitHub Code Scanning, and the build fails on gated severity. **GitLab CI and Jenkins** templates plus advanced options (auth profiles in CI, cost gates, scope files) -> [docs/ci-cd.md](https://github.com/0xsteph/pentest-ai/blob/HEAD/docs/ci-cd.md).
## Benchmarks
El diseño de ptai está hecho a medida para pentesting de SPA con una cobertura de sondas curada. En OWASP Juice Shop, la [matriz de 4 herramientas](https://github.com/0xsteph/pentest-ai/blob/HEAD/docs/benchmarks/juice-shop.md) publicada mostró:
| Herramienta | Hallazgos | Críticos+Altos | Categorías de OWASP Top 10 | Tasa de FP |
|---|---:|---:|---:|---:|
| **ptai 0.13.0** | **88** | **46** | **5** | **0%** |
| ZAP 2.17.0 | 593 | 0 | 1 | 47% |
| Nuclei 3.8.0 | 1 | 0 | 1 | 0% |
| HexStrike v6.0 | 11 | 0 | 1 | - |
n=1 con un solo evaluador y un solo intento. Metodología y artefactos sin procesar en [`benchmarks/results/2026-05-12/juice-shop/`](https://github.com/0xsteph/pentest-ai/blob/HEAD/benchmarks/results/2026-05-12/juice-shop/). La lectura honesta: ptai es mejor en pentests web de SPA con cobertura de sondas curada. HexStrike es más amplio (nube, binario, CTF) y probablemente supere a ptai en superficies rastreables tradicionales como WordPress. Las futuras versiones ampliarán la comparación.
Contexto de investigación reciente: los agentes de pentest totalmente autónomos basados en LLM completan **21-31%** de las tareas de principio a fin; los entornos asistidos por humanos alcanzan **64%** (ARTEMIS, DARPA AICC Atlantis, xOffense). ptai está construido para el régimen asistido por humanos: el LLM razona sobre los resultados, las sondas curadas detectan, y Ctrl+C dos veces permite que el operador tome el control.
## Frente a la competencia
| | `ptai` | Hexstrike | ZAP | Nuclei | Burp Pro | PentestGPT |
|---|:-:|:-:|:-:|:-:|:-:|:-:|
| Impulsado por LLM vía MCP (sin clave API) | ✓ | ✓ | | | | |
| HTTP sintetizado por LLM con protección de alcance | ✓ | parcial | | | | |
| Escaneo autenticado vía MCP | ✓ | parcial | parcial | HTTP sin procesar | ✓ | |
| Encadenamiento de exploits | ✓ | parcial | | | | parcial |
| Validación de PoC no destructiva | ✓ | | | | parcial | |
| Cadenas de inyección almacenadas (verificación POST -> GET) | ✓ | manual | parcial | | manual | |
| Sondas curadas (especializadas, no basadas en plantillas) | 60 | impulsado por envoltorios de herramientas | basado en reglas | 8000+ plantillas | manual + escaneo | - |
| Herramientas CLI de seguridad envueltas | 200+ | 150+ | - | - | - | - |
| Asistente de instalación de herramientas | core/recommended/full + por herramienta | - | n/a | n/a | n/a | - |
| Instalación inteligente al inicio del engagement | ✓ | | | | | |
| Nativo para CI (SARIF + compuertas de severidad) | ✓ | | parcial | parcial | parcial | |
| Sondas de red team con LLM | ✓ | | | | | |
| Playbooks YAML | ✓ | | | plantillas | | |
| Licencia | MIT | MIT | Apache-2.0 | MIT | comercial | MIT |
## Qué incluye
- **17 agentes** en reconocimiento, web, seguridad de API, AD, nube, móvil, inalámbrico, navegador, pruebas de credenciales, escalada de privilegios, escaneo de vulnerabilidades, encadenamiento de exploits, validación de PoC, detección, informes, red team con LLM, ingeniería social
- **60 sondas web curadas** que cubren OWASP Top 10 + API Top 10
- **Más de 200 envoltorios de herramientas** con autoinstalación: nmap, masscan, nuclei, ffuf, sqlmap, gobuster, wapiti, nikto, dalfox, xsstrike, wpscan, hydra, hashcat, enum4linux, bloodhound-python, la suite impacket, trufflehog, gitleaks, kube-hunter, trivy, prowler, scout-suite y más
- **Más de 4000 plantillas de Nuclei** integradas para la detección atómica de vulnerabilidades
- **47 herramientas MCP** para engagements impulsados por LLM, incluyendo `plan_tools` / `ensure_tools_installed`, que permiten al LLM externo instalar herramientas por lotes sin una clave API de Anthropic
- **Más de 300 modelos LLM** a través del proveedor LiteLLM (Anthropic, OpenAI, Ollama directo; Azure, OpenRouter, DeepSeek, Groq, Mistral, Together AI, Bedrock, Vertex AI, Cohere vía LiteLLM)
- Superficie **HTTP REST API + WebSocket** (`ptai serve`) para integraciones no MCP
- **Panel web local** con vista de engagement en vivo, tabla de hallazgos, visualización de cadenas de ataque, exportación SARIF
- **Agente de automatización de navegador** con captura de pantallas, análisis del DOM, captura de red, calificación de cabeceras de seguridad (impulsado por Playwright)
- **Teleoperación con humano en el bucle** (pulsa Ctrl+C dos veces para tomar el control de un engagement en mitad de la ejecución)
- Capacidad de **cliente MCP** para cargar servidores MCP externos como fuentes de herramientas
- **Banco de pruebas público y reproducible** en `benchmarks/`. Números, código, artefactos sin procesar, todo en git.
- **6 formatos de salida**: Markdown, HTML, PDF, SARIF 2.1.0, JUnit XML, mapeos de cumplimiento (OWASP, CWE, CVE, CVSS v3.1)
- **Más de 2400 pruebas** con CI en Python 3.10, 3.11, 3.12, 3.13
- **Con licencia MIT**, 100% tuyo
## Quién lo usa y para qué
**Equipos de AppSec.** Conecta `ptai` a tu CI. Cada PR contra staging recibe un escaneo autenticado. El build falla ante hallazgos de alta severidad. El bucle de corrección -> reescaneo -> confirmación se ejecuta solo.
**Consultores.** Prepara un engagement de una semana, apunta `ptai` a la lista de objetivos y dedica tu tiempo a las partes que necesitan a un humano: analizar hallazgos, elegir cadenas que demostrar, hablar con el cliente. El informe se redacta solo.
**Cazadores de bug bounty.** Ejecútalo mientras desayunas. Vuelve a una lista de hallazgos validados con PoCs listos para pegar en HackerOne.
**Equipos de red team.** Codifica tu metodología de AD como un playbook YAML. Cada nuevo engagement lo ejecuta. La misma metodología, compartida en todo el equipo.
**Usuarios de Claude Code / Cursor / Codex.** Añade ptai como servidor MCP. Pide a tu asistente que ejecute un escaneo en lenguaje natural. Tu suscripción actual paga el LLM; ptai aporta las herramientas.
**Desarrolladores que lanzan funciones de IA.** Habilita `--enable-llm-redteam` contra tu chatbot. Obtén un informe OWASP LLM Top 10 en minutos.
## Uso responsable
`pentest-ai` es una herramienta de seguridad ofensiva. Ejecuta operaciones reales de red y de host contra los objetivos que especifiques. **Eres el único responsable de asegurarte de que tienes autorización explícita y por escrito para probar cada objetivo.**
Al instalar o ejecutar `ptai` aceptas la [Política de uso aceptable](https://pentestai.xyz/aup) y los [Términos de servicio](https://pentestai.xyz/terms). Probar sistemas que no posees sin autorización por escrito puede violar la Computer Fraud and Abuse Act, la Computer Misuse Act 1990, el artículo 32 del RGPD y los equivalentes en tu jurisdicción. El mal uso es responsabilidad exclusiva tuya.
En la primera ejecución se te pide confirmar la aceptación de la AUP y la elección se guarda en `~/.pentest-ai/aup-consent.txt`. Define `PENTEST_AI_AUP_ACCEPTED=1` en CI para omitir la pregunta de forma no interactiva.
Al iniciar, `ptai` carga un archivo de alcance. Los hosts fuera de alcance se rechazan en el momento de la invocación de la herramienta. Los PoCs no son destructivos por defecto. Los límites de velocidad se activan automáticamente en modo sigiloso. No seas esa persona.
### Callbacks fuera de banda (OAST): privacidad
`ptai` detecta clases de vulnerabilidades ciegas (SSRF ciego, SQLi ciego, XXE ciego, XSS almacenado ciego, SSTI, Log4Shell) emitiendo payloads que, cuando se ejecutan en el servidor, llaman a un colaborador fuera de banda. Por defecto, los callbacks se enrutan a la infraestructura pública `oast.fun` de ProjectDiscovery.
**Qué llega al colaborador y quién puede leerlo.** Cada engagement genera un nuevo par de claves RSA-2048 en tu proceso local `ptai`. Los payloads de interacción (peticiones HTTP sin procesar, consultas DNS, sobres SMTP recibidos por el colaborador) se cifran con AES-CTR-256 en reposo en el servidor, con la clave AES envuelta en RSA-OAEP-SHA256 usando la clave pública de tu engagement. **Solo el poseedor de la clave privada correspondiente, tu proceso local `ptai`, puede descifrarlos.** ProjectDiscovery (o quien gestione el colaborador) no puede leer el contenido de las interacciones. Sin embargo, **los metadatos son visibles en el servidor**: el hecho de que ocurrió una interacción, la IP de origen del objetivo que llamó, la marca de tiempo y el protocolo.
**Cuándo autoalojar.** PortSwigger prohíbe explícitamente el uso del Collaborator público de Burp en sus reglas de participación de bug bounty, y los grandes programas empresariales (Meta, Apple, finanzas) exigen cada vez más que la infraestructura de callbacks termine en hosts controlados por el evaluador. Para engagements de pago, ejecuta tu propio servidor Interactsh (Apache-2.0, un solo binario Go) y apunta ptai hacia él:```bash
ptai start http://target --oast-server https://oast.example.com --oast-token <T>
Para deshabilitar OAST por completo:```bash ptai start http://target --no-oast
Las clases de vulnerabilidades ciegas no se detectarán cuando OAST esté desactivado; las rutas de detección en banda (delta de tamaño / marcadores de error SQL / firmas de metadatos / basadas en tiempo) aún se ejecutan.
## Ecosistema
| Repo | Descripción |
|---|---|
| [**pentest-ai**](https://github.com/0xSteph/pentest-ai) | Este repositorio. El servidor CLI y MCP. Producto Python. |
| [**pentest-ai-agents**](https://github.com/0xSteph/pentest-ai-agents) | Archivos markdown independientes de subagentes de Claude Code. Opcional, se ejecuta sin este CLI. |
¿Necesitas espacios de trabajo compartidos, informes PDF con tu marca, SSO o un engagement gestionado? El [sitio web](https://pentestai.xyz) tiene paneles Pro / Team / Enterprise y una opción Launch Engagement de una sola vez. La herramienta OSS sigue siendo OSS, gratis para siempre.
## Comunidad
- **Discord:** [únete al servidor](https://discord.gg/6weeTAubJw). Chatea, obtén ayuda, comparte hallazgos, o simplemente observa.
- **Preguntas, ideas, comentarios:** [Discusiones de GitHub](https://github.com/0xSteph/pentest-ai/discussions)
- **Informes de errores:** [Incidencias de GitHub](https://github.com/0xSteph/pentest-ai/issues)
- **Show and tell:** publica el hallazgo más sorprendente que `ptai` te haya dado en [Show and tell](https://github.com/0xSteph/pentest-ai/discussions/categories/show-and-tell)
## FAQ
**¿Necesito una clave API?** No en la ruta MCP. Si usas ptai desde Claude Code, Cursor, Codex o Claude Desktop, tu suscripción existente es el LLM. Solo necesitas una clave en el CLI independiente (Ruta 3), e incluso allí puedes ejecutarlo completamente en local con Ollama. Consulta [Instalación](#install).
**¿Es realmente autónomo, o tengo que supervisarlo?** Tú sigues en el bucle. ptai está coordinado por LLM, no es autónomo: las sondas seleccionadas hacen la detección, el LLM razona sobre los resultados y tú tienes la última palabra. Pulsa Ctrl+C dos veces a mitad de la ejecución para tomar el control. Los agentes LLM totalmente autónomos completan el 21-31% de las tareas de pentest de principio a fin; los entornos asistidos por humanos alcanzan el 64%, y ptai está diseñado para ese segundo régimen.
**¿Es seguro apuntarlo a producción?** Solo con autorización por escrito, y solo con las salvaguardas activadas: `intensity=safe` omite las sondas que modifican el estado, `respect_rate_limits` respeta 429 / Retry-After, y `strict_scope` rechaza solicitudes fuera del host y deja de seguir redirecciones. Las tres están desactivadas por defecto, así que actívalas. Consulta [Uso responsable](#responsible-use).
**¿Por qué el número de Juice Shop es alto pero el del honeypot es más bajo?** Juice Shop es la aplicación vulnerable mejor documentada de internet, así que tanto el LLM como los autores de las sondas parten con ventaja. El honeypot privado mide fallos que escribimos nosotros mismos, por lo que su número es más bajo, y ese número más bajo es la señal honesta. Publicamos ambos. Consulta [Benchmarks](#benchmarks).
**¿Llama a casa?** Sin telemetría, y los hallazgos permanecen en tu disco. En la ruta MCP, tus indicaciones y la salida de la herramienta que lee tu cliente de IA pasan por la API de ese cliente, igual que cualquier sesión. La detección de vulnerabilidades ciegas (OAST) envía callbacks a oast.fun público por defecto: el contenido está cifrado con un par de claves local, pero el hecho de que se haya producido un callback, además de la IP de origen y la marca de tiempo, es visible para quien ejecute el colaborador. Auto-aloja Interactsh o ejecútalo con `--no-oast` para evitarlo. Consulta [Uso responsable](#responsible-use).
**¿Cuánto cuesta ejecutarlo?** En la ruta MCP, nada más allá de tu suscripción de IA, que gestiona su propia facturación. En el CLI independiente, ptai limita el gasto a $10 por engagement por defecto; cámbialo con `PTAI_PRICE_LIMIT`. Consulta [Instalación](#install).
**¿En qué se diferencia de simplemente usar Claude o PentestGPT?** Una biblioteca de sondas deterministas seleccionadas encuentra los fallos; el LLM ejecuta el bucle de fases y razona sobre los resultados, no escanea. Por eso los hallazgos se reproducen y se entregan con un PoC funcional en lugar de una suposición del LLM. Consulta [Por qué es diferente](#why-its-different) y [vs el resto](#vs-the-field).
## Historial de estrellas
<a href="https://star-history.com/#0xSteph/pentest-ai&Date">
<img src="https://assets.kitploit.com/production/public/readmes/placeholders/f0fc86cfe65f76d40e15aaec61704ec8220a56dc89d4be03c46f67cb31b9fa8c.svg" alt="Gráfico del historial de estrellas" width="600">
</a>
## Licencia
MIT. Haz lo que quieras con él.
<div align="center">
**Si `ptai` te salvó un domingo, [dale una estrella al repositorio](https://github.com/0xSteph/pentest-ai). Es el único pago que pido.**
</div>