Как стать автором
Обновить

Комментарии 76

«WMIC.exe уже используется злоумышленниками для широкого спектра вредоносных действий.»

Есть ещё крайне опасная программа — regedit.exe. Да и сам реестр содержит массу крайне чувствительной для работоспособности Windows информации. И да, с помощью правки реестра также можно добавить исключения в работу антивируса или удалить его. Exterminate?

С другой стороны, в папке пользователя разрешено хранение исполнимого кода. Кто мешает вирусу загрузить туда снова такой полезный wmic.exe или любой другой код?

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

Ничего (хотя ничего так же не мешает внести wmic.exe в какой-нить черный список), при чем тут это вообще? МС убирает легаси и сокращает поверхность для атак. Это само по себе полезное действие, хоть сколько других способ есть помимо этого. Даже игнорируя вопрос безопасности, это все равно выглядит полезным, т.к. унифицирует средства администрирования вокруг powershell.

Куда настроены запреты, туда и не пустит, а настроено далеко не везде, где стоило бы. К примеру, права на HKLM\Software\Microsoft\Windows Defender\Exclusions в Windows 10 21H1 и 21H2 настроены только в февральском обновлении. А настраивать всё слишком сложно и непредсказуемо ввиду большого объёма реестра и необходимости тестирования ПО при любых изменениях.
Если WMIC получает доступ к информации без повышения прав, значит найдётся и другие способы для этого, удаление конкретной утилиты не поможет. Да и способов повышения полномочий масса.

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

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

сокращает поверхность для атак

Приведите пожалуйста пример когда атаковать можно только исполняя wmic.exe.

Не обязательно, чтобы атаковать можно было только через эту утилиту. Но часть вредоносов атакует именно через неё. Соответственно, если утилиту удалить, они отвалятся. Да, есть и другие способы: Windows громоздка и развесиста, основа закладывалась, когда про разделение доступа никто не задумывался, а теперь всё это надо перерабатывать. Если точнее, развесистой и громоздкой она стала ещё до того, как проблема разграничения доступа стала актуальной. Теперь вот латают. И удаление устаревшей утилиты — один из шагов, потому что поддерживать меры безопасности ещё и в ней — это как-то слишком, учитывая, что всё администрирование перевозят в PowerShell. Собственно, они это пытаются делать уже лет 20, если не ошибаюсь.

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

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

Ну конечно, переписать новый вредонос, который все равно будет новый, ибо старые детектируются уже, условно говоря "на использование powershell" - это же проблема

А админам свои скрипты переделать только потому что wmic выпилили - ерунда, им это даже в радость

потому что поддерживать меры безопасности ещё и в ней

какие "меры безопасности еще и в ней"? это клиентская софтина, выполняющаяся в контексте пользователя, её запустившего

Понял. Не настолько хорошо я знаю Windows, как оказалось. Впрочем, и вижу-то её раз в пару месяцев на чужом экране.
С другой стороны, в папке пользователя разрешено хранение исполнимого кода. Кто мешает вирусу загрузить туда снова такой полезный wmic.exe
Загрузить никто не мешает, а исполнить помешают грамотно настроенные правила SRP/AppLocker. Если у юзера из профиля могут запускаться любые бинарники — все вопросы к сисадминам, которые проморгали такую дырку. Запускаться оттуда должны лишь явно разрешённые бинарники.

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

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

Другие антивирусные продукты тоже могут использовать такой подход. Например, уважающий себя антивирус не даст себя удалить, пока пользователь не подтвердит это (причём, в настройках какого-нибудь Kaspersky Anti-Virus обычно есть опция, запрещающая выдавать такие подтверждения через средства удалённого управления — только живое присутствие).
«Если у юзера из профиля могут запускаться любые бинарники — все вопросы к сисадминам, которые проморгали такую дырку. Запускаться оттуда должны лишь явно разрешённые бинарники.»
Разрешение на запуск Вайбера или браузера, установленного в профиле пользователя за неимением доступа к «Program Files» считается?
Кто администрирует домашние компьютеры?
все вопросы к сисадминам

А что делать простым домашним пользователям, которые «сам себе админ» и «просто купил и пользуюсь»?

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

SRP с 5-й версии PowerShell не контролирует запуск скриптов PowerShell. Поэтому вырезание WMIC в данном случае погоды не делает. А вот переход на PS создаёт громадную дыру в безопасности (при использовании SRP).

А ещё надо выпилить powershell, и cmd заодно, и самбу, и юсб. Оставить запуск только программ с сертификатом микрософта с их маркета. Ну и до кучи с интернета ничего не скачивать, браузер в песочнице, документы на onedrive, игры в внешних сервисах.

пожалуйста, не нужно зачитывать ченджлог версий, ещё не ушедших в релиз :)

Похоже на Windows 10X по описанию. А еще на Windows Phone.

Шутки шутками, а Task Manager для Windows 11 уже существует в виде Fluent Design приложения.

не подавай свежих идей, даже в линух похожие идеи витают:
wayland со своим запретом к доступу экрана приложения, ods студия перестала работать, мои xdottool скрипты (автоматизация нажатий мыши клавы) тоже перестали, запрет это хорошо, но пользователь должен иметь возможность его обойти.

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

"мне чем линух нравился я хозяин своей техники".

Можете в Ext4 настроить разрешения на папку так, чтобы её саму нельзя было удалить, переименовать или сменить разрешения (всё это без повышения прав), но при этом всем можно было делать всё внутри папки со всем её содержимым? А ещё с наследованием прав там всё очень "замечательно". Эксперименты проводил в Debian 11.

Едва-ли через regedit можно отключить антивирус и телеметрию. На Stackoverflow тема с многими обновлениями и решения под последние обновления ОС - только полурабочие и временные

Несколько месяцев назад я писал скрипт. Мне нужно было заархивировать несколько папок, в каждом архиве менять 1 файл. Нужно упаковать мои рабочие проекты для отправки на веб.
Писал на PowerShell, потом я матерился, что потратил пол дня времени. так как PowerShell требует сертификаты безопасности. Блиин. Где я их возьму?
Пришлось переписывать на CMD, все по новой, соблюдая другой синтаксис. Просто там скрипт сложный, но ее мне приходится делать часто, поэтому хотел автоматизировать свою рутину.
Я понимаю что PowerShell обеспечивает защиту от вирусов. Но так пусть сделают его более понятным и доступным. Например в свойствах скрипта поставить галочку особую.
И если предположим там так можно сделать, как я должен об этом узнать, они же пишут в окне что мол нет сертификата, так пусть рядом напишут что мол это можно отключить в свойствах.
Не фига не понятно как это делается.

>так как PowerShell требует сертификаты безопасности
Решается запуском из под CMD со специальными ключами (или можно тупо отключить все проверки подписи скриптов одной командой)

А чего мелочиться, сразу

Set-ExecutionPolicy -Scope CurrentUser RemoteSigned

раз уж товарищ все равно скрипты пишет на локальной машине.

Это же можно сделать и через «Параметры» в разделе «Для разработчиков».

Спасибо большое.
А можно это как написать вначале самого скрипта? Или это уже не получится.
Хотя полагаю скорей всего нет, иначе смысл такой защиты теряется.

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

Я на работое пользуюсь комбинацией cmd + ps: cmd устанавливает разрешение и потом запускает собственно скрипт.

Я вот чего не могу понять. Microsoft форсит переход с CMD на PowerShell, но при этом получается, что последний заточен именно под администрирование и не совсем альтернатива первому.

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

Количество пользователей кому это нужно не велико, они могут осилить разово
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned

Это уже не из коробки. Уже нельзя использовать это как bash/CMD, для автоматизации действий на целевой машине без изменения её состояния.

Количество пользователей кому это нужно не велико
Все, кто вынужден использовать bat-скрипты, но страдает от крайне ограниченной функциональности?

Что эта команда значит?

Вангую, что для устанавливает для текущего пользователя (-Scope CurrentUser) политику выполнения (Set-ExecutionPolicy) скриптов в режим «требовать подписи только для удалённых скриптов» (RemoteSigned), т.е., не требовать для локальных.

А я хочу просто аналог bash-скриптов на Windows, работающий из коробки.

Powershell и есть такой аналог. Но, как и bash скрипты для своей работы требует своего рода sudo.

sudo это совсем про другое и для запуска bash-скриптов он не требуется. Иначе это была бы огромная дыра в безопасности, ведь каждый скрипт работал бы с привилегиями независимо от того, что он на самом деле должен делать.

Обожаю такие заголовки. Сидишь, значит, боишься спрашивать про powershell, а то мало ли че люди подумают))

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

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

Звучит бредово.

Да всё как обычно, "ученые айтишники изнасиловали журналиста".

Да они ахренели! Это — единственный локаль-независимый способ получить в .bat/.cmd файле текущие дату и время. Куда теперь бедному крестьянину податься?

Проще уже было самому написать утилиту date

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

А я тогда не знал, что существует date ;)

Тем более что лет 20 назад я писал еще 16-битную curtime под дос, а это уже просто чуток обновил

Порт date из linux вроде вполне себе с бородатых времен работает. Есть еще швецарский нож busybox

Да, знаю, как и большая часть из Gnu utils)

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

Сложность не в том, чтобы написать, а в том, чтобы это работало в +-произвольном окружении максимально широкого спектра систем с максимально разнообразными настройками. Чтобы на эту утилиту не заругался антивирус или суровый мужик-безопасник, чтобы её не забыли захватить при очередном переезде системы на другой сервер и т.д. и т.п.

Соглашусь, но едва ли на простую утилиту которая спамит в stdout текущее время отзовется антивирус.

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

Я подозреваю, что в случае с MS проще написать утилиту которая минимально зависит от windows. Иначе в следующей версии окажется api-устарел или требуется конкретная версия ps. Или "новый windows стал еще лучше и безопаснее" и теперь требуется сделать несколько лишних Па, чтобы заработало то что работало всегда.

Вот кстати, всегда интересовало — зачем Windows постоянно пишет текущее время в реестр?

Если вы про этот пример — то из реестра у них берутся только региональные параметры для форматирования даты, само время берётся не из реестра.

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

Увы, но нет. Этот смешной код ругается «La syntaxe de la commande n’est pas correcte.» на простейший вариант типа «lun. 14 févr. 2022», уж не говоря про какую-нибудь арабскую локаль…
а что в этом способе локаль-зависимого?
powershell -c get-date -uformat %s

Лично у меня эта команда показала время на три часа больше текущего

Хорошая альтернатива, но не работает (искаропки) на XP/Vista/2003/2008. Плюс к этому, сторонние ps-скрипты по умолчанию забанены в новых виндах. Впрочем, никто не обещает, что в условном Windows 13 powershell тоже не отомрёт, как бесперспективный, и всё на нём написанное (как и теперь, написаннное с использованием wmic) придётся выкинуть на помойку. В то время как команда date на юниксах отпраздновала свой 50-летний юбилей, и не показывает ни тени увядания. Об чём я и грущу…

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

 В то время как команда date на юниксах отпраздновала свой 50-летний юбилей

Так и в винде date никуда не делась.

Я надеюсь, это сарказм такой? date в виндах бесполезна чуть менее, чем полностью, ибо для «интерактивного» просмотра даты имелись GUI-средства чуть ли не с версии 1.0, а для автоматизации она не пригодна по причине непредсказуемого поведения в разных локалях.

а разве %time% и %date% уже не работают?

Видимо локаль-зависимые.

Кошмар кошмар, удаляют инструмент который был депрекейтнут ещё во времена 2012 сервер. https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/hh831568(v=ws.11)#wmi-providers

Не все сидят под серверными ОС.

Интересно когда они смогут полностью выпилить и перенести весь фунционал из Control Panel в Settings (ms-settings:), начали это еще в Windows 8, но даже в 11 изменений минимально.

Ага... На одной из сборок видел как выпилили Программы и компоненты из control и не оставили кнопки Удаление обновлений в setting. Искал поиском потом. Может уже и пофиксили в овых сборках. Но все равно было интересно

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

Вопрос 2All - а кто в реальной работе использует WMI на серверах ? Как по мне, с учётом распространения Linux на серверах актуальность этой технологии сильно уменьшается. Хотя, конечно, я могу ошибаться.

а кто в реальной работе использует WMI на серверах ?

Любой, у кого в хозяйстве есть виндовые сервера.

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

а что если взять утилиту из прошлой версии windows? Будет запускаться?

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

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Другие новости