- Почему при наблюдении нужно использовать постоянные события?
- Краткий обзор: что такое wmi и для чего он нужен?
- Wmi что это такое и с чего начать?
- Wmi использует wimrm?
- Wmi объявлен устаревшим?
- Архитектура инструментария управления windows
- Выполнение запросов wmi
- Выявление событий wmi, представляющих угрозу, с помощью sysmon и siem
- Для сборки изделий из комплектов дополнительно:
- Для чего используется инструментарий управления windows
- Интеграция netcat и wmi
- Использование событий wmi для наблюдения за пользователями
- Использование функциональности wmiexec из impacket
- Какие порты использует wmi?
- Можно ли отключить постоянные события wmi?
- Постоянные события: советы для ит-администраторов
- Практикум по использованию событий wmi для наблюдения за системой
- Пример для годового производства тс более 500 шт.:
- Присвоение кода изготовителя транспортных средств (wmi-код) | белгисс
- Устранение недочетов в механизме наблюдения wmi
- Часто задаваемые вопросы об инструментарии управления windows
- Заключение
Почему при наблюдении нужно использовать постоянные события?
Правильный и одновременно требующий более глубоких знаний способ заключается в использовании постоянных событий WMI. Постоянные события WMI, хотя и представляют некоторую сложность, не только являются более эффективным инструментом для шпионов-инсайдеров, чем временные события, но и позволяют гораздо эффективнее отслеживать внутренние угрозы.
Изучение постоянных событий потребует некоторого времени, но они представляют наиболее эффективный способ реализации строгой системы мониторинга для больших систем. Они обладают более широкими возможностями, чем временные события WMI. Их также можно использовать для оповещения о нестандартной вредоносной активности, такой как DNS-туннелирование или нарушение политик Zero Trust.
Я посвятил изучению постоянных событий пару дней и обнаружил, что в PowerShell есть специальный командлет, который упрощает процесс создания фильтра событий, потребителя и объектов WMI между фильтром и потребителем. Как мы все знаем, PowerShell предоставляет администраторам широкие возможности для упрощения работы.
К сожалению, данный пример показывает, как этими прекрасными возможностями могут воспользоваться злоумышленники.Инсайдер создает постоянное событие на целевой системе, тем самым освобождая себя от необходимости присутствовать в сеансе оболочки. Событие остается там навсегда или до тех пор, пока не будет удалено явным образом.
Соглашусь, что для обычного сотрудника, который вдруг решил стать злобным хакером, это выглядит слишком круто. Ради интереса я почитал разные форумы и увидел, что многие люди безуспешно бьются над тем, чтобы заставить постоянные события WMI работать.
Краткий обзор: что такое wmi и для чего он нужен?
Приведем конкретный пример. С помощью WMI вы можете запросить, например, все большие файлы Excel, находящиеся в том или ином каталоге, а затем получать уведомление каждый раз при создании файла с заданным размером, например 1 Мб. Командлет Register-WmiEvent позволяет сделать все это с помощью одной не слишком сложной строки в PowerShell.
В хороших руках WMI может послужить многим благим целям, но точно так же он может стать инструментом вредоносной инсайдерской деятельности. Можно легко представить, как некий сотрудник с повадками Эдварда Сноудена использует WMI, чтобы шпионить за своими коллегами. Для этого ему даже не понадобятся особые технические знания.
Предположим, наш гипотетический инсайдер «случайно» подсмотрел, что его коллега Лекс периодически скачивает большие файлы Excel, содержащие номера социального страхования и другие личные данные клиентов. В этом случае наш незаметный инсайдер может соорудить нечто подобное:
Wmi что это такое и с чего начать?
Для начала что такое WMI (Windows Management Instrumentation)? Это технология, которая с помощью единого интерфейса позволяет управлять компонентами как локальной, так и удаленной операционной системы.
Данный материал рассчитан на тех, кто что-то слышал о WMI, но не знает с чего начать его «ковырять». А так же на тех, кто и не подозревал о существовании такого удобного инструмента.
Я не буду рассказывать о том, как работает, как устроена данная технология, если возникнет интерес — информацию всегда можно найти в MSDN. Моя цель — помочь обеспечить быстрый старт, для тех, кто хочет начать использовать данную технологию.
Что дает применение WMI на практике? Возможность изменять различные параметры операционной системы, управлять общими ресурсами, запрашивать информацию об установленных устройствах, запущенных процессах и т.д.
Кому может пригодиться WMI? Я думаю всем. Вы можете использовать возможности WMI не только из Ваших программ на C#, C и других языках программирования, но и создавать собственные скрипты, автоматизирующие процесс сбора информации, изменения конфигурации локальной или удаленной машины.
Для быстрого ознакомления с возможностями WMI можно скачать утилиту WMI Code Creator (размер 122 KB, в архиве сама утилита и исходник на C#) с сайта компании Microsoft. Данная утилита позволяет просматривать пространства имен WMI, классы каждого пространства имен, свойства и методы каждого класса. Плюс она генерирует C#, Visual Basic .NET, Visual Basic Script код.
Чтобы долго не занудствовать я приведу пример получения информации об установленном процессоре. В списке Namespaces (пространство имен) выбираем rootCIMV2, в списке Classes (классы) выбираем Win32_Processor. В списке Results (в нем перечислены свойства класса) выбираем Name и нажимаем Execute Code. В появившемся окне видим название (или названия) установленного процессора.
Другой пример — выведем список расшаренных ресурсов. В этот раз выберем класс Win32_Share, в списке свойств выберем Name затем Execute Code. Получили список ресурсов.
Давайте теперь закроем доступ к какому-нибудь ресурсу, в моем случае это Temp. Переходим на закладку Execute a Method в списке классов выбираем все тот же Win32_Share, в списке Methods (методы класса) выбираем Delete, выбираем папку Temp, Execute Code, если все прошло успешно, то папка Temp более не числится в списке общих ресурсов.
Если Вам не хватает возможностей WMI — Вы всегда можете создать собственный класс. Пример создания такого класса уже публиковался на Хабре.
На этом все, желаю удачи в освоении и применении данной технологии.
Wmi использует wimrm?
Данная конфигурация не является стандартной, однако вы можете использовать WMI для получения данных с помощью сценариев или приложений, использующих WinRM Scripting API, или с помощью инструмента командной строки Winrm. WinRM может использовать WMI для сбора данных о ресурсах или для управления ресурсами в операционной системе Windows.
Wmi объявлен устаревшим?
Сам WMI не устарел, но была объявлена устаревшей WMIC, что вводит многих людей в заблуждение. Для доступа к функциям, ранее обеспечиваемым WMIC, теперь используется PowerShell.
Архитектура инструментария управления 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. Выполните следующие действия, чтобы получить информацию о процессоре, используемом на локальном компьютере:
- Откройте командную строку
- Введите WMIC для вызова программы и нажмите клавишу Enter
- Появится окно командной строки WMIC
- В командной строке можно выполнять запросы WMI. Самый простой запрос — это просмотр информации о локальном процессоре, который можно выполнить с помощью следующей команды:
WMIC CPU
- Результаты будут отображены в командной строке
Практически все команды, которые будут рассмотрены ниже, выполняются таким образом. Однако WMI позволяет получать гораздо более подробную информацию, чем сведения о процессоре, и в том числе от удаленных компьютеров и приложений.
Выявление событий wmi, представляющих угрозу, с помощью sysmon и siem
В общем, вам придется принять уязвимость событий WMI как факт. К счастью, есть более эффективные способы обнаружения постоянных событий и других подозрительных операций с событиями в Windows, чем использование вышеупомянутого командлета Powershell.
Знакомьтесь, Sysmon! Я не буду вдаваться в подробности, рассказывая об этой бесплатной утилите Windows, которую можно загрузить здесь, в этой статье. Скажу лишь, что она позволяет получать очень полезную информацию для анализа в одном месте, вместо того чтобы просматривать каждый журнал событий 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.
Для сборки изделий из комплектов дополнительно:
Копия контракта на поставку сборочных комплектов;
Фотография транспортного средства;
Идентификационный номер базового ТС;
После получения кода изготовителя WMI, производителю обычно требуется получение Одобрения типа транспортного средства (ОТТС). Его необходимо получать для всех типов транспортных средств, которые будет производить предприятие.
ВЫ МОЖЕТЕ ОФОРМИТЬ WMI ОБРАТИВШИСЬ К НАШИМ СПЕЦИАЛИСТАМ!!!
Стоимость оформления WMI:
– производство до 500 ед. в год – 430 000 руб
– производство более 500 ед. в год – 520 000 руб
Подробнее о WMI
Международный код изготовителя транспортных средств WMI (World Manufacturers Identification) состоит из трех знаков и однозначно идентифицирует производителя транспортного средства. Первый символ кода характеризует географическую зону, второй — страну в этой зоне, третий — конкретного изготовителя автомобиля (иногда последний символ WMI обозначает тип транспортного средства).
Для чего он применяется?
Каждый производитель транспортных средств и/или их компонентов обязан маркировать свою продукцию. Код WMI входит в состав код VIN – Идентификационного номера транспортного средства (англ. Vehicle identification number, VIN) — уникальный код транспортного средства, состоящий из 17 символов.
Код VIN содержит в себе обозначение транспортного средства, характеристики, модельный год, серийный выпуск и состоит:
WMI (World Manufacturers Identification) — всемирный индекс изготовителя;
VDS (Vehicle Description Section) — описательная часть;
VIS (Vehicle Identification Section) — отличительная часть.
Для чего используется инструментарий управления windows
Прежде чем мы перейдем к изучению того, как WMI может использоваться инсайдерами в целях отслеживания, стоит отметить, что у него есть множество законных применений. Глобальное предназначение этой системы — свести воедино все средства управления устройствами и приложениями в корпоративных сетях. Таким образом, WMI может использоваться:
Доступ ко всем этим функциям можно получить с помощью PowerShell и WMIC — интерфейса командной строки WMI. Как видите, у WMI есть самые разные применения, и эта система позволяет отслеживать и редактировать множество разнообразных параметров в компьютерной сети.
Интеграция netcat и wmi
Но каким образом сценарий возвращает горячую новость о том, что Круэлла вошла в систему на целевом компьютере?
Если вы заметили, что я использовал команды Netcat выше, можете поставить себе плюсик. Netcat — известная и универсальная утилита, позволяющая устанавливать соединения (необязательно для вредоносного ПО). С помощью нее можно выполнять обратное подключение или просто передавать сообщения по сети. Я воспользовался этой второй возможностью.
Приведенный выше сценарий отправляет сообщение Netcat в режиме ожидания и отображает надпись «Круэлла вошла в систему». Миссия выполнена.
Вы можете представить себе, как наш мошенник затем сбрасывает хеши с помощью инструмента secretsdump Impacket, взламывает хеш учетных данных Круэллы, после чего запускает wmiexec, используя разрешения Круэллы, для поиска более ценных данных.
Код Register-WmiEvent можно запустить напрямую. Обратите внимание на отображаемый идентификатор события
Использование событий wmi для наблюдения за пользователями
Пока я тешил себя мыслью, что я один такой умный и занимаюсь экспериментами с WMI, оказалось, что ребята, занимающиеся тестами на проникновение, уже давно поняли, как все работает. Вам обязательно нужно прочитать потрясающую
Мэтта Грэбера (Matt Graeber) с конференции Black Hat 2021 года, где он рассказывает, как злоумышленники могут превратить 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), и сопоставил их с параметром «Круэлла». Можете полюбоваться на мое финальное решение:
Использование функциональности wmiexec из impacket
В WMI можно выполнять разные функции, помимо управления событиями. В нем можно запускать процессы и выполнять команды в окнах Windows как на локальных, так и на удаленных компьютерах. Ради интереса попробуйте ввести команду
process call create ‘notepad.exe’ в сеансе PowerShell, чтобы открыть старый текстовый редактор Microsoft. При этом используется замечательный инструмент командной строки wmic, входящий в состав WMI. Здорово, правда?
Если бы я добавил параметр /Node:, а затем имя удаленного компьютера Windows, то смог бы запустить Блокнот на нем, при условии что у меня есть соответствующие разрешения. Совершенно ясно, что на практическом уровне wmic является незаменимым помощником для системных администраторов.
Прежде чем вы начнете возмущаться: я знаю, что существуют эквивалентные командлеты PowerShell. Однако я считаю, что синтаксис wmic легче запомнить.Было бы здорово, если бы я мог с помощью WMI создать простую и незаметную псевдооболочку.
Скрытая псевдооболочка, созданная с помощью wmiexec
К моему везению, это можно сделать в Impacket. В тестовой среде Amazon я использовал свой любимый wmiexec для доступа к WMI через виртуальную машину Linux. В wmiexec предусмотрена возможность создания псевдооболочки: каждый раз, когда на стороне клиента вводится команда, на целевом компьютере создается отдельная оболочка для выполнения этой команды.
Инструмент wmiexec напрямую запускает cmd.exe для удаленного выполнения команды. Созданную команду можно найти в средстве просмотра событий. Обратите внимание, что мы избежали привлекающих внимание служб Windows
Инструмент wmiexec абсолютно не затрагивает службы, вместо этого используя описанные выше возможности WMI для непосредственного запуска процесса. При поиске возможных источников угроз специалисты по безопасности редко начинают с WMI, в то время как службы обычно являются хорошим местом для начала поиска улик, указывающих на атаку. Хороший ход, wmiexec!
Какие порты использует wmi?
WMI использует TCP-порт 135 и ряд динамических портов: 49152-65535 (динамические порты RPC: Windows Vista, 2008 и выше), TCP 1024-65535 (динамические порты RPC: Windows NT4, Windows 2000, Windows 2003). Вы также можете настроить для WMI пользовательский диапазон портов.
Можно ли отключить постоянные события wmi?
По крайней мере, ИТ-специалисты могут быстро увидеть зарегистрированные постоянные события WMI и приступить к анализу сценариев реальных событий на наличие признаков угроз. Возможно, как опытный специалист по ИТ-безопасности, вы считаете, что не всем нужен WMI на ноутбуках и лучшая стратегия по работе с уязвимостями постоянных событий WMI — это совсем отключить WMI.
Можно попробовать отключить службу Winmgmt, которая запускает WMI. На практике это не так уж просто. В ходе моих собственных тестов я так и не смог отключить эту службу: она автоматически запускалась снова и снова.
Предположим, что вам все же удалось отключить ее. Административное программное обеспечение Windows во многом зависит от WMI и не будет работать, если Winmgmt недоступна. По всему Интернету форумы наполнены сообщениями, предостерегающими от отключения WMI. Советую к ним прислушаться и помиловать ваш WMI.
Постоянные события: советы для ит-администраторов
Эти методы не предназначены для обучения потенциальных хакеров или обиженных сотрудников, которые хотят отомстить работодателю. Все, чего я хочу, — это помочь ИТ-специалистам понять образ мысли хакера, чтобы они могли внедрить соответствующую защиту от атак на проникновение. Для них я показываю, как настроить фильтр и объекты потребителя с помощью командлета Set-WmiInstance:
Практикум по использованию событий wmi для наблюдения за системой
В этом разделе мы рассмотрим, как с помощью WMI выполнять команды и отслеживать процессы на удаленных компьютерах. Подобные приемы можно использовать в составе
для автоматического мониторинга процессов во всей системе и
, о которых свидетельствуют подозрительное поведение или аномальные события.
Пример для годового производства тс более 500 шт.:
В качестве знаков, составляющих код VIN, используют:
арабские цифры – 1, 2, 3, 4, 5, 6, 7, 8, 9, 0;
латинские буквы – А, В, С, D, Е, F, G, Н, J, К, L, М, N, P, R, S, Т, U, V, W, X, Y, Z.
Примечание – Буквы I, O и Q не используют.
Первый раздел кода VIN – международный идентификационный код изготовителя (World Manufacturer Identifier – код WMI), присвоенный каждому изготовителю ТС. Код WMI состоит из 3 знаков. Коды WMI присваивает компетентный орган страны, в которой изготовитель имеет основные производственные мощности. Каждому изготовителю может быть присвоено несколько кодов WMI.
Второй раздел кода VIN – описательная часть кода VIN (Vehicle Descriptor Section – VDS) – содержит информацию, описывающую основные признаки ТС. В этом разделе кода VIN могут быть обозначены тип ТС, варианты типа и версии ТС. VDS состоит из 6 знаков. Выбор знаков для кодирования и их последовательность определяются изготовителем.
Третий раздел кода VIN – указательная часть кода VIN (Vehicle Indicator Section – VIS) – состоит из комбинации знаков, присваиваемых изготовителем для того, чтобы отличить одно ТС от другого. VIS состоит из 8 знаков, последние 4 из них должны быть цифрами. На всех неиспользуемых позициях должны быть проставлены нули.
Присвоение кода изготовителя транспортных средств (wmi-код) | белгисс
БелГИСС
Успешно реализуемые государственные направления и проекты позволяют, с одной стороны, поддерживать уникальность института в республике и за ее пределами, а с другой – находиться в конкурентной среде, постоянно улучшаться, искать и предлагать новые решения, динамично продвигаться к новым горизонтам.
Устранение недочетов в механизме наблюдения wmi
В рамках этого примера я хотел удаленно запустить (используя wmiexec) полезную программу, которая будет предупреждать меня, когда конкретный пользователь, то есть Круэлла, входит в систему. После этого я мог спокойно сбросить и взломать ее учетные данные.
Поэтому мне нужно было заключить мое непристойно длинное Register-WMIEvent (ниже) в командную строку PowerShell с параметром –noexit, обеспечивающим сохранение сеанса PowerShell после выполнения Register-Event, а значит, и сохранение события.
Часто задаваемые вопросы об инструментарии управления windows
Описанные выше методы вполне могут быть использованы для реализации системы наблюдения в вашей сети, однако у вас могли остаться некоторые вопросы о WMI. В этом разделе мы ответим на самые распространенные из них.
Заключение
Как мы увидели, WMI предоставляет администраторам мощный инструмент для мониторинга удаленных процессов и компьютеров и может использоваться при разработке соглашений о мониторинге конечных пользователей (EUMA) для автоматического оповещения о подозрительной активности.