项目简介
Kali Linux MCP Server 是一个基于 Model Context Protocol (MCP) 构建的服务器,旨在将 Kali Linux 强大的渗透测试工具集以标准化的方式提供给 LLM 客户端。通过该服务器,LLM 应用可以安全、便捷地调用 Kali Linux 中的各种安全工具,执行渗透测试任务,并获取结果。
主要功能点
- 命令执行: 支持在远程 Kali Linux 环境中执行各种命令,包括安全扫描、漏洞利用、密码破解等渗透测试工具以及常用的 Linux 命令。
- 交互式会话: 允许 LLM 客户端创建和管理与 Kali Linux 服务器的交互式会话,进行需要用户输入的复杂操作,例如 Metasploit Framework 的控制台交互。
- 工具注册与发现: 通过 MCP 协议声明自身提供的工具能力,方便 LLM 客户端发现和调用。
- 会话管理: 服务器端管理多个交互式会话,确保会话隔离和资源有效利用。
- 基于 SSH: 通过安全的 SSH 协议连接到 Kali Linux 服务器执行命令,保障操作的安全性。
安装步骤
-
准备 SSH 密钥对:
- 在您的本地机器上,使用 'ssh-keygen -t rsa' 命令生成 RSA 密钥对。
- 将生成的公钥(通常是 'id_rsa.pub' 文件内容)复制到仓库 'Dockerfile' 文件中指定位置替换,具体请查看 'Dockerfile' 中的注释说明。
- 将私钥(通常是 'id_rsa' 或根据您的设置)复制到 'C:\Users[Username].ssh\kali000' (Windows 用户) 或 '~/.ssh/kali000' (Linux/macOS 用户),并根据 'src\index.ts' 文件中的提示,修改私钥文件路径为您实际存放的路径。
-
配置 Docker 代理 (可选):
- 如果您在国内网络环境中使用 Docker,可能需要配置 Docker 使用主机代理。
- 仓库的 'Dockerfile' 中已包含使用主机 Socks5 代理的配置 ( '192.168.31.110:1080' )。请根据您的实际代理情况修改 'Dockerfile' 中的代理地址和端口,或者移除相关配置。
- 'Dockerfile' 中 DNS 服务器也配置为通过 'dns2socks' 转发到本地 '127.0.0.1' 使用 Socks5 代理,您可以根据需要修改或移除。
-
更新 Kali Linux 镜像 (可选):
- 仓库默认使用 'booyaabes/kali-linux-full' 镜像,该镜像可能包含较旧的软件版本。
- 如果需要更新 Kali Linux 镜像中的软件,请按照 'README.md' 中 # 3:原始使用的"booyaabes/kali-linux-full"镜像... 部分的步骤操作。注意更新过程可能耗时较长,特别是更新所有工具 ('kali-linux-everything')。
-
编译 MCP 服务器代码:
- 确保已安装 Node.js 和 npm。
- 在仓库根目录下,打开终端,运行 'npm install' 安装依赖。
- 运行 'npm run build' 编译 TypeScript 代码,编译后的文件将输出到 'build' 目录。核心服务器文件为 'build/index.js'。
-
编译和部署 Docker 镜像:
- 确保已安装 Docker。
- 在仓库根目录下,打开终端,运行以下命令编译 Docker 镜像:
docker build -t kali-pentest-mcp . - 运行以下命令部署 Docker 镜像并启动容器,将容器的 22 端口映射到主机的 2222 端口:
docker run --name kali-container -d --privileged -p 2222:22 kali-pentest-mcp
服务器配置 (MCP 客户端配置)
MCP 客户端需要配置以下 JSON 格式的信息以连接到 Kali Linux MCP Server。以下配置信息假设您的 MCP 服务器运行在本地,并使用 'node' 命令启动 'build/index.js' 文件。
{ "server": { "name": "kali-pentest-mcp-server", "command": "node", "args": ["D:/kalimcp/build/index.js"], "env": {} } }
配置参数说明:
- '"name"': 服务器名称,可以自定义,例如 '"kali-pentest-mcp-server"'。
- '"command"': 启动 MCP 服务器的命令,这里使用 'node' 命令来运行 JavaScript 文件。
- '"args"': 启动命令的参数,这里指向编译后的服务器入口文件路径。请根据您的实际文件路径进行修改,例如 Windows 系统可以使用 'D:/kalimcp/build/index.js',Linux/macOS 系统可以使用 '/path/to/kalilinuxmcp/build/index.js'。 请注意修改为服务器部署环境的实际路径。
- '"env"': 环境变量,如果需要可以设置额外的环境变量,这里为空。
注意: 请根据您的 MCP 服务器实际部署路径,修改 '"args"' 中的文件路径。 上述示例路径 'D:/kalimcp/build/index.js' 仅为示例,您需要替换为服务器文件在您的部署环境中的真实路径。
基本使用方法
- 启动 MCP 客户端: 配置好上述服务器信息后,启动您的 MCP 客户端应用。客户端会尝试连接到 Kali Linux MCP Server。
- 列出工具: 客户端可以发送 'ListToolsRequest' 请求到服务器,获取服务器提供的工具列表,例如 'execute_command', 'start_interactive_command' 等。
- 调用工具:
- 执行命令 (execute_command): 客户端可以调用 'execute_command' 工具,并提供要执行的命令作为参数。服务器将在 Kali Linux 环境中执行该命令,并将命令输出返回给客户端。适用于执行非交互式的命令,例如 'ping 127.0.0.1' 或 'nmap scanme.nmap.org'。
- 启动交互式命令 (start_interactive_command): 客户端可以调用 'start_interactive_command' 工具,启动一个交互式会话,例如 'msfconsole' 或 'mysql -u root -p'。服务器会返回一个会话 ID,客户端可以使用该 ID 与交互式会话进行后续交互。
- 发送输入到命令 (send_input_to_command): 对于已启动的交互式会话,客户端可以调用 'send_input_to_command' 工具,向会话发送输入内容,例如用户名、密码或命令。
- 获取命令输出 (get_command_output): 客户端可以调用 'get_command_output' 工具,获取交互式会话的最新输出。
- 关闭交互式命令 (close_interactive_command): 客户端可以调用 'close_interactive_command' 工具,关闭指定的交互式会话。
- 注意事项:
- 每次 Docker 容器重启后,可能需要客户端重新刷新 MCP 服务器连接,因为 SSH 连接可能断开。
- 请确保 Kali Linux Docker 容器已成功启动,并且 SSH 服务在容器内正常运行。
- 首次连接可能需要一些时间建立 SSH 连接和初始化环境。
通过以上步骤,您可以使用 Kali Linux MCP Server 将 Kali Linux 的渗透测试能力集成到您的 LLM 应用中,实现更强大的安全自动化和智能化功能。
信息
分类
开发者工具