Skip to main content
Glama

pentestMCP: тестирование на проникновение с помощью ИИ через MCP

License: MIT

pentestMCP предоставляет мощный мост между большими языковыми моделями (LLM) и практическими инструментами тестирования на проникновение через Model Context Protocol (MCP). Этот проект функционирует как MCP-сервер, предоставляя набор из более чем 20 стандартных утилит для оценки безопасности (Nmap, Nuclei, ZAP, SQLMap и т.д.) в виде вызываемых 'инструментов'. Это позволяет ИИ-агентам в MCP-совместимых клиентах (таких как Claude Desktop или определенные конфигурации VS Code) использовать эти утилиты для автоматизированных и интерактивных задач анализа безопасности.

Цель — обеспечить управление сложными рабочими процессами безопасности на естественном языке, делая возможности тестирования на проникновение более доступными и интегрированными в среды, управляемые ИИ. Эта работа вдохновлена GhidraMCP от Laurie Kirk.


Содержание


Related MCP server: redteam-mcp

Видео-демонстрация

https://github.com/user-attachments/assets/930c879a-5cb4-478a-b033-f30df0e770a6

Основные концепции и архитектура

pentestMCP строго следует спецификации MCP, функционируя исключительно как MCP-сервер. Он не встраивает и не взаимодействует напрямую с какой-либо конкретной LLM. Поток взаимодействия опосредуется приложением MCP Client Host:

  1. Приложение клиентского хоста (например, Claude Desktop, пользовательский агент): подключается к pentestMCP (обычно через stdio, управляемый Docker), управляет взаимодействием с пользователем и взаимодействует с выбранной LLM.

  2. LLM: получает пользовательские запросы и определения инструментов (от pentestMCP через клиентский хост). Она решает, какие инструменты вызывать, исходя из контекста.

  3. pentestMCP Server (этот проект): работает внутри Docker-контейнера. Прослушивает запросы tools/call от клиентского хоста, выполняет соответствующий базовый инструмент (например, nmap) и возвращает результаты.

  4. Внешние инструменты: фактические утилиты командной строки, инкапсулированные в Docker-образе.

Сервер построен с использованием Python MCP SDK (mcp.server.fastmcp.FastMCP) и включает:

  • Обнаружение инструментов: использует подсказки типов Python и docstrings для автоматической генерации схемы инструментов MCP.

  • Управление параллелизмом: threading.Semaphore ограничивает одновременное выполнение ресурсоемких сканирований.

  • Асинхронный шаблон сканирования: реализует методы запуска/получения для длительных задач (Nmap, Nuclei, SQLMap, Gobuster), чтобы не блокировать MCP-соединение.

sequenceDiagram
    participant User
    participant ClientHost as Client Host (Claude, VS Code)
    participant LLM
    participant PentestMCP as pentestMCP Server (Docker via stdio)
    participant ExtTool as External Tool (e.g., Nmap)

    User->>ClientHost: "Perform Nmap service scan on scanme.nmap.org"
    ClientHost->>PentestMCP: tools/list Request
    PentestMCP-->>ClientHost: List of Tools (including 'run_nmap_scan')
    ClientHost->>LLM: User Prompt + Available Tools Description
    LLM-->>ClientHost: Decision: Use 'run_nmap_scan', target='scanme.nmap.org', args='-sV'
    ClientHost->>PentestMCP: tools/call (name='run_nmap_scan', args={...})
    Note over PentestMCP, ExtTool: pentestMCP executes 'nmap -sV scanme.nmap.org' internally
    PentestMCP-->>ClientHost: tools/call Result (pid, output_path for async or direct output)
    ClientHost->>LLM: Tool Execution Result
    LLM-->>ClientHost: Formulate Final Response
    ClientHost-->>User: "Nmap scan launched/completed. Results..."

Ключевые возможности

  • Комплексный набор инструментов: интегрирует более 20 основных инструментов тестирования на проникновение через MCP.

  • Стандартизированный доступ: позволяет любому MCP-клиенту, поддерживающему запуск сервера через stdio, использовать сложные рабочие процессы тестирования на проникновение.

  • Неблокирующие сканирования: эффективно обрабатывает длительные сканирования, не блокируя поток взаимодействия.

  • Управление ресурсами: реализует базовое ограничение параллелизма для сканирований.

  • Портативность и воспроизводимость: среда Docker гарантирует наличие всех зависимостей и инструментов на всех платформах (Windows, macOS, Linux).

  • Интеграция веб-сканера: обеспечивает прямой контроль над функциями OWASP ZAP Active Scan и AJAX Spider.

Предварительные требования

  • Docker: требуется установка и запуск Docker Desktop (Windows/macOS) или Docker Engine (Linux). Убедитесь, что демон Docker активен.

  • Git: нужен только при локальной сборке образа (шаг git clone).

  • (Необязательно, но рекомендуется) экземпляр OWASP ZAP: для использования инструментов, связанных с ZAP (run_zap_*, run_active_scan_*, run_ajax_*). Этот экземпляр ZAP должен быть запущен и доступен по сети из внутри Docker-контейнера pentestMCP (см. раздел «Интеграция с клиентским хостом» для настройки).

Установка и настройка

Мы рекомендуем использовать готовый Docker-образ для самой быстрой и надежной настройки.

🐳 Использование готового Docker-образа (рекомендуется)

Использование готового образа позволяет избежать времени локальной сборки и гарантирует правильную установку всех инструментов (таких как gofang, nmap и nuclei) без проблем с зависимостями.

  1. Загрузите образ из Docker Hub:

    docker pull ramgameer/pentest-mcp:latest

    ℹ️ Примечание: В зависимости от вашего окружения может потребоваться аутентификация или проверка того, что демон Docker запущен.


🛠️ Сборка Docker-образа локально

⚠️ ВАЖНО: Локальная сборка в настоящее время наиболее эффективна и поддерживается в средах Linux.

Если вы хотите изменить код сервера, использовать самую последнюю версию или готовый образ недоступен, вы можете собрать Docker-образ локально.

  1. Клонируйте репозиторий:

    git clone https://github.com/ramkansal/pentestMCP.git
    cd pentestMCP
  2. Соберите Docker-образ:

    docker build -t pentest-mcp-server:custom .
  3. Установите SecLists (необязательно, но настоятельно рекомендуется):

    💡 Совет: Некоторые инструменты (например, Gobuster и утилиты для фаззинга) полагаются на большие словари. Для эффективной работы этих сканирований необходимо клонировать репозиторий SecLists. GXP5

Интеграция с клиентским хостом

pentestMCP работает внутри Docker и взаимодействует с клиентским хостом через stdio. Вы настраиваете свой хост (например, Claude Desktop, VS Code) для запуска сервера с помощью docker run -i ....

Интеграция с Claude Desktop

  1. Найдите/создайте файл конфигурации:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

    • Windows: %APPDATA%\Claude\claude_desktop_config.json

  2. Отредактируйте конфигурацию: добавьте/обновите раздел mcpServers. Используйте правильное имя образа (ramgameer/pentest-mcp:latest или ваш собственный тег).

    {
      "mcpServers": {
        "pentestMCP": {
          "command": "docker",
          "args": [
            "run",
            "--rm",
            "-i",
            "ramgameer/pentest-mcp:latest"
          ]
        }
      }
    }
  3. Полностью перезапустите Claude Desktop.

  4. Проверка: найдите значок . При нажатии на него должен отобразиться список инструментов для тестирования на проникновение.

  5. Взаимодействие: попросите Claude использовать инструменты (см. примеры в черновике).

Интеграция с VS Code Copilot Chat

Интеграция требует настройки параметров VS Code для определения MCP-сервера для агентов Copilot Chat, поддерживающих MCP.

  1. Установите предварительные требования: убедитесь, что установлены расширение Github Copilot и соответствующие расширения GitHub Copilot.

  2. Настройте параметры VS Code: откройте файл settings.json пользователя или рабочей области (Command Palette: "Preferences: Open Settings (JSON)"). Добавьте конфигурацию MCP-сервера по соответствующему пути (этот путь может измениться в зависимости от конкретной реализации агента Copilot Chat, обратитесь к его документации):

    "pentest-mcp": {
        "type": "stdio",
        "command": "docker",
        "args": [
            "run",
            "-i",
            "--rm",
            "ramgameer/pentest-mcp:latest"
        ]
    }
  3. Перезагрузите VS Code / агента: перезапустите VS Code или используйте соответствующие команды для перезагрузки конфигурации агента Copilot, чтобы изменения вступили в силу. Подробности смотрите в документации конкретного агента Copilot.

  4. Взаимодействие: используйте интерфейс Copilot Chat, возможно, вызывая инструменты через упоминания, если агент это поддерживает, или позвольте агенту вызывать их на основе ваших запросов.

Справочник инструментов

Сервер предоставляет множество инструментов, сгруппированных по функциям:

  • Разведка и перечисление:

    • run_subfinder: обнаруживает поддомены с помощью Subfinder от ProjectDiscovery.

    • launch_nmap_scan / fetch_nmap_results: выполняет сетевые сканирования Nmap и асинхронно получает результаты.

    • run_gobuster_scan / check_gobuster_status: выполняет перебор каталогов/файлов/DNS с помощью Gobuster асинхронно.

    • launch_gofang_scan / fetch_gofang_results: запускает gofang, универсальный веб-краулер с расширенными возможностями извлечения.

    • run_harvester / check_harvester_status: запускает theHarvester асинхронно для сбора OSINT (электронные письма, хосты, IP-адреса).

    • run_dig_tool: выполняет DNS-запросы dig.

    • fetch_whois_data: получает информацию WHOIS для домена.

    • run_curl_tool: выполняет команды cURL для HTTP-взаимодействия.

  • Сканирование уязвимостей:

    • launch_nuclei_scan / fetch_nuclei_results: запускает сканирование уязвимостей на основе шаблонов с помощью Nuclei от ProjectDiscovery асинхронно.

  • Анализ веб-приложений:

    • launch_arjun_scan / fetch_arjun_results: находит скрытые HTTP-параметры с помощью Arjun.

  • Поддержка эксплуатации:

    • run_searchsploit: ищет в локальной базе данных Exploit-DB с помощью Searchsploit.

    • run_sqlmap_tool / check_sqlmap_status: выполняет SQLmap для тестирования SQL-инъекций асинхронно.

  • Анализ Active Directory (инструменты ad_*):

    • Перечисление: ad_user_enum, ad_shares_enum, ad_smb_signing_check, ad_certipy_enum, ad_ldap_dump, ad_bloodhound_collect

    • Атаки/принуждение: ad_asreproast, ad_kerberoast, ad_password_spray, ad_coerce_petitpotam, ad_coerce_printerbug, ad_responder_poison, ad_relay_setup

    • Операции с учетными данными/доменом: ad_check_credentials, ad_secrets_dump, ad_dcsync

Star History Chart

Вопросы безопасности

  • Права выполнения: инструменты запускаются как appuser внутри Docker, но сам Docker работает с привилегиями хоста. Будьте осторожны с инструментами, которые изменяют файлы или требуют повышенного системного доступа.

  • Авторизация цели: КРИТИЧЕСКИ ВАЖНО: используйте эти инструменты только против систем, на которые у вас есть явное, предварительное, письменное разрешение. Несанкционированное сканирование незаконно и неэтично.

  • Сетевая доступность: если вы пробрасываете порт ZAP (-p 8888:8888), убедитесь, что брандмауэр хоста ограничивает доступ, если машина находится в ненадежной сети. Настроенный API-ключ ZAP обеспечивает контроль над экземпляром.

  • Проверка ввода: хотя MCP предоставляет структурированный ввод, базовые инструменты могут быть уязвимы к специально созданным аргументам, если они не обрабатываются надежно в функциях-обертках Python.

Участие в разработке

Вклад приветствуется! Сделайте форк репозитория, создайте ветку функции и отправьте pull request. Пожалуйста, убедитесь, что все вклады соответствуют этическим принципам тестирования. Отчеты об ошибках и предложения по функциям принимаются через GitHub Issues.

Лицензия

Этот проект распространяется на условиях лицензии MIT.

Отказ от ответственности

Данное программное обеспечение предназначено ИСКЛЮЧИТЕЛЬНО для образовательных целей и санкционированного, этичного тестирования безопасности. Любое использование против систем без явного разрешения строго запрещено и противозаконно. Авторы и участники проекта НЕ несут ответственности за неправомерное использование или ущерб, причиненный в результате работы этой программы. Используйте на свой страх и риск и соблюдайте все применимые законы и соглашения.

Благодарности

Глубокое вдохновение для этого проекта почерпнуто из новаторской работы Laurie Kirk над GhidraMCP.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

No tool schema history has been recorded yet.

Maintenance

ActivityMaintained
ResponsivenessResponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    F
    maintenance
    An MCP server that integrates various penetration testing tools, enabling security professionals to perform reconnaissance, vulnerability scanning, and API testing through natural language commands in compatible LLM clients like Claude Desktop.
    7
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    A penetration testing MCP server that runs 20 hacking tools inside a Kali Linux Docker container, enabling AI assistants to execute security scans and attacks via natural language.
    2
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    AI-powered Attack Surface Intelligence server that exposes industry-standard penetration testing tools via MCP, enabling AI agents to perform comprehensive security assessments.
    3
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    AI-powered penetration testing framework that can operate as an MCP server, enabling automated security assessments through natural language commands.
    2
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/RamKansal/pentestMCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server