Wmi указанное пространство имен не является допустимым пространством имен на локальном компьютере

Обновлено: 07.07.2024

При изучении WMI очень полезно с помощью графических утилит просматривать иерархическую структуру классов и связи между различными объектами CIM . Для просмотра объектной модели WMI можно воспользоваться специальный тестер WMI (стандартная программа в операционных системах Windows 2000/XP) или утилитами из разработанного Microsoft дополнительного пакета WMI Tools.

Тестер WMI (WBEMTest)

Тестер WMI (wbemtest.exe) — это графическая утилита, с помощью которой можно взаимодействовать с инфраструктурой WMI на локальном или удаленном компьютере. С помощью тестера WMI можно решать следующие задачи:

  • подсоединяться к определенному пространству имен CIM ;
  • создавать и удалять классы и экземпляры классов;
  • получать список имеющихся классов и экземпляров классов CIM ;
  • просматривать и изменять свойства и квалификаторы классов или экземпляров классов;
  • выполнять методы классов и экземпляров классов;
  • составлять и выполнять запросы на языке WQL;
  • выводить код MOF для классов и экземпляров управляемых ресурсов.

Исполняемый файл wbemtest.exe является стандартным компонентом WMI в любой операционной системе; устанавливается он в каталог %SystemRoot%\System32\Wbem. После запуска этого файла появляется диалоговое окно Тестер инструментария управления Windows (Windows Management Instrumentation Tester), с помощью которого можно получить доступ ко всем функциям тестера WMI (рис. 11.6).

Тестер WMI

Сразу после запуска большинство кнопок этого диалогового окна недоступны — ими можно будет воспользоваться только после подключения к подсистеме WMI. До подключения можно установить флажок Включить все привилегии (Enable all privileges), что позволит средствами WMI выполнять операции, для которых необходимы специальные привилегии в операционных системах Windows NT/2000/XP (например, перезагрузку компьютера).

Отметим, что работа с тестером WMI предполагает хорошее знание структуры CIM и умение составлять запросы на языке WQL. Для первоначального ознакомления и изучения структуры объектной модели WMI лучше воспользоваться пакетом WMI Tools.

Административные утилиты WMI (WMI Tools)

В состав разработанных Microsoft административных утилит WMI входят несколько приложений, имеющих сходный интерфейс.

  • WMI CIM Studio. Это наиболее универсальное приложение, которое может быть использовано для просмотра и редактирования в репозитории CIM классов и их экземпляров. С помощью WMI CIM Studio можно также выполнять методы классов и объектов, просматривать ассоциации между различными классами, выполнять запросы на языке WQL, генерировать и компилировать файлы MOF для классов и объектов. Короче говоря, утилита WMI CIM Studio обладает практически теми же возможностями, что и тестер WMI (wbemtest.exe), однако имеет гораздо более удобный интуитивный интерфейс . Как и работа с тестером WMI, использование WMI CIM Studio предполагает довольно хорошее знание структуры репозитория CIM и названий нужных классов.
  • WMI Object Browser. Эта утилита предназначена для просмотра и редактирования объектов (экземпляров классов) в репозитории CIM , а также для вызовов их методов. Особенностью WMI Object Browser является то, что информация об объектах представлена в виде иерархического дерева, где в качестве корневого объекта может использоваться произвольный экземпляр выбранного нами класса. Само дерево объектов строится с помощью ассоциированных классов, что помогает извлекать информацию об управляемых ресурсах, не обладая глубокими знаниями о структуре репозитория CIM и используемых классах.
  • WMI Event Registration Tool. Данная утилита предоставляет графический интерфейс для регистрации и конфигурирования постоянных потребителей событий WMI. Здесь можно создавать или изменять фильтры событий, определять постоянных потребителей и устанавливать связи между ними и фильтрами событий.
  • WMI Event Viewer. Это вспомогательное приложение является постоянным потребителем событий, позволяющим сортировать и просматривать подробную информацию о полученных событиях.

Административные утилиты WMI реализованы в виде элементов ActiveX, которые встроены в страницы HTML, поэтому для их корректной работы необходимо, чтобы в системе был установлен браузер Microsoft Internet Explorer 5.0/6.0. Кроме этого, пользователь, который производит установку утилит WMI на компьютер, должен обладать правами администратора.

Подключение к пространству имен WMI

Для запуска любой из трех основных административных утилит WMI (WMI CIM Studio, WMI Object Browser или WMI Event Registration Tool) нужно выбрать соответствующий одноименный пункт в меню Пуск | Программы | WMI Tools (Start | Programs | WMI Tools). Первым шагом после запуска во всех этих утилитах является подключение к какому-либо пространству имен на локальном или удаленном компьютере с помощью диалогового окна Connect to namespace (рис. 11.7).

Ввод пространства имен WMI для подключения


Рис. 11.7. Ввод пространства имен WMI для подключения

По умолчанию в этом окне предлагается подключиться к пространству имен CIMV2 на локальном компьютере (root\CIMV2). Путь к нужному пространству имен на локальном или удаленном компьютере можно либо написать вручную, либо выбрать это пространство с помощью кнопки Browse For Namespace.

Если компьютер, к которому предполагается подключиться, доступен в сети, то его можно найти и выбрать с помощью кнопки Network Neighborhood .

После ввода в поле Machine Name имени нужного компьютера, следует выбрать интересующее нас пространство имен из списка. Для этого нужно в поле Starting Namespace написать название корневого пространства имен (обычно это Root) и нажать на кнопку Connect. В результате на экран выводится диалоговое окно Login (в заголовке этого окна отображается также название запущенного приложения), в котором можно указать имя пользователя и пароль для учетной записи, от имени которой происходит подключение к пространству имен (рис. 11.8).

Диалоговое окно WMI CIM Studio Login

Напомним, что к пространству имен на локальном компьютере может получить доступ только текущий пользователь, поэтому в случае локальной машины флажок Login as current user установлен, а поля Username, Password и Authority недоступны для редактирования. К пространству имен на удаленной машине можно подключаться как от имени текущего пользователя (для этого следует установить флажок Login as current user), так и от имени другого пользователя (в этом случае нужно снять флажок Login as current user и внести в поля Username и Password имя пользователя в виде domain\user и пароль соответственно).

Также в окне Login с помощью кнопки Options>> можно настроить дополнительные параметры подключения к инфраструктуре WMI (задать уровни олицетворения и проверки подлинности протокола DCOM, а также указать требуемые привилегии операционной системы).

После нажатия кнопки OK в окне Login и подключения к структуре WMI на нужном компьютере, в окне Browse For Namespace появится иерархический список всех классов из репозитория CIM на этом компьютере (рис. 11.9).

Выбор нужного пространства имен из списка


Рис. 11.9. Выбор нужного пространства имен из списка

Выбрав требуемое пространство имен из списка и нажав кнопку OK, мы вновь попадаем в диалоговое окно Login (см. рис. 11.8), где нужно ввести необходимую информацию и нажать кнопку OK.

Независимо от способа подключения пользователь должен иметь доступ к выбранному пространству имен WMI.

Для изучения структуры классов WMI можно воспользоваться утилитой WMI CIM Studio или WMI Object Browser.

WMI CIM Studio

Утилита WMI CIM Studio является универсальным инструментом при работе со схемой CIM , которая позволяет:

  • осуществлять навигацию по иерархическому дереву классов CIM ;
  • формировать список всех экземпляров определенного класса;
  • добавлять новые и удалять существующие классы или экземпляры классов (объекты);
  • просматривать и изменять (если это возможно) свойства, методы, квалификаторы и ассоциации классов или объектов;
  • выполнять методы классов или объектов;
  • генерировать для класса или объекта его описание на языке MOF и компилировать имеющийся MOF-файл в репозиторий CIM .

Приложение WMI CIM Studio реализовано в виде двух окон, которые открываются в браузере Internet Explorer (рис. 11.10).

Главное окно утилиты WMI CIM Studio

Левое окно называется проводником классов (Class Explorer), а правое — просмотрщиком классов (Class Viewer). Выбрав класс в левом окне, можно просмотреть информацию о нем в правом окне.

WMI Object Browser

Утилита WMI Object Browser позволяет осуществлять навигацию по иерархическому дереву объектов WMI, просматривать и редактировать (если это возможно) свойства, методы, квалификаторы и ассоциации экземпляров классов, а также выполнять методы этих экземпляров. Главное отличие WMI Object Browser от WMI CIM Studio состоит в том, что в WMI CIM Studio мы пользуемся списком классов CIM в выбранном пространстве имен WMI, а в WMI Object Browser на экран выводится дерево объектов, причем в качестве корневого объекта здесь может использоваться произвольный экземпляр выбранного нами класса, а само дерево объектов строится с помощью ассоциативных классов (рис. 11.11).

Утилита WMI Object Browser

Можно сказать, что утилита WMI Object Browser разработана, в большей мере, для применения системными администраторами, которые могут не иметь детального представления о назначении конкретных классов WMI и о структуре CIM вообще. Здесь вся информация (схема), которая содержится в репозитории CIM , представлена в более понятном и наглядном виде, чем в WMI CIM Studio. Например, по умолчанию корневым объектом в пространстве имен CIMV2 на локальном или удаленном компьютере является экземпляр класса Win32_ComputerSystem , у которого значение свойства Name совпадает с именем этого компьютера. Поэтому в корне дерева стоит объект с именем компьютера, а ниже в иерархическом порядке располагаются все его зависимые объекты (логические и физические компоненты этого компьютере).

Таким образом, даже человеку, который не владеет глубокими знаниями о схеме классов WMI, в WMI Object Browser наглядно видно представление компьютера в качестве дерева его составных частей, причем каждую часть здесь можно детально изучить и произвести с ней необходимые манипуляции, не прибегая к помощи никаких дополнительных программных средств.

Напомним, что для запуска WMI Object Browser, как и других административных утилит WMI, нужно выбрать одноименный пункт в меню Пуск | Программы | WMI Tools (Start | Programs | WMI Tools), после чего производится подключение к нужному пространству имен на локальном или удаленном компьютере.

Внешне утилита WMI Object Browser очень похожа на WMI CIM Studio, здесь также имеются два окна, которые открываются в браузере Internet Explorer (см. рис. 11.11). Левое окно называется проводником объектов (Object Explorer), а правое — просмотрщиком объектов (Object Viewer). Выбрав объект в левом окне, можно просмотреть информацию о нем в правом окне.

image

Давным-давно, когда трава была зеленее, а интернет безопаснее, в ИТ родилась инициатива Web Based Enterprise Management (WBEM). Первоначально спонсируемая в 1996 году такими компаниями как Cisco Systems, Intel и Microsoft, она получила широкое распространение и реализацию на различных платформах: от MAC OS до Redhat. WBEM четко документирован, основан на стандартах Интернета и представляет собой иной подход к управлению системами, отличный, например, от SNMP протокола.

Адаптация WBEM для Windows получила название WMI (Windows management interface) и впервые была представлена в Windows XP. Нам известно, что системы обновляются быстрее, чем их компоненты и многие уязвимости, бывшие ранее удобным инструментом управления, кочуют из версии в версию. В этой статье я хочу описать как выполняются задачи WMI и как избежать потенциальных рисков.

В силу своей мощности, WMI позволяет с помощью специальных утилит или сценариев производить различные потенциально опасные действия на ПК, в том числе, остановку критичных для работы служб и даже выключение компьютера. Например, так:

(Get-WmiObject Win32_OperatingSystem -EnableAllPrivileges).Win32Shutdown(5)

(GWMI -Class Win32_Service -Filter «name='WinRM'» -ComputerName Server).StopService()

Кроме того, на удаленной машине эти действия выполнить так же просто, как на локальной — достаточно написать имя нужной машины в пути к WMI-объекту.

Пространство имен WMI – это раздел репозитория WMI, который призван группировать классы и объекты WMI по назначению, плюс, определять атрибуты безопасности при доступе к классам и объектам в каждом таком контейнере. Все пространства имен начинаются с корня, который в WMI обозначается ключевым словом root. После имени корня через косую черту указывается пространство имен. Пространства имен могут быть вложенными. Большинство интересных классов и объектов размещается в пространстве имен root/CIMv2.

Одно из существующих в Windows пространств имен WMI может быть выбрано по умолчанию. Это означает, что если вы попытаетесь подключиться к этому хосту, не указав пространство имен, то вы автоматически будете подключены к выбранному по умолчанию. В стандартной инсталляции Windows по умолчанию выбрано пространство root\cimv2.

Технология WMI предназначена для администраторов Windows, и вся система безопасности в WMI устроена так, чтобы с помощью сценариев WMI пользователь мог на заданном ПК выполнить лишь те действия, на которые ему даны разрешения/привилегии. Это так называемые привилегии по умолчанию. Так реализуется безопасность WMI на уровне операционной системы: если пользователю на уровне операционной системы не дана привилегия перезагружать компьютер, то и с помощью WMI он и не сможет этого сделать.

Дополнительные политики безопасности в WMI реализованы на уровне пространств имен протокола Distributed СОМ (DCOM) – распределенной объектной модели компонентов. Чтобы более подробно рассмотреть эти типы безопасности WMI, кратко напомню основные общие понятия, связанные с безопасностью в Windows. А основана эта безопасность на именах пользователей и их паролях.

О разрешениях WMI

Когда в Windows создается пользователь, его системной учетной записи присваивается уникальный идентификатор безопасности (Security IDentifier или SID). На основе SID для пользователя формируется маркер доступа (Access Token), в который также добавляется список групп, членом которых является пользователь и список привилегий, которыми он обладает (например, остановка служб или выключение компьютера). Этот маркер доступа присваивается также всем процессам, которые запускает пользователь. В это время каждый объект операционной системы, доступ к которому определяет система безопасности – файл, либо процесс, либо служба или что-то ещё, имеет дескриптор безопасности (Security Descriptor, SD). В этом дескрипторе, в свою очередь, хранится список контроля доступа (Access Control List, ACL) для этого объекта.

Итак, при обращении пользователя или запущенного им процесса к объекту происходит сравнение маркера доступа данного пользователя со списком контроля доступа. В зависимости от результатов выдается или отклоняется разрешение/привилегия на выполнение запрашиваемых действий над объектом.

На уровне пространств имен механизм безопасности WMI соответствует общей модели безопасности Windows. Каждое пространство имен может иметь собственный дескриптор безопасности, на котором хранится список контроля доступа (ACL).

Каждая запись списка контроля доступа (Access Control Entry, АСE) содержит информацию о том, какие разрешения имеет определенный пользователь при выполнении различных операций в этом пространстве имен.

А вот и список разрешений при работе с пространством имен:

Выполнение методов (Execute Methods). Позволяет вызывать методы классов из определенного пространства имен. Будет ли метод выполнен или произойдет отказ, зависит от того, имеет ли пользователь разрешение на выполнение этой операции в системе.

Полная запись (Full Write). Разрешает создавать и модифицировать подпространства имен, системные классы и экземпляры классов.

Частичная запись (Partial Write). Открывает возможность создавать и модифицировать любые статические классы и экземпляры несистемных классов.

Запись поставщика (Provider Write). Позволяет записывать в репозиторий CIM классы провайдеров WMI и экземпляры этих классов.

Включить учетную запись (Enable Account). Предоставляет право чтения пространства имен WMI. Пользователи с этим разрешением, могут запускать на локальном компьютере сценарии, которые читают данные WMI.

Включить удаленно (Remote Enable). Разрешает пользователям получить доступ к пространству имен WMI на удаленном компьютере. По умолчанию этим разрешением обладают только администраторы, обычные пользователи не могут получать данные WMI с удаленных машин.

Прочесть безопасность (Read Security). Дает право читать дескриптор безопасности для пространства имен WMI без возможности его модификации.

Изменение правил безопасности (Edit Security). Позволяет изменять дескриптор безопасности для пространства имен WMI.

Все эти записи списка контроля доступа хранятся в репозитории WMI. Разрешения WMI для конкретного пространства имен применяются ко всем подпространствам имен и классам, которые определены в этом пространстве (наследуются ими). Собственные же разрешения безопасности для отдельного класса WMI определить нельзя.

О настройке по умолчанию

В Windows группа администраторов обладает всеми разрешениями из таблицы выше, а для остальных пользователей включена учетная запись (Enable Account), разрешено вызывать методы (Execute Methods) и записывать в CIM экземпляры классов провайдеров (Provider Write).

Администратор может изменить разрешения для определенных пользователей с помощью утилиты для настройки параметров WMI (оснастка wmimgmt.msc консоли управления ММС).

image

Скриншот 1.

Для доступа к инфраструктуре WMI на удаленном компьютере используется вышеуказанный протокол DCOM. Пользователь запускает сценарий или подключается к WMI с помощью специальных утилит и выступает в качестве клиента, а объект WMI, к которому идет обращение, является сервером. Чтобы определить, какой маркер доступа будет применяться при работе с WMI на удаленном компьютере, используются стандартные уровни имперсонации протокола DCOM.

Об имперсонации или Impersonation Levels

По-русски звучит несколько коряво. Что такое имперсонация и зачем она нужна? Это метод, при котором для подключения к ресурсу процесс или система должны использовать не свой контекст безопасности, а учетные данные другого субъекта безопасности.

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

Бывает более сложный вариант имперсонации – делегирование. Этот вариант необходим тогда, когда подключение к конечному ресурсу выполняется не самим субъектом безопасности (в примере выше – службой от лица пользователя), а через посредника (например, промежуточный сервер).

Представьте: пользователь подключается не напрямую к базе данных, а через веб-приложение на третьем сервере. Для осуществления такого подключения веб-приложение должно получить от субъекта безопасности (нашей службы) маркер доступа с правом делегирования – это позволит веб-приложению использовать маркер доступа субъекта безопасности уже при подключении к базе данных.

В случае с WMI делегирование может выглядеть так: мы, работая на станции администратора, подключаемся по WMI к некому серверу и запускаем на нем процесс с помощью метода Execute класса Win32_Process. Этот процесс не что иное, как другой скрипт WMI, который подключается к ещё одному хосту в сети для того, чтобы совершить какие-то действия. Если мы не воспользуемся делегированием, то на конечной машине скрипт будет запущен в контексте безопасности учетной записи промежуточного сервера, что далеко не всегда желаемо. С другой стороны, подобная ситуация с делегированием в реальной жизни случается достаточно редко.

Об уровнях Impersonation Levels

Анонимный доступ (Anonymous). Объект-сервер не имеет права получить информацию о пользователе или процессе, который обращается к данному объекту (иными словами, объект не может олицетворить клиента). Этот уровень олицетворения в WMI не используется.

Идентификация (Identify). Объект-сервер может запросить маркер доступа, связанный с клиентом, но не может произвести олицетворение.

В сценариях WMI этот уровень олицетворения используется редко, в этом случае нельзя запускать сценарии WMI на удаленных машинах.

Олицетворение (Impersonate). Объект-сервер может пользоваться всеми правами и привилегиями, которыми обладает клиент. В сценариях WMI рекомендуется использовать именно этот уровень олицетворения, ибо в таком случае сценарий WMI на удаленной машине сможет выполнять все действия, которые разрешено осуществлять пользователю, запустившему этот сценарий.

Делегирование (Delegate). Объект на сервере, к которому обращается клиент, может обратиться от имени клиента к другому объекту на другом сервере. Делегирование позволяет сценарию использовать на удаленной машине маркер доступа запустившего его пользователя. Тот же маркер используется для доступа к объектам WMI на других рабочих станциях. Применение данного уровня олицетворения связано с потенциальным риском, делегирование в сценариях WMI следует применять только в случае особой необходимости.

Выбираемый по умолчанию уровень олицетворения зависит от версии WMI на целевом компьютере. В версиях WMI ниже 1.5 по умолчанию используется уровень Идентификация (Identify), в версии WMI 1.5 и выше —Олицетворение (Impersonate). При необходимости можно изменить уровень олицетворения по умолчанию — для этого необходимо записать наименование нужного уровня (например, impersonate или Delegate) в ключ реестра
HKEY_LOCAL_MACHINE\Software\Microsoft\Wbem\Scripting\Default Impersonation Level.

image

Скриншот 2.

Протокол DCOM также предоставляет возможность запросить для соединения WMI определенный уровень аутентификации (проверки подлинности) и конфиденциальности:

Отсутствует (None). Проверка подлинности отсутствует.

По умолчанию (Default). Для выбора уровня проверки подлинности используются стандартные настройки безопасности. Рекомендуется использовать именно этот уровень, так как к клиенту будет применен уровень проверки подлинности, который задается сервером.

Подключений (Connect). Клиент проходит проверку подлинности только во время подключения к серверу. После того как соединение установлено, никаких дополнительных проверок не производится.

Вызовов(Call). Клиент проходит проверку подлинности в начале каждого вызова, во время приема запросов сервером. При этом заголовки пакетов подписываются, однако сами данные (содержимое пакетов), передаваемые между клиентом и сервером, не подписываются и не шифруются.

Пакет (Pkt). Проверке подлинности подвергаются все пакеты данных, которые поступают серверу от клиентов. Как и при проверке подлинности на уровне вызовов, заголовки пакетов подписываются, но не шифруются. Сами пакеты не подписываются и не шифруются.

Целостности пакетов (Pktlntegrity). Все пакеты данных проходят проверку подлинности и целостности. Проверяется, что содержимое пакета не было изменено во время передачи от клиента серверу. При этом данные подписываются, но не шифруются.

Привилегии (PktPrivacy). Все пакеты данных проходят проверку подлинности и целостности, при этом данные подписываются и шифруются, что обеспечивает конфиденциальность передаваемых данных.

Администраторам Windows хорошо известны настройки безопасности системы, доступные в консоли безопасности системы и групповых политиках домена и раздел «User Right Assignments» (привилегии пользователей). Ряд действий с операционной системой можно проделать только при наличии у пользователя или группы, куда он входит, той или иной привилегии. К таким действиям, например, относятся: перезагрузка системы (завершение её работы), восстановление состояния системы из резервной копии или смена системного времени.

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

Резюме

Что предлагается сделать для обеспечения безопасности WMI-подключений:

  1. Изменить уровень имперсонации для критичных сервисов (Скриншот 2).
  2. Настроить разрешения wmimgmt.msc (Скриншот 1).
  3. Изменить репозиторий по умолчанию. Это может нарушить сценарий шаблонных атак.

4. Изменить группы лиц с возможностями удаленного запуска и активации WMI через утилиту DCOMCNFG

image

5. Чтобы запустить WMI пользователь должен быть членом группы administrators либо DCOM users. Также должна быть доступна служба remote registry.

6. Настроить файервол – входящие подключения к DCOM идут по 135 TCP-порту и (имеют?) динамический диапазон RPC.

image

В заключение хочу сказать следующее: WMI дает скорость, мощь и легкость запуска команд на удаленных хостах, а SQL based-семантика команд делает его легким для освоения.

В интернете очень много информации о взломах и WMI-атаках, ведь они вписываются в нынешний атакующий тренд – использование нативных инструментов взлома системы – наряду с telnet NTP и DNS. Наша задача — этот тренд уловить и найти методы противодействия уже заложенные в систему.

Обычно объекты групповой политики назначаются на контейнер (домен, сайт или OU) и применяются ко всем объектам в этом контейнере. При грамотно организованной структуре домена этого вполне достаточно, однако иногда требуется дополнительно ограничить применение политик определенной группой объектов. Для этого можно использовать два типа фильтров.

Фильтры безопасности

Фильтры безопасности позволяют ограничить применение политик определенной группой безопасности. Для примера возьмем GPO2, с помощью которого производится централизованная настройка меню Пуск на рабочих станциях с Windows 8.1\Windows 10. GPO2 назначен на OU Employees и применяется ко всем без исключения пользователям.

настройки объекта групповой политики

Теперь перейдем на вкладку «Scope», где в разделе «Security Filtering» указаны группы, к которым может быть применен данный GPO. По умолчанию здесь указывается группа Authenticated Users. Это означает, что политика может быть применена к любому пользователю или компьютеру, успешно прошедшему аутентификацию в домене.

фильтр безопасности для GPO по умолчанию

На самом деле каждый GPO имеет свой список доступа, который можно увидеть на вкладке «Delegation».

список разрешений для GPO

Для применения политики объект должен иметь права на ее чтение (Read) и применение (Apply group policy), которые и есть у группы Authenticated Users. Соответственно для того, чтобы политика применялась не ко всем, а только к определенной группе, необходимо удалить из списка Authenticated Users, затем добавить нужную группу и выдать ей соответствующие права.

редактирование списка доступа GPO

Так в нашем примере политика может применяться только к группе Accounting.

фильтр безопасности для GPO после изменения

WMI фильтры

Для примера возьмем класс Win32_OperatingSystem, который отвечает за свойства операционной системы. Предположим, что требуется отфильтровать все операционные системы кроме Windows 10. Заходим на компьютер с установленной Window 10, открываем консоль PowerShell и выводим имя, версию и тип операционной системы с помощью команды:

Get-WmiObject -Class Win32_OperatingSystem | fl Name, Version, ProductType

получение списка объектов WMI

Для фильтра используем версию и тип ОС. Версия одинакова для клиентских и серверных ОС и определяется так:

Тип продукта отвечает за назначение компьютера и может иметь 3 значения:

Теперь переходим непосредственно к созданию фильтра. Для этого открываем оснастку «Group Policy Management» и переходим к разделу «WMI Filters». Кликаем на нем правой клавишей мыши и в контекстном меню выбираем пункт «New».

создание WMI фильтра

В открывшемся окне даем фильтру имя и описание. Затем жмем кнопку «Add» и поле «Query» вводим WQL запрос, который и является основой WMI фильтра. Нам необходимо отобрать ОС версии 10.0 с типом 1, соответственно запрос будет выглядеть так:

SELECT * FROM Win32_OperatingSystem WHERE Version LIKE ″10.0%″ AND ProductType = ″1″

wql запрос для WMI фильтра

Сохраняем получившийся фильтр.

готовый WMI фильтр

Теперь осталось только назначить WMI фильтр на объект групповой политики, например на GPO3. Переходим к свойствам GPO, открываем вкладку «Scope» и в поле «WMI Filtering» выбираем из списка нужный фильтр.

добавление WMI фильтра к GPO

Анализ применения групповых политик

При таком количестве способов фильтрации GPO необходимо иметь возможность диагностики и анализа их применения. Проще всего проверить действие групповых политик на компьютере можно с помощью утилиты командной строки gpresult.

Для примера зайдем на компьютер wks2, на котором установлена ОС Windows 7, и проверим, сработал ли WMI фильтр. Для этого открываем консоль cmd с правами администратора и выполняем команду gpresult /r, которая выводит суммарную информацию о групповых политиках, примененных к пользователю и компьютеру.

Примечание. Утилита gpresult имеет множество настроек, посмотреть которые можно командой gpresult /?.

Как видно из полученных данных, к компьютеру не применилась политика GPO3, поскольку она была отфильтрована с помощью фильтра WMI.

получение списка политик на компьютере с помощью gpresult

Также проверить действие GPO можно из оснастки «Group Policy Management», с помощью специального мастера. Для запуска мастера кликаем правой клавишей мыши на разделе «Group Policy Results» и в открывшемся меню выбираем пункт «Group Policy Results Wizard».

запуск Group Policy Results Wizard

Указываем имя компьютера, для которого будет составлен отчет. Если требуется просмотреть только пользовательские настройки групповой политики, то настройки для компьютера можно не собирать. Для этого необходимо поставить галочку снизу (display user policy settings only).

выбор целевого компьютера

Затем выбираем имя пользователя, для которого будут собираться данные, либо можно указать не включать в отчет настройки групповой политики для пользователя (display computer policy settings only).

выбор пользователя

Проверяем выбранные настройки, жмем «Next» и ждем, пока собираются данные и генерируется отчет.

суммарная информация

Отчет содержит исчерпывающие данные об объектах групповых политик, примененных (или не примененных) к пользователю и компьютеру, а также об используемых фильтрах.

отчет для пользователя Kirill

А теперь откроем отчет для пользователя Oleg. Этот пользователь является членом группы Accounting, поэтому к нему политика была успешно применена. Это означает, что фильтр безопасности успешно отработал.

отчет для пользователя oleg

На этом, пожалуй, я закончу ″увлекательное″ повествование о применении групповых политик. Надеюсь эта информация будет полезной и поможет вам в нелегком деле системного администрирования 🙂

date

01.03.2021

directory

Windows 10, Windows Server 2016, Скрипты

comments

комментарий 41

Любой бывалый Windows-админ периодически сталкивается с проблемами в работе службы WMI (Windows Management Instrumentation) и ее компонентах. Наличие проблем в подсистеме WMI является критичным с точки зрения нормального функционирования Windows, поэтому администратору необходимо проверить и восстановить работоспособность WMI. В этой статье мы опишем простую методику диагностирования и устранения неполадок службы WMI в Windows.

О наличии проблем с WMI может свидетельствовать широкий спектр ошибок:

  • Ошибки обработки WMI запросов в системных журналах и логах приложений ( 0x80041002 - WBEM_E_NOT_FOUND , WMI: Not Found , 0x80041010 WBEM_E_INVALID_CLASS );
  • Ошибки обработки GPO, связанные на WMI ( некорректная работа wmi фильтров групповых политик, и пр.);
  • WMI запросы выполняются очень медленно;
  • Ошибки при установке или работе агентов SCCM/SCOM;
  • Ошибки в работе скриптов (vbs или PowerShell), использующих пространство имен WMI (скрипты с Get-WmiObject и т.д.).

Диагностика проблем с WMI

В первую очередь нужно проверить служба Windows Management Instrumentation (Winmgmt) установлена в Windows и запущена. Вы можете проверить состояние службы в консоли services.msc или с помощью PowerShell:

Get-Service Winmgmt | Select DisplayName,Status,ServiceName

служба Windows Management Instrumentation (Winmgmt) работает

Если служба Winmgmt запущена, вы можете проверить работоспособность WMI, обратившись к ней с помощью простого WMI-запроса. Вы можете выполнить wmi запрос из командной строки или из PowerShell. Например, следующая команда выведет список установленных в Windows программ:

wmic product get name,version

Простейшая PowerShell команда для получения информации о версии и билда Windows 10 через WMI может выглядеть так:

powershell проверка работы wmi командой get-wmiobject

Как вы видите, служба WMI ответила на запрос корректно. Если при выполнении такого WMI-запроса Windows возвращает ошибку, скорее всего сервиса WMI работает некорректно, поврежден WMI репозиторий или есть какие-то другие проблемы.

ошибка Failed to initialize all required WMI classes

В моем случае, например, при открытии свойств WMI Control в консоли управления компьютером (compmgmt.msc) появлялась надпись:

Ранее для диагностики WMI существовала официальная утилита от Microsoft – WMIDiag.vbs (Microsoft WMI Diagnosis). WMIdiag это vbs скрипт, который проверяет различные подсистемы WMI и записывает собранную информацию в лог файлы (по умолчанию логи находятся в каталоге %TEMP% — C:\USERS\%USERNAME%\APPDATA\LOCAL\TEMP\). Получившийся отчет состоит из файлов, имена которых начинаются с WMIDIAG-V2.2 и включает в себя следующие типы фалов:

  • .log файлы содержат подробный отчет об активности и работе утилиты WMIDiag;
  • .txt файлы содержат итоговые отчеты о найденных ошибках, на которые стоит обратить внимание;
  • В .csv файлах содержится информация, нужная для долгосрочного анализа работы подсистемы WMI.

скрипт для исправления ошибок WMI WMIDiag.vbs

Совет. В 64 битных версиях Windows wmidiag нужно запускать так:

в противном случае появится ошибка:

WMIDiag It is not supported in Wow64

К сожалению, последняя версия WMIDiag 2.2 корректно работает только с версиями до Windows 8.1/Windows Server 2012 R2. На данный момент Microsoft даже удалила ссылку на загрузку WMIDiag из Download Center. Но при желании, этот скрипт можно найти в сети.

WMIDiag может дать подробную информацию по исправлению частных ошибок в WMI, но в большинстве случаев процесс это довольно трудоемкий и стоит потраченного времени только при решении инцидентов в критичных системах (как правило, на продуктивных серверах). Для массового сегмента рабочих станций пользователей сбросить и пересоздатьWMI репозиторий в Windows.

Исправление WMI репозитория, перерегистрация библиотек, перекомпиляция MOF файлов

В Windows 10/Windows Server 2016 вы можете проверить целостность репозитория WMI с помощью команды:

winmgmt-verifyrepository - проверка состояния репозитория wmi

Если команда возвращает, что база данных WMI находится в неконсистентном состоянии (INCONSISTENT или WMI repository verification failed), стоит попробовать выполнить “мягкое” исправление ошибок репозитория:

Данная команда выполняет проверку согласованности хранилища WMI и при обнаружении несогласованности перестраивает базу данных WMI.

Перезапустите службу WMI:

net stop Winmgmt
net start Winmgmt

Если стандартный способ исправления ошибок в WMI не помог, попробуйте следующий скрипт. Данный скрипт представляет собой ”мягкий” вариант восстановления службы WMI на компьютере (выполняется перерегистрация dll библиотек и службы WMI, перекомпилируются mof файлы). Данная процедура является безопасной и ее выполнение не должно привести к каким-либо новым проблемам с системой.

sc config winmgmt start= disabled
net stop winmgmt
cd %windir%\system32\wbem
for /f %s in ('dir /b *.dll') do regsvr32 /s %s
wmiprvse /regserver
sc config winmgmt start= auto
net start winmgmt
for /f %s in ('dir /b *.mof') do mofcomp %s
for /f %s in ('dir /b *.mfl') do mofcomp %s

На 64 битной версии Windows эти действия нужно также выполнить для каталога SysWOW64. Замените третью строку на

bat скрипт для перерегистрации компонентов wmi

Указанные команды можно выполнить путем простой вставки в окно командой строки, либо сохранить код в bat файле wmi_soft_repair.bat и запустить его с правами администратора. После окончания работы скрипта, перезагрузите Windows и проверьте работу WMI.

Сброс и пересоздание WMI репозитория (хранилища)

Если вам не помогли мягкие способ восстановления WMI, рассмотренные выше, придется перейти к более “жесткому” способу восстановления работоспособности службы WMI, заключающегося в пересоздании хранилищаWMI.

WMI репозиторий (хранилище) находится в каталоге %windir%\System32\Wbem\Repository и представляет собой базу данных, в которой содержится информация о метаданных и определениях WMI классов. В некоторых случаях WMI репозиторий может содержать статическую информацию классов. При повреждении репозитория WMI, в работе службы Windows Management Instrumentation (Winmgmt) могут наблюдаться ошибки вплоть до полной невозможности ее запустить.

Если вы подозреваете, что репозиторий WMI поврежден, имейте в виду, что его пересоздание — это последняя шаг, к которому нужно прибегнуть только тогда, когда другие операции не помогают реанимировать WMI.

Следующая команда выполнит сброс базы данных WMI к исходному состоянию (как после чистой установки Windows). Используйте эту команду для выполнения hard reset репозитория WMI, если параметре salvagerepository не исправил проблему:

Совет. На практике бывают случаи, когда пересоздание хранилища WMI приводит к проблемам со сторонним софтом. Это связано с тем, что все записи в базе WMI обнуляются (до состояния чистой системы). Такие программы скорее всего, придется переустанавливать в режиме восстановления.

Если обе команды ( Winmgmt /salvagerepository и Winmgmt /resetrepository ) не восстановили консистентное состояние базы WMI, попробуйте выполнить “жесткое” пересоздание базы WMI вручную таким скриптом:

sc config winmgmt start= disabled
net stop winmgmt
cd %windir%\system32\wbem
winmgmt /resetrepository
winmgmt /resyncperf
if exist Repos_bakup rd Repos_bakup /s /q
rename Repository Repos_bakup
regsvr32 /s %systemroot%\system32\scecli.dll
regsvr32 /s %systemroot%\system32\userenv.dll
for /f %s in ('dir /b *.dll') do regsvr32 /s %s
for /f %s in ('dir /b *.mof') do mofcomp %s
for /f %s in ('dir /b *.mfl') do mofcomp %s
sc config winmgmt start= auto
net start winmgmt
wmiprvse /regserver

сброс и восстановление хранилища wmi в windows 10

На 64 битной версии Windows нужно также перерегистрировать dll/exe и перекомпилировать mof файлы в каталоге %windir%\sysWOW64\wbem.

Данный скрипт полностью пересоздает хранилище WMI (старый репозиторий сохраняется в каталог Repos_bakup). После окончания работы скрипта нужно перезагрузить Windows. Затем протестируйте работу службы WMI простым запросом.

Проверьте состояние WMI репозитория. Если ошибки исправлены, команда winmgmt /verifyrepository должна вернуть:

WMI repository is consistent

В этой статье мы собрали основные способы, позволяющие продиагностировать и устранить неполадки службы и репозитория WMI.

Читайте также: