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

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

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

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

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

Категории

Все категории
Loading categories
BokuLoader — Доказательство концепции Cobalt Strike Reflective Loader, целью которого является воссоздание, интеграция и улучшение функций обхода защиты Cobalt Strike! | Kitploit
Инструменты/GitHubGitHub/boku7/bokuloader
Фреймворки для пентестаФреймворки для эксплойтовШелл-кодАнализ Бинарных ФайловRed TeamingРазработка Полезной Нагрузки
GitHubboku7/bokuloader

BokuLoader

Доказательство концепции Cobalt Strike Reflective Loader, целью которого является воссоздание, интеграция и улучшение функций обхода защиты Cobalt Strike!

Репозиторий
1.4k275222 лет назадПроверено Kitploit

Популярное

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

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

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

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

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

BokuLoader : Cobalt Strike Reflective Loader

Загрузчик пользовательской рефлективной загрузки (UDRL) proof-of-concept, который воспроизводит, интегрирует и улучшает функции обхода Cobalt Strike!

Авторы:

АвторTwitterЗначимые вклады
Bobby Cooke@0xBokuПервоначальный автор и мейнтейнер проекта
Santiago Pecin@s4ntiago_pЗначительные улучшения рефлективного загрузчика
Chris Spehn@ConsciousHackerСкриптинг Aggressor
Joshua Magri@passthehashbrwnХукинг IAT
Dylan Tran@d_tranmanСпуфинг стека вызовов рефлективного загрузчика
James Yeung@5cript1diotКосвенные системные вызовы

Особенности использования UDRL

Встроенный рефлективный загрузчик Cobalt Strike является надежным и поддерживает все функции обхода PE, предоставляемые Cobalt Strike. Основной недостаток использования пользовательского UDRL заключается в том, что функции обхода PE могут поддерживаться или не поддерживаться "из коробки".

Цель публичного проекта BokuLoader — помочь red-командам создать собственный внутренний UDRL для Cobalt Strike. Проект направлен на поддержку всех значимых функций обхода PE Cobalt Strike. Некоторые функции обхода используют интеграцию CS, другие были полностью переработаны, а некоторые не поддерживаются.

Перед использованием этого проекта в любой форме вы должны проверить, что функции обхода работают как задумано. Между кодом на C и скриптом Aggressor компиляция с разными версиями операционных систем, компиляторов и Java может давать разные результаты.

Функции обхода

Специфичные для BokuLoader функции обхода

  • Спуфинг стека вызовов рефлективного загрузчика с помощью синтетических фреймов.
  • Код рефлективного загрузчика на ASM/C.
  • Косвенные системные вызовы NT через техники HellsGate и HalosGate.
    • Все изменения защиты памяти для всех вариантов выделения выполняются с помощью косвенного системного вызова NtProtectVirtualMemory.
  • obfuscate "true" с пользовательской реализацией скрипта Aggressor для UDRL.
  • NOHEADERCOPY
    • Загрузчик не будет копировать заголовки сырого beacon DLL в виртуальный beacon DLL. Первые 0x1000 байт будут нулевыми.
  • XGetProcAddress для разрешения символов
    • Не использует Kernel32.GetProcAddress.
  • xLoadLibrary для разрешения базового адреса DLL и загрузки DLL
    • Для загруженных DLL получает базовый адрес из TEB->PEB->PEB_LDR_DATA->InMemoryOrderModuleList.
    • Не использует Kernel32.LoadLibraryA.
  • Шифр Цезаря для обфускации строк.
  • Размер UDRL 100k.
  • Имена импортируемых DLL и строки имен записей импорта затираются в виртуальном beacon DLL.

Поддерживаемые функции обхода Malleable PE

КомандаОпция(и)Поддерживается
allocatorHeapAlloc, MapViewOfFile, VirtualAllocВсе поддерживаются через реализацию BokuLoader
module_x64строка (имя DLL)Поддерживается через реализацию BokuLoader. Те же требования к затиранию DLL, что и в реализации CS
obfuscatetrue/falseBeacon'ы HTTP/S поддерживаются через реализацию BokuLoader. SMB/TCP в настоящее время не поддерживаются для obfuscate true. Подробности в issue. Принимается помощь, если вы можете исправить :)
entry_pointRVA как десятичное числоПоддерживается через реализацию BokuLoader
cleanuptrueПоддерживается через интеграцию CS
userwxtrue/falseПоддерживается через реализацию BokuLoader
sleep_mask(true/false) или (Sleepmask Kit+true)Поддерживается. При использовании по умолчанию "sleepmask true" (без sleepmask kit) установите "userwx true". При использовании sleepmask kit, поддерживающего RX-память beacon.text (src47/Ekko), установите "sleepmask true" && "userwx false".
magic_mz_x64строка из 4 символовПоддерживается через интеграцию CS
magic_peстрока из 2 символовПоддерживается через интеграцию CS
transform-x64 prependэкранированная шестнадцатеричная строкаМодификация скрипта Aggressor BokuLoader.cna
transform-x64 strrepстрока строкаМодификация скрипта Aggressor BokuLoader.cna
stomppetrue/falseНе поддерживается. BokuLoader не копирует заголовки beacon DLL. Первые 0x1000 байт виртуального beacon DLL равны 0x00
checksumчислоЭкспериментально. Модификация скрипта Aggressor BokuLoader.cna
compile_timeстрока дата-времяЭкспериментально. Модификация скрипта Aggressor BokuLoader.cna
image_size_x64десятичное значениеНе поддерживается
nameстрокаЭкспериментально. Модификация скрипта Aggressor BokuLoader.cna
rich_headerэкранированная шестнадцатеричная строкаЭкспериментально. Модификация скрипта Aggressor BokuLoader.cna
stringwстрокаНе поддерживается
stringстрокаНе поддерживается

Тестирование

  • (22.02.23) Все 4 метода аллокатора протестированы с threatexpress/malleable-c2/master/jquery-c2.4.7.profile

Происхождение проекта

  • Основан на невероятном проекте Рефлективного загрузчика Стивена Фьюера:
    • https://github.com/stephenfewer/ReflectiveDLLInjection
  • Изначально создан при работе над видео Renz0h по рефлективным DLL из курса Sektor7 Malware Developer Intermediate (MDI)

Использование

  1. Скомпилируйте объектный файл BokuLoader с помощью make
  2. Запустите Team Server Cobalt Strike
  3. В Cobalt Strike импортируйте скрипт Aggressor BokuLoader.cna
  4. Сгенерируйте x64 beacon (Attacks -> Packages -> Windows Executable (S))
  5. Используйте Script Console, чтобы убедиться, что BokuLoader реализован в сборке beacon
  • Не поддерживает опцию x86. Бинарник x86 — это оригинальный объектный файл рефлективного загрузчика.
  • Генерация RAW beacon работает "из коробки". При использовании Artifact Kit для загрузчика beacon переменная stagesize должна быть больше значения по умолчанию.
    • Смотрите документацию по пользовательскому рефлективному загрузчику Cobalt Strike для дополнительной информации

Рекомендации по обнаружению

Жестко закодированные строки

  • BokuLoader изменяет некоторые часто обнаруживаемые строки на новые жестко закодированные значения. Эти строки могут быть использованы для сигнатуры BokuLoader:
Оригинальная строка Cobalt StrikeСтрока BokuLoader Cobalt Strike
ReflectiveLoaderBokuLoader
Microsoft Base Cryptographic Provider v1.012367321236742382543232341241261363163151d
(admin)(tomin)
beaconbacons

Аллокаторы памяти

Затирание модуля DLL

  • Вызов Kernel32.LoadLibraryExA для отображения DLL с диска.
  • Третий аргумент Kernel32.LoadLibraryExA — DONT_RESOLVE_DLL_REFERENCES (0x00000001).
    • система не вызывает DllMain.
  • Не разрешает адреса в записи PEB LDR, как подробно описано здесь у MDSec.
  • Обнаруживается сканированием памяти процесса с помощью pe-sieve.

Выделение в куче

  • Исполняемая память RX или RWX будет существовать в куче, если не используется sleepmask kit.

Аллокатор отображения

  • Вызов Kernel32.CreateFileMappingA и Kernel32.MapViewOfFile для выделения памяти для виртуального beacon DLL.
Скачать инструмент