
Serveur MCP de test d'intrusion piloté par IA
"Dans la mythologie japonaise, le Tengu est un esprit féroce de la montagne — maître stratège, guerrier et formateur de samouraïs. En cybersécurité, il vous guide à travers chaque phase de la chasse."
Du repérage au rapport — pentesting assisté par IA en une commande.
Tengu est un serveur MCP qui transforme Claude en copilote de test d'intrusion. Il orchestre 80 outils de sécurité — de Nmap à Metasploit — avec des contrôles de sécurité intégrés, une journalisation d'audit et des rapports professionnels.
Utilisez Claude comme copilote de pentest interactif — vous dirigez l'engagement, Claude choisit les bons outils et les enchaîne automatiquement.
git clone https://github.com/rfunix/tengu.git && cd tengu make docker-build make docker-up
Connectez Claude Code au serveur en cours d'exécution :```bash
claude mcp add --transport sse tengu http://localhost:8000/sse
Then ask Claude : Do a full pentest on http://192.168.1.100
Claude enchaîne automatiquement les outils : validate_target → whatweb → nmap → nikto → nuclei → sqlmap → correlate_findings → generate_report
| Commande | Ce qu'il démarre |
|---|
Scannez des cibles personnalisées sans modifier les fichiers :```bash TENGU_ALLOWED_HOSTS="192.168.1.0/24,10.0.0.0/8" make docker-up
### Niveaux d'images
Choisissez la taille adaptée à votre cas d'usage :
| Tier | Taille | Outils MCP | Cas d'usage |
|------|------|-----------|----------|
| `minimal` | ~480MB | 17 | Analyse légère, recherche CVE, reporting |
| `core` | ~7GB | 47 | Suite d'outils de test d'intrusion complète (par défaut) |
| `full` | ~8GB | 80 | Tout + AD, sans fil, furtivité/OPSEC |```bash
TENGU_TIER=minimal make docker-build # lightweight
TENGU_TIER=core make docker-build # default
TENGU_TIER=full make docker-build # everything
Tous les niveaux incluent les 35 invites et 20 ressources — seuls les outils binaires diffèrent.
Prérequis : Python 3.12+, uv, Kali Linux (recommandé)```bash
git clone https://github.com/rfunix/tengu.git && cd tengu
uv sync
make install-tools
uv run tengu
Connecter Claude Code :```bash
claude mcp add --scope user tengu -- uv run --directory /path/to/tengu tengu
Configurez les cibles autorisées dans tengu.toml:```toml
[targets]
allowed_hosts = ["192.168.1.0/24", "example.com"]
Pour Claude Desktop, configuration distante VM/SSE et configurations avancées, voir [docs/deployment-guide.md](https://github.com/rfunix/tengu/blob/HEAD/docs/deployment-guide.md).
</details>
### Référence de configuration```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 | Serveur Tengu MCP (:8000) |
make docker-lab | + Juice Shop, DVWA (cibles d'entraînement sécurisées) |
make docker-pentest | + Metasploit, OWASP ZAP (cibles réelles) |
make docker-full | + Metasploit, ZAP, et cibles de laboratoire |
Voir docs/configuration-reference.md pour la référence complète.
Exécutez un test d'intrusion entièrement autonome sans invocation manuelle d'outils. L'agent utilise Claude comme cerveau stratégique et Tengu comme ensemble d'outils d'exécution, en suivant la méthodologie PTES de la reconnaissance au rapport.
cp .env.example .env
**Cibles de laboratoire (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
Tests de pénétration réels (Tengu + MSF + ZAP, sans conteneurs de laboratoire):```bash make docker-pentest make docker-agent
**Consulter les rapports dans le navigateur :**```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
Sans 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
**Contrôle des coûts** — trois variables d'environnement / indicateurs CLI :
| Indicateur | Variable env. | Défaut |
|---|---|---|
| `--model` | `TENGU_AGENT_MODEL` | `claude-sonnet-4-6` |
| `--max-tokens` | `TENGU_AGENT_MAX_TOKENS` | `2048` |
| `--timeout` | `TENGU_AGENT_TIMEOUT` | `60` (minutes, `0`=illimité) |
### Comment ça fonctionne```
START → initializer → strategist ─┬─→ executor → analyst ─┬─→ strategist (loop)
│ └─→ reporter → END
├─→ human_gate → executor
└─→ reporter → END
Comportements clés :
msf_run_module, hydra_attack, impacket_kerberoast, sqlmap_scan avec niveau≥3)--max-iterations soit atteintcorrelate_findings + score_risk + generate_report| Phase | Nom | Ce que fait Tengu | Outils clés |
|---|---|---|---|
| 1 | Pré-engagement | validate_target confirme le périmètre, check_tools vérifie la préparation | validate_target, check_tools |
| 2 | Collecte de renseignements | OSINT, recon DNS, énumération de sous-domaines, empreinte technologique | nmap, subfinder, amass, shodan, whatweb |
| 3 | Modélisation des menaces | Claude analyse les renseignements collectés, priorise la surface d'attaque, construit des scénarios de menace | (piloté par l'IA — aucun outil externe) |
| 4 | Analyse des vulnérabilités | Scan de modèles, test d'applications web, analyse SSL/TLS, fuzzing de paramètres | nuclei, nikto, ffuf, sqlmap, testssl |
| 5 | Exploitation | Exploitation contrôlée des vulnérabilités confirmées avec humain dans la boucle | msf_run_module, sqlmap, hydra, searchsploit |
| 6 | Post-exploitation | Récolte d'identifiants, évaluation de mouvement latéral, élévation de privilèges | impacket_kerberoast, nxc_enum, enum4linux |
| 7 | Rapport | Corréler tous les résultats, calculer les scores de risque, générer un rapport professionnel | correlate_findings, score_risk, generate_report |
minimal(17 outils, ~480 Mo) ·core(47 outils, ~7 Go, par défaut) ·full(80 outils, ~8 Go) Construction avec :TENGU_TIER=<niveau> make docker-build. Tous les niveaux incluent les 35 prompts et 20 ressources.
| Catégorie | Outils | Nombre |
|---|---|---|
| Reconnaissance | Nmap, Masscan, Amass, Subfinder, Gowitness, HTTrack, Katana, httpx, SNMPwalk, RustScan | 10 |
| Scan Web | Nikto, Nuclei, FFUF, Gobuster, WPScan, Feroxbuster, OWASP ZAP, wafw00f | 8 |
| SSL / TLS | sslyze, testssl.sh, analyse des en-têtes HTTP, testeur CORS | 4 |
| DNS | DNS Enumerate, DNSRecon, Subjack, WHOIS | 4 |
| OSINT | theHarvester, Shodan, WhatWeb, DNStwist | 4 |
| Test d'injection | SQLMap, Dalfox (XSS), Commix, CRLFuzz, Vérification sécurité GraphQL, Arjun | 6 |
| Force brute | Hydra, John the Ripper, Hashcat, CeWL | 4 |
| Exploitation | Metasploit (recherche, info, exécution, sessions, cmd), SearchSploit | 6 |
| Ingénierie sociale | Récolteur d'identifiants SET, attaque par QR code, générateur de payload | 3 |
| Secrets & Code | TruffleHog, Gitleaks | 2 |
| Conteneur & Cloud | Trivy, Checkov, ScoutSuite, Prowler | 4 |
| Active Directory | NetExec, Enum4linux, Impacket (Kerberoast, secretsdump, psexec, wmiexec, smbclient), BloodHound, Responder, SMBMap | 10 |
| Sans-fil | aircrack-ng / airodump-ng | 1 |
| Anonymat & Furtivité | Vérification/rotation Tor, vérification proxy, rotation d'identité | 5 |
| Analyse & Rapports | Corrélation de résultats, score de risque CVSS, génération de rapport | 3 |
| Renseignements CVE | Recherche CVE (NVD), recherche CVE par mot-clé/produit/gravité | 2 |
| Utilitaire | Vérificateur d'outils, validateur de cible | 2 |
| Outil | Description |
|---|---|
nmap_scan | Scan de ports et détection de services/système d'exploitation |
masscan_scan | Scanner de ports haute vitesse pour grands réseaux |
subfinder_enum | Énumération passive de sous-domaines |
amass_enum | Cartographie de surface d'attaque et force brute DNS |
dnsrecon_scan | Recon DNS (transfert de zone, force brute, PTR) |
dns_enumerate | Énumération d'enregistrements DNS (A, MX, NS, TXT, SOA…) |
whois_lookup | Recherche WHOIS de domaine et d'IP |
subjack_check | Détection de prise de contrôle de sous-domaine |
gowitness_screenshot | Capture d'écran web pour documentation |
httrack_mirror | Miroir complet de site web pour analyse hors ligne et criminalistique |
katana_crawl | Robot d'exploration web rapide pour découverte de liens et cartographie de points d'accès |
httpx_probe | Sondage HTTP — codes d'état, pile technologique, redirections |
snmpwalk_scan | Énumération SNMP et exploration MIB |
rustscan_scan | Scan de ports ultra-rapide (trouve les ports ouverts pour suivi Nmap) |
| Outil | Description |
|---|---|
theharvester_scan | Énumération d'emails, sous-domaines et hôtes à partir de sources publiques |
| Outil | Description |
|---|---|
set_credential_harvester | Cloner un site web et capturer les identifiants soumis (simulations de phishing autorisées) |
set_qrcode_attack | Générer un code QR pointant vers une URL pour des évaluations physiques d'ingénierie sociale |
set_payload_generator | Générer des payloads d'ingénierie sociale (PowerShell, HTA) pour des campagnes autorisées |
| Outil | Description |
|---|---|
hydra_attack | Force brute de connexion réseau (SSH, FTP, HTTP, SMB…) |
| Outil | Description |
|---|---|
zap_spider | Robot d'exploration web OWASP ZAP |
zap_active_scan | Scan actif de vulnérabilités OWASP ZAP |
zap_get_alerts | Récupérer les résultats du scan ZAP |
| Outil | Description |
|---|---|
trufflehog_scan | Détection de secrets divulgués dans les dépôts git |
gitleaks_scan | Scan d'identifiants dans l'historique git |
| Outil | Description |
|---|---|
trivy_scan | Scan de vulnérabilités pour images Docker, IaC et SBOM |
| Outil | Description |
|---|---|
scoutsuite_scan | Audit de sécurité cloud (AWS, Azure, GCP) |
prowler_scan | Audit des bonnes pratiques de sécurité et conformité AWS/GCP/Azure |
| Outil | Description |
|---|---|
aircrack_scan | Scan passif de réseau sans-fil (airodump-ng) |
| Outil | Description |
|---|---|
checkov_scan | Scan de mauvaises configurations IaC (Terraform, K8s, Dockerfile) |
Modèles de workflow pré-construits qui guident Claude à travers des engagements complets.
| Catégorie | Prompts |
|---|---|
| Workflows de test d'intrusion | full_pentest, quick_recon, web_app_assessment |
| Évaluation de vulnérabilités | assess_injection, assess_access_control, assess_crypto, assess_misconfig |
| OSINT | osint_investigation |
| Rapports | executive_report, technical_report, full_pentest_report, finding_detail, risk_matrix, remediation_plan, retest_report, save_report |
| Furtivité/OPSEC | stealth_assessment, opsec_checklist |
| Spécialisés | ad_assessment, api_security_assessment, container_assessment, cloud_assessment, wireless_assessment, bug_bounty_workflow, compliance_assessment |
| Actions rapides | explore_url, map_network, hunt_subdomains, find_vulns, find_secrets, go_stealth, crack_wifi, pwn_target, msf_exploit_workflow |
| Ingénierie sociale | social_engineering_assessment |
Données de référence statiques chargées par Claude pendant les engagements.
| URI | Contenu |
|---|---|
owasp://top10/2025 | Liste complète OWASP Top 10:2025 |
owasp://top10/2025/{A01..A10} | Détails par catégorie + liste de contrôle de test |
owasp://api-security/top10 | OWASP API Security Top 10 (2023) |
owasp://api-security/top10/{API1..API10} | Détails par catégorie |
ptes://phases | Aperçu de la méthodologie PTES en 7 phases |
ptes://phase/{1..7} | Détails de la phase (objectifs, outils, livrables) |
checklist://web-application | Liste de contrôle de test d'intrusion web (Guide de test OWASP) |
checklist://api | Liste de contrôle de test d'intrusion API |
checklist://network | Liste de contrôle d'infrastructure réseau |
mitre://attack/tactics | Tactiques + techniques MITRE ATT&CK Enterprise |
mitre://attack/technique/{T1xxx} | Détail de technique par ID |
creds://defaults/{product} | Base de données d'identifiants par défaut |
payloads://{type} | Listes de payloads organisées par type (xss, sqli, lfi, ssti, etc.) |
stealth://techniques | Guide de référence pour les techniques de sécurité opérationnelle |
stealth://proxy-guide | Guide de configuration pas à pas du proxy et de Tor |
tools://catalog | Statut de disponibilité des outils en direct |
tools://{tool}/usage | Guide d'utilisation pour nmap, nuclei, sqlmap, metasploit, trivy, amass |
prompts://list | Liste de tous les prompts disponibles avec descriptions |
prompts://category/{category} | Prompts filtrés par catégorie |
┌─────────────┐ 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 └──────────────────┘
---
## Fichiers de configuration
Tengu utilise trois fichiers de configuration. Modifier le mauvais fichier est la source la plus fréquente de confusion lors du passage entre les workflows local et Docker.
| Fichier | Quand l'utiliser | Ce qu'il contrôle |
|---------|-----------------|-------------------|
| `tengu.toml` (racine) | Exécution locale : `uv run tengu`, `uv run python autonomous_tengu.py` | Configuration du serveur MCP : `allowed_hosts`, chemins des outils, limites de débit, furtivité |
| `docker/tengu.toml` | Exécution via Docker : `make docker-up`, `make docker-agent` | Mêmes paramètres que la racine, mais préconfigurés pour le réseau Docker (`172.16.0.0/12`, alias DNS de service). Intégré dans l'image lors de la construction — **reconstruction nécessaire** après modifications (`make docker-rebuild-tengu`) |
| `.env` | Local et Docker | Secrets et variables d'exécution : `ANTHROPIC_API_KEY`, `TENGU_AGENT_TARGET`, `TENGU_AGENT_MODEL`, `TENGU_AGENT_MAX_TOKENS`, etc. Lus par `docker compose` et `load_dotenv()` |
| `.env.example` | Référence uniquement | Modèle listant toutes les variables d'environnement disponibles |
**Configuration rapide pour le mode copilote (local) :** modifiez `tengu.toml` à la racine du projet —
ajoutez votre cible à `[targets] allowed_hosts`.
**Configuration rapide pour le mode agent (Docker) :** modifiez `docker/tengu.toml`, puis exécutez
`make docker-rebuild-tengu` avant `make docker-agent`.
> **Piège courant :** si les scans échouent avec `TargetNotAllowedError` dans Docker, vous
> avez probablement modifié `tengu.toml` (racine) au lieu de `docker/tengu.toml`. Docker utilise sa
> propre copie intégrée dans l'image. Après modification, exécutez `make docker-rebuild-tengu`.
---
## Sécurité par Conception
Tengu est conçu comme un **multiplicateur de force pour les testeurs d'intrusion humains**, pas comme un outil d'attaque autonome.
| Contrôle | Description |
|----------|-------------|
| **Liste blanche des cibles** | Seules les cibles pré-approuvées dans `tengu.toml` sont scannées |
| **Assainissement des entrées** | Toutes les entrées sont validées selon des modèles stricts avant d'atteindre un outil |
| **Limitation de débit** | Fenêtre glissante + limites de créneaux simultanés empêchent un DoS accidentel |
| **Journalisation d'audit** | Chaque invocation d'outil est enregistrée dans `./logs/tengu-audit.log` au format JSON |
| **Humain dans la boucle** | `msf_run_module`, `hydra_attack` et `impacket_kerberoast` exigent une confirmation explicite |
| **Jamais shell=True** | Tous les appels de sous-processus utilisent `asyncio.create_subprocess_exec` |
---
## Développement```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 possède plus de 2643 tests couvrant la logique unitaire, la sécurité (injection de commandes, validation des entrées) et les scénarios d'intégration. Voir CLAUDE.md pour le guide complet du contributeur.
Tengu est conçu pour des tests de sécurité autorisés uniquement. Ne scannez que les systèmes dont vous êtes propriétaire ou pour lesquels vous avez une autorisation écrite explicite. Le scan non autorisé est illégal dans la plupart des juridictions. Les auteurs déclinent toute responsabilité en cas d'utilisation abusive.
| Outil | Description |
|---|
nuclei_scan | Scanner de vulnérabilités basé sur des modèles (CVE, mauvaises configurations) |
nikto_scan | Scanner de mauvaises configurations de serveur web et de logiciels obsolètes |
ffuf_fuzz | Fuzzing de répertoires, paramètres et vhost |
gobuster_scan | Force brute de répertoires, DNS et vhost |
wpscan_scan | Scanner de vulnérabilités WordPress |
testssl_check | Analyse complète de la configuration SSL/TLS |
analyze_headers | Analyse et notation des en-têtes de sécurité HTTP |
test_cors | Détection de mauvaises configurations CORS |
ssl_tls_check | Vérification des certificats et chiffrements SSL/TLS (sslyze) |
wafw00f_scan | Détection et empreinte de pare-feu d'application web (WAF) |
feroxbuster_scan | Découverte rapide et récursive de contenu par force brute |
shodan_lookup | Recherche d'hôtes et d'actifs Shodan |
whatweb_scan | Empreinte technologique web (CMS, WAF, frameworks) |
dnstwist_scan | Détection de permutations de domaines et typosquatting |
| Outil | Description |
|---|
sqlmap_scan | Détection et exploitation automatisée d'injections SQL |
xss_scan | Détection XSS via Dalfox |
commix_scan | Détection et exploitation automatisée d'injections de commandes |
crlfuzz_scan | Fuzzing d'injection CRLF pour vulnérabilités d'injection d'en-têtes |
graphql_security_check | Introspection GraphQL, batching, limite de profondeur, suggestions de champs |
arjun_discover | Découverte de paramètres HTTP cachés |
| Outil | Description |
|---|
msf_search | Rechercher des modules Metasploit |
msf_module_info | Obtenir des informations détaillées sur un module Metasploit |
msf_run_module | Exécuter un module Metasploit (nécessite confirmation explicite) |
msf_sessions_list | Lister les sessions Metasploit actives |
msf_session_cmd | Exécuter une commande sur une session active (shell/Meterpreter) |
searchsploit_query | Rechercher dans la base de données Exploit-DB hors ligne |
hash_crack | Craquage de hachage par dictionnaire (Hashcat / John the Ripper) |
hash_identify | Identification de type de hachage |
cewl_generate | Génération de liste de mots personnalisée à partir d'un site web cible |
| Outil | Description |
|---|
enum4linux_scan | Énumération SMB/NetBIOS |
nxc_enum | Énumération Active Directory via NetExec |
impacket_kerberoast | Kerberoasting avec Impacket GetUserSPNs |
impacket_secretsdump | Vidage distant de secrets SAM/LSA/NTDS via Impacket |
impacket_psexec | Exécution de commande à distance via SMB (style PsExec) |
impacket_wmiexec | Exécution de commande à distance via WMI |
impacket_smbclient | Énumération de partages SMB et accès aux fichiers |
bloodhound_collect | Collecte de données AD BloodHound (SharpHound/bloodhound-python) |
responder_capture | Empoisonnement LLMNR/NBT-NS/MDNS pour capture d'identifiants |
smbmap_scan | Énumération de partages SMB et test d'accès |
| Outil | Description |
|---|
tor_check | Vérifier la connectivité Tor et l'IP du nœud de sortie |
tor_new_identity | Demander un nouveau circuit Tor (NEWNYM) |
check_anonymity | Vérifier l'IP exposée, les fuites DNS et le niveau d'anonymat |
proxy_check | Valider la latence du proxy, l'IP de sortie et le type d'anonymat |
rotate_identity | Faire pivoter le circuit Tor et le User-Agent simultanément |
| Outil | Description |
|---|
check_tools | Vérifier quels outils externes sont installés |
validate_target | Valider la cible par rapport à la liste blanche |
correlate_findings | Corréler les résultats de plusieurs scans |
score_risk | Score de risque basé sur CVSS |
cve_lookup | Détails CVE depuis NVD (CVSS, CWE, produits affectés) |
cve_search | Rechercher des CVE par mot-clé, produit ou gravité |
generate_report | Générer un rapport de test d'intrusion Markdown/HTML/PDF |