rfunix/tengu
GitHub: rfunix/tengu
一款通过 MCP 协议将 Claude 转化为渗透测试副驾驶的服务器,集成 80+ 安全工具并支持 AI 智能编排的完整渗透测试流程。
Stars: 14 | Forks: 0
# Tengu — 渗透测试 MCP Server
### 配置参考
```
[targets]
# REQUIRED: 仅扫描这些主机
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
```
完整参考请参阅 [docs/configuration-reference.md](docs/configuration-reference.md)。
## 自主 Agent 模式
运行完全自主的渗透测试,无需手动调用工具。Agent 使用 Claude 作为其战略大脑,使用 Tengu 作为其执行工具集,遵循 PTES 方法论从侦察到报告。
[](https://www.youtube.com/watch?v=BESaKamKPO8)
### 快速开始
```
cp .env.example .env
# 编辑 .env:设置 ANTHROPIC_API_KEY 和 TENGU_AGENT_TARGET
```
**实验室目标:**
```
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
```
**真实渗透测试 (Tengu + MSF + ZAP,无实验室容器):**
```
make docker-pentest
make docker-agent
```
**在浏览器中查看报告:**
```
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
```
## 工作流与提示词 (35)
预置的工作流模板,指导 Claude 完成完整的行动。
| 类别 | 提示词 |
|----------|---------|
| **渗透测试工作流** | `full_pentest`, `quick_recon`, `web_app_assessment` |
| **漏洞评估** | `assess_injection`, `assess_access_control`, `assess_crypto`, `assess_misconfig` |
| **OSINT** | `osint_investigation` |
| **报告** | `executive_report`, `technical_report`, `full_pentest_report`, `finding_detail`, `risk_matrix`, `remediation_plan`, `retest_report`, `save_report` |
| **隐蔽/OPSEC** | `stealth_assessment`, `opsec_checklist` |
| **专项** | `ad_assessment`, `api_security_assessment`, `container_assessment`, `cloud_assessment`, `wireless_assessment`, `bug_bounty_workflow`, `compliance_assessment` |
| **快速操作** | `explore_url`, `map_network`, `hunt_subdomains`, `find_vulns`, `find_secrets`, `go_stealth`, `crack_wifi`, `pwn_target`, `msf_exploit_workflow` |
| **社会工程学** | `social_engineering_assessment` |
## 内置资源 (20)
行动期间由 Claude 加载的静态参考数据。
| URI | 内容 |
|-----|---------|
| `owasp://top10/2025` | OWASP Top 10:2025 完整列表 |
| `owasp://top10/2025/{A01..A10}` | 每个类别的详情 + 测试检查清单 |
| `owasp://api-security/top10` | OWASP API Security Top 10 (2023) |
| `owasp://api-security/top10/{API1..API10}` | 每个类别的详情 |
| `ptes://phases` | PTES 7 阶段方法论概览 |
| `ptes://phase/{1..7}` | 阶段详情 (目标、工具、交付物) |
| `checklist://web-application` | Web 应用渗透测试检查清单 |
| `checklist://api` | API 渗透测试检查清单 |
| `checklist://network` | 网络基础设施检查清单 |
| `mitre://attack/tactics` | MITRE ATT&CK Enterprise 战术 + 技术 |
| `mitre://attack/technique/{T1xxx}` | 按 ID 查询技术详情 |
| `creds://defaults/{product}` | 默认凭证数据库 |
| `payloads://{type}` | 按类型整理的载荷列表 |
| `stealth://techniques` | 操作安全技术参考指南 |
| `stealth://proxy-guide` | 逐步代理和 Tor 配置指南 |
| `tools://catalog` | 实时工具可用性状态 |
| `tools://{tool}/usage` | nmap, nuclei, sqlmap, metasploit, trivy, amass 的使用指南 |
| `prompts://list` | 所有可用提示词及其描述列表 |
| `prompts://category/{category}` | 按类别筛选的提示词 |
## 架构
```
┌─────────────┐ 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
└──────────────────┘
```
## 配置文件
Tengu 使用三个配置文件。编辑错误的文件是在本地和 Docker 工作流之间切换时最常产生困惑的原因。
| 文件 | 使用场景 | 控制内容 |
|------|-------------|------------------|
| `tengu.toml` (根目录) | 本地运行:`uv run tengu`, `uv run python autonomous_tengu.py` | MCP server 配置:`allowed_hosts`、工具路径、速率限制、隐蔽性 |
| `docker/tengu.toml` | 通过 Docker 运行:`make docker-up`, `make docker-agent` | 与根目录相同的设置,但预配置了 Docker 网络 (`172.16.0.0/12`, 服务 DNS 别名)。在构建时嵌入镜像中 — 更改后**需要重新构建** (`make docker-rebuild-tengu`) |
| `.env` | 本地和 Docker 均适用 | 密钥和运行时变量:`ANTHROPIC_API_KEY`, `TENGU_AGENT_TARGET`, `TENGU_AGENT_MODEL`, `TENGU_AGENT_MAX_TOKENS` 等。由 `docker compose` 和 `load_dotenv()` 读取 |
| `.env.example` | 仅供参考 | 列出所有可用环境变量的模板 |
**副驾驶模式快速配置 (本地):** 编辑项目根目录下的 `tengu.toml` —
将你的目标添加到 `[targets] allowed_hosts`。
**Agent 模式快速配置:** 编辑 `docker/tengu.toml`,然后在运行 `make docker-agent` 之前
运行 `make docker-rebuild-tengu`。
## 设计保证安全
Tengu 的设计初衷是作为**人类渗透测试人员的力量倍增器**,而非自主攻击工具。
| 控制措施 | 描述 |
|---------|-------------|
| **目标允许列表** | 仅扫描 `tengu.toml` 中预先批准的目标 |
| **输入净化** | 所有输入在到达任何工具之前都根据严格模式进行验证 |
| **速率限制** | 滑动窗口 + 并发槽位限制,防止意外的 DoS |
| **审计日志** | 每次工具调用都以 JSON 格式记录到 `./logs/tengu-audit.log` |
| **人在回路** | `msf_run_module`, `hydra_attack` 和 `impacket_kerberoast` 需要明确确认 |
| **绝不使用 shell=True** | 所有子进程调用均使用 `asyncio.create_subprocess_exec` |
## 开发
```
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 拥有 1931+ 个测试,涵盖单元逻辑、安全性(命令注入、输入验证)和集成场景。完整的贡献者指南请参阅 [CLAUDE.md](CLAUDE.md)。
## 法律声明
Tengu 专为**授权安全测试**设计。请仅扫描你拥有或拥有明确书面测试许可的系统。未经授权的扫描在大多数司法管辖区均属违法。作者不对滥用行为承担任何责任。
“在日本神话中,Tengu 是凶猛的山神——战略大师、战士以及武士的导师。在网络安全领域,它将指引你完成狩猎的每一个阶段。”
从侦察到报告——一行命令实现 AI 辅助渗透测试。
**Tengu** 是一个 MCP server,它将 Claude 转化为渗透测试副驾驶。它编排了 80 种安全工具——从 Nmap 到 Metasploit——并内置安全控制、审计日志和专业报告功能。 - **它是什么?** 一个将 Claude 连接到行业标准渗透测试工具的 MCP server - **为什么使用它?** 自动化侦察和扫描,同时让人类掌控漏洞利用环节 - **它是给谁用的?** 渗透测试人员、红队成员、安全学生和咨询公司 ### 核心功能 - **80 种工具** — Nmap, Metasploit, SQLMap, Nuclei, Hydra, 兼容 Burp 的 ZAP 等 - **AI 编排** — Claude 根据先前的发现决定下一步使用的工具 - **安全至上** — 允许列表、速率限制、审计日志,以及针对破坏性操作的人在回路控制 - **自动报告** — 关联发现并生成专业渗透测试报告 (MD/HTML/PDF) - **35 个工作流** — 用于完整渗透测试、Web 应用、AD、云等的预置提示词 - **20 个资源** — 内置 OWASP Top 10, MITRE ATT&CK, PTES 和渗透测试检查清单 - **隐蔽层** — 可选的 Tor/SOCKS5 代理路由、UA 轮换和时间抖动 ## MCP Server 模式(副驾驶) 将 Claude 用作交互式渗透测试副驾驶——你指挥行动,Claude 挑选合适的工具并自动将它们串联起来。 [](https://www.youtube.com/watch?v=KklDFk4pxZ0) ### 快速开始 ``` git clone https://github.com/rfunix/tengu.git && cd tengu make docker-build make docker-up ``` 将 Claude Code 连接到运行中的服务器: ``` claude mcp add --transport sse tengu http://localhost:8000/sse ``` 然后询问 Claude:`对 http://192.168.1.100 进行全面渗透测试` Claude 自动串联工具:`validate_target` → `whatweb` → `nmap` → `nikto` → `nuclei` → `sqlmap` → `correlate_findings` → `generate_report` ### Docker 配置方案 | 命令 | 启动内容 | |---------|----------------| | `make docker-up` | Tengu MCP server (`:8000`) | | `make docker-lab` | + Juice Shop, DVWA (安全的练习目标) | | `make docker-pentest` | + Metasploit, OWASP ZAP (真实目标) | | `make docker-full` | + Metasploit, ZAP 和实验室目标 | **无需编辑文件即可扫描自定义目标:** ``` TENGU_ALLOWED_HOSTS="192.168.1.0/24,10.0.0.0/8" make docker-up ``` ### 镜像层级 根据你的使用场景选择合适的规格: | 层级 | 大小 | MCP 工具 | 使用场景 | |------|------|-----------|----------| | `minimal` | ~480MB | 17 | 轻量级分析、CVE 研究、报告 | | `core` | ~7GB | 47 | 完整渗透测试工具包 (默认) | | `full` | ~8GB | 80 | 所有功能 + AD、无线、隐蔽/OPSEC | ``` TENGU_TIER=minimal make docker-build # lightweight TENGU_TIER=core make docker-build # default TENGU_TIER=full make docker-build # everything ```手动安装(不使用 Docker)
**前置条件:** Python 3.12+, [`uv`](https://github.com/astral-sh/uv), Kali Linux (推荐) ``` git clone https://github.com/rfunix/tengu.git && cd tengu # 安装 Python 依赖 uv sync # 安装外部渗透测试工具 (Kali/Debian) make install-tools # 运行 MCP 服务器 (stdio transport) uv run tengu ``` 连接 Claude Code: ``` claude mcp add --scope user tengu -- uv run --directory /path/to/tengu tengu ``` 在 `tengu.toml` 中配置允许的目标: ``` [targets] allowed_hosts = ["192.168.1.0/24", "example.com"] ``` 关于 Claude Desktop、VM/SSE 远程设置和高级配置,请参阅 [docs/deployment-guide.md](docs/deployment-guide.md)。
完整工具列表 (80 个工具)
### 侦察 | 工具 | 描述 | |------|-------------| | `nmap_scan` | 端口扫描和服务/OS 检测 | | `masscan_scan` | 用于大型网络的高速端口扫描器 | | `subfinder_enum` | 被动子域枚举 | | `amass_enum` | 攻击面映射和 DNS 暴力破解 | | `dnsrecon_scan` | DNS 侦察 (区域传送, 暴力破解, PTR) | | `dns_enumerate` | DNS 记录枚举 (A, MX, NS, TXT, SOA…) | | `whois_lookup` | WHOIS 域名和 IP 查询 | | `subjack_check` | 子域接管检测 | | `gowitness_screenshot` | 用于文档记录的 Web 截图捕获 | | `httrack_mirror` | 用于离线分析和取证的全站镜像 | | `katana_crawl` | 用于链接发现和端点映射的快速 Web 爬虫 | | `httpx_probe` | HTTP 探测 — 状态码、技术栈、重定向 | | `snmpwalk_scan` | SNMP 枚举和 MIB 遍历 | | `rustscan_scan` | 超快速端口扫描 (为 Nmap 后续扫描发现开放端口) | ### Web 扫描 | 工具 | 描述 | |------|-------------| | `nuclei_scan` | 基于模板的漏洞扫描器 | | `nikto_scan` | Web 服务器配置错误和过时软件扫描器 | | `ffuf_fuzz` | 目录、参数和 vhost 模糊测试 | | `gobuster_scan` | 目录、DNS 和 vhost 暴力破解 | | `wpscan_scan` | WordPress 漏洞扫描器 | | `testssl_check` | 全面的 SSL/TLS 配置分析 | | `analyze_headers` | HTTP 安全头分析和评级 | | `test_cors` | CORS 配置错误检测 | | `ssl_tls_check` | SSL/TLS 证书和密码检查 | | `wafw00f_scan` | Web 应用防火墙检测和指纹识别 | | `feroxbuster_scan` | 通过暴力破解进行快速、递归的内容发现 | ### OSINT | 工具 | 描述 | |------|-------------| | `theharvester_scan` | 从公共来源进行电子邮件、子域和主机枚举 | | `shodan_lookup` | Shodan 主机和资产搜索 | | `whatweb_scan` | Web 技术指纹识别 (CMS, WAF, 框架) | | `dnstwist_scan` | 域名置换和抢注检测 | ### 注入测试 | 工具 | 描述 | |------|-------------| | `sqlmap_scan` | 自动化 SQL 注入检测和利用 | | `xss_scan` | 通过 Dalfox 进行 XSS 检测 | | `commix_scan` | 自动化命令注入检测和利用 | | `crlfuzz_scan` | 用于头注入漏洞的 CRLF 注入模糊测试 | | `graphql_security_check` | GraphQL 内省、批处理、深度限制、字段建议 | | `arjun_discover` | 隐藏 HTTP 参数发现 | ### 漏洞利用 | 工具 | 描述 | |------|-------------| | `msf_search` |搜索 Metasploit 模块 | | `msf_module_info` | 获取详细的 Metasploit 模块信息 | | `msf_run_module` | 执行 Metasploit 模块 (需要明确确认) | | `msf_sessions_list` | 列出活动的 Metasploit 会话 | | `msf_session_cmd` | 在活动会话上执行命令 | | `searchsploit_query` | 搜索 Exploit-DB 离线数据库 | ### 社会工程学 | 工具 | 描述 | |------|-------------| | `set_credential_harvester` | 克隆网站并捕获提交的凭证 (授权钓鱼模拟) | | `set_qrcode_attack` | 生成指向 URL 的 QR 码,用于物理社会工程学评估 | | `set_payload_generator` | 为授权活动生成社会工程学载荷 | ### 暴力破解 | 工具 | 描述 | |------|-------------| | `hydra_attack` | 网络登录暴力破解 (SSH, FTP, HTTP, SMB…) | | `hash_crack` | 字典哈希破解 | | `hash_identify` | 哈希类型识别 | | `cewl_generate` | 从目标网站生成自定义字典 | ### 代理 / DAST | 工具 | 描述 | |------|-------------| | `zap_spider` | OWASP ZAP Web 爬虫 | | `zap_active_scan` | OWASP ZAP 主动漏洞扫描 | | `zap_get_alerts` | 获取 ZAP 扫描发现 | ### 密钥与代码分析 | 工具 | 描述 | |------|-------------| | `trufflehog_scan` | git 仓库中的泄露密钥检测 | | `gitleaks_scan` | git 历史中的凭证扫描 | ### 容器安全 | 工具 | 描述 | |------|-------------| | `trivy_scan` | Docker 镜像、IaC 和 SBOM 的漏洞扫描 | ### 云安全 | 工具 | 描述 | |------|-------------| | `scoutsuite_scan` | 云安全审计 (AWS, Azure, GCP) | | `prowler_scan` | AWS/GCP/Azure 安全最佳实践和合规性审计 | ### 活动目录 | 工具 | 描述 | |------|-------------| | `enum4linux_scan` | SMB/NetBIOS 枚举 | | `nxc_enum` | 通过 NetExec 进行活动目录枚举 | | `impacket_kerberoast` | 使用 Impacket GetUserSPNs 进行 Kerberoasting | | `impacket_secretsdump` | 通过 Impacket 进行远程 SAM/LSA/NTDS 密钥转储 | | `impacket_psexec` | 通过 SMB 进行远程命令执行 (PsExec 风格) | | `impacket_wmiexec` | 通过 WMI 进行远程命令执行 | | `impacket_smbclient` | SMB 共享枚举和文件访问 | | `bloodhound_collect` | BloodHound AD 数据收集 | | `responder_capture` | 用于凭证捕获的 LLMNR/NBT-NS/MDNS 投毒 | | `smbmap_scan` | SMB 共享枚举和访问测试 | ### 无线 | 工具 | 描述 | |------|-------------| | `aircrack_scan` | 被动无线网络扫描 | ### IaC 安全 | 工具 | 描述 | |------|-------------| | `checkov_scan` | IaC 配置错误扫描 | ### 隐蔽 / OPSEC | 工具 | 描述 | |------|-------------| | `tor_check` | 验证 Tor 连接性和出口节点 IP | | `tor_new_identity` | 请求新的 Tor 电路 (NEWNYM) | | `check_anonymity` | 检查暴露的 IP、DNS 泄露和匿名级别 | | `proxy_check` | 验证代理延迟、出口 IP 和匿名类型 | | `rotate_identity` | 同时轮换 Tor 电路和 User-Agent | ### 分析与实用工具 | 工具 | 描述 | |------|-------------| | `check_tools` | 验证已安装的外部工具 | | `validate_target` | 根据允许列表验证目标 | | `correlate_findings` | 关联多次扫描的发现 | | `score_risk` | 基于 CVSS 的风险评分 | | `cve_lookup` | 从 NVD 获取 CVE 详情 (CVSS, CWE, 受影响产品) | | `cve_search` | 按关键字、产品或严重程度搜索 CVE | | `generate_report` | 生成 Markdown/HTML/PDF 渗透测试报告 |标签:AI安全, Chat Copilot, CISA项目, Claude, CVE检测, DLL 劫持, FTP漏洞扫描, MCP服务器, Nmap, Python, 元安全, 大语言模型, 安全编排, 密码管理, 插件系统, 攻击模拟, 无后门, 结构化查询, 网络安全, 自动化安全, 自动化攻击, 虚拟驱动器, 计算机取证, 请求拦截, 逆向工具, 隐私保护, 驱动签名利用