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

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

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

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

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

Категории

Все категории
Loading categories
DeepSleep — Вариант Gargoyle для x64, скрывающий артефакты памяти, используя только ROP и PIC | Kitploit
Инструменты/GitHubGitHub/theflink/deepsleep
Криминалистика памятиЭксплуатацияRed TeamingРазработка Полезной Нагрузки
GitHubtheflink/deepsleep

DeepSleep

Вариант Gargoyle для x64, скрывающий артефакты памяти, используя только ROP и PIC

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

Популярное

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

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

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

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

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

DeepSleep

Вариант Gargoyle для x64, скрывающий артефакты памяти только с помощью ROP и PIC.

Огромная благодарность @waldoirc за документирование большей части этой техники в его блоге
Эта реализация отличается тем, что не использует APC и полностью реализована как PIC.

Описание

Я создал это, чтобы лучше понять, как скрывать артефакты памяти с помощью техники, подобной Gargoyle, на x64. Идея заключается в настройке ROP-цепочки, вызывающей VirtualProtect() -> Sleep() -> VirtualProtect(), чтобы пометить свою собственную страницу как N/A во время сна.

В отличие от Gargoyle и других реализаций, подобных Gargoyle, я полностью полагаюсь на ROP и не ставлю в очередь никакие APC. Сам DeepSleep реализован как полностью PIC, что упрощает перечисление страниц памяти, которые необходимо скрыть от сканеров.

Пока поток активен, появляется MessageBox, и страница DeepSleep помечена как исполняемая. Во время сна страница помечена как N/A.

Это эффективно обходит Moneta на момент написания, если DeepSleep внедрён, а базовый адрес исполняющего потока не указывает на приватную выделенную память.

Я проверил это с помощью техники внедрения Earlybird для внедрения DeepSleep.bin в notepad.exe

Moneta обнаруживает DeepSleep при показе msgbox Moneta не обнаруживает DeepSleep при показе msgbox

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

С использованием Mingw:
Введите make, и появится дикий DeepSleep.bin.
Либо используйте предварительно скомпилированный DeepSleep.bin :-)

Будущие работы и ограничения

Будущие работы

Возможно, я выпущу загрузчик для CS или других C2-агентов. Аналогично YouMayPasser, загрузчик будет перехватывать sleep с помощью HW-брейкпоинтов, чтобы избежать подозрительных изменений kernel32.dll.

Ограничения

Тестировалось на 10.0.19044 N/A Build 19044

ROP-гаджеты, на которые я полагаюсь, могут отсутствовать в ntdll.dll в других версиях Windows. Вероятно, стоит использовать более мелкие и универсальные ROP-гаджеты и перечислять гаджеты в большем количестве DLL, чем просто ntdll.dll.

Обнаружение

Стек вызовов для потока в состоянии DelayExecution включает неизвестные/изменённые области памяти, а также адреса VirtualProtect(). Hunt-Sleeping-Beacons обнаруживает это.
Возможно, применить эту метрику к другим C2, использующим другую технику ожидания между обратными вызовами.

Странный стек

Благодарности

@waldoirc за документирование большей части техники здесь
@forrest Orr за Moneta
Josh Lospinoso за оригинальную технику Gargoyle

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