Безопасность при работе с WMI стоит на первом месте, так как WMI позволяет получить доступ практически ко всем элементам системы. Вы конечно можете сказать, что и с помощью командной строки можно получить много информации, но тут немного другое…
Для примера, используя командную строку нельзя создать постоянный потребитель событий, который будет управлять заданным процессом (закрывать, создавать или реагировать на изменения). Вторым моментом является то, что командная строка (как и Windows Script Host) являются лишь средствами, и сами по себе ничего интересного не представляют (так, для CMD изюминкой являются внешние команды, а для WSH – объекты).
Как вы уже поняли, статья будет рассматривать параметры безопасности при работе с WMI, и так, начнем…
Для WMI существует общая безопасность (реализуется операционной системой) и дополнительная безопасность (реализуется пространством имен и протоколом DCOM). В итоге получается любопытная ситуация, если права пользователя ограничены операционной системой, то они ограничены и самим WMI, но, если у пользователя достаточно прав в ОС, то это еще не факт, что аналогичные прав будут и в WMI.
Для операционной системы характерны три параметра:
- SD – дескриптор (описание) безопасности (Security Descriptor), который хранит ACL
- ACL – таблица контроля доступа (Access Control List)
- SID – идентификаторы пользователя
Для каждого пространства имен WMI могут присутствовать собственные SD и ACL. Сама информация о дополнительных разрешениях хранится в репозитории WMI. Правило наследования действует и в плане безопасности, то есть, одно пространство имен может наследовать параметры безопасности WMI от другого пространства имен. Для отдельных классов нет собственных разрешений безопасности.
Естественно, что пользователь системы, обладающий правами администратора, будет иметь полный доступ к WMI – поэтому, важно работать в интернете под ограниченной учетной записью.
Список разрешений
Execute Methods — Выполнение методов. Разрешение дает возможность вызывать методы классов для заданного пространства имен. В случае, если у пользователя будет данное разрешение, но не будет разрешения на выполнение той операции в ОС, которую производит метод, то произойдет отказ при выполнении данного метода.
Full Write — Полная запись. Дает возможность производить модификацию и создание системных классов, их экземпляров и подпространства имен.
Partial Write — Частичная запись. Дает возможность производить модификацию и создание классов и их экземпляров, которые не являются системными.
Provider Write — Запись поставщика. Дает возможность создания записи классов и их экземплярв в репозиторий CIM.
Enable Account— Включить учётную запись. Собственно, право считывания WMI данных.
Remote Enable — Включить удалённо. Возможность доступа к удаленной системе, данное разрешение присуще только администратору.
Read Security — Прочесть безопасность. Считывание дескриптора безопасности (DS) для заданного пространства имен.
Edit Security — Изменение правил безопасности. Собственно, данное разрешение дает возможность редактировать дескриптор безопасности.
Для настройки разрешений используется утилита wmimgmt.msc, которую можно запустить из меню Пуск/Выполнить или из окна командной строки. Стоит помнить, что на локальной системе можно работать только от имени текущего пользователя.
Для подключения к инструментарию WMI на удаленной системе надо войти в меню «Действие» — «Подключение к другому компьютеру…». Что изменить параметры безопасности WMI, нужно выбрать меню «Действие» — «Свойства»
Для настройки разрешений для заданного пространства имен, надо перейти на вкладку «Безопасность», выбрать нужное пространство имен и нажать кнопку «Безопасность».
Если же перейти на вкладку «Дополнительно», то можно выбрать пространство имен, которое будет использоваться по умолчанию.
Уровни олицетворения DCOM
Anonymous – Анонимный доступ, значение 1. Информация о клиенте недоступна серверу. Данный уровень в WMI не используется.
Identify – Идентификация. Значение 2. Информация о клиенте серверу доступна, но клиента нельзя олицетворять, то есть, производить запуск WMI сценариев на удаленной системе нельзя.
Impersonate – Олицетворение, значение 3. Сервер может использовать все права клиента.
Delegate – Делегирование, значение 4. Серверу можно обращаться от имени клиента к другому объекту-серверу.
Уровень олицетворения, который установлен по умолчанию, можно задать в реестре, в ключе
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WBEM\Scripting\Default Impersonation Level |
При написании сценариев Windows Script Host, в них можно указывать нужный уровень олицетворения при соединении с WMI.
Уровни аутентификации
None – Отсутствует, значение 1. Отсутствует проверка подлинности.
Default — По умолчанию, значение 0. Применяются настройки безопасности, заданные на самом сервере WMI.
Connect – Подключений, значение 2. Только в процессе подключения к серверу клиент будет проходить проверку подлинности. После установки соединения все проверки отсутствуют.
Call – Вызовов, значение 3. Производится проверка клиента в начале каждого вызова в процессе приёма запросов сервером. Для всех пакетов происходит подписывание заголовков, но содержимое самих пакетов не подписывается и не шифруется.
Pkt – Пакетов, значение 4. Аналогично уровню Call, но в добавок, проверку происходят все пакеты, которые поступают от клиента.
PktIntegrit — Целостности пакетов, значение 5 – Для всех пакетов осуществляется проверка подлинности и целостности, однако, сами данные подписываются, но не шифруются.
PktPrivacy — Секретности пакетов, значение 6. Аналогично уровню PktIntegrit, только в добавок происходит шифрование данных.
Как и с уровнями олицетворения, значение уровней аутентификации можно задать в сценариях при соединении с WMI. По умолчанию для локальной работы с WMI применяется уровень секретности пакетов (PktPrivacy).