Volver a actualizaciones
Nuevo releaseSep 4, 2026

pentest-ai v1.4.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.

Compartir
pentest-ai

pentest-ai

No lo señala. Lo demuestra.

PyPI Python CI License Stars Discord

Sitio web · Instalación · Por qué la verificación · Benchmarks · Límites · Discord

⚠️ Herramienta ofensiva, solo para pruebas autorizadas. Al instalar aceptas la AUP y los Términos. Consulta Uso responsable ↓

Dos minutos, sin clave de API, sin objetivo propio

pip install ptai && ptai demo

ptai demo escanea una aplicación vulnerable incluida y muestra 4 findings, 3 oracle-VERIFIED. Reproduce uno en vivo desde una cápsula de prueba (replay 3/3), luego ejecuta las mismas rutas endurecidas e imprime 0 findings.

Dos cosas a notar. Los hallazgos aparecen y desaparecen con la vulnerabilidad en lugar de porque la herramienta se quedó en silencio — lo único que cambió entre las dos ejecuciones es la corrección. Y uno de los cuatro sigue siendo un candidato: el bypass de login por SQLi es real, pero ningún oráculo pudo volver a demostrarlo en esa ruta, así que no obtiene una insignia. Esa brecha es el producto funcionando, no un error en la demo.

ptai escaneando OWASP Juice Shop: los hallazgos pasan de candidato a oracle-VERIFIED

Qué significa realmente VERIFIED aquí

La mayoría de los escáneres te dicen que algo podría ser explotable y te dejan el triaje a ti. ptai trata un hallazgo como un candidato hasta que un oráculo de máquina con nombre vuelve a ejecutar el exploit y lo reproduce N de N veces. Solo entonces obtiene VERIFIED.

Tres propiedades hacen que eso sea más que un eslogan:

Ningún LLM produce jamás un veredicto. La regla se aplica en código, no por política: un veredicto que no puede nombrar el oráculo que lo obtuvo es rechazado. Un LLM coordina la ejecución y razona sobre los resultados. Nunca decide si un bug es real.

Cada oráculo tiene un control que debe fallar. Un bypass de cabecera de confianza tiene que devolver contenido privilegiado con la cabecera y una denegación sin ella. Una comprobación de credenciales filtradas tiene que ser aceptada para el secreto real y rechazada para un gemelo deliberadamente corrupto. Un endpoint que responde 200 a todo no gana nada. Esto es lo que evita que "devolvió 200" se confunda con una prueba.

La salida de escáneres de terceros se retiene. Los resultados de nuclei, nikto y zap no se convierten en hallazgos por su propia autoridad. Permanecen sin verificar hasta que uno de los oráculos propios de ptai los vuelve a demostrar de forma independiente.

Cada hallazgo VERIFIED se entrega como una cápsula de prueba portátil — el hallazgo, la receta para volver a demostrarlo y el recibo. Cualquiera puede hacer ptai replay contra el objetivo en vivo y ver al oráculo reconfirmar, sin confiar en ptai. Las cápsulas son deliberadamente sin firma: el replay es el mecanismo de confianza, no una firma que tengas que aceptar por fe.

Números honestos

Clases de vulnerabilidad con un oráculo funcional14
Sondas en la biblioteca64
Sondas que pueden obtener VERIFIED30
Tipos de oráculo24
Envoltorios de herramientas203
…que hoy convierten la salida en hallazgos18
Herramientas MCP52
Agentes especialistas18
Pruebas2.729 en Python 3.10 / 3.12 / 3.14

En un honeypot deliberadamente vulnerable, 23 hallazgos se verifican en esas 14 clases con 100% de precisión y cero falsos positivos. En un OWASP Juice Shop estándar, 17 hallazgos se verificaron en el barrido del 2026-08-23 — informe HTTP en alcance / verificado / precisión, no 17/116. Una sesión MCP Path 1 del 2026-08-25 (cliente MCP ejecutando run_probe, el objetivo murió antes de la verificación del orquestador) obtuvo 12 pruebas verificadas con 100% de precisión frente a 64 desafíos HTTP en alcance (20 no se perseguirán). Las claves de OSINT, Web3 y solo-UI de Juice Shop quedan fuera del marcador de automatización por diseño.

Lee esos números con atención, porque las brechas son el punto. Existen 64 sondas pero solo 30 pueden obtener un veredicto; las otras 34 reportan candidatos honestos. 203 envoltorios están registrados pero solo 18 convierten la salida de herramientas en hallazgos — el resto se ejecutan y devuelven texto sin procesar. La puerta del oráculo compra precisión, no tasa de detección: elimina falsos positivos, no encuentra más bugs.

El arnés del honeypot (tests/honeypot/) y una puerta de cero falsos positivos para aplicaciones limpias (tests/cleanapp/) se incluyen en este repositorio y se ejecutan en CI, así que son reproducibles en lugar de capturas de pantalla.

Qué no hace

Dicho claramente, porque una herramienta de seguridad que se sobrevalora es peor que inútil.

  • Es un escáner de aplicaciones web. Las 64 sondas y los 24 tipos de oráculo apuntan a HTTP. AD, cloud, móvil y wireless tienen agentes y envoltorios de herramientas, pero no hay biblioteca de sondas ni oráculos detrás de ellos.
  • No puede hacer escalada de privilegios local. Eso requiere ejecución de código en un host que ya controlas. ptai prueba de forma remota y no tiene ese canal, así que el agente de privesc reporta unsupported en lugar de un cero engañoso.
  • No es un escáner de CVE. No hay base de datos de versión-a-CVE ni biblioteca de exploits. El trabajo de CVE se limita a consultas a osv.dev sobre manifiestos filtrados.
  • Los playbooks planifican, no ejecutan. ptai playbook run resuelve dependencias e imprime el plan. Ejecutarlo contra un objetivo aún no está conectado.
  • No es autónomo. Los agentes de pentest LLM totalmente autónomos completan el 21–31% de las tareas de principio a fin; las configuraciones asistidas por humanos alcanzan el 64%. ptai está construido para el segundo régimen. Pulsa Ctrl+C dos veces para tomar el control a mitad de ejecución.

La lista completa de defectos internos, incluido todo lo anterior, se rastrea abiertamente en lugar de en silencio. Si algo aquí está mal, abre un issue y se corregirá.

Instalación

Ruta 1 — Manejarlo desde Claude Code, Cursor o Codex (sin clave de API)

Tu suscripción de IA existente es el LLM. ptai aporta las herramientas.

pip install ptai
ptai mcp install          # auto-detects your MCP clients and writes their configs

Reinicia el cliente y las 52 herramientas están ahí. No se necesita clave de Anthropic en esta ruta — el servidor MCP no aloja ningún LLM propio por diseño.

Ruta 2 — CLI independiente
pip install ptai
export ANTHROPIC_API_KEY=sk-...        # or OPENAI_API_KEY
ptai start https://target.example.com

# fully local, no cloud:
export PENTEST_AI_LLM_PROVIDER=ollama

# or deterministic, no LLM at all:
ptai start https://target.example.com --no-llm

El gasto está limitado a $10 por compromiso por defecto (PTAI_PRICE_LIMIT).

Herramientas de seguridad, API REST y otras opciones
ptai tools install --tier core     # or recommended / full
ptai tools install nmap nuclei     # or by name
ptai serve                         # HTTP REST + WebSocket for dashboards
ptai menu                          # interactive launcher, no LLM

Al inicio del compromiso, el planificador predice qué herramientas necesita la ejecución y pregunta una vez para instalar las que faltan. Si rechazas, la respuesta persiste.

Benchmarks

Reproducibles, en git, con artefactos sin procesar. Sin "98,7% de tasa de detección" que no puedas auditar.

HerramientaHallazgosCrítico+AltoCategorías OWASPTasa de FP
ptai884650%
ZAP 2.17.05930147%
Nuclei 3.8.01010%
HexStrike v6.01101

n=1, un solo evaluador, una sola ejecución en OWASP Juice Shop. Metodología y salida sin procesar en benchmarks/; análisis completo en docs/benchmarks/juice-shop.md.

La lectura honesta: ptai es fuerte en objetivos web SPA con cobertura de sondas curada. HexStrike es más amplio (cloud, binario, CTF) y probablemente supera a ptai en superficies rastreables tradicionales como WordPress. Juice Shop es además la aplicación vulnerable mejor documentada de internet, así que tanto el LLM como los autores de las sondas tienen ventaja — que es exactamente por qué el número del honeypot privado es más bajo, y por qué ambos se publican.

Ponlo en CI

- run: pip install ptai
- run: ptai start ${{ vars.STAGING_URL }} --ci --fail-on verified --sarif pentest.sarif
- uses: github/codeql-action/upload-sarif@v3
  with: { sarif_file: pentest.sarif }

--fail-on verified rompe la compilación solo ante un hallazgo que un oráculo realmente demostró, así que la puerta no puede activarse por ruido del escáner. SARIF se sube a GitHub Code Scanning, los hallazgos se publican como comentario en el PR. Plantillas de GitLab y Jenkins en docs/ci-cd.md.

Cómo funciona

recon ──▶ auth ──▶ web ──┬──▶ ad
                         ├──▶ cloud          ┌──────────────────┐
                         └──▶ api ──────────▶│  findings DB     │
                                             │  scope-guarded   │
                                             └────────┬─────────┘
                                                      ▼
                                          verify (oracles, N/N)
                                                      ▼
                                   chain ─▶ validate ─▶ detect ─▶ report
                                          md · html · pdf · SARIF · JUnit

18 agentes especialistas ejecutan las fases. Con una clave de API cada uno usa un LLM para razonar sobre los resultados; sin una, se ejecuta como un bucle determinista de herramientas. El orden de las fases y la detección son idénticos en ambos casos — las sondas encuentran los bugs, el LLM solo coordina.

Para quién es

Equipos de AppSec que integran un escaneo autenticado en cada PR, con una puerta que solo se activa ante hallazgos demostrados. Consultores que quieren que el informe se escriba solo y una cápsula que los propios ingenieros del cliente puedan reproducir. Cazadores de bug bounty que prefieren hacer triaje de 12 hallazgos demostrados que de 600 quizás. Usuarios de Claude Code / Cursor / Codex que quieren herramientas reales detrás de su asistente sin otra factura de API.

Trabaja conmigo

La herramienta es MIT y gratuita para siempre — eso no cambiará.

Si quieres un pentest entregado en lugar de ejecutarlo tú mismo, o un espacio de trabajo alojado con historial y acceso de equipo, ambos están en pentestai.xyz. Cada hallazgo en un compromiso entregado se envía con una cápsula de prueba que tus ingenieros pueden reproducir ellos mismos, lo cual es un artefacto materialmente distinto de un PDF lleno de puntuaciones de severidad.

Preguntas: [email protected]

Uso responsable

ptai ejecuta operaciones reales de red y host contra los objetivos que especifiques. Eres el único responsable de contar con autorización escrita explícita para cada objetivo. Probar sistemas que no posees puede violar la Computer Fraud and Abuse Act, la Computer Misuse Act 1990, el Artículo 32 del GDPR y equivalentes en otros lugares.

La primera ejecución solicita la aceptación de la AUP y la persiste. Establece PENTEST_AI_AUP_ACCEPTED=1 en CI. Los hosts fuera de alcance se rechazan en el momento de invocación de la herramienta. Tres barreras de protección se envían desactivadas por defecto y vale la pena activarlas: intensity=safe omite sondas que mutan estado, respect_rate_limits respeta 429/Retry-After, y strict_scope rechaza solicitudes fuera del host.

Callbacks fuera de banda (OAST) — privacidad

Las clases ciegas (SSRF/SQLi/XXE ciegos, XSS almacenado, SSTI, Log4Shell) se detectan mediante callbacks que por defecto se enrutan al oast.fun público de ProjectDiscovery.

Cada compromiso genera un par de claves RSA-2048 nuevo localmente. Las cargas útiles de interacción se cifran en reposo con AES-CTR-256 con la clave envuelta en RSA-OAEP-SHA256 hacia tu clave pública, así que solo tu proceso local puede descifrarlas. Pero los metadatos son visibles para el servidor: que ocurrió una interacción, la IP de origen del objetivo, la marca de tiempo y el protocolo.

PortSwigger prohíbe el uso de colaboradores públicos en sus reglas de bug bounty, y los programas grandes cada vez exigen más infraestructura de callback controlada por el tester. Para compromisos de pago, autoaloja Interactsh:

ptai start http://target --oast-server https://oast.example.com --oast-token <T>
ptai start http://target --no-oast          # or disable entirely

FAQ

¿Necesito una clave de API? No en la ruta MCP — tu suscripción de Claude Code / Cursor / Codex es el LLM. Solo la CLI independiente necesita una, e incluso ahí Ollama se ejecuta totalmente en local.

¿Es autónomo? No, y no pretende serlo. Las sondas detectan, el LLM coordina, tú decides. Ctrl+C dos veces toma el control a mitad de ejecución.

¿Es seguro contra producción? Solo con autorización escrita y las tres barreras de protección anteriores activadas.

¿Llama a casa? No por defecto. Los hallazgos permanecen en tu disco. Puedes optar por contadores de uso anónimos con ptai telemetry enable (sin objetivos, sin hallazgos; esquema en engine/telemetry.py). Los callbacks OAST van por defecto a oast.fun de ProjectDiscovery a menos que pases --oast-server o --no-oast.

¿En qué se diferencia esto de pedirle a Claude que hackee algo? Una biblioteca de sondas determinista y curada encuentra los bugs y un oráculo de máquina los demuestra. Un LLM solo te da una conjetura plausible sin forma de saber si es real.

Ecosistema

RepoQué
pentest-aiEste repo. CLI + servidor MCP.
pentest-ai-agentsArchivos de subagente de Claude Code independientes. Opcional.

Comunidad: Discord · Discussions · Issues

Historial de estrellas

El antiguo gráfico en línea (api.star-history.com) está vacío: GitHub restringió la API pública de stargazers de la que dependían esos SVG. La serie en vivo está en star-history.com. El README no enlaza directamente a un host de reemplazo — el navegador de cada visitante habría descargado ese SVG.

Licencia

MIT. Haz lo que quieras con él.

Si ptai te ahorró un domingo, dale una estrella al repo.

Categorías