Agente autónomo de pruebas de penetración con IA que orquesta el reconocimiento, la explotación, la post-explotación y la generación de informes multiagente, con un estado de compromiso persistente.
Agente de pruebas de penetración con IA en tu terminal.
Arquitectura multiagente • Seguimiento del estado del engagement • Más de 20 proveedores de LLM
PentestCode es un agente autónomo de pentesting para tu terminal. Apúntalo a un objetivo y ejecuta las herramientas, lee la salida, actualiza su imagen de la red y decide qué hacer a continuación, tal como lo haría un operador. Es un fork duro de OpenCode (MIT), despojado del enfoque en edición de código y reconstruido para seguridad ofensiva.
Beta — resiste en engagements reales y CTFs, pero espera asperezas. Abre un issue cuando algo falle; eso es lo que lo mejora.
Una instrucción de entrada, una cadena de ataque completa de salida:
you: "pentest 10.10.10.5, goal is domain admin"
| Etapa | Qué hace el agente |
|---|---|
| Escaneo | nmap -sS -p- encuentra 7 puertos abiertos y analiza el XML directamente al estado del engagement |
| Reconocimiento | Puertos 88 + 389 → Controlador de dominio. Despliega tres enumeradores en paralelo (SMB, LDAP, HTTP) |
| Enumeración | Sesión SMB nula → recurso compartido con escritura. LDAP → lista de usuarios. Gobuster → directorios web |
| Ataque | AS-REP roast → hash crackeable → primera credencial válida |
| Spray | Esa credencial se rocía contra SMB, WinRM, LDAP y RDP en cada host conocido |
| Explotación | Punto de apoyo en WinRM → el agente de post-explotación vuelca SAM / LSA / DPAPI |
| Resultado | Hash de administrador de dominio en mano — cada paso registrado con su cadena de evidencia |
Es metódico donde la gente se vuelve perezosa: rocía cada credencial contra cada servicio en cada host, y no olvida comprobar cosas. Todo lo que aprende aterriza en un estado estructurado que puedes consultar a mitad de ejecución con /status, /vulns o /creds.
npm install -g pentestcode-ai
# via curl
curl -fsSL https://raw.githubusercontent.com/s0ld13rr/pentestcode/main/install.sh | bash
Un único binario autocontenido — sin Bun, Node ni runtime que instalar. Linux y macOS, x64 y arm64.
Arch Linux (AUR):
paru -S pentestcode-bin
Fijar versión:
PENTESTCODE_VERSION=0.1.7 curl -fsSL https://raw.githubusercontent.com/s0ld13rr/pentestcode/main/install.sh | bash
Directorio personalizado:
PENTESTCODE_INSTALL=/usr/local/bin curl -fsSL https://raw.githubusercontent.com/s0ld13rr/pentestcode/main/install.sh | bash
Desde el código fuente:
bun install
bun run build --single --skip-embed-web-ui
# binary at packages/opencode/dist/pentestcode-<os>-<arch>/bin/pentestcode
pentestcode auth login # connect your LLM provider
pentestcode # interactive session
pentestcode --prompt "scan 10.10.10.0/24 and enumerate all services" # one-shot
Funciona con más de 20 proveedores a través de ai-sdk — Anthropic, OpenAI, Google, Azure, AWS Bedrock, Ollama y más.
Dos cosas separan a PentestCode de un prompt de pentester pegado en una ventana de chat: un equipo de agentes y una memoria que comparten.
El diseño sigue el modelo estratega-coordinador de la investigación HPTSA — una mejora de 4,3× sobre un único agente:
┌─────────────┐
│ pentest │ strategist / coordinator
│ (lead) │ plans, dispatches, tracks state
└──────┬──────┘
┌───────┬───────┼───────┬───────┐
▼ ▼ ▼ ▼ ▼
┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐
│recon ││scan- ││explo-││iden- ││post- │
│ ││ner ││iter ││tity ││explo │ ... + 7 more
└──────┘└──────┘└──────┘└──────┘└──────┘
El agente líder (pentest) divide el engagement en tareas y despliega subagentes especialistas en paralelo — cada uno con su propio prompt de sistema, permisos de herramientas y conocimiento de dominio. 13 agentes en total: recon, scanner, enumerator, exploiter, identity (AD/Kerberos), infrastructure (SNMP/IPMI/bases de datos), webapp (OWASP Top 10), post-exploit, exploit-dev, critic (verificador de falsos positivos), reporter, más agentes ocultos para compresión de contexto y gestión de sesiones.
Cuando el escáner encuentra un puerto, el enumerador lo ve al instante — porque cada agente lee y escribe en un único estado del engagement estructurado:
El estado sobrevive a la sesión: cierra la terminal, vuelve mañana y el agente retoma donde lo dejó. Junto a él, un findings.md legible por humanos registra cada vulnerabilidad, credencial y acceso obtenido con marcas de tiempo — hazle tail -f para ver cómo se desarrolla el engagement.
18 herramientas de pentesting integradas además de bash. Las herramientas de análisis son obligatorias: tras ejecutar nmap el agente debe canalizar la salida a través de nmap_parse en lugar de hacer grep del XML a mano, para que cada hallazgo llegue al estado del engagement.