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

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

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

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

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

Категории

Все категории
Loading categories
Freeze.rs — Freeze.rs is a payload toolkit for bypassing EDRs using suspended processes, direct syscalls written in RUST | Kitploit
Инструменты/GitHubGitHub/optiv/freeze.rs
Encryption/Decryption ToolsExploitationShellcodeRed TeamingPayload DevelopmentAnti-BotArchived
GitHuboptiv/freeze.rs

Freeze.rs

Freeze.rs is a payload toolkit for bypassing EDRs using suspended processes, direct syscalls written in RUST

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

Популярное

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

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

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

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

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

ЭТОТ РЕПОЗИТОРИЙ АРХИВИРОВАН

Чтобы просмотреть последнюю версию Freeze.rs или отправить issue, обратитесь по ссылке https://github.com/Tylous/Freeze.rs.



Freeze.rs

Дополнительная информация

Если вы хотите узнать больше о методах, используемых в этом фреймворке, ознакомьтесь с блогом SourceZero и оригинальным инструментом.

Описание

Freeze.rs — это инструмент для создания полезной нагрузки, используемый для обхода средств контроля безопасности EDR и скрытого выполнения шелл-кода. Freeze.rs использует несколько методов не только для удаления хуков EDR на уровне пользователя, но и для выполнения шелл-кода таким образом, чтобы обходить другие средства мониторинга конечных точек.

Создание приостановленного процесса

При создании процесса первой загружается Ntdll.dll; это происходит до загрузки любых EDR DLL. Это означает, что существует небольшая задержка, прежде чем EDR сможет загрузиться и начать перехватывать и модифицировать сборку системных DLL. При анализе системных вызовов Windows в Ntdll.dll можно заметить, что ничего ещё не перехвачено. Если создать процесс в приостановленном состоянии (замороженном во времени), то можно увидеть, что не загружены никакие другие DLL, кроме Ntdll.dll. Также видно, что не загружены никакие EDR DLL, а значит, системные вызовы в Ntdll.dll остались без изменений.

ASLR (рандомизация адресного пространства)

Чтобы использовать этот чистый приостановленный процесс для удаления хуков из загрузчика Freeze.rs, нам нужен способ программно найти и прочитать память чистого приостановленного процесса. Здесь в игру вступает рандомизация адресного пространства (ASLR). ASLR — это механизм безопасности, предназначенный для предотвращения уязвимостей, основанных на повреждении памяти стека. ASLR рандомизирует адресное пространство внутри процесса, чтобы все объекты, отображаемые в памяти, стек, куча и сама исполняемая программа были уникальными. И вот здесь становится интересно: хотя ASLR работает, он не работает для позиционно-независимого кода, такого как DLL. Для DLL (особенно для известных системных DLL) адресное пространство рандомизируется один раз при загрузке системы. Это означает, что нам не нужно перечислять информацию удалённого процесса для поиска базового адреса его ntdll.dll, потому что он одинаков во всех процессах, включая тот, которым мы управляем. Поскольку адрес каждой DLL одинаков после каждой загрузки системы, мы можем получить эту информацию из собственного процесса и никогда не перечислять приостановленный процесс для поиска адреса.

Имея эту информацию, мы можем использовать API ReadProcessMemory для чтения памяти процесса. Этот вызов API обычно ассоциируется с чтением LSASS в рамках атак на основе учётных данных; однако сам по себе он не является вредоносным, особенно если мы просто читаем произвольный участок памяти. Единственный случай, когда ReadProcessMemory будет помечен как подозрительный, — это чтение того, что читать не следует (например, содержимого LSASS). Продукты EDR никогда не должны помечать сам факт вызова ReadProcessMemory, так как у этой функции есть легитимные рабочие варианты использования, и это привело бы к множеству ложных срабатываний.

Мы можем пойти ещё дальше, читая только раздел Ntdll.dll, где хранятся все системные вызовы, — её секцию .text, вместо чтения всей DLL.

Объединив эти элементы, мы можем программно получить копию секции .text Ntdll.dll, чтобы перезаписать существующую перехваченную секцию .text перед выполнением шелл-кода.

Патчинг ETW

ETW использует встроенные системные вызовы для генерации этой телеметрии. Поскольку ETW также является встроенной функцией Windows, продуктам безопасности не нужно «перехватывать» системные вызовы ETW для доступа к информации. В результате для предотвращения ETW Freeze.rs патчит множество системных вызовов ETW, обнуляя регистры и возвращая поток выполнения к следующей инструкции. Патчинг ETW теперь включён по умолчанию во всех загрузчиках.

Шелл-код

Поскольку восстановлена только Ntdll.dll, все последующие вызовы для выполнения шелл-кода должны находиться в Ntdll.dll. Используя крейт NTAPI на Rust (обратите внимание: это можно сделать и на других языках, но на Rust это реализовать довольно просто), мы можем определить и вызвать системные вызовы NT, необходимые для выделения, записи и защиты шелл-кода, эффективно пропуская стандартные вызовы, расположенные в Kernel32.dll и Kernelbase.dll, поскольку они всё ещё могут быть перехвачены.

С крейтом NTAPI на Rust видно, что все эти вызовы не отображаются в ntdll.dll, однако они всё ещё существуют внутри процесса.

В результате:

Почему Rust?

Это начиналось как забавный проект для изучения Rust и превратилось в собственный фреймворк.

Участие

Freeze.rs разработан на Rust.

Установка

Если Rust и Rustup не установлены, установите их. Если вы компилируете из OSX или Linux, убедитесь, что добавлена цель "x86_64-pc-windows-gnu". Для этого выполните следующую команду:

root@kitploit:~
rustup target add x86_64-pc-windows-gnu

После этого вы можете скомпилировать Freeze.rs, выполнив следующие команды, или использовать готовый бинарник:

root@kitploit:~
cargo build --release

После этого скомпилированная версия будет находиться в target/release (обратите внимание: если не указать --release, файл будет в target/debug/).

Справка

root@kitploit:~

    ___________                                                      
    \_   _____/______   ____   ____ ________ ____     _______  ______
     |    __) \_  __ \_/ __ \_/ __ \\___   // __ \    \_  __ \/  ___/
     |     \   |  | \/\  ___/\  ___/ /    /\  ___/     |  | \/\___ \ 
     \___  /   |__|    \___  >\___  >_____ \\___  > /\ |__|  /____  >
         \/                \/     \/      \/    \/  \/            \/    
                                        (@Tyl0us)
    Soon they will learn that revenge is a dish... best served COLD & Rusty...
    
     

ИСПОЛЬЗОВАНИЕ:
    Freeze-rs [ФЛАГИ] [ОПЦИИ]

ФЛАГИ:
    -c, --console    Только для бинарных нагрузок — выводит подробную консольную информацию при выполнении нагрузки. Это
                     отключает функцию скрытого окна
    -h, --help       Выводит справку
    -n, --noetw      Отключает патчинг ETW, предотвращающий генерацию событий ETW.
    -s, --sandbox    Включает обход песочницы путём проверки:
                                 Присоединена ли конечная точка к домену?
                                 Имеет ли конечная точка более 2 процессоров?
                                 Имеет ли конечная точка более 4 ГБ ОЗУ?
    -V, --version    Выводит информацию о версии

ОПЦИИ:
    -E, --Encrypt <ENCRYPT>    Шифрует шелл-код с помощью AES 256, ELZMA или RC4
    -I, --Input <INPUT>        Путь к сырому 64-битному шелл-коду.
    -O, --Output <OUTPUT>      Имя выходного файла (например, loader.exe или loader.dll). В зависимости от указанного
                               расширения файла Freeze определит, создавать DLL или EXE.
    -p, --process <PROCESS>    Имя порождаемого процесса. Этот процесс должен существовать в C:\Windows\System32\. Пример
                               'notepad.exe'
    -e, --export <export>      Задаёт пользовательское имя функции экспорта для любой DLL.

Исполняемый файл vs DLL

Freeze.rs может создавать либо файл .exe, либо .dll. Чтобы указать это, убедитесь, что параметр командной строки -O заканчивается на .exe для бинарных файлов или .dll для DLL. Другие типы файлов в настоящее время не поддерживаются. В случае DLL Freeze.rs также может добавлять дополнительную экспортную функциональность. Для этого используйте -export с указанием конкретного имени функции экспорта.

Шифрование

Шифрование шелл-кода — это важный метод, используемый для защиты от обнаружения и анализа EDR и другими продуктами безопасности. Freeze.rs предоставляет несколько методов шифрования шелл-кода, включая AES, ELZMA и RC4.

AES

AES (Advanced Encryption Standard) — это симметричный алгоритм шифрования, широко используемый для шифрования данных. Freeze.rs использует AES с размером ключа 256 бит для шифрования шелл-кода. Преимущество использования AES для шифрования шелл-кода заключается в том, что он обеспечивает сильное шифрование и широко поддерживается криптографическими библиотеками. Однако использование фиксированного размера блока может сделать его уязвимым для некоторых атак, таких как атака с использованием набивки.

ELZMA

ELZMA — это алгоритм сжатия и шифрования, часто используемый во вредоносных программах для обфускации кода. Для шифрования шелл-кода с помощью ELZMA сначала сжимается алгоритмом ELZMA. Затем сжатые данные шифруются с помощью случайного ключа. Зашифрованные данные и ключ затем встраиваются в код эксплойта. Преимущество использования ELZMA для шифрования шелл-кода заключается в том, что он обеспечивает как сжатие, так и шифрование в одном алгоритме. Это может помочь уменьшить размер кода эксплойта и затруднить его обнаружение.

RC4

RC4 — это симметричный алгоритм шифрования, часто используемый во вредоносных программах для шифрования шелл-кода. Это потоковый шифр, который может использовать ключи переменной длины и известен своей простотой и скоростью.

Консоль

Freeze.rs использует метод, при котором сначала создаётся процесс, а затем он перемещается в фоновый режим. Это даёт два эффекта: во-первых, помогает скрыть процесс, во-вторых, избегает обнаружения любым продуктом EDR. Немедленное порождение процесса в фоне может быть очень подозрительным и служить индикатором вредоносной активности. Freeze.rs делает это, вызывая функции Windows ‘GetConsoleWindow’ и ‘ShowWindow’ после создания процесса и загрузки хуков EDR, а затем изменяет атрибуты окна на скрытые.

Если выбран параметр командной строки -console, Freeze.rs не будет скрывать процесс в фоне. Вместо этого Freeze.rs добавит несколько отладочных сообщений, отображающих действия загрузчика.

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