
Servidor MCP de pruebas de penetración impulsado por IA
"En la mitología japonesa, el Tengu es un feroz espíritu de la montaña — maestro estratega, guerrero y entrenador de samuráis. En ciberseguridad, te guía a través de cada fase de la caza."
Desde el reconocimiento hasta el informe — pentesting asistido por IA en un solo comando.
Tengu es un servidor MCP que convierte a Claude en un copiloto de pruebas de penetración. Orquesta 80 herramientas de seguridad — desde Nmap hasta Metasploit — con controles de seguridad integrados, registro de auditoría e informes profesionales.
Usa a Claude como un copiloto de pentest interactivo — tú diriges el compromiso, Claude selecciona las herramientas adecuadas y las encadena automáticamente.
git clone https://github.com/rfunix/tengu.git && cd tengu make docker-build make docker-up
Conecte Claude Code al servidor en ejecución:```bash
claude mcp add --transport sse tengu http://localhost:8000/sse
Luego pídele a Claude: Do a full pentest on http://192.168.1.100
Claude encadena herramientas automáticamente: validate_target → whatweb → nmap → nikto →
nuclei → sqlmap → correlate_findings → generate_report
| Comando | Lo que inicia |
|---|
Escanea objetivos personalizados sin editar archivos:```bash TENGU_ALLOWED_HOSTS="192.168.1.0/24,10.0.0.0/8" make docker-up
### Niveles de imagen
Elige el tamaño adecuado para tu caso de uso:
| Nivel | Tamaño | Herramientas MCP | Caso de uso |
|------|------|-----------|----------|
| `minimal` | ~480MB | 17 | Análisis ligero, investigación de CVE, informes |
| `core` | ~7GB | 47 | Kit completo de pentest (predeterminado) |
| `full` | ~8GB | 80 | Todo + AD, inalámbrico, sigilo/OPSEC |```bash
TENGU_TIER=minimal make docker-build # lightweight
TENGU_TIER=core make docker-build # default
TENGU_TIER=full make docker-build # everything
Todos los niveles incluyen las 35 indicaciones y 20 recursos — solo las herramientas binarias difieren.
Requisitos previos: Python 3.12+, uv, Kali Linux (recomendado)```bash
git clone https://github.com/rfunix/tengu.git && cd tengu
uv sync
make install-tools
uv run tengu
Conecta Claude Code:```bash
claude mcp add --scope user tengu -- uv run --directory /path/to/tengu tengu
Configure los destinos permitidos en tengu.toml:```toml
[targets]
allowed_hosts = ["192.168.1.0/24", "example.com"]
Para Claude Desktop, configuración remota de VM/SSE y configuraciones avanzadas, consulta [docs/deployment-guide.md](https://github.com/rfunix/tengu/blob/HEAD/docs/deployment-guide.md).
</details>
### Referencia de Configuración```toml
[targets]
# REQUIRED: Only these hosts will be scanned
allowed_hosts = ["192.168.1.0/24", "example.com"]
blocked_hosts = [] # Always blocked, even if in allowed_hosts
[stealth]
enabled = false # Route traffic through Tor/proxy
[stealth.proxy]
enabled = false
type = "socks5h"
host = "127.0.0.1"
port = 9050
[osint]
shodan_api_key = "" # Required for shodan_lookup
[tools.defaults]
scan_timeout = 300 # seconds
make docker-up | Servidor Tengu MCP (:8000) |
make docker-lab | + Juice Shop, DVWA (objetivos seguros de práctica) |
make docker-pentest | + Metasploit, OWASP ZAP (objetivos del mundo real) |
make docker-full | + Metasploit, ZAP, y objetivos de laboratorio |
Consulta docs/configuration-reference.md para la referencia completa.
Realiza una prueba de penetración completamente autónoma sin invocación manual de herramientas. El agente utiliza Claude como su cerebro estratégico y Tengu como su conjunto de herramientas de ejecución, siguiendo la metodología PTES desde el reconocimiento hasta la generación de informes.
cp .env.example .env
**Objetivos del laboratorio (Juice Shop, DVWA):**```bash
make docker-lab
make docker-agent # default model (sonnet)
make docker-agent-haiku # cheaper — claude-haiku-4-5, max_tokens=1024
make docker-agent-sonnet # balanced — claude-sonnet-4-6, max_tokens=4096
Pentest del mundo real (Tengu + MSF + ZAP, sin contenedores de laboratorio):```bash make docker-pentest make docker-agent
**Ver informes en el navegador:**```bash
make docker-report-view # http://localhost:8888 — styled HTML, all reports
make docker-report-browse # same, auto-opens browser
REPORT_PORT=9999 make docker-report-view # custom port
Sin Docker:```bash uv sync --extra agent python autonomous_tengu.py 192.168.1.100 --scope 192.168.1.0/24 --type blackbox
python autonomous_tengu.py 192.168.1.100 --model claude-haiku-4-5 --max-tokens 1024 --timeout 30
**Control de costos** — tres variables de entorno / indicadores CLI:
| Indicador | Var. entorno | Predeterminado |
|---|---|---|
| `--model` | `TENGU_AGENT_MODEL` | `claude-sonnet-4-6` |
| `--max-tokens` | `TENGU_AGENT_MAX_TOKENS` | `2048` |
| `--timeout` | `TENGU_AGENT_TIMEOUT` | `60` (minutos, `0`=ilimitado) |
### Cómo funciona```
START → initializer → strategist ─┬─→ executor → analyst ─┬─→ strategist (loop)
│ └─→ reporter → END
├─→ human_gate → executor
└─→ reporter → END
Comportamientos clave:
msf_run_module, hydra_attack, impacket_kerberoast, sqlmap_scan con nivel≥3)--max-iterationscorrelate_findings + score_risk + generate_report| Fase | Nombre | Qué Hace Tengu | Herramientas Clave |
|---|---|---|---|
| 1 | Pre-Compromiso | validate_target confirma el alcance, check_tools verifica la preparación | validate_target, check_tools |
| 2 | Recopilación de Inteligencia | OSINT, reconocimiento DNS, enumeración de subdominios, huella tecnológica | nmap, subfinder, amass, shodan, whatweb |
| 3 | Modelado de Amenazas | Claude analiza la inteligencia recopilada, prioriza la superficie de ataque, construye escenarios de amenaza | (Impulsado por IA — sin herramienta externa) |
| 4 | Análisis de Vulnerabilidades | Escaneo de plantillas, pruebas de aplicaciones web, análisis SSL/TLS, fuzzing de parámetros | nuclei, nikto, ffuf, sqlmap, testssl |
| 5 | Explotación | Explotación controlada de vulnerabilidades confirmadas con intervención humana | msf_run_module, sqlmap, hydra, searchsploit |
| 6 | Post-Explotación | Recolección de credenciales, evaluación de movimiento lateral, escalada de privilegios | impacket_kerberoast, nxc_enum, enum4linux |
| 7 | Reporte | Correlacionar todos los hallazgos, calcular puntuaciones de riesgo, generar informe profesional | correlate_findings, score_risk, generate_report |
mínimo(17 herramientas, ~480MB) ·núcleo(47 herramientas, ~7GB, predeterminado) ·completo(80 herramientas, ~8GB) Construir con:TENGU_TIER=<tier> make docker-build. Todos los niveles incluyen las 35 indicaciones y 20 recursos.
| Categoría | Herramientas | Cantidad |
|---|---|---|
| Reconocimiento | Nmap, Masscan, Amass, Subfinder, Gowitness, HTTrack, Katana, httpx, SNMPwalk, RustScan | 10 |
| Escaneo Web | Nikto, Nuclei, FFUF, Gobuster, WPScan, Feroxbuster, OWASP ZAP, wafw00f | 8 |
| SSL / TLS | sslyze, testssl.sh, análisis de cabeceras HTTP, probador CORS | 4 |
| DNS | DNS Enumerate, DNSRecon, Subjack, WHOIS | 4 |
| OSINT | theHarvester, Shodan, WhatWeb, DNStwist | 4 |
| Pruebas de Inyección | SQLMap, Dalfox (XSS), Commix, CRLFuzz, GraphQL Security Check, Arjun | 6 |
| Fuerza Bruta | Hydra, John the Ripper, Hashcat, CeWL | 4 |
| Explotación | Metasploit (search, info, run, sessions, cmd), SearchSploit | 6 |
| Ingeniería Social | Recolector de credenciales SET, ataque de código QR, generador de payloads | 3 |
| Secretos y Código | TruffleHog, Gitleaks | 2 |
| Contenedor y Nube | Trivy, Checkov, ScoutSuite, Prowler | 4 |
| Active Directory | NetExec, Enum4linux, Impacket (Kerberoast, secretsdump, psexec, wmiexec, smbclient), BloodHound, Responder, SMBMap | 10 |
| Inalámbrico | aircrack-ng / airodump-ng | 1 |
| Anonimato y Sigilo | Tor check/rotate, proxy check, rotación de identidad | 5 |
| Análisis y Reporte | Correlación de hallazgos, puntuación de riesgo CVSS, generación de informes | 3 |
| Inteligencia CVE | Consulta de CVEs (NVD), búsqueda de CVE por palabra clave/producto/severidad | 2 |
| Utilidad | Verificador de herramientas, validador de objetivo | 2 |
| Herramienta | Descripción |
|---|---|
nmap_scan | Escaneo de puertos y detección de servicios/SO |
masscan_scan | Escáner de puertos de alta velocidad para redes grandes |
subfinder_enum | Enumeración pasiva de subdominios |
amass_enum | Mapeo de superficie de ataque y DNS brute-force |
dnsrecon_scan | Reconocimiento DNS (transferencia de zona, fuerza bruta, PTR) |
dns_enumerate | Enumeración de registros DNS (A, MX, NS, TXT, SOA…) |
whois_lookup | Consulta WHOIS de dominio y IP |
subjack_check | Detección de toma de control de subdominios |
gowitness_screenshot | Captura de pantalla web para documentación |
httrack_mirror | Espejo completo de sitio web para análisis y forensia sin conexión |
katana_crawl | Rastreador web rápido para descubrimiento de enlaces y mapeo de endpoints |
httpx_probe | Sonda HTTP — códigos de estado, pila tecnológica, redirecciones |
snmpwalk_scan | Enumeración SNMP y recorrido de MIB |
rustscan_scan | Escaneo de puertos ultrarrápido (encuentra puertos abiertos para seguimiento con Nmap) |
| Herramienta | Descripción |
|---|---|
theharvester_scan | Enumeración de correos electrónicos, subdominios y hosts desde fuentes públicas |
| Herramienta | Descripción |
|---|---|
set_credential_harvester | Clonar un sitio web y capturar credenciales enviadas (simulaciones de phishing autorizadas) |
set_qrcode_attack | Generar código QR que apunte a una URL para evaluaciones físicas de ingeniería social |
set_payload_generator | Generar payloads de ingeniería social (PowerShell, HTA) para campañas autorizadas |
| Herramienta | Descripción |
|---|---|
hydra_attack | Fuerza bruta de inicio de sesión en red (SSH, FTP, HTTP, SMB…) |
| Herramienta | Descripción |
|---|---|
zap_spider | Araña web de OWASP ZAP |
zap_active_scan | Escaneo activo de vulnerabilidades de OWASP ZAP |
zap_get_alerts | Recuperar hallazgos del escaneo ZAP |
| Herramienta | Descripción |
|---|---|
trufflehog_scan | Detección de secretos filtrados en repositorios git |
gitleaks_scan | Escaneo de credenciales en historial de git |
| Herramienta | Descripción |
|---|---|
trivy_scan | Escaneo de vulnerabilidades para imágenes Docker, IaC y SBOM |
| Herramienta | Descripción |
|---|---|
scoutsuite_scan | Auditoría de seguridad en la nube (AWS, Azure, GCP) |
prowler_scan | Auditoría de mejores prácticas y cumplimiento de seguridad en AWS/GCP/Azure |
| Herramienta | Descripción |
|---|---|
aircrack_scan | Escaneo pasivo de redes inalámbricas (airodump-ng) |
| Herramienta | Descripción |
|---|---|
checkov_scan | Escaneo de configuraciones incorrectas de IaC (Terraform, K8s, Dockerfile) |
Plantillas de flujo de trabajo preconstruidas que guían a Claude a través de compromisos completos.
| Categoría | Indicaciones |
|---|---|
| Flujos de pentest | full_pentest, quick_recon, web_app_assessment |
| Evaluación de vulnerabilidades | assess_injection, assess_access_control, assess_crypto, assess_misconfig |
| OSINT | osint_investigation |
| Informes | executive_report, technical_report, full_pentest_report, finding_detail, risk_matrix, remediation_plan, retest_report, save_report |
| Sigilo/OPSEC | stealth_assessment, opsec_checklist |
| Especializados | ad_assessment, api_security_assessment, container_assessment, cloud_assessment, wireless_assessment, bug_bounty_workflow, compliance_assessment |
| Acciones rápidas | explore_url, map_network, hunt_subdomains, find_vulns, find_secrets, go_stealth, crack_wifi, pwn_target, msf_exploit_workflow |
| Ingeniería Social | social_engineering_assessment |
Datos de referencia estáticos cargados por Claude durante los compromisos.
| URI | Contenido |
|---|---|
owasp://top10/2025 | Lista completa de OWASP Top 10:2025 |
owasp://top10/2025/{A01..A10} | Detalles por categoría + lista de verificación de pruebas |
owasp://api-security/top10 | OWASP API Security Top 10 (2023) |
owasp://api-security/top10/{API1..API10} | Detalles por categoría |
ptes://phases | Resumen de la metodología PTES de 7 fases |
ptes://phase/{1..7} | Detalles de la fase (objetivos, herramientas, entregables) |
checklist://web-application | Lista de verificación de pentest de aplicaciones web (OWASP Testing Guide) |
checklist://api | Lista de verificación de pentest de API |
checklist://network | Lista de verificación de infraestructura de red |
mitre://attack/tactics | Tácticas y técnicas empresariales de MITRE ATT&CK |
mitre://attack/technique/{T1xxx} | Detalle de técnica por ID |
creds://defaults/{product} | Base de datos de credenciales predeterminadas |
payloads://{type} | Listas de payloads seleccionadas por tipo (xss, sqli, lfi, ssti, etc.) |
stealth://techniques | Guía de referencia para técnicas de seguridad operativa |
stealth://proxy-guide | Guía paso a paso para configuración de proxy y Tor |
tools://catalog | Estado de disponibilidad de herramientas en vivo |
tools://{tool}/usage | Guía de uso para nmap, nuclei, sqlmap, metasploit, trivy, amass |
prompts://list | Lista de todas las indicaciones disponibles con descripciones |
prompts://category/{category} | Indicaciones filtradas por categoría |
┌─────────────┐ MCP ┌─────────────────┐ subprocess ┌─────────────────┐ │ Claude │◄────────────►│ Tengu │─────────────────►│ Nmap, SQLMap, │ │ (Desktop / │ stdio/SSE │ MCP Server │ (never shell=T) │ Metasploit... │ │ Code) │ │ │ └─────────────────┘ └─────────────┘ └────────┬─────────┘ │ Every tool call passes through: │ ┌────────▼─────────┐ │ Safety Pipeline │ │ │ │ 1. sanitizer │ ← strip metacharacters, validate format │ 2. allowlist │ ← check target against tengu.toml │ 3. rate_limiter │ ← sliding window + concurrent slots │ 4. audit logger │ ← JSON log to ./logs/tengu-audit.log └──────────────────┘
---
## Archivos de Configuración
Tengu utiliza tres archivos de configuración. Editar el incorrecto es la fuente más común de confusión al cambiar entre flujos de trabajo locales y Docker.
| Archivo | Cuándo usarlo | Qué controla |
|---------|---------------|--------------|
| `tengu.toml` (raíz) | Ejecución local: `uv run tengu`, `uv run python autonomous_tengu.py` | Configuración del servidor MCP: `allowed_hosts`, rutas de herramientas, límites de tasa, sigilo |
| `docker/tengu.toml` | Ejecución vía Docker: `make docker-up`, `make docker-agent` | Mismos ajustes que la raíz, pero preconfigurado para redes Docker (`172.16.0.0/12`, alias DNS de servicios). Incrustado en la imagen en tiempo de compilación — **requiere reconstrucción** después de cambios (`make docker-rebuild-tengu`) |
| `.env` | Tanto local como Docker | Secretos y variables de ejecución: `ANTHROPIC_API_KEY`, `TENGU_AGENT_TARGET`, `TENGU_AGENT_MODEL`, `TENGU_AGENT_MAX_TOKENS`, etc. Leído por `docker compose` y `load_dotenv()` |
| `.env.example` | Solo referencia | Plantilla que enumera todas las variables de entorno disponibles |
**Configuración rápida para modo copiloto (local):** edite `tengu.toml` en la raíz del proyecto — agregue su objetivo a `[targets] allowed_hosts`.
**Configuración rápida para modo agente (Docker):** edite `docker/tengu.toml`, luego ejecute `make docker-rebuild-tengu` antes de `make docker-agent`.
> **Error común:** si los escaneos fallan con `TargetNotAllowedError` dentro de Docker, probablemente editó `tengu.toml` (raíz) en lugar de `docker/tengu.toml`. Docker usa su propia copia incrustada en la imagen. Después de editar, ejecute `make docker-rebuild-tengu`.
---
## Seguridad por Diseño
Tengu está diseñado como un **multiplicador de fuerza para pentesters humanos**, no como una herramienta de ataque autónoma.
| Control | Descripción |
|---------|-------------|
| **Lista blanca de objetivos** | Solo se escanean objetivos pre-aprobados en `tengu.toml` |
| **Sanitización de entrada** | Todas las entradas se validan contra patrones estrictos antes de llegar a cualquier herramienta |
| **Límite de tasa** | Ventana deslizante + límites de ranuras concurrentes evitan DoS accidental |
| **Registro de auditoría** | Cada invocación de herramienta se registra en `./logs/tengu-audit.log` en formato JSON |
| **Humano en el ciclo** | `msf_run_module`, `hydra_attack` e `impacket_kerberoast` requieren confirmación explícita |
| **Sin shell=True — nunca** | Todas las llamadas a subprocesos usan `asyncio.create_subprocess_exec` |
---
## Desarrollo```bash
make install-dev # Install Python deps + dev extras
make test # Run unit + security tests
make lint # ruff check
make typecheck # mypy strict
make check # lint + typecheck
make coverage # pytest --cov
make inspect # Open MCP Inspector
make doctor # Check which pentest tools are installed
Tengu cuenta con más de 2643 pruebas que cubren lógica unitaria, seguridad (inyección de comandos, validación de entrada) y escenarios de integración. Consulte CLAUDE.md para obtener la guía completa para colaboradores.
Tengu está diseñado únicamente para pruebas de seguridad autorizadas. Solo escanee sistemas que posea o para los que tenga permiso explícito por escrito. El escaneo no autorizado es ilegal en la mayoría de las jurisdicciones. Los autores no aceptan ninguna responsabilidad por el mal uso.
| Herramienta | Descripción |
|---|
nuclei_scan | Escáner de vulnerabilidades basado en plantillas (CVEs, configuraciones erróneas) |
nikto_scan | Escáner de configuraciones erróneas de servidores web y software obsoleto |
ffuf_fuzz | Fuzzing de directorios, parámetros y vhost |
gobuster_scan | Fuerza bruta de directorios, DNS y vhost |
wpscan_scan | Escáner de vulnerabilidades de WordPress |
testssl_check | Análisis completo de configuración SSL/TLS |
analyze_headers | Análisis y calificación de cabeceras de seguridad HTTP |
test_cors | Detección de configuraciones incorrectas de CORS |
ssl_tls_check | Verificación de certificados y cifrados SSL/TLS (sslyze) |
wafw00f_scan | Detección y huella digital de firewalls de aplicaciones web |
feroxbuster_scan | Descubrimiento rápido y recursivo de contenido mediante fuerza bruta |
shodan_lookup | Búsqueda de hosts y activos en Shodan |
whatweb_scan | Huella digital de tecnologías web (CMS, WAF, frameworks) |
dnstwist_scan | Permutación de dominios y detección de typosquatting |
| Herramienta | Descripción |
|---|
sqlmap_scan | Detección y explotación automática de inyección SQL |
xss_scan | Detección de XSS mediante Dalfox |
commix_scan | Detección y explotación automática de inyección de comandos |
crlfuzz_scan | Fuzzing de inyección CRLF para vulnerabilidades de inyección de cabeceras |
graphql_security_check | Introspección GraphQL, batching, límite de profundidad, sugerencias de campos |
arjun_discover | Descubrimiento de parámetros HTTP ocultos |
| Herramienta | Descripción |
|---|
msf_search | Buscar módulos de Metasploit |
msf_module_info | Obtener información detallada de un módulo de Metasploit |
msf_run_module | Ejecutar un módulo de Metasploit (requiere confirmación explícita) |
msf_sessions_list | Listar sesiones activas de Metasploit |
msf_session_cmd | Ejecutar un comando en una sesión activa (shell/Meterpreter) |
searchsploit_query | Buscar en la base de datos offline de Exploit-DB |
hash_crack | Crackeo de hashes mediante diccionario (Hashcat / John the Ripper) |
hash_identify | Identificación de tipo de hash |
cewl_generate | Generación de listas de palabras personalizadas a partir de un sitio web objetivo |
| Herramienta | Descripción |
|---|
enum4linux_scan | Enumeración SMB/NetBIOS |
nxc_enum | Enumeración de Active Directory mediante NetExec |
impacket_kerberoast | Kerberoasting con Impacket GetUserSPNs |
impacket_secretsdump | Volcado remoto de secretos SAM/LSA/NTDS mediante Impacket |
impacket_psexec | Ejecución remota de comandos vía SMB (estilo PsExec) |
impacket_wmiexec | Ejecución remota de comandos vía WMI |
impacket_smbclient | Enumeración de recursos compartidos SMB y acceso a archivos |
bloodhound_collect | Recopilación de datos AD de BloodHound (SharpHound/bloodhound-python) |
responder_capture | Envenenamiento LLMNR/NBT-NS/MDNS para captura de credenciales |
smbmap_scan | Enumeración de recursos compartidos SMB y pruebas de acceso |
| Herramienta | Descripción |
|---|
tor_check | Verificar conectividad Tor y IP del nodo de salida |
tor_new_identity | Solicitar un nuevo circuito Tor (NEWNYM) |
check_anonymity | Verificar IP expuesta, fugas DNS y nivel de anonimato |
proxy_check | Validar latencia del proxy, IP de salida y tipo de anonimato |
rotate_identity | Rotar circuito Tor y User-Agent simultáneamente |
| Herramienta | Descripción |
|---|
check_tools | Verificar qué herramientas externas están instaladas |
validate_target | Validar objetivo contra lista blanca |
correlate_findings | Correlacionar hallazgos entre múltiples escaneos |
score_risk | Puntuación de riesgo basada en CVSS |
cve_lookup | Detalles de CVE desde NVD (CVSS, CWE, productos afectados) |
cve_search | Buscar CVE por palabra clave, producto o severidad |
generate_report | Generar informe de pentest en Markdown/HTML/PDF |