使用说明
KALI-MCP:AI驱动的渗透测试桥
一个“Vibecoder”风格的MCP服务器,通过Docker将LLM直接桥接到Kali Linux环境中。专为高速、人工智能驱动的安全审计、研发和快速渗透测试模拟而设计。
特性
- 充分潜力: 无需命令白名单——直接通过AI执行任何Kali工具(Nmap、SQLMap、Metasploit等)。
- 网络就绪: Docker功能
NET_ADMIN和NET_RAW用于隐形扫描和数据包制作。 - 码头化: 为完全隔离的环境设置一个命令。
- Claude桌面集成: 通过MCP配置直接插入Claude Desktop。
- GPL v3许可证: 免费和开源。
先决条件
在开始之前,请确保已安装以下内容:
- Docker 桌面版 (Windows/macOS/Linux)
- 克劳德桌面版
- Git
项目结构
kali-mcp/
├── Dockerfile # Kali Linux Docker environment
├── mcp_server.py # MCP bridge server
└── README.md
设置和安装
步骤1--克隆存储库
git clone https://github.com/edutechenterprises2023-ops/kali-mcp.git
cd kali-mcp
第二步——构建Docker镜像
docker build -t my-kali-mcp .
这将提取最新的Kali Linux滚动映像,并安装Nmap、SQLMap、Metasploit和MCP Python包。
步骤3——测试容器(可选)
docker run -i --rm --cap-add=NET_ADMIN --cap-add=NET_RAW my-kali-mcp
如果它开始时没有错误,你就可以走了。
在Docker桌面中启用MCP
Docker Desktop有一个内置的MCP工具包,必须启用该工具包才能让Claude与本地容器通信。
- 打开 Docker 桌面版.
- 点击 设置 齿轮图标(右上角)。
- 导航至 发展中的特点 (或 Beta功能 取决于您的版本)。
- 启用 “MCP工具包” / “模型上下文协议支持”.
- 点击 应用并重新启动.
如果你没有看到MCP选项,请确保Docker Desktop已更新到最新版本。
连接到克劳德桌面
步骤1——找到配置文件
开 视窗,Claude Desktop配置位于:
C:\Users\<username>\AppData\Roaming\Claude\claude_desktop_config.json
提示: 按
Win + R,类型%APPDATA%\Claude,然后按Enter键直接打开文件夹。
开 macOS,它位于:
~/Library/Application Support/Claude/claude_desktop_config.json
步骤2——编辑配置文件
打开 claude_desktop_config.json 在任何文本编辑器(记事本、VS Code等)中,粘贴以下内容:
{
"mcpServers": {
"kali-local": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"--cap-add=NET_ADMIN",
"--cap-add=NET_RAW",
"my-kali-mcp"
]
}
}
}
步骤3--重新启动克劳德桌面
完全退出并重新启动Claude Desktop。在Windows上:
- 右键单击中的Claude图标 系统托盘 (右下角)。
- 点击 退出.
- 从“开始”菜单重新打开Claude Desktop。
步骤4——验证连接
一旦Claude Desktop重新启动:
- 开始新的聊天。
- 寻找 🔧 工具 图标或输入栏中的MCP指示器。
- 你应该看看
kali-local列为可用的MCP服务器。 - 尝试测试提示:
Run nmap -sV localhost using the kali-local tool
如果Claude执行命令并返回输出,则一切正常。
运作原理
MCP服务器(mcp_server.py)公开单个工具-- execute_kali_cmd --Claude调用该命令在Kali容器中运行shell命令:
import subprocess
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("kali-tools-mcp")
@mcp.tool()
def execute_kali_cmd(command: str) -> str:
"""
Run any Kali Linux terminal command (nmap, sqlmap, etc.)
:param command: The full terminal command to execute.
"""
try:
result = subprocess.check_output(command, shell=True, stderr=subprocess.STDOUT, text=True)
return result
except subprocess.CalledProcessError as e:
return f"Error: {e.output}"
if __name__ == "__main__":
mcp.run()
流量: Claude发送命令字符串→ MCP服务器在容器内执行它→ 将输出返回给Claude。
故障排除
| 问题 | 修复 |
|---|---|
docker: command not found |
确保Docker Desktop已安装并正在运行 |
克劳德没有出现 kali-local 工具 |
检查JSON配置是否存在语法错误,然后重新启动Claude Desktop |
| 容器立即退出 | 运行 docker run -it my-kali-mcp bash 交互式调试 |
| MCP在Docker Desktop中不可用 | 将Docker Desktop更新到最新版本并在设置中启用MCP |
安全免责声明
⚠️ 仅供研发和教育使用。
此工具有意允许 远程代码执行(RCE) 在容器内。总是在一个 隔离实验室或虚拟机环境。切勿对您不拥有或没有明确书面许可进行测试的系统使用。作者不对误用负责。
许可证
GPL v3 --免费和开源。