内容
```text
__ __ __ ____ _ __
____ ___ ____ / /____ _____/ /_ ____ ___ _________ / /_____ ____ / / /__(_) /_
/ __ \/ _ \/ __ \/ __/ _ \/ ___/ __/_____/ __ `__ \/ ___/ __ \______/ __/ __ \/ __ \/ / //_/ / __/
/ /_/ / __/ / / / /_/ __(__ ) /_/_____/ / / / / / /__/ /_/ /_____/ /_/ /_/ / /_/ / / ,< / / /_
/ .___/\___/_/ /_/\__/\___/____/\__/ /_/ /_/ /_/\___/ .___/ \__/\____/\____/_/_/|_/_/\__/
/_/ /_/
50 Kali Linux 安全工具 · 一个基于 Docker 的 MCP 服务器 · 100% 由 AI 代理驱动
```
> **您负责授权。** 仅限于您拥有或明确授权测试的系统进行自环境渗透测试。
## 关于
**渗透测试 MCP 工具包** 是一个 [FastMCP](https://github.com/jlowin/fastmcp) 服务器,暴露了 **50 个 Kali Linux 安全工具**,通过 MCP stdio 接口,并打包在一个 `kalilinux/kali-rolling` Docker 容器中。它旨在 **100% 由 AI 代理驱动**:指向一个 MCP 客户端,如 **Claude Code** 或 **Codex**(或 Cursor / Gemini CLI / LM Studio / Open WebUI),并让代理成为操作员 - 它选择工具,构建 argv,验证目标,并读取输出。代理运行渗透测试;工具包仅使 Kali 可作为一组可调用的 MCP 工具。
范围(`MCP_PENTEST_SCOPE`)控制代理可以扫描的位置,而不是是否可以扫描。默认情况下,它是 **默认开放并带有警告**;您是授权检查门户。请仅对您拥有或明确授权测试的系统使用它 - 请参阅底部的 [法律免责声明](#-legal--educational-disclaimer)。
选择一个层级,运行一条命令,连接您的客户端。
---
## 快速开始
运行 **一条命令** - 它检查 Docker,构建层级镜像,并使用您的客户端注册 `pentest` MCP 服务器。然后打开客户端;工具已准备就绪。
选择一个层级,选择一个客户端,粘贴。macOS / Linux / Git-Bash 使用 `curl | bash` 行;Windows PowerShell 使用 `irm` 行。两者执行相同的操作。
### 50 个工具 - 完整套件(默认推荐)
**Claude Code** - 在用户范围内注册 `pentest`(在每个项目中可用):
```bash
# macOS / Linux / Git-Bash
curl -fsSL https://raw.githubusercontent.com/KoaBrown/pentest-mcp-toolkit/main/install/install.sh | bash -s -- --tier 50 --client claude-code
```
```powershell
# Windows PowerShell
& ([scriptblock]::Create((irm https://raw.githubusercontent.com/KoaBrown/pentest-mcp-toolkit/main/install/install.ps1))) -Tier 50 -Client claude-code
```
**Codex** - 写入 `~/.codex/config.toml`:
```bash
# macOS / Linux / Git-Bash
curl -fsSL https://raw.githubusercontent.com/KoaBrown/pentest-mcp-toolkit/main/install/install.sh | bash -s -- --tier 50 --client codex
```
```powershell
# Windows PowerShell
& ([scriptblock]::Create((irm https://raw.githubusercontent.com/KoaBrown/pentest-mcp-toolkit/main/install/install.ps1))) -Tier 50 -Client codex
```
首次构建会拉取 Kali + 工具包(约 5-10 分钟)。镜像大小约 1.5 GB(metasploit 较大)。
### 25 个工具 - 轻量级 TCP 子集
**Claude Code**:
```bash
# macOS / Linux / Git-Bash
curl -fsSL https://raw.githubusercontent.com/KoaBrown/pentest-mcp-toolkit/main/install/install.sh | bash -s -- --tier 25 --client claude-code
```
```powershell
# Windows PowerShell
& ([scriptblock]::Create((irm https://raw.githubusercontent.com/KoaBrown/pentest-mcp-toolkit/main/install/install.ps1))) -Tier 25 -Client claude-code
```
**Codex**:
```bash
# macOS / Linux / Git-Bash
curl -fsSL https://raw.githubusercontent.com/KoaBrown/pentest-mcp-toolkit/main/install/install.sh | bash -s -- --tier 25 --client codex
```
```powershell
# Windows PowerShell
& ([scriptblock]::Create((irm https://raw.githubusercontent.com/KoaBrown/pentest-mcp-toolkit/main/install/install.ps1))) -Tier 25 -Client codex
```
构建速度更快,镜像大小约 370 MB。无原始套接字或重型工具。
需要另一个客户端或手动构建?请参阅 [docs/CLIENTS.md](docs/CLIENTS.md) 和下面的 [从源代码构建](#build-from-source--verify)。
---
## 连接您的客户端
规范启动命令(每个客户端都使用 stdio,因此只有 **配置文件 + 密钥** 不同):
```bash
docker run -i --rm \
--cap-add=NET_RAW --cap-add=NET_ADMIN \
-e MCP_PENTEST_SCOPE= \
-e MAX_OUTPUT=50000 \
-e CMD_TIMEOUT=300 \
-e PENTEST_TIER=50 \
-v "$(pwd)/work:/work" \
pentest-mcp-toolkit:50
```
- **Claude Desktop** / **Codex** / **Claude Code** / **Cursor** / **Gemini CLI** / **LM Studio** / **Open WebUI** - 准确的文件路径和代码段在 [docs/CLIENTS.md](docs/CLIENTS.md) 中。安装程序为您编写:`bash install/install.sh --tier 50 --client claude-desktop`.
> 层级 25:将 `:50` 替换为 `:25`,并删除两个 `--cap-add` 标志。
---
## 范围 ⚠️ 重要
`MCP_PENTEST_SCOPE` 控制 **AI 可以扫描的位置**,而不是 **是否可以扫描**。默认情况下,它是 **空** = 工具包可以扫描 **任何主机**。这与“任何设备,无需配置”相匹配,但意味着 **您** 是唯一的授权检查。扫描真实目标时,请将其限制在您的实验室中:
```bash
-e MCP_PENTEST_SCOPE=10.0.0.0/8,192.168.0.0/16,my-lab.local
# 或在安装时:
bash install/install.sh --tier 50 --client codex --scope 192.168.1.0/24
```
请参阅 [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) § Scope guard 获取完整的行为(IP-in-CIDR,CIDR `subnet_of`,域名后缀)。
---
## 功能(原始套接字扫描)
原始套接字扫描需要 **两个文件功能(在构建时烘焙)** 和运行时 `docker run` 上的功能:
| 工具 | 标志 |
|---|---|
| `nmap -sS`(SYN 扫描类型) | `--cap-add=NET_RAW` |
| `masscan_scan` | `--cap-add=NET_RAW --cap-add=NET_ADMIN` |
| `naabu` SYN | `--cap-add=NET_RAW` |
| `traceroute_host` | `--cap-add=NET_RAW` |
上面的规范启动命令已经包含它们。默认 `nmap_scan` 为 `-sT`(TCP 连接),不需要功能。层级 25 默认情况下提供 TCP-only(无需 `--cap-add`);可以为 nmap/naabu 设置 setcap,以便您 **可以** 添加标志。
---
## 按层级划分的工具
### 层级 25(25 个工具 - 轻量级)
| 类别 | 工具 |
|---|---|
| 网络(3) | `nmap_scan`, `naabu_port_scan`, `nc_banner_grab` |
| DNS / OSINT(6) | `subfinder_enum`, `assetfinder_enum`, `theharvester_enum`, `dnsrecon_scan`, `dig_lookup`, `whois_lookup` |
| Web(6) | `whatweb_scan`, `http_probe`, `nuclei_scan`, `nikto_scan`, `wapiti_scan`, `wpscan_scan` |
| 内容 / 模糊测试(4) | `gobuster_dir`, `ffuf_scan`, `dirsearch_scan`, `feroxbuster_scan` |
| 注入 / 爬取(4) | `sqlmap_scan`, `dalfox_xss`, `arjun_params`, `hakrawler_crawl` |
| 本地 / 离线(2) | `searchsploit_search`, `hashid_identify` |
### 层级 50(50 个工具 - 所有工具)
层级 25 是其严格的子集。层级 50 添加:
| 类别 | 新增工具(在层级 25 之上) |
|---|---|
| 网络(5) | + `masscan_scan`, `traceroute_host` |
| DNS / OSINT(10) | + `spiderfoot_scan`, `dnsenum_scan`, `dnstwist_scan`, `fierce_scan` |
| Web(7) | + `joomscan_scan` |
| 内容 / 模糊测试(8) | + `dirb_scan`, `gobuster_dns`, `gobuster_vhost`, `wfuzz_scan` |
| 注入 / 爬取(5) | + `dotdotpwn_traversal` |
| 利用(2) | `searchsploit_search` + `msfvenom_payload` |
| 网络服务 / 暴力破解(8) | `enum4linux_scan`, `smbclient_list`, `smbmap_enum`, `netexec_smb`, `snmpwalk_enum`, `onesixtyone_snmp`, `smtp_user_enum`, `hydra_brute` |
| 哈希 / 密码列表(4) | `john_crack`, `hashid_identify`, `cewl_wordlist`, `crunch_wordlist` |
| 法医(1) | `binwalk_scan` |
---
## 从源代码构建 / 验证
```bash
# 语法检查(无需依赖)
python -m py_compile src/_helpers.py src/server.py src/tools/*.py
# MCP 往返:确认层级提供正确的工具数量
echo '{"jsonrpc":"2.0","method":"tools/list","id":1}' | \
docker run -i --rm pentest-mcp-toolkit:50
# 完整的烟雾测试(初始化 + 工具/列表 + 真实的工具/调用)
python scripts/smoke_test.py --tier both # 隔离
python scripts/smoke_test.py --tier 50 --net # + live scanme.nmap.org 扫描
```
---
## 架构
一个 `src/` 树,两个 Dockerfiles;`PENTEST_TIER` 环境变量控制哪些工具注册。工具函数是 `src/tools/<category>.py` 中的裸 `async def`;`src/server.py` 在注册时应用 `@mcp.tool()`。合约 - 无 shell,运行前验证,范围守卫,字符串输出,单行文档字符串 - 生存于 [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) 中。开发规则在 [docs/CLAUDE.md](docs/CLAUDE.md) 中。
---
## 许可证
[MIT](LICENSE)。Kali 工具许可证是其上游项目的许可证;此工具包仅打包和编排它们。
---
## ⚖️ 法律和教育免责声明
> **这不是法律建议。** 以下内容是从常见的开源安全工具约定中起草的一般免责声明。它不建立律师-客户关系。 如果您不确定在您的司法管辖区内是否合法运行某个测试,请在运行前咨询合格的律师。
该项目 - 源代码,Docker 镜像和安装程序 - 仅供 **教育目的,防御性安全审计,授权漏洞验证和您拥有或明确授权测试的系统的渗透测试**。
**仅限授权使用。** 工具包附带的 `MCP_PENTEST_SCOPE` 默认开放,意味着代理可以默认定向到任何可达的主机。 该默认存在是为了方便,**不是许可**。 部署此容器授予 **扫描任何系统** 的权限。 您必须在扫描,探测,模糊,暴力破解或以其他方式与之交互之前,获得每个目标的所有者/操作员的明确书面许可。 “我只是测试”不是同意。
**您承担所有责任。** 作者(们)不承担任何责任,也不负责使用此软件进行的任何滥用,损害,数据丢失,服务中断或非法活动。 通过部署或使用此工具包,您同意您 - 而不是作者(们) - 完全负责遵守所有适用的本地,国家,全国和国际法律,包括但不限于:
- **美国** - 计算机欺诈和滥用法,18 U.S.C. § 1030;电子通信隐私法,18 U.S.C. § 2510 等;以及各州的未经授权访问法规。
- **英国** - 1990 年计算机滥用法。
- **欧盟/EEA** - 2013/40/EU 关于信息系统攻击的指令,由每个成员国转化为国家法律。
- **其他司法管辖区** - 您所在国家的类似计算机滥用,未经授权访问,数据保护(例如GDPR /英国GDPR)和隐私法规。
未经授权访问计算机系统在大多数司法管辖区都是犯罪,无论意图如何或工具是否容易使用。 可以访问主机 **的工具并不意味着可以扫描您不拥有的主机**。
**无担保。** 本软件在 [MIT License](LICENSE) 下提供,不附带任何形式的担保,明确或暗示,包括但不限于适销性担保,特定用途担保和非侵权担保。 软件的质量和性能风险完全由您承担。
**赔偿。** 使用此软件,您同意赔偿并使作者(们)和贡献者免受因您使用或滥用软件或违反任何法律或第三方权利而产生的任何索赔,损害,损失或费用(包括合理的律师费)的损害。
**第三方工具。** 此处编排的 Kali 工具(nmap,nuclei,sqlmap,metasploit 等)受其上游项目版权和许可的约束。 此工具包仅打包和调用它们;它对它们没有任何权利,也不与 Kali Linux 或这些项目相关联。 他们的许可证和用法条款独立于此工具包。
**出口/再出口。** 某些安全工具可能受出口管制法规的约束(例如,美国 EAR,欧盟双重用途制度)。 您有责任在使用,部署或重新分发此软件时遵守适用的出口和再出口控制法规。
**如果您不同意这些条款,请不要部署或使用此工具包。**