Гид по технологиям

Удаление WMI‑постоянства в Windows: как обнаружить и устранить

4 min read Безопасность Обновлено 03 Jan 2026
Удаление WMI‑постоянства в Windows
Удаление WMI‑постоянства в Windows

Крупный план клавиш чёрной и зелёной компьютерной клавиатуры

Что такое WMI‑постоянство и почему это опасно

WMI (Windows Management Instrumentation) — это система управления ресурсами и событиями в Windows. Под постоянством (persistence) понимают сценарий, когда атакующий создаёт WMI‑подписку (event subscription), которая навсегда связывает событие с выполняемым потребителем (consumer). При возникновении события система автоматически запускает полезную нагрузку с системными привилегиями.

Ключевые моменты:

  • Подписка состоит минимум из фильтра (EventFilter), потребителя (EventConsumer) и связки (__FilterToConsumerBinding).
  • Подписки могут быть настроены так, чтобы скрывать следы выполнения и обходить простое логирование командной строки.
  • Нападение требует лишь кратковременного доступа к системе, но затем обеспечивает длённый контроль.

Важно: технические материалы и примеры создания таких подписок доступны в открытом доступе, поэтому риск реален даже при отсутствии сложных навыков у атакующего.

Принципы обнаружения

Коротко: ищите аномальные объекты в пространстве имён root\subscription и события в журнале WMI‑Activity.

Пошагово:

  1. Просмотрите журналы: Откройте Просмотр событий → Приложения и службы → Microsoft → Windows → WMI‑Activity. Ищите ошибки и необычную активность.
  2. Просканируйте WMI‑пространства имён на подписки и связанные объекты.

Примеры команд PowerShell для безопасного просмотра (без удаления):

# Просмотреть фильтры
Get-CimInstance -Namespace root/subscription -ClassName __EventFilter | Format-List *

# Просмотреть потребители
Get-CimInstance -Namespace root/subscription -ClassName __EventConsumer | Format-List *

# Просмотреть связи фильтр→потребитель
Get-CimInstance -Namespace root/subscription -ClassName __FilterToConsumerBinding | Format-List *

Совет: сначала просмотрите результаты. Не удаляйте объекты, пока не уверены в их происхождении.

Как безопасно удалить подозрительные подписки

Базовый план действий при обнаружении подозрительных подписок: изоляция, анализ, удаление, восстановление.

  1. Изоляция — ограничьте сеть и заблокируйте удалённый доступ к заражённой машине.
  2. Анализ — соберите информацию о найденных объектах (кто их создал, время создания, путь к payload).
  3. Удаление — удаляйте связи, потребители и фильтры в этом порядке.

Пример удаления с PowerShell (сначала тестовый прогон с параметром -WhatIf, затем реальное удаление):

# Тест: покажет, что будет удалено
Get-CimInstance -Namespace root/subscription -ClassName __FilterToConsumerBinding | Remove-CimInstance -WhatIf

# Если результаты ожидаемы, удалить связи
Get-CimInstance -Namespace root/subscription -ClassName __FilterToConsumerBinding | Remove-CimInstance

# Удалить потребители
Get-CimInstance -Namespace root/subscription -ClassName __EventConsumer | Where-Object { $_.Name -like '*suspicious*' } | Remove-CimInstance

# Удалить фильтры
Get-CimInstance -Namespace root/subscription -ClassName __EventFilter | Where-Object { $_.Name -like '*suspicious*' } | Remove-CimInstance

Важно: используйте шаблоны и фильтры осторожно. Если вы не уверены в команде Remove‑CimInstance, сначала экспортируйте объекты для анализа.

Альтернативы выключению WMI и защита удалённого доступа

Полное отключение службы WMI останавливает многие системные функции и инструменты мониторинга. Рекомендуется подход с минимальными нарушениями: разрешить локальную работу WMI, но заблокировать удалённый доступ.

Практические варианты:

  • Заблокировать входящие порты RPC/DCOM в брандмауэре для интерфейсов, доступных из внешних сетей.
  • Конфигурировать DCOM так, чтобы использовать фиксированный порт и затем блокировать/контролировать этот порт на периметре.
  • Отключить службы, связанные с удалённым управлением, когда они не нужны.

Если всё же требуется временно остановить сервис для форенсики или устранения инфекции:

# Остановить сервис WMI (Winmgmt)
net stop winmgmt /y

# Отключить автозапуск (тестируйте последствия)
sc config winmgmt start= disabled

Примечание: остановка может повлиять на мониторинг, управление и многие совместимые приложения.

План реагирования и стандартные шаги (Playbook)

  1. Обнаружение
    • Сбор журналов и снимков WMI (выгрузка списка подписок).
  2. Изоляция
    • Отсоединить хост от сети, ограничить доступ.
  3. Удаление
    • Удалить связи, потребители и фильтры.
  4. Восстановление
    • Проверить целостность WMI (winmgmt /verifyrepository). При проблемах использовать salvagerepository.
  5. Жёсткая защита
    • Обновить политики брандмауэра, включить аудирование WMI, провести инвентаризацию доверенных скриптов.

Критерии приёмки:

  • Все подозрительные __FilterToConsumerBinding удалены.
  • Нет неизвестных потребителей или фильтров в root\subscription.
  • Журналы не показывают повторной регистрации подписок.
  • Бекапы и снимки сохранены в защищённом хранилище.

Быстрые чек‑листы по ролям

Администратор сети:

  • Проверить настройки брандмауэра на блокировку удалённого WMI.
  • Отключить DCOM/RPC снаружи.

Системный администратор:

  • Просканировать root\subscription на всех критичных серверах.
  • Собрать и архивировать доказательства перед удалением.

Инженер по безопасности:

  • Настроить корреляцию событий из WMI‑Activity в SIEM.
  • Провести аудит авторизованных скриптов и планировщиков задач.

Ментальные модели и когда метод не сработает

Ментальная модель: представьте WMI‑подписку как «сейф‑триггер» — пока триггер хранится в системе, он срабатывает при событии. Для нейтрализации нужно либо удалить триггер (подписку), либо отключить сейф (WMI удалённо) или сделать так, чтобы никто не мог до него добраться (ограничения сети и прав).

Когда удаление подписок не поможет:

  • Если атакующий установил автономные бэкдоры вне WMI (службы, драйверы, планировщик задач).
  • Если атакующий имеет учётные данные для повторной регистрации подписок.

В таких случаях требуется полноценный инцидент‑реагирование, смена учетных данных и глубокая проверка системы.

Маленькая справка (Глоссарий)

WMI — интерфейс управления Windows для доступа к данным и событиям системы. EventFilter — объект, описывающий условие события. EventConsumer — объект, описывающий действие при срабатывании фильтра. __FilterToConsumerBinding — связь между фильтром и потребителем.

Быстрая диаграмма принятия решения

flowchart TD
  A[Обнаружено подозрительное поведение] --> B{Есть ли удалённый доступ?}
  B -- Да --> C[Изолировать хост от сети]
  B -- Нет --> D[Собрать журналы WMI]
  C --> D
  D --> E{Найдены ли неизвестные подписки?}
  E -- Да --> F[Удалить связи → потребители → фильтры]
  E -- Нет --> G[Провести дальнейшую проверку на другие бэкдоры]
  F --> H[Журналирование и мониторинг]
  G --> H

Заключение

WMI‑постоянство — мощный и скрытный вектор вторжения, но он обнаружим и устраним при организованном подходе: аудит WMI, безопасное удаление подписок, изоляция и усиление контроля удалённого доступа. Всегда документируйте шаги и сохраняйте резервные снимки перед изменениями.

Важно: перед массовыми изменениями тестируйте команды на контрольном образце и согласуйте действия с владельцами сервиса.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Открыть и конвертировать HEIC на Android
Android.

Открыть и конвертировать HEIC на Android

Теги в Apple Напоминаниях: инструкция и советы
Продуктивность

Теги в Apple Напоминаниях: инструкция и советы

Burp Suite на Linux: установка и настройка
Безопасность

Burp Suite на Linux: установка и настройка

Как создать и использовать аккаунт Epic Games
Gaming

Как создать и использовать аккаунт Epic Games

Специальные символы на стандартной клавиатуре
Клавиатура

Специальные символы на стандартной клавиатуре

Ограничение CPU процесса в Linux — cpulimit
Linux

Ограничение CPU процесса в Linux — cpulimit