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

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

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.4k275112 лет назадПроверено 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

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

  • (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.

Обнаружение Sleepmask

  • Если используется sleepmask kit, существуют методы обнаружения этого независимого выделения памяти, как подробно описано MDSec.

Косвенные системные вызовы

  • BokuLoader вызывает следующие системные вызовы NT для настройки памяти загружаемого исполняемого beacon: NtAllocateVirtualMemory, NtProtectVirtualMemory.
  • Они вызываются косвенно из исполняемой памяти BokuLoader.
  • Установка перехватчиков пользовательского режима в ntdll.dll не обнаружит эти системные вызовы.
  • Возможна регистрация обратных вызовов ядра с помощью драйвера ядра для отслеживания вышеуказанных системных вызовов и обнаружения их использования.
  • Сам BokuLoader будет содержать инструкции ассемблера mov eax, r11d; mov r11, r10; mov r10, rcx; jmp r11 в своей исполняемой памяти.

Заголовок виртуального beacon DLL

  • Первые 0x1000 байт виртуального beacon DLL равны нулям.

Исходный код доступен

  • Исходный код BokuLoader предоставлен в репозитории и может быть использован для создания сигнатур памяти.
  • Если у вас есть дополнительные рекомендации по обнаружению, пожалуйста, внесите свой вклад, отправив pull request.

Благодарности / Ссылки

Спуфинг стека вызовов рефлективного загрузчика

  • LoudSunRun: Спуфер синтетических фреймов стека вызовов с косвенными системными вызовами
  • SilentMoonwalk: PoC-реализация полностью динамического спуфера стека вызовов
  • Vulcan Raven: PoC-реализация для подделки произвольных стеков вызовов при выполнении системных вызовов
  • CallStackMasker: PoC-реализация для динамического маскирования стеков вызовов с помощью таймеров
  • ThreadStackSpoofer: PoC-реализация спуфинга стека потоков
  • Behind the Mask: Динамическое подделывание стеков вызовов с помощью таймеров

Рефлективный загрузчик

  • https://github.com/stephenfewer/ReflectiveDLLInjection
  • Посмотрите эти видео, если вас интересуют рефлективные DLL:
    • Dancing with Import Address Table (IAT) - Курс Sektor 7 MDI
    • Walking through Export Address Table - Курс Sektor 7 MDI
    • Reflective Injection Explained - Курс Sektor 7 MDI
    • ReflectiveLoader source review - Курс Sektor 7 MDI
  • TitanLdr
  • AceLdr
  • KaynLdr

Системный вызов HalosGate

  • Reenz0h от @SEKTOR7net
    • Посмотрите отличные курсы и блоги Reenz0h!
    • Лучшие курсы по разработке вредоносного ПО, которые я проходил.
    • Создатель техники halos gate. Его работа изначально послужила мотивацией для этой работы.
    • Блог Sektor7 о HalosGate

Системный вызов HellsGate

  • @smelly__vx & @am0nsec ( создатели/издатели техники Hells Gate )
    • Без них я не смог бы реализовать свою версию HellsGate :)
    • Отличная работа над этим методом, мне очень понравилось разбираться с ним самостоятельно. Спасибо!
    • https://github.com/am0nsec/HellsGate
    • Ссылка на документ Hell's Gate: https://vxug.fakedoma.in/papers/VXUG/Exclusive/HellsGuide.pdf

Скриптинг Aggressor

  • sinusoid @the_bit_diddler : returnIntegerFromArray

Пользовательский рефлективный загрузчик Cobalt Strike

  • https://www.cobaltstrike.com/help-user-defined-reflective-loader

Отличный ресурс для изучения Intel ASM

  • Pentester Academy - SLAE64

ETW и обход AMSI

  • @anthemtotheego inline-ExecuteAssembly
  • @mariuszbit - за отличную идею реализации обходов в рефлективном загрузчике!
  • @XPN Hiding Your .NET – ETW
  • ajpc500/BOFs
  • Offensive Security OSEP

Реализация ASM в коде C с помощью GCC

  • https://outflank.nl/blog/2020/12/26/direct-syscalls-in-beacon-object-files/
  • https://www.cs.uaf.edu/2011/fall/cs301/lecture/10_12_asm_c.html
  • http://gcc.gnu.org/onlinedocs/gcc-4.0.2/gcc/Extended-Asm.html#Extended-Asm

Профили C2 Cobalt Strike

  • Эпический проект Tylous's SourcePoint
  • threatexpress/malleable-c2/jquery-c2.4.7.profile
Скачать инструмент
BokuLoader.cna
compile_timeстрока дата-времяЭкспериментально. Модификация скрипта Aggressor BokuLoader.cna
image_size_x64десятичное значениеНе поддерживается
nameстрокаЭкспериментально. Модификация скрипта Aggressor BokuLoader.cna
rich_headerэкранированная шестнадцатеричная строкаЭкспериментально. Модификация скрипта Aggressor BokuLoader.cna
stringwстрокаНе поддерживается
stringстрокаНе поддерживается