Windows: "Get-WmiObject — мертв". Переходим на CIM
Если вы в 2025 году все еще пишете Get-WmiObject в своих PowerShell-скриптах, у нас плохие новости. Эта команда мертва (deprecated).
Почему она мертва? Она использует "старый" протокол DCOM, который:
* Медленный.
* Блокируется файрволами (требует 100500 открытых портов).
* Неэффективный.
Новый стандарт: Get-CimInstance (CIM) CIM (Common Information Model) — это современная замена WMI.
Почему CIM — это круто:
Работает по WinRM: (Как и PowerShell Remoting). Ему нужен один порт (5985 http или 5986 https). Он "пробивает" файрволы.
Быстрый: Использует WS-Man, который намного легче, чем DCOM.
Умный: Get-CimInstance возвращает "чистые" объекты, а не системный мусор.
Сравнение "до" и "после":
МЕРТВО (не делайте так):
PowerShell
ЖИВО (делайте так):
PowerShell
(...или New-CimSession для создания постоянного подключения).
Взгляд архитектора: Выбирать правильный инструмент — это и есть архитектура. Get-WmiObject — это "костыль" из эры Server 2003. Get-CimInstance — это стандарт для современной, автоматизированной Windows-инфраструктуры.
#windows #powershell #automation #wmi #cim #sysadmin #гайд #musthave
Если вы в 2025 году все еще пишете Get-WmiObject в своих PowerShell-скриптах, у нас плохие новости. Эта команда мертва (deprecated).
Почему она мертва? Она использует "старый" протокол DCOM, который:
* Медленный.
* Блокируется файрволами (требует 100500 открытых портов).
* Неэффективный.
Новый стандарт: Get-CimInstance (CIM) CIM (Common Information Model) — это современная замена WMI.
Почему CIM — это круто:
Работает по WinRM: (Как и PowerShell Remoting). Ему нужен один порт (5985 http или 5986 https). Он "пробивает" файрволы.
Быстрый: Использует WS-Man, который намного легче, чем DCOM.
Умный: Get-CimInstance возвращает "чистые" объекты, а не системный мусор.
Сравнение "до" и "после":
МЕРТВО (не делайте так):
PowerShell
# Медленно, через DCOM
Get-WmiObject -Class Win32_OperatingSystem -ComputerName SERVER01
ЖИВО (делайте так):
PowerShell
# Быстро, через WinRM
Get-CimInstance -ClassName Win32_OperatingSystem -ComputerName SERVER01
(...или New-CimSession для создания постоянного подключения).
Взгляд архитектора: Выбирать правильный инструмент — это и есть архитектура. Get-WmiObject — это "костыль" из эры Server 2003. Get-CimInstance — это стандарт для современной, автоматизированной Windows-инфраструктуры.
#windows #powershell #automation #wmi #cim #sysadmin #гайд #musthave
🔥1
Windows: Охота на "невидимых". Скрипт для поиска WMI-персистентности
Боль: Ваш EDR/антивирус молчит, но сервер "тормозит" и генерирует странный трафик. Вы не находите
Один из любимых методов хакеров — WMI Event Subscription. Злоумышленник "говорит" WMI: "Когда любой пользователь залогинится, пожалуйста, запусти этот
Реакция админа: Переустановить ОС.
Реакция архитектора: Найти и удалить подписку.
Этот PowerShell-скрипт (на CIM) сканирует "сердце" WMI (`root\subscription`) и показывает вам все активные WMI-подписки.
Код скрипта:
PowerShell
Взгляд архитектора: Это — проактивный Threat Hunting. 99% админов никогда не заглядывают в WMI-подписки. Вы должны. Если вы видите здесь что-то "неродное", особенно
#windows #powershell #security #threat_hunting #wmi #cybersecurity #скрипты #architect
Боль: Ваш EDR/антивирус молчит, но сервер "тормозит" и генерирует странный трафик. Вы не находите
.exe или подозрительных служб. Вероятно, вы столкнулись с "бесфайловой" (Fileless) атакой.Один из любимых методов хакеров — WMI Event Subscription. Злоумышленник "говорит" WMI: "Когда любой пользователь залогинится, пожалуйста, запусти этот
powershell -enc ...". Это невидимая автозагрузка.Реакция админа: Переустановить ОС.
Реакция архитектора: Найти и удалить подписку.
Этот PowerShell-скрипт (на CIM) сканирует "сердце" WMI (`root\subscription`) и показывает вам все активные WMI-подписки.
Код скрипта:
PowerShell
Write-Host "--- Начинаю поиск постоянных (Permanent) WMI-подписок ---" -ForegroundColor Cyan
# Мы ищем три компонента, из которых состоит атака:
# 1. __EventFilter: "За каким событием следить?" (e.g., "logon")
# 2. __EventConsumer: "Что запустить?" (e.g., "powershell.exe ...")
# 3. __FilterToConsumerBinding: "Как они связаны?"
$Namespace = "root\subscription"
Write-Host "`n[+] 1. Поиск Фильтров (__EventFilter):" -ForegroundColor Yellow
$Filters = Get-CimInstance -Namespace $Namespace -ClassName "__EventFilter"
$Filters | Select-Object Name, Query
Write-Host "`n[+] 2. Поиск 'Потребителей' (__EventConsumer):" -ForegroundColor Yellow
$Consumers = Get-CimInstance -Namespace $Namespace -ClassName "__EventConsumer"
$Consumers | Select-Object Name, __CLASS
Write-Host "`n[+] 3. Поиск Связей (Binding):" -ForegroundColor Yellow
$Bindings = Get-CimInstance -Namespace $Namespace -ClassName "__FilterToConsumerBinding"
$Bindings | Select-Object Filter, Consumer
Write-Host "`n--- Проверка завершена ---"
Write-Host "Задача: Вручную проверьте все, что не является 'Microsoft' или вашим ПО (e.g., 'Dell')."
Взгляд архитектора: Это — проактивный Threat Hunting. 99% админов никогда не заглядывают в WMI-подписки. Вы должны. Если вы видите здесь что-то "неродное", особенно
CommandLineEventConsumer — вы, скорее всего, нашли активную угрозу.#windows #powershell #security #threat_hunting #wmi #cybersecurity #скрипты #architect
🎯 WMI Filters: Групповые политики с лазерным прицелом
Вам нужно применить политику только к ноутбукам с Windows 11. Создавать отдельную OU (Organizational Unit) и переносить туда компьютеры? Долго и ломает структуру.
Используйте WMI-фильтры. Это SQL-запросы к железу перед применением политики.
Сценарий: Применить GPO только к Windows 11/Server 2025.
1. В
2. Пишем запрос:
(Где ProductType="1" — это рабочие станции, а не серверы).
3. Привязываем фильтр к нужной GPO.
Теперь политика "постучится" на Windows 10, увидит несоответствие версии и пройдет мимо. Чисто, красиво, профессионально.
#windows #gpo #wmi #activedirectory #sysadmin #automation #filtering
Вам нужно применить политику только к ноутбукам с Windows 11. Создавать отдельную OU (Organizational Unit) и переносить туда компьютеры? Долго и ломает структуру.
Используйте WMI-фильтры. Это SQL-запросы к железу перед применением политики.
Сценарий: Применить GPO только к Windows 11/Server 2025.
1. В
Group Policy Management идем в раздел WMI Filters -> New .2. Пишем запрос:
SELECT * FROM Win32_OperatingSystem WHERE Version LIKE "10.0.26%" AND ProductType="1"
(Где ProductType="1" — это рабочие станции, а не серверы).
3. Привязываем фильтр к нужной GPO.
Теперь политика "постучится" на Windows 10, увидит несоответствие версии и пройдет мимо. Чисто, красиво, профессионально.
#windows #gpo #wmi #activedirectory #sysadmin #automation #filtering