Закрепление в Windows через WMI-подписки: техника и детект
📋 Кратко
WMI-подписки — мощный механизм Windows, который злоумышленники активно используют для скрытного закрепления в системе. Техника основана на создании постоянных триггеров, запускающих вредоносный код при наступлении определённых событий (вход пользователя, запуск процесса, изменение реестра). В статье разбирается архитектура WMI-подписок, приводятся реальные примеры из арсенала APT-групп и даются практические методы обнаружения через Event ID 5861, Sysmon и аудит WMI-активности.
Windows Management Instrumentation (WMI) — встроенный компонент операционной системы, предназначенный для управления и мониторинга. Однако его функциональность, в частности механизм подписок на события, давно перешла в разряд излюбленных инструментов злоумышленников. С помощью WMI-подписок атакующие могут обеспечить себе практически незаметное закрепление в системе, которое не оставляет традиционных следов в автозагрузке или реестре. Техника настолько эффективна, что её используют даже самые продвинутые APT-группировки.
🔍 Как работают WMI-подписки
WMI-подписка строится на трёх ключевых компонентах:
- __EventFilter — фильтр, который определяет условие срабатывания (например, запуск определённого процесса, создание файла, событие в журнале).
- __EventConsumer — потребитель, задающий действие при выполнении условия (запуск скрипта, исполняемого файла, запись в лог).
- __FilterToConsumerBinding — связка, которая соединяет фильтр и потребителя, делая подписку активной.
Все эти объекты хранятся в репозитории WMI (\%SystemRoot%\System32\wbem\Repository) и не видны при обычной проверке автозагрузки. Подписка может быть создана удалённо, что делает технику особенно опасной в корпоративных сетях.
🛠️ Пример злонамеренной подписки
Злоумышленник может создать подписку, которая срабатывает при каждом входе любого пользователя в систему. Для этого используется событие __InstanceCreationEvent в классе Win32_LogonSession. Ниже приведён пример команды PowerShell, создающей такую подписку:
$filter = Set-WmiInstance -Namespace root\subscription -Class __EventFilter -Arguments @{
Name='PersistentBackdoor';
EventNameSpace='root\cimv2';
QueryLanguage='WQL';
Query="SELECT * FROM __InstanceCreationEvent WITHIN 15 WHERE TargetInstance ISA 'Win32_LogonSession'"
}
$consumer = Set-WmiInstance -Namespace root\subscription -Class CommandLineEventConsumer -Arguments @{
Name='RunPayload';
CommandLineTemplate='powershell.exe -EncodedCommand <base64>';
RunInteractively=$false
}
Set-WmiInstance -Namespace root\subscription -Class __FilterToConsumerBinding -Arguments @{
Filter=$filter;
Consumer=$consumer
}
После выполнения этой команды при каждой новой сессии входа будет запускаться закодированный PowerShell-скрипт, который может, например, установить обратное соединение с C2-сервером.
🎯 Как злоумышленники используют WMI для закрепления
Техника WMI-подписок активно применяется в кампаниях различных APT-групп. Например, группировка APT29 (Cozy Bear) использовала WMI-подписки для поддержания доступа к скомпрометированным системам после первоначального взлома. Другой известный случай — Emotet на поздних стадиях заражения создавал WMI-подписки для запуска своих модулей.
Злоумышленники ценят WMI-подписки за их скрытность: подписка не отображается в списке запущенных процессов, не создаёт записей в реестре (за исключением косвенных), а её удаление без знания точного имени фильтра требует специальных инструментов. Кроме того, подписки могут быть настроены на срабатывание с задержкой, что затрудняет корреляцию событий.
- Необычные WMI-объекты в пространстве имён
root\subscription(особенноCommandLineEventConsumerс подозрительными командами). - Аномальная активность процесса
WmiPrvSE.exe, запускающего дочерние процессы (например,powershell.exe). - События Windows с ID 5861 (создание или изменение фильтра/потребителя) от неизвестных источников.
🔬 Обнаружение WMI-подписок
Для выявления злонамеренных WMI-подписок необходимо настроить сбор следующих событий:
- Event ID 5861 — создание, изменение или удаление объектов WMI (фильтров, потребителей, связок). Включается через аудит WMI-активности в групповых политиках.
- Event ID 5859 и 5860 — успешное и неуспешное выполнение WMI-запросов.
- Sysmon Event ID 19–21 — мониторинг WMI-событий (требуется включить в конфигурации Sysmon).
Кроме того, полезно анализировать сетевые соединения процесса WmiPrvSE.exe — если он инициирует исходящие подключения, это почти наверняка признак компрометации. Рекомендуется также периодически инвентаризировать WMI-репозиторий с помощью скриптов PowerShell, проверяя все подписки на предмет легитимности.
🛡️ Методы защиты и блокировки
Полное отключение WMI невозможно — оно необходимо для работы многих системных компонентов. Однако можно принять следующие меры:
- Ограничение прав на создание WMI-подписок — через групповые политики или ACL на пространство имён
root\subscriptionразрешить доступ только доверенным администраторам. - Использование AppLocker или WDAC для блокировки запуска неподписанных скриптов и исполняемых файлов из WMI-потребителей.
- Мониторинг изменений в WMI-репозитории с помощью SIEM-систем и корреляции событий 5861 с учётными записями.
- Применение правил Windows Defender Firewall для блокировки исходящих соединений от
WmiPrvSE.exe, кроме разрешённых.
Важно помнить, что WMI-подписки могут быть созданы удалённо через протокол DCOM. Поэтому рекомендуется ограничить сетевой доступ к WMI (порты 135, 445, динамические RPC-порты) только для доверенных административных хостов.
Закрепление через WMI-подписки — одна из самых коварных техник, с которой сталкиваются специалисты по безопасности. Её обнаружение требует проактивного подхода: настройки аудита, использования EDR-решений и регулярной охоты за угрозами (Threat Hunting). Игнорирование этого вектора оставляет злоумышленникам «чёрный ход», который может оставаться незамеченным годами.
📚 Читайте также
- Восемь 0-day против Microsoft: разбор кампании Nightmare Eclipse
- Контейнеры в OT: Как гарантировать целостность промышленных образов и систем
- Управление уязвимостями: полный цикл обнаружения и устранения
- Защита корпоративных LLM от утечки данных: риски и методы защиты
- Prompt Injection и безопасность ИИ-агентов: атаки на цепочку поставок кода
📖 Термины
SIEM · SOC · Threat Hunting · Бэкдор · Индикаторы компрометации (IoC)