Назад | Перейти на главную страницу

Запустите команду PowerShell как NT AUTHORITY \ SYSTEM

Есть ли способ запустить команду PowerShell как NT AUTHORITY\SYSTEM из скрипта?
Я знаю, что могу использовать psexec и получите приглашение PowerShell, работающее как NT AUTHORITY\SYSTEM, но мне было интересно, есть ли способ сделать это из «обычного» сценария.

Ты можешь использовать Invoke-TokenManipulation.ps1 сценарий:

Для этого сценария требуются права администратора. Он может перечислять доступные токены входа и использовать их для создания новых процессов. Это позволяет вам использовать учетные данные других пользователей по сети, создавая процесс с их токенами входа. Это будет работать даже с защитой Windows 8.1 LSASS.

Скопируйте и вставьте его или сохраните вместе со своим скриптом как Invoke-TokenManipulation.ps1 и используйте точечный источник для загрузки:

$ScriptDir = Split-Path $script:MyInvocation.MyCommand.Path
. (Join-Path -Path $ScriptDir -ChildPath 'Invoke-TokenManipulation.ps1')

И тогда вы можете использовать Invoke-TokenManipulation функция.

Пример:

# This command fails on my machine, even with admin rights
Get-ChildItem C:\Windows\CSC

# Makes the current PowerShell thread impersonate SYSTEM.
Invoke-TokenManipulation -ImpersonateUser -Username "nt authority\system"

# Now we can get contents of this folder
Get-ChildItem C:\Windows\CSC

# Stop impersonating an alternate users Token
Invoke-TokenManipulation -RevToSelf

# Check again
Get-ChildItem C:\Windows\CSC

https://github.com/mkellerman/Invoke-CommandAs

Сделал функцию Invoke-Command как SYSTEM или предоставил учетные данные для локального / удаленного компьютера. Возвращает объекты PSObjects, обрабатывает прерывания сети и решает любые проблемы с двойным прыжком.

Попробуйте, дайте мне знать, решит ли это ваши проблемы.