Skip to main content
Glama

mythic-mcp

Предоставляет фреймворк Mythic C2 в качестве MCP сервера, чтобы LLM (Claude и др.) могли управлять агентами, выдавать задачи и запрашивать данные платформы в диалоговом режиме.

Возможности

  • Управление агентами — список активных обратных вызовов с полными деталями, просмотр отдельных агентов, завершение агентов, изменение таймеров сна

  • Выполнение задач — команды оболочки, чтение/загрузка/выгрузка файлов, mimikatz, make_token и универсальный диспетчер для любой команды Mythic

  • Данные платформы — хранилище учетных данных, журнал артефактов, журнал событий, обозреватель файлов, список полезных нагрузок, статус C2-профилей

  • Структурированные ответы — каждый инструмент возвращает {"status":"ok","data":...} или {"status":"error","message":...} для надежного парсинга LLM

  • Встроенные подсказки — шаблоны подсказок start_pentest и start_recon

Related MCP server: caldera-mcp

Требования

  • Python 3.10+

  • Менеджер пакетов uv

  • Запущенный сервер Mythic (v3.x+)

Установка

git clone <this-repo>
cd mythic-mcp
uv sync

Запуск

Позиционные аргументы

uv run main.py <username> <password> [host] [port]
uv run main.py mythic_admin mythic_admin_password localhost 7443

Переменные окружения

export MYTHIC_USERNAME=mythic_admin
export MYTHIC_PASSWORD=mythic_admin_password
export MYTHIC_HOST=localhost
export MYTHIC_PORT=7443
uv run main.py

Без TLS

uv run main.py mythic_admin password localhost 7443 --no-ssl

Если сервер запускается без вывода сообщений, это означает, что он работает — он ожидает ввод через stdio для MCP-сообщений.

Подключение к Claude Desktop

Найдите файл конфигурации:

ОС

Путь

Linux

~/.config/Claude/claude_desktop_config.json

macOS

~/Library/Application Support/Claude/claude_desktop_config.json

Сначала получите путь к uv:

which uv

Добавьте запись в раздел mcpServers:

{
  "mcpServers": {
    "mythic_mcp": {
      "command": "/home/user/.local/bin/uv",
      "args": [
        "--directory",
        "/path/to/mythic-mcp",
        "run",
        "main.py"
      ],
      "env": {
        "MYTHIC_USERNAME": "mythic_admin",
        "MYTHIC_PASSWORD": "mythic_admin_password",
        "MYTHIC_HOST": "localhost",
        "MYTHIC_PORT": "7443"
      }
    }
  }
}

Полностью закройте и перезапустите Claude Desktop. Значок инструментов в интерфейсе чата отобразит список всех зарегистрированных инструментов после подключения сервера.

Инструменты

Управление агентами / обратными вызовами

Инструмент

Описание

get_all_agents()

Список всех активных обратных вызовов с полными деталями (ОС, архитектура, PID, IP, сон, процесс, тип полезной нагрузки и т.д.)

get_agent_details(agent_id)

Полные детали для одного агента по отображаемому ID

kill_agent(agent_id)

Пометка агента как неактивного в Mythic

set_sleep(agent_id, interval, jitter)

Изменение интервала сна (секунды) и джиттера (%)

Выполнение задач

Инструмент

Описание

run_shell_command(agent_id, command_line)

Выполнение команды оболочки через интерпретатор агента по умолчанию

read_file(agent_id, file_path)

Чтение файла с целевой системы (использует cat)

download_file(agent_id, file_path)

Загрузка файла и возврат его в формате base64

upload_file(agent_id, file_name, remote_path, content_b64)

Загрузка файла в кодировке base64 на целевую систему

run_as_user(agent_id, username, password)

make_token — аутентификация для сетевых вызовов от имени другого пользователя

execute_mimikatz(agent_id, mimikatz_arguments)

Запуск mimikatz (например, sekurlsa::logonpasswords)

execute_command(agent_id, command_name, parameters)

Универсальный диспетчер — любая команда Mythic по имени

Данные платформы

Инструмент

Описание

get_credentials()

Все учетные данные в хранилище учетных данных Mythic

get_artifacts(limit)

Журнал артефактов (файлы, ключи реестра, созданные процессы)

get_event_log(limit)

Журнал событий операции

browse_files(agent_id, path)

Записи обозревателя файлов для каталога на целевой системе

list_payloads()

Все неудаленные полезные нагрузки со статусом сборки и C2-профилем

list_c2_profiles()

Все C2-профили со статусом выполнения

Подсказки

Подсказка

Описание

start_pentest(threat_actor, objective)

Настройка Claude на эмуляцию конкретного субъекта угрозы для достижения цели

start_recon()

Настройка Claude на выполнение начальной разведки по всем активным агентам

Пример использования в Claude

Use the start_recon prompt.
List all active agents, then run whoami on agent 1.
Download /etc/passwd from agent 2 and show me its contents.
Run mimikatz sekurlsa::logonpasswords on agent 3.
Use execute_command to run 'ps' on agent 1 with parameters {"host": "."}.

Архитектура

Claude Desktop
     │  MCP stdio
     ▼
main.py  (FastMCP tools + prompts)
     │
     ▼
lib/mythic_api.py  (MythicAPI class)
     ├─ mythic Python library  →  Mythic GraphQL/REST API
     └─ httpx (raw GraphQL)   →  Mythic GraphQL endpoint

Все вызовы задач используют asyncio.wait_for с таймаутом 60 секунд. GraphQL-запросы пропускают проверку TLS (verify=False) для обработки самоподписанного сертификата Mythic.

Справочник переменных окружения

Переменная

Значение по умолчанию

Описание

MYTHIC_USERNAME

—

Имя пользователя оператора Mythic (обязательно)

MYTHIC_PASSWORD

—

Пароль оператора Mythic (обязательно)

MYTHIC_HOST

localhost

Имя хоста или IP-адрес сервера Mythic

MYTHIC_PORT

7443

Порт сервера Mythic

Related MCP Connectors

Related MCP Servers