
pentest-ai v1.3.1
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
No señala. Demuestra.
Sitio web · Instalación · Por qué la verificación · Benchmarks · Límites · Discord
⚠️ Herramienta ofensiva, solo para pruebas autorizadas. Al instalarla 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 e imprime 4 findings, 3 oracle-VERIFIED.
Reproduce una en vivo desde una cápsula de prueba (replay 3/3), luego ejecuta las mismas rutas
endurecidas e imprime 0 findings.
Dos cosas a tener en cuenta. 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 candidato: el bypass de login por SQLi es real, pero ningún oráculo pudo volver a probarlo en esa ruta, por lo que no recibe una insignia. Esa brecha es el producto funcionando, no un error en la demo.
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 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 gana VERIFIED.
Tres propiedades hacen que esto sea más que un eslogan:
Ningún LLM produce jamás un veredicto. La regla se aplica en el 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 verificació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 propios oráculos de ptai los vuelve a probar de forma independiente.
Cada hallazgo VERIFIED se entrega como una cápsula de prueba portátil — el hallazgo, la
receta para volver a probarlo y el recibo. Cualquiera puede ejecutar ptai replay contra el
objetivo en vivo y ver al oráculo re-confirmar, sin confiar en ptai. Las cápsulas están
deliberadamente sin firmar: la reproducción es el mecanismo de confianza, no una firma que tengas que
aceptar por fe.
Números honestos
| Clases de vulnerabilidad con un oráculo funcional | 14 |
| Sondas en la biblioteca | 63 |
| Sondas que pueden ganar VERIFIED | 28 |
| Tipos de oráculos | 23 |
| Envoltorios de herramientas | 203 |
| …que convierten la salida en hallazgos hoy | 18 |
| Herramientas MCP | 52 |
| Agentes especialistas | 18 |
| Pruebas | 2,729 en Python 3.10 / 3.12 / 3.14 |
En un honeypot deliberadamente vulnerable, 23 hallazgos se verifican en esas 14 clases con una precisión del 100% y cero falsos positivos. En un OWASP Juice Shop estándar, 12 se verifican en un solo escaneo.
Lee esos números con atención, porque las brechas son el punto. Existen 63 sondas pero solo 28 pueden ganar un veredicto; las otras 35 reportan candidatos honestos. Hay 203 envoltorios registrados pero solo 18 convierten la salida de la herramienta en hallazgos — el resto se ejecutan y devuelven texto sin procesar. La puerta del oráculo compra precisión, no tasa de captura: elimina falsos positivos, no encuentra más bugs.
El arnés del honeypot (tests/honeypot/) y una puerta de cero falsos positivos
en una aplicación limpia (tests/cleanapp/) se incluyen en este
repositorio y se ejecutan en CI, por lo que son reproducibles en lugar de capturas de pantalla.
Lo que no hace
Dicho claramente, porque una herramienta de seguridad que se sobrevende es peor que inútil.
- Es un escáner de aplicaciones web. Las 63 sondas y los 23 tipos de oráculos apuntan a HTTP. AD, nube, móvil e inalámbrico tienen agentes y envoltorios de herramientas, pero no una biblioteca de sondas ni oráculos detrás.
- No puede hacer escalada de privilegios local. Eso requiere ejecución de código en un host
que ya posees. ptai prueba de forma remota y no tiene ese canal, por lo que el agente
de privesc reporta
unsupporteden 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 de osv.dev en manifiestos filtrados.
- Los playbooks planifican, no ejecutan.
ptai playbook runresuelve 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 — Úsalo desde Claude Code, Cursor o Codex (sin clave de API)
Tu suscripción de IA existente es el LLM. ptai proporciona las herramientas.
pip install ptai
ptai mcp install # detecta automáticamente tus clientes MCP y escribe sus configuraciones
Reinicia el cliente y las 52 herramientas estará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-... # o OPENAI_API_KEY
ptai start https://target.example.com
# totalmente local, sin nube:
export PENTEST_AI_LLM_PROVIDER=ollama
# o determinista, sin LLM en absoluto:
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 # o recommended / full
ptai tools install nmap nuclei # o por nombre
ptai serve # HTTP REST + WebSocket para paneles
ptai menu # lanzador interactivo, sin LLM
Al inicio del compromiso, el planificador predice qué herramientas necesitará la ejecución y pregunta una vez para instalar las que falten. Si lo rechazas, la respuesta persiste.
Benchmarks
Reproducibles, en git, con artefactos sin procesar. Sin "tasa de detección del 98,7%" que no puedas auditar.
| Herramienta | Hallazgos | Críticos+Altos | Cubos OWASP | Tasa de FP |
|---|---|---|---|---|
| ptai | 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, evaluador único, una sola pasada en OWASP Juice Shop. Metodología y salida sin procesar en
benchmarks/; informe 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 (nube, binario, CTF) y probablemente supera a ptai en superficies tradicionales rastreables como WordPress. Juice Shop también es la aplicación vulnerable más documentada de internet, por lo que tanto el LLM como los autores de sondas tienen ventaja — que es exactamente por qué el número del honeypot privado es más bajo, y por qué ambos se publican.
Intégralo 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 con un hallazgo que un oráculo realmente probó,
por lo 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 ella, se ejecuta como un bucle de herramientas determinista. 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 conectan un escaneo autenticado a cada PR, con una puerta que solo se activa con hallazgos probados. 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 probados 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ú, o un espacio de trabajo alojado con historial y acceso para el equipo, ambos están en pentestai.xyz. Cada hallazgo en un compromiso entregado incluye una cápsula de prueba que tus ingenieros pueden reproducir ellos mismos, que es un artefacto materialmente diferente de un PDF lleno de calificaciones 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 tener 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 la
invocación de la herramienta. Tres salvaguardas vienen desactivadas por defecto y vale la pena activarlas:
intensity=safe omite las sondas que mutan el 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 nuevo par de claves RSA-2048 localmente. Las cargas útiles de interacción se cifran con AES-CTR-256 en reposo con la clave envuelta en RSA-OAEP-SHA256 para tu clave pública, por lo 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 requieren cada vez más infraestructura de callbacks controlada por el evaluador. Para compromisos de pago, auto-aloja Interactsh:
ptai start http://target --oast-server https://oast.example.com --oast-token <T>
ptai start http://target --no-oast # o desactívalo por completo
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 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 salvaguardas anteriores activadas.
¿Hace llamadas a casa? Sin telemetría; los hallazgos permanecen en tu disco. Los callbacks OAST son
la única excepción — consulta arriba, o ejecuta --no-oast.
¿En qué se diferencia de pedirle a Claude que hackee algo? Una biblioteca determinista de sondas curada encuentra los bugs y un oráculo de máquina los prueba. Un LLM solo te da una suposición plausible sin forma de saber si es real.
Ecosistema
| Repo | Qué es |
|---|---|
| pentest-ai | Este repositorio. CLI + servidor MCP. |
| pentest-ai-agents | Archivos de subagentes independientes de Claude Code. Opcional. |
Comunidad: Discord · Discusiones · Issues
Historial de estrellas
Licencia
MIT. Haz lo que quieras con ella.
Si ptai te ahorró un domingo, dale una estrella al repositorio.