В качестве своего рода небольшого смягчения для большой сети эксплойта замены utilman.exe при ремонте Windows с помощью cmd.exe с последующим изменением пароля пользователя я делаю небольшой скрипт на основе инструмента EventSentry, который обнаружит, что utilman.exe изменен, и я могу прикрепить к нему действие. Но это обнаружение произойдет после того, как злоумышленник уже вошел в систему на локальном компьютере. Итак, я делаю сценарий, который изменяет права доступа и блокирует удаление и переименование utilman.exe, и я хочу добавить изменение пароля для текущего зарегистрированного пользователя, а затем выйти из системы.
Вот что у меня есть на данный момент:
@ECHO off
takeown /f c:\windows\system32\utilman.exe
icacls c:\windows\system32\utilman.exe /deny *S-1-1-0:(DE,WD,AD,RX)
net user [NeedToGetLogedUser] 123456
shutdown -L
Действие, которое я прикрепляю, выполнит этот сценарий под другим пользователем (не фактическим зарегистрированным пользователем). Поэтому мне нужно, чтобы на компьютере был зарегистрирован фактический текущий пользователь, а не пользователь, под которым будет запускаться этот сценарий.
Я думал о:
C:\Users\MyUser>query user
USERNAME SESSIONNAME ID STATE IDLE TIME LOGON TIME
>MyUser console 1 Active none 7/9/2020 6:27 PM
Но я не могу понять, как разобрать результат, чтобы получить только «MyUser» (используя findstr) для использования его с командой net user.
for /F "tokens=2 delims==" %f in ('wmic computersystem get username /value ^| find "="') do set "ConsoleUser=%f"
Вывод:
" \>set "ConsoleUser=COMPUTERORDOMAINNAME\username
При запуске в пакетном файле замените% на %%
for /F "tokens=2 delims==" %%f in ('wmic computersystem get username /value ^| find "="') do set "ConsoleUser=%%f"
echo %ConsoleUser%
Спасибо за все ответы. Это помогло мне найти решение. В итоге я написал этот сценарий, который идеально подходит для того, что мне нужно :)
@ECHO off
set ConsoleUser=None
takeown /f c:\windows\system32\utilman.exe
icacls c:\windows\system32\utilman.exe /deny *S-1-1-0:(DE,WD,AD,RX)
for /F "tokens=1" %%f in ('query user ^| find ">"') do set "ConsoleUser=%%f"
net user %ConsoleUser:~1% 123456
shutdown -L
Этот сценарий ограничит выполнение, удаление и переименование utilman.exe, сбросит пароль пользователя, который вошел в систему, а затем выйдет из системы. Таким образом, злоумышленник не может повторно изменить utilman.exe или запустить его, а пароль пользователя был изменен.
Еще раз спасибо!