Как можно запустить приложение от имени TrustedInstaller или SYSTEM, используя только командную строку и/или PowerShell, но без внешних программ или команд?
решение1
Насколько мне известно, простого способа войти в систему какСИСТЕМАили какДоверенный установщикбез использования сторонних инструментов, таких как собственные инструменты Microsoft (на самом деле Sysinternals Руссиновича)PsExec, Nirsoft'sNirCmdили СордумаPowerRun.
Однако использовать эти инструменты легко.появлятьсябыть встроенным в графический интерфейс Windows, т.е. как элемент контекстного меню для исполняемых файлов, сИзменение реестра, добавляющее определенный инструмент в контекстное меню.
[Даже с этими привилегиями иногда может быть невозможно выполнить простые задачи, такие как использованиеRegeditдля изменения ключа, принадлежащегоДоверенный установщик, без принятия на себя ответственности.]
решение2
Отhttps://www.tiraniddo.dev/2017/08/the-art-of-becoming-trustedinstaller.html, вот шаги, которые я пробую на своей машине
- Откройте PowerShell (как администратор)
- PS> Установить-Модуль -Имя NtObjectManager
- PS> Пуск-Сервис -Имя TrustedInstaller
- PS> $parent = Get-NtProcess -ServiceName TrustedInstaller
- PS> $proc = New-Win32Process cmd.exe -CreationFlags NewConsole -ParentProcess $parent
Примечания:
Install-Module
для импорта модуля достаточно запустить его только один раз.https://www.powershellgallery.com/packages/NtObjectManager/
После шага 5 откроется новая командная строка, в ней мы можем проверить, запустив whoami
ее, и она покажет:nt authority\system
решение3
Кстати, вот скрипт .ps1, сделанный изКоманды @hasto:
$ConfirmPreference = "None"
$isAdmin = ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
if (-not $isAdmin) {
Start-Process powershell -ArgumentList "-NoProfile -File `"$PSCommandPath`"" -Verb RunAs
exit
}
Set-ExecutionPolicy -ExecutionPolicy bypass
Install-Module -Name NtObjectManager
Start-Service -Name TrustedInstaller
$parent = Get-NtProcess -ServiceName TrustedInstaller
$proc = New-Win32Process cmd.exe -CreationFlags NewConsole -ParentProcess $parent
$ConfirmPreference = "High"