Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Medusa — Кроссплатформенный C2-агент для Mythic с динамической загрузкой функций, SOCKS5-прокси, файловыми операциями, внедрением шеллкода и модулями постэксплуатации для macOS/Windows. | Kitploit
Инструменты/GitHubGitHub/mythicagents/medusa
Фреймворки для пентестаПовышение привилегийФреймворки для эксплойтовЛатеральное перемещениеШелл-кодПост-эксплуатацияКомандование и УправлениеRed TeamingИнструмент Удаленного ДоступаГенерация ШеллкодаРазработка Полезной Нагрузки
2085241 месяц назадПроверено Kitploit
GitHub
mythicagents/medusa

Medusa

Кроссплатформенный C2-агент для Mythic с динамической загрузкой функций, SOCKS5-прокси, файловыми операциями, внедрением шеллкода и модулями постэксплуатации для macOS/Windows.

Репозиторий

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Medusa Logo

Medusa

Medusa — это кроссплатформенный агент, совместимый как с Python 3.8, так и с Python 2.7.

Установка

Для установки Medusa вам понадобится Mythic v3, установленный на удалённом компьютере. Инструкции по установке Mythic вы можете найти на странице проекта Mythic.

Из корневого каталога установки Mythic выполните команду:

./mythic-cli install github https://github.com/MythicAgents/Medusa.git

После установки перезапустите Mythic, чтобы собрать нового агента.

Примечания по настройке RabbitMQ

Файл Payload_Type/medusa/rabbitmq_config.json является шаблоном и должен соответствовать вашему окружению Mythic.

  • Установите rabbitmq_password в значение вашего Mythic RABBITMQ_PASSWORD (обычно из .env файла Mythic).
  • Установите rabbitmq_host в имя хоста/контейнера RabbitMQ (часто mythic_rabbitmq в docker-compose конфигурациях или 127.0.0.1 для локальных привязок).
  • Установите mythic_server_host в имя хоста/контейнера сервера Mythic (часто mythic_server в docker-compose конфигурациях или 127.0.0.1 для локальных привязок).
  • Примечательные возможности

    • Динамическая загрузка/выгрузка функций агента для ограничения раскрытия возможностей агента на диске.
    • Загрузка Python-модулей в память для использования в пользовательских скриптах.
    • Кроссплатформенный SOCKS5 прокси.
    • Чтение буфера обмена macOS, захват экрана и разбор базы данных TCC.
    • Файловый браузер с поддержкой загрузки/скачивания.
    • Выполнение eval() динамического Python-кода.
    • Совместимость с прокси с базовой аутентификацией.

    Краткий справочник по командам

    Базовый агент и все включённые команды используют встроенные библиотеки Python, поэтому для их работы не требуются дополнительные пакеты. Агенты выполняют команды в потоках, поэтому длительные загрузки или скачивания не блокируют основной агент.

    Общие команды

    КомандаСинтаксисОписание
    catcat path/to/fileПрочитать и вывести содержимое файла.
    cdcd [.. dir]Сменить рабочую директорию (.. — переход на одну директорию вверх).
    cpcp src_file_or_dir dst_file_or_dirСкопировать файл или папку в указанное место.
    cwdcwdВывести рабочую директорию.
    downloaddownload [path]Скачать файл с целевой системы.
    download_bulkdownload_bulk [path1] [path2] ...Скачать несколько файлов с целевой системы одной задачей.
    exitexitЗавершить callback.
    envenvВывести переменные окружения.
    eval_codeeval_code [commands]Выполнить Python-код и вернуть результат.
    jobkilljobkill [task id]Отправить сигнал остановки длительной задаче.
    jobsjobsСписок длительных задач, например, скачиваний.
    list_moduleslist_modules [module_name]Список модулей в памяти или полный список файлов для конкретного модуля.
    loadload commandЗагрузить новую возможность в агента.
    load_moduleload_moduleЗагрузить заархивированный Python-модуль в память (адаптировано из этого и этого).
    load_scriptload_scriptЗагрузить и выполнить Python-скрипт через агента.
    lsls [. path]Список файлов и папок в [path] или используйте . для текущей рабочей директории.

    Команды macOS

    КомандаСинтаксисОписание
    clipboardclipboardВывести содержимое буфера обмена (использует Objective-C API, как описано Cedric Owens здесь. Только macOS, только Python 2.7).
    list_appslist_appsСписок приложений macOS (только Python 2.7, только macOS).
    list_tcclist_tcc [path]Список записей в базе данных TCC macOS (требуется полный доступ к диску, пока только Big Sur).
    screenshotscreenshotСделать скриншот (использует Objective-C API, только macOS, только Python 2.7).
    spawn_jxaspawn_jxaЗапустить процесс osascript и передать в него Javascript-содержимое.
    vscode_list_recentvscode_list_recent [state_db]Список файлов и папок, недавно открытых в VSCode.
    vscode_open_editsvscode_open_edits [backup_dir_path]Список несохранённых изменений в файлах VSCode.
    vscode_watch_editsvscode_watch_edits [path to remote dir] [poll_interval]Опрашивать директорию резервных копий VSCode с заданным интервалом для поиска несохранённых изменений.

    Команды Windows

    КомандаСинтаксисОписание
    shinjectshinjectВнедрить шеллкод в целевой PID с помощью CreateRemoteThread (только Windows — адаптировано из этого).
    load_dllload_dll dll_path dll_exportЗагрузить DLL с диска и выполнить экспортируемую функцию (ВНИМАНИЕ: эта DLL должна возвращать целочисленное значение по завершении; например, DLL, созданная через msfvenom, убьёт вашего агента по завершении).
    list_dllslist_dlls [pid]Прочитать память процесса (PEB) локального или целевого процесса, чтобы получить список загруженных DLL (только Python 3).
    pspsПолучить ограниченную информацию о процессах, например, PID, имена процессов, архитектуру и пути к бинарным файлам (только Python 3).
    ps_fullps_fullПолучить полную информацию о процессах, включая PPID, уровень целостности и командную строку (только Python 3).
    killkillЗавершить процесс по идентификатору процесса (только Python 3).

    Версии Python

    Обе версии агента Medusa используют реализацию AES256 HMAC, написанную на встроенных библиотеках (адаптировано из этого), что устраняет необходимость в каких-либо дополнительных зависимостях помимо стандартной установки Python. Таким образом, агент должен работать на хостах Windows, Linux и macOS. Стоит отметить, что эта криптографическая реализация добавляет некоторые накладные расходы при работе с большими файлами (скриншоты, скачивания и т.д.), но это приемлемо.

    Команды Py2 и Py3

    В директории Payload_Type/Medusa/agent_code вы увидите файлы base_agent с суффиксами py2 и py3. Аналогичные расширения файлов можно увидеть и для отдельных файлов функций.

    Скрипт builder.py считывает их, чтобы сначала выбрать правильную базовую версию Python для агента Medusa. Затем builder.py включит команды, специфичные для выбранной версии Python. Если команда имеет только расширение .py, она будет использоваться по умолчанию, исходя из предположения, что для версий Py2 и Py3 не нужен альтернативный код.

    Потоковые задачи

    Medusa использует базовую многопоточность для выполнения задач. Если задачи потенциально длительные, их можно реализовать с «проверкой остановки» для реагирования на сигнал от задачи jobkill. Это можно реализовать с помощью фрагмента кода, похожего на показанный ниже:

    root@kitploit:~
    if [task for task in self.taskings if task["task_id"] == task_id][0]["stopped"]:
      # Некоторое специфичное для задачи завершение
      return "Job stopped."
    

    Этот обработчик можно увидеть реализованным в командах download, upload, watch_dir и screenshot.

    Кроме того, если длительная задача должна выдавать непрерывный вывод, функция sendTaskOutputUpdate, включённая в базовый агент, может использоваться для обновления Mythic до завершения задачи. Ниже показана фиктивная функция, которая выдаёт непрерывный вывод и может быть остановлена через jobkill.

    root@kitploit:~
    def dummyFunction(self, task_id):
      while(True):
          # Проверяем, не получили ли сигнал остановки.
          if [task for task in self.taskings if task["task_id"] == task_id][0]["stopped"]: return "Job stopped."
    
          # Отправляем вывод обратно в Mythic
          self.sendTaskOutputUpdate(task_id, "We're still running")
    
          time.sleep(10)
    

    Поддерживаемые C2-профили

    Medusa в настоящее время поддерживает два C2-профиля: http (как с шифрованием AES256 HMAC, так и без него) и azure_blob.

    HTTP-профиль

    HTTP-профиль выполняет callback на сервер Mythic через базовый, нединамический профиль. GET-запросы для получения задач, POST-запросы с ответами.

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

    • Скрипты браузера и код агента адаптированы из работ @its_a_feature_ и @djhohnstein.
    • MacC2 и этот пост в блоге Cedric Owens.
    • EmPyre и этот пост в блоге Chris Ross.
    • Криптографическая магия здесь.
    • Иконка агента с flaticon.com.
    Скачать инструмент
    mvmv src_file_or_dir dst_file_or_dirПереместить файл или папку в указанное место.
    pip_freezepip_freezeПрограммно вывести список установленных пакетов в системе.
    ptypty [/bin/bash] / pty self / pty forkОткрыть интерактивную PTY-сессию. Режимы: spawn запускает программу с PTY, self открывает внутрипроцессный Python REPL с живым состоянием агента, fork форкает агента в Python REPL со снимком состояния (только Linux/macOS).
    rmrm file_or_dirУдалить файл или папку.
    shellshell [command]Выполнить команду оболочки, которая будет запущена с помощью subprocess.Popen(). Обратите внимание, что команда будет ждать завершения, так что будьте осторожны и не блокируйте агента.
    sockssocks start/stop [port]Запустить/остановить SOCKS5 прокси через агента Medusa.
    sleepsleep [seconds] [jitter percentage]Установить интервал callback агента в секундах.
    unloadunload commandВыгрузить существующую возможность из агента.
    unload_moduleunload_module module_nameВыгрузить Python-модуль, ранее загруженный в память.
    uploaduploadЗагрузить файл в удалённый путь на машине.
    watch_dirwatch_dir path secondsОтслеживать изменения в целевой директории с заданной периодичностью опроса.