WMI
WMI (Windows Management Instrumentation) — это технология управления и мониторинга операционных систем семейства Microsoft Windows, реализующая стандарт WBEM (Web-Based Enterprise Management) и основанная на модели CIM (Common Information Model). WMI предоставляет унифицированный интерфейс для доступа к данным о конфигурации, состоянии и производительности системы, а также позволяет выполнять административные действия на локальных и удалённых компьютерах.
История
Разработка WMI началась в середине 1990-х годов как часть стратегии Microsoft по внедрению открытых стандартов управления в свои продукты. Технология впервые была представлена в составе Windows NT 4.0 Service Pack 4 (1998 год) и Windows 98. Основой послужила спецификация WBEM, разработанная Distributed Management Task Force (DMTF). WMI стала заменой более ранним проприетарным механизмам управления, таким как Windows Registry и SNMP (Simple Network Management Protocol) в ограниченном контексте.
В Windows 2000 WMI была интегрирована в ядро системы и получила расширенные возможности по работе с Active Directory. В Windows XP и Windows Server 2003 технология была значительно доработана: улучшена производительность, добавлена поддержка событий и асинхронных запросов. В Windows Vista и Windows 7 WMI стала основой для многих новых функций, включая мониторинг производительности и управление питанием.
В Windows 8 и Windows Server 2012 была представлена модель WMI Provider Extensions, позволяющая создавать провайдеры на управляемом коде (C#). В Windows 10 и Windows Server 2016 WMI частично вытесняется более современной технологией PowerShell Desired State Configuration (DSC) и CIM-сессиями, однако остаётся критически важной для обратной совместимости и работы многих сторонних решений.
Архитектура
Архитектура WMI состоит из трёх основных уровней:
Потребители (Consumers)
Это приложения, скрипты или командлеты, которые запрашивают данные или выполняют операции через WMI. Потребители взаимодействуют с WMI через COM-интерфейсы (например, IWbemServices) или через объектные модели, такие как System.Management в .NET Framework. Наиболее распространённые потребители:
- PowerShell (командлеты
Get-WmiObject,Invoke-WmiMethodи др.) - VBScript и JScript (объект
SWbemServices) - Windows Script Host (WSH)
- Сторонние средства мониторинга (например, Nagios, Zabbix)
Инфраструктура (Infrastructure)
Центральный компонент — CIM Object Manager (CIMOM), реализованный в виде службы Winmgmt (Windows Management Instrumentation). CIMOM отвечает за:
- Приём и обработку запросов от потребителей
- Маршрутизацию запросов к соответствующим провайдерам
- Управление репозиторием WMI (хранилищем метаданных)
- Генерацию событий и уведомлений
Провайдеры (Providers)
Это DLL-библиотеки, которые реализуют интерфейсы для доступа к конкретным данным или управляющим функциям. Каждый провайдер отвечает за определённую область, например:
- Win32 Provider — основные данные о системе (процессы, службы, диски, сетевые адаптеры)
- Registry Provider — доступ к реестру Windows
- Event Log Provider — чтение и управление журналами событий
- Active Directory Provider — работа с объектами AD
- SNMP Provider — интеграция с SNMP-устройствами
Классы WMI
WMI использует объектно-ориентированную модель, где все данные и методы представлены в виде классов. Классы организованы в иерархию пространств имён (namespaces). Основные пространства имён:
root\cimv2— наиболее часто используемое, содержит классы для управления аппаратным и программным обеспечениемroot\default— системные классы, связанные с безопасностью и реестромroot\security— классы для управления политиками безопасностиroot\wmi— классы, связанные с производительностью и трассировкой событий
Примеры типовых классов:
Win32_Process— информация о запущенных процессахWin32_Service— управление службами WindowsWin32_LogicalDisk— данные о логических дискахWin32_NetworkAdapterConfiguration— настройки сетевых адаптеровWin32_OperatingSystem— информация об ОС (версия, установка, загрузка)
Язык запросов WQL
WMI поддерживает собственный язык запросов — WQL (WMI Query Language), являющийся подмножеством SQL-92. WQL позволяет выполнять выборку данных, подписку на события и модификацию объектов. Основные операторы:
SELECT— выборка данных (например,SELECT * FROM Win32_Process WHERE Name = 'notepad.exe')ASSOCIATORS OF— получение связанных объектов (например,ASSOCIATORS OF {Win32_Service.Name='Spooler'})REFERENCES OF— получение ссылок на объектыWITHIN— задание интервала опроса для событийных запросов
WQL не поддерживает операции JOIN, GROUP BY, ORDER BY и агрегатные функции, что ограничивает его возможности по сравнению с полноценным SQL.
Безопасность
WMI использует механизмы безопасности Windows, включая:
- Аутентификация — проверка подлинности на основе Kerberos или NTLM
- Авторизация — контроль доступа на основе прав пользователя и членства в группах безопасности
- Шифрование — поддержка шифрования трафика между потребителем и CIMOM (начиная с Windows Vista)
По умолчанию доступ к WMI имеют только члены группы Администраторы (Administrators). Для удалённого управления требуется настройка брандмауэра (разрешение порта 135 для DCOM) и включение службы WMI.
Уязвимости и критика
WMI неоднократно становилась объектом атак злоумышленников. Основные проблемы:
- Использование для скрытого выполнения кода — злоумышленники могут запускать скрипты через WMI без создания процессов, что затрудняет обнаружение антивирусами (например, атаки с использованием
Invoke-WmiMethodилиWin32_Process.Create) - Отсутствие детального логирования — стандартные журналы Windows не всегда фиксируют WMI-запросы, что позволяет злоумышленникам оставаться незамеченными
- Уязвимости в провайдерах — в прошлом были обнаружены критические уязвимости (например, CVE-2016-0040, CVE-2017-8565), позволяющие повысить привилегии или выполнить произвольный код
В ответ на эти угрозы Microsoft внедрила в Windows 10 и Windows Server 2016 функцию WMI Control Security, позволяющую ограничивать доступ к WMI на уровне пользователей и групп, а также WMI Tracing для детального логирования.
Применение
WMI широко используется в следующих областях:
- Системное администрирование — автоматизация рутинных задач (управление службами, установка обновлений, мониторинг дискового пространства)
- Мониторинг и управление ИТ-инфраструктурой — сбор данных о производительности, состоянии оборудования и программного обеспечения
- Разработка программного обеспечения — доступ к системным данным для создания диагностических утилит, инсталляторов и средств резервного копирования
- Безопасность — обнаружение вредоносной активности (например, анализ запущенных процессов, проверка целостности системных файлов)
Альтернативы
Современной альтернативой WMI является PowerShell Remoting и CIM-сессии, которые используют протокол WS-Management (WSMan) и не требуют DCOM. CIM-сессии обеспечивают более высокую производительность, лучшую совместимость с не-Windows системами и повышенную безопасность. Однако WMI остаётся востребованной для обратной совместимости с устаревшими приложениями и скриптами.
Источники
- Microsoft Docs: Windows Management Instrumentation (WMI)
- Distributed Management Task Force (DMTF) — WBEM Standards
- «Windows Internals» by Mark Russinovich, David Solomon, Alex Ionescu
- CVE Database — уязвимости WMI
- TechNet: WMI Security Best Practices
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →