DarkLoadLibrary: скрытая загрузка DLL обходит защиту Windows
DarkLoadLibrary: как злоумышленники обходят Windows security mechanisms с помощью скрытой загрузки DLL
В сфере кибербезопасности появляются все более изощренные инструменты, позволяющие обходить стандартные средства защиты. Один из таких примеров — DarkLoadLibrary, сложный механизм, который демонстрирует, как злоумышленники манипулируют низкоуровневыми components Windows для скрытой загрузки вредоносного кода и обхода telemetry.
Ключевая особенность этого подхода заключается в том, что он позволяет выполнять code без срабатывания привычных уведомлений об исполнении, связанных с функцией LoadImageNotifyRoutine. В результате средства защиты могут не зафиксировать сам факт загрузки модуля, что существенно усложняет detection и incident response.
Как работает DarkLoadLibrary
Работа DarkLoadLibrary начинается с вызова NtCreateSection, при котором файл считывается на уровне kernel и создается section, содержащий необходимые данные. В стандартном сценарии далее используется NtMapViewOfSection для отображения section в memory, и именно этот этап обычно связан с срабатыванием LoadImageNotifyRoutine.
Однако DarkLoadLibrary уходит от типовой логики. Вместо привычного отображения секции в память он использует NtAllocateVirtualMemory для выделения memory под DLL. Такой подход позволяет эффективно предотвращать регистрацию telemetry, связанной с загрузкой module, и снижает вероятность обнаружения инструментами безопасности.
Эта архитектура дает ВПО возможность использовать native API и при этом обходить потенциальные hooks, которые могли быть установлены monitoring tools. Иными словами, злоумышленник получает более скрытный канал выполнения кода, минуя стандартные точки контроля.
Практическая реализация в NightHawk
Пример подобной техники можно увидеть во framework управления NightHawk (C2) версии 0.2.1. В этом случае NightHawk перехватывает критически важные functions, включая NtOpenSection, NtCreateSection и NtMapViewOfSection, в процессе вызова LdrLoadDll.
Перехватчик работает следующим образом:
- он блокирует загрузку известных DLL, если целевая DLL совпадает с предопределенным списком;
- возвращает code ошибки при попытке загрузки через стандартный путь;
- заставляет систему использовать более скрытный метод, реализованный через DarkLoadLibrary;
- после создания section изменяет её descriptor, чтобы memory выделялась из пространства virtual memory, напрямую управляемого Windows.
Таким образом, нормальные операции продолжаются без заметных помех после первоначального перехвата, а сама загрузка DLL переносится в менее очевидный для защиты контекст.
Как выявить использование техники
Несмотря на скрытность, наличие DarkLoadLibrary можно подтвердить по ряду признаков. Наиболее важные метрики связаны с событиями доступа к memory, включая создание дампа процесса LSASS.exe с помощью MiniDumpWriteDump.
Особое внимание следует обращать на вызовы, которые выполняются из regions памяти, не имеющих соответствующего file. Такие признаки указывают на возможность использования DarkLoadLibrary и могут служить основанием для дальнейшего анализа инцидента.
Вызовы из памяти, не связанной с файлом, — один из наиболее характерных индикаторов скрытой загрузки DLL и обхода стандартной телеметрии Windows.
Вывод
DarkLoadLibrary — это наглядный пример того, как современные угрозы используют низкоуровневые механизмы Windows не только для выполнения вредоносного code, но и для маскировки самого факта его загрузки. В сочетании с инструментами вроде NightHawk такая техника становится частью более широкой инфраструктуры скрытного управления и усложняет работу защитных решений.
Для специалистов по кибербезопасности это означает необходимость уделять внимание не только сигнатурам и обычным событиям загрузки, но и аномалиям в поведении memory, вызовах native API и происхождении исполняемого code.
Отчет получен из сервиса CTT Report Hub. Права на отчет принадлежат его владельцу.
Ознакомиться подробнее с отчетом можно по ссылке.



