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

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

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

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

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

Категории

Все категории
Loading categories
DllNotificationInjection — PoC новой техники внедрения в процессы “threadless”, которая работает за счет использования концепции DLL Notification Callbacks в локальных и удаленных процессах. | Kitploit
Инструменты/GitHubGitHub/dec0ne/dllnotificationinjection
ЭксплуатацияШелл-кодRed Teaming
GitHubdec0ne/dllnotificationinjection

DllNotificationInjection

PoC новой техники внедрения в процессы “threadless”, которая работает за счет использования концепции DLL Notification Callbacks в локальных и удаленных процессах.

Репозиторий

Популярное

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

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

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

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

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

DllNotificationInjection

image image

Основные участники

Dec0ne

Описание

DllNotificationInjection — это PoC нового метода внедрения в процессы «без использования потоков», который использует концепцию обратных вызовов уведомлений DLL в локальных и удаленных процессах.

Сопроводительная статья в блоге с подробностями доступна здесь:

https://shorsec.io/blog/dll-notification-injection/

Как это работает?

DllNotificationInjection работает путем создания новой записи LDR_DLL_NOTIFICATION_ENTRY в удаленном процессе. Она вручную вставляется в удаленный LdrpDllNotificationList с помощью патча List.Flink головы списка и List.Blink первой записи (теперь второй) в списке.

Наша новая LDR_DLL_NOTIFICATION_ENTRY будет указывать на пользовательский трамплин-шеллкод (созданный с помощью проекта ShellcodeTemplate от @C5pider), который восстановит наши изменения и выполнит вредоносный шеллкод в новом потоке с помощью TpWorkCallback.

После ручной регистрации нашей новой записи в удаленном процессе нам остается только ждать, пока удаленный процесс вызовет наш обратный вызов уведомления DLL, загрузив или выгрузив какую-нибудь DLL. Очевидно, что это происходит не в каждом процессе регулярно, поэтому необходима предварительная работа по поиску подходящих кандидатов для этой техники внедрения. Судя по моему краткому поиску, подходящими кандидатами кажутся RuntimeBroker.exe и explorer.exe, хотя я призываю вас найти и другие.

Замечания по OPSEC

Это PoC. Чтобы он был безопасным с точки зрения OPSEC и обходил AV/EDR, необходимы некоторые модификации. Например, я использовал RWX при выделении памяти для шеллкодов — не ленитесь (как я) и измените это. Также возможно стоит заменить OpenProcess, ReadProcessMemory и WriteProcessMemory на API более низкого уровня и использовать Indirect Syscalls или (бесстыдная реклама) HWSyscalls. Возможно, зашифровать шеллкоды или даже пойти дальше и модифицировать трамплин-шеллкод под свои нужды, или хотя бы изменить значения хешей по умолчанию в проекте ShellcodeTemplate от @C5pider, который использовался для создания трамплин-шеллкода.

Демонстрация

https://github.com/ShorSec/DllNotificationInjection/assets/54464773/96a72dd9-80de-4cb8-ac4a-54dddfecf822

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

  • @C5pider за его проект ShellcodeTemplate, который использовался для создания трамплин-шеллкода. Также за Havoc C2, использованный в демонстрационном видео PoC.
  • Yxel и @Idov31 за код бинарного поиска паттернов, который мы использовали из Cronos.
  • @modexpblog за определения различных структур, связанных с обратными вызовами уведомлений DLL, которые использовались в этом PoC.
  • @NinjaParanoid за его статью в блоге о TpWorkCallbacks, которые использовались в этом PoC.
  • @onlymalware за его PoC UnregisterAllLdrRegisterDllNotification, он дал мне вдохновение и помог понять некоторые внутренние механизмы LdrpDllNotificationList.
  • Sektor7 за шеллкод калькулятора, использованный в этом PoC. Они в любом случае потрясающие, и я очень рекомендую их курсы!
  • @x86matthew и @Kharosx0 за их комментарии (1, 2) относительно функции GetNtdllBase().
Скачать инструмент