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

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

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

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

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

Категории

Все категории
Loading categories
eden — Доказательство концепции UDRL для Cobalt Strike, созданный с помощью Crystal Palace, который объединяет технику потоковой передачи страниц Рафаэля Маджа с модульным шлюзом вызовов (Draugr). | Kitploit
Инструменты/GitHubGitHub/cobalt-strike/eden
Фреймворки для пентестаФреймворки для эксплойтовШелл-кодПост-эксплуатацияОбучение и ОбразованиеRed TeamingРазработка Полезной Нагрузки
GitHubcobalt-strike/eden

eden

Доказательство концепции UDRL для Cobalt Strike, созданный с помощью Crystal Palace, который объединяет технику потоковой передачи страниц Рафаэля Маджа с модульным шлюзом вызовов (Draugr).

Репозиторий
13778 месяцев назадПроверено Kitploit

Популярное

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

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

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

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

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

Eden

рисунок

Загрузчик Eden — это PoC UDRL для Cobalt Strike, созданный с помощью Crystal Palace, который объединяет технику потоковой передачи страниц Рафаэля Маджа (Raphael Mudge) из page streaming technique с модульным шлюзом вызовов (в настоящее время PIC-версия Sleepmask-VS Draugr callgate BOF).

Цель загрузчика Eden состоит в том, чтобы:

  • Продемонстрировать возможность использования Crystal Palace для комбинирования (и повторного использования) 'возможностей' для быстрой разработки пользовательских загрузчиков/инструментов
  • Служить примером для других, на основе которого можно строить
  • Помочь специалистам по безопасности понять, как работают UDRL (он полностью отлаживаем)
  • Информировать/стимулировать обсуждение безопасности

Для получения дополнительной информации о загрузчике Eden см. соответствующий блог.

Примечание: Назначение Eden — продемонстрировать идею использования Crystal Palace для объединения различных 'единиц выполнения' (т.е. возможностей) для создания пользовательских загрузчиков. Он не предназначен для того, чтобы быть полноценным 'обходным' загрузчиком, и поэтому в нем по замыслу отсутствует ряд базовых функций OPSEC. Например, он использует память RWX и не отслеживает/маскирует кучу Beacon'а (и поэтому он уязвим для YARA-сигнатур, таких как эта).

Краткое руководство по началу работы

Примечание: В этом кратком руководстве предполагается, что вы загрузили/собрали Crystal Palace и выполнили следующие шаги для настройки среды разработки.

  1. Сначала необходимо задать следующий параметр Malleable C2:
root@kitploit:~
stage {
    set sleep_mask "false";
}
  1. Откройте терминал WSL в корне репозитория и соберите загрузчик Eden: make clean; make.
  2. Скопируйте crystalpalace.jar в каталог вашего клиента Cobalt Strike.
  3. Загрузите eden.cna в клиент Cobalt Strike.
  4. При следующем экспорте полезной нагрузки Eden будет применен автоматически. Вы можете проверить это, посмотрев вывод в консоли скрипта:
root@kitploit:~
[14:55:55] [*] Generating Payload: HTTP -- Type: HTTP -- Arch: x64 -- Exit Function: Thread -- System Call: None -- HTTP Library: wininet
[14:55:56] [EDEN] Parsing C:\Users\wb\Desktop\eden\eden.spec...
[14:55:56] [EDEN] Applying eden ldr spec...
[14:55:56] [EDEN] Payload Size: 387060 bytes
[14:55:56] [*] Using user modified reflective DLL! DLLName=resources/beacon.x64.rl0k.dll Arch=x64

Примечание: Eden поддерживает HTTP(S), DNS и Pivot Beacons.

Руководство по отладке

Одним из ограничений Crystal Palace на момент выпуска является то, что в настоящее время он поддерживает только объектные файлы, собранные с помощью mingw. Если вы попытаетесь использовать COFF, собранный с помощью MSVC или Clang, обычно возникнут ошибки перемещения. Это может быть неприятно, так как mingw не поддерживает напрямую файлы pdb, и поэтому отладка при написании сложных Windows-методов может быть затруднительной. Однако вы можете добавить опцию -g в ваш Makefile, чтобы встроить отладочную информацию в исполняемые сборки. Это позволяет проходить по вашему коду в WinDbg. Для получения дополнительной информации об этом процессе рекомендуется прочитать следующий блог от Rastamouse.

Этот репозиторий использует описанный выше подход для сборки отладочной версии Draugr (draugr.x64.exe) и кода потоковой передачи страниц (guardexec.x64.exe) по умолчанию. Отладочная сборка Draugr не имеет зависимостей и собирается сразу, однако если вы хотите пошагово пройти/отладить код потоковой передачи страниц/перехвата IAT, вам необходимо выполнить следующие шаги:

1. Экспорт Beacon без загрузчика:

  • Загрузите debug/export_beacon_with_no_ldr.cna в ваш клиент CS и экспортируйте бесстадийный сырой x64 (HTTP) Beacon в каталог /eden/debug/. Это экспортирует DLL Beacon без отражающего загрузчика, который мы можем использовать для имитации точки входа guardexec.
  • (В WSL) $ xxd -i ./beacon_x64.bin > debug_beacon.h

2. Экспорт заглушки PIC Draugr из Crystal Palace:

  • Для этого вам нужно запустить Crystal Palace из WSL с помощью $ ./piclink /<path>/eden/debug/draugr.spec x64 /<path>/eden/debug/draugr.bin. Это заставит Crystal Palace выдать только заглушку PIC Draugr, которую мы можем использовать для имитации точки входа guardexec.
  • (В WSL) $ xxd -i ./draugr.bin > debug_druagr.h

3. Начало отладки в WinDbg

  • Пересоберите Eden после выполнения указанных выше шагов: make clean;make
  • Откройте WinDbg и выберите запуск исполняемого файла (/eden/bin/draugr.exe или /eden/bin/guardexec.exe)
  • Выберите Open source file и выберите соответствующий файл .c (например, guardexec.c при отладке кода потоковой передачи страниц).
  • Теперь вы можете проходить по шагам / устанавливать точки останова как для отдельного двоичного файла Draugr, подделывающего стек вызовов, так и для работающего Beacon с перехватами IAT. Предупреждение: маскировка не будет работать корректно в режиме отладки, так как для этого требуется, чтобы Crystal Palace во время генерации полезной нагрузки внедрил ключ.

Примечание: Не существует отладочного исполняемого файла для загрузчика, так как нет очевидного способа заставить Crystal Palace экспортировать отладочные полезные нагрузки для таких вещей, как зашифрованные DLL и их ключи. Поэтому становится нетривиальной задачей передать имитированные 'зашифрованные' буферы PIC.

Соображения по дизайну

  1. Загрузчик Eden в первую очередь предназначен для демонстрации возможностей Crystal Palace путем объединения различных 'возможностей' для создания нового загрузчика. Эту идею можно развить гораздо дальше, чем в этом репозитории (например, 'статический' PIC-загрузчик, полностью настраиваемый с помощью COFF-модулей (защитные ограждения, шлюзы вызовов, маскировка сна и т.д.)).

  2. Загрузчик Eden явно использует PIC-версию Draugr, чтобы он мог подделывать каждый вызов жизненного цикла Beacon (т.е. вызовы VirtualAlloc/LoadLibrary, используемые во время процесса отражающей загрузки). В некоторых случаях это может быть излишним (например, EDR не волнуют неподкреплённые вызовы LoadLibrary и т.д.), и в этом случае это можно изменить, чтобы использовать PICO (== 'BOF') эквивалент Draugr, который намного проще.

  3. Загрузчик Eden намеренно пытается сохранить 'шлюз вызовов' отдельным от загрузчика. Это сделано для модульности, так как идея заключается в том, что вы можете заменять BOFы BeaconGate/шлюзов вызовов. Следовательно, код шлюза вызовов Draugr полностью самодостаточен в своем собственном объектном файле. Заменив его другой 'возможностью', вы можете кардинально изменить TTP Eden.

  4. Загрузчик Eden намеренно не использует более новые функции Crystal Palace. Например, mergelib можно использовать с общей библиотекой Crystal Palace, LibTCG. Однако обратите внимание, что это означает потерю возможности отлаживать ваш код.

Устранение неполадок

Техника потоковой передачи страниц может повлиять на производительность Beacon для некоторых команд (например, по умолчанию внедрение процесса может занимать ~1 минуту(!) при настройке 4 видимых страниц). Вы можете увеличить #define MAXVISIBLE в guardexec.h, чтобы решить большинство проблем (значение по умолчанию для Eden равно 6). Как общая информация, потоковая передача страниц может вызывать проблемы с методами внедрения процессов (особенно если они зависят от времени).

Зачем это выпускать?

https://aff-wg.org/2025/03/13/the-security-conversation/

Связанные работы / Благодарности

Загрузчик Eden построен с использованием Crystal Palace (https://tradecraftgarden.org/crystalpalace.html) и использует следующие проекты:

  • Техника потоковой передачи страниц Рафаэля Маджа: https://tradecraftgarden.org/pagestream.html.
  • Техника подделки стека вызовов Draugr от NtDallas: https://github.com/NtDallas/Draugr.
  • Sleepmask-VS, который содержит примеры BOF-шлюзов вызовов. Эти 'возможности' были перепрофилированы и модифицированы для компиляции в PIC для использования с Crystal Palace.
  • Crystal-Kit от Rastamouse (https://github.com/rasta-mouse/Crystal-Kit) — это аналогичный проект, который также использует BOF Draugr BeaconGate, но с другой реализацией.

И наконец, благодарность @rastamouse, чьи блог-посты о Crystal Palace помогли в разработке.

Скачать инструмент