AppInit_DLLs
Что такое AppInit_DLLs?
AppInit_DLLsУстаревшая техника закрепления в Windows, использующая значение реестра для загрузки указанной DLL в каждый пользовательский процесс, связанный с user32.dll.
Злоупотребление AppInit_DLLs (MITRE ATT&CK T1546.010) нацелено на HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs и его двойник в WOW6432Node. Когда LoadAppInit_DLLs установлен в 1, процедура инициализации user32.dll проецирует каждую DLL из списка AppInit_DLLs в любой процесс, загружающий user32.dll, — фактически в каждое интерактивное GUI-приложение. Таким образом, одна запись в реестр даёт широкое выполнение кода и закрепление, срабатывая как «триггер на новый процесс», а не как одноразовый автозапуск.
Техника старая, но поучительная. Она обеспечила механизм загрузки классического руткита Vanquish, а коммерческое ПО исторически (и неуклюже) её использовало: Nvidia и различные IME поставляли AppInit DLL, поэтому команды безопасности не могут просто выдавать оповещение о том, что значение непустое. Начиная с Windows 8, при включённом Secure Boot механизм AppInit отключается, если только каждая DLL из списка не имеет цифровой подписи, что резко сокращает его охват; на Windows 10/11 с включённым Secure Boot он практически мёртв. Он всё ещё встречается в устаревших средах Windows 7/Server 2008 и на хостах, где Secure Boot был отключён ради совместимости.
Защита: оставлять Secure Boot включённым, применять политику «требовать подписанные AppInit DLL», зафиксировать базовый снимок значения с помощью Autoruns из Sysinternals и оповещать о записях в реестр по этим ключам через Sysmon Event ID 13 или телеметрию EDR.
flowchart TD
A[Злоумышленник с правами локального админа] --> W[Записывает путь DLL в ключ AppInit_DLLs]
W --> L[Устанавливает LoadAppInit_DLLs = 1]
L --> N[Запускается новый GUI-процесс]
N --> U[Процесс загружает user32.dll]
U --> SB{Secure Boot включён и DLL без подписи?}
SB -->|Да| BLK[Загрузка пропущена - техника нейтрализована]
SB -->|Нет| INJ[Вредоносная DLL спроецирована в процесс]
INJ --> RUN[Код выполняется в каждом интерактивном приложении -> закрепление]
W -.обнаружено.-> DET[Оповещения Sysmon EID13 / базовый снимок Autoruns]● Примеры
- 01
Добавление пути вредоносной вспомогательной DLL в AppInit_DLLs на сервере Windows 7 для регистрации каждого нажатия клавиш во всех процессах.
- 02
Комбинация AppInit_DLLs с отключённым Secure Boot для развёртывания пользовательского руткита.
● Частые вопросы
Что такое AppInit_DLLs?
Устаревшая техника закрепления в Windows, использующая значение реестра для загрузки указанной DLL в каждый пользовательский процесс, связанный с user32.dll. Относится к категории Атаки и угрозы в кибербезопасности.
Что означает AppInit_DLLs?
Устаревшая техника закрепления в Windows, использующая значение реестра для загрузки указанной DLL в каждый пользовательский процесс, связанный с user32.dll.
Как защититься от AppInit_DLLs?
Защита от AppInit_DLLs обычно сочетает технические меры и операционные практики, как описано в определении выше.
Какие есть другие названия AppInit_DLLs?
Распространённые альтернативные названия: Инъекция AppInit DLL, Закрепление через user32 AppInit.