
Пользовательский рефлексивный загрузчик на Rust для пейлоадов Cobalt Strike. Избегает RWX-страниц памяти для OPSEC-безопасности. Включает инструмент-экстрактор для извлечения секции загрузчика.

Рефлективный загрузчик пользовательского типа (User-Defined Reflective Loader) для Cobalt Strike, написанный целиком на Rust. Мне просто было интересно, насколько сложно его создать. Оказалось, не так уж и сложно. Возможно, когда-нибудь я добавлю функцию обфускации сна. Сейчас это просто базовый загрузчик без каких-либо особых функций. Единственная функция «безопасности OPSEC» заключается в том, что он ни в какой момент не использует RWX-страницы.
Скачайте релиз и загрузите файл .cna.
Вы можете скомпилировать его самостоятельно. Убедитесь, что используете тулчейн MSVC и профиль release. Вы можете использовать входящий в комплект extractor, чтобы извлечь секцию .text загрузчика. Например:
cd extractor
cargo run --release -- ../target/release/crabloader.exe ../bin/crabloader.bin
Я использовал этот профиль для тестирования: https://github.com/BC-SECURITY/Malleable-C2-Profiles/blob/master/APT/apt1_virtuallythere.profile
В нём нет настроек для изменения индикаторов памяти, только сетевая часть. Так что, полагаю, все настройки по умолчанию работают. Если вы измените MZ-заголовок с помощью magic_mz_x64, загрузчик не будет работать, так как он ищет именно этот заголовок.