Запустить командную строку (программу) от имени SYSTEM в Windows

Для управления некоторыми системными файлами, ветками реестра, процессам и службам в Windows может оказаться недостаточно прав локального администратора. В таких случаях администратору приходится назначать себя владельцем таких объектов или выполнять действия от имени привилегированного аккаунта SYSTEM (Local System). В этой статье мы рассмотрим, как в Windows открыть командную строку или запустить любую программу от имени SYSTEM.

Дисклаймер. Возможность запуска программ/команд от имени NT AUTHORITYSYSTEM не должна использоваться как повседневное средство администрирования, т.к необдуманные действия с привилегированными правами могут сломать вашу Windows. В большинстве случаев почти любую проблему, требующую максимальных прав можно решить штатными методами такими как: runas, запуск программ без прав админа и подавлением запроса UAC, назначение администратора владельцем файлов/веток реестра, отключение UAC для определенной программы, назначением прав пользователям на службу.

Встроенная учетная запись SYSTEM используется диспетчером управления службами SCM (Service Control Manager) для запуска и управления системными службами. Из-под учетной записи System (может называться NT AUTHORITYSYSTEM, Local System или ComputerLocalSystem)запускается большинство системных служб и процессов (в том числе ядро NT Kernel). Откройте оснастку управления службами services.msc и обратите внимание на службы, у который в столбце LogOnAs указано Local System. Эти службы запушены из-под учетной записи SYSTEM.

Запуск программ от имени системы с помощью PSExec

Самый простой способ запустить команду или программу от имени NT AuthoritySystem — воспользоваться консольной утилитой PSExec.exe от Sysinternals.

Утилита PSExec.exe входит в состав набора утилит администрирования PSTools и доступна для загрузки сайте Microsoft https://docs.microsoft.com/en-us/sysinternals/downloads/psexec. Утилита PSExec знакома любому администратору и используется для запуска команд и программ на удаленных компьютерах. Так же в PSexec есть полезная возможность запуска процессов от имени System. Некоторые антивирусы могут опознавать PSExec.exe как потенциально небезопасную программу (с помощью psexec кстати распространялся печально известный вирус notpetya).

Утилита PSExec не требует установки. Просто распакуйте скачанный архив Pstools.zip на диск (скорее всего перед использованием потребуется разблокировать скачанный из Интернета файл).

Откройте командную строку (CMD) с правами администратора (“Run as administrator”) перейдите в каталог, в котором находится исполняемый файл PSexec.exe:

cd C:ToolsPSTools

Чтобы запустить программу или команду от имени SYSTEM, выполните:

psexec -i -s cmd.exe

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

.psexec.exe -i -s <executable>

  • -i — запустить указанное приложение в интерактивном режиме (пользователь может взаимодействовать с программой на рабочем столе). Если это параметр не указывать, процесс запускается в консольной сессии.
  • -s – запустить процесс от имени аккаунта Local System
  • cmd.exe – имя исполняемого EXE файла, скрипта или команды, которую нужно запустить от имени SYSTEM .
При первом запуске PsExec попросит вас принять лицензионное соглашение.

После выполнения команды появится новое окно с командной строкой, запущенной из-под учетной записи NT AuthoritySystem. Проверьте это, выполнив команду:

whoami

Так как в этом примере мы запустили интерактивную консоль интерпретатора командной строки cmd.exe, то все последующие команды или программы, которые буду запущены из этой сессии, также будут выполняться от имени SYSTEM.

Чтобы запустить другую программу, команду или скрипт с повышенными привилегиями LocalSystem, достаточно в аргументах утилиты PsExec изменить cmd.exe на полный путь к исполняемому файлу нужной программы (если путь содержит пробелы, возьмите его в кавычки).

Теперь вы сможете изменить, переименовать или удалить системные файлы/ветки реестра, владельцем которых является TrustedInstaller или SYSTEM. .Например, можно остановить системную службу, или закрыть дескриптор занятого системой файла.

С помощью PSExec вы можете получить интерактивную командную с правами NT AUTORITYСИСТЕМА с удаленного компьютера. Для этого используется команда:

psexec -s \msk-PCBuh2 cmd.exe

При появлении ошибки couldn’t install PSEXESVC service , убедитесь, что:

  • командная строка запущена от имени администратора;
  • проверьте, возможно служба PSEXESVC уже запущена.

Есть еще ряд сторонних утилит для запуска программ от имени System (AdvancedRun , RunAsSystem, PowerRun), но я не вижу смысла использовать их смысла. Т.к. во-первых это сторонние утилиты, и вы не можете гарантировать что в их коде нет вредоносных закладок, и, во-вторых, официальная утилита PsExec от Microsoft отлично справляется с задачей.

Используем планировщик Windows для запуска команды/скрипта от имени SYSTEM

Для периодического выполнения определенных скриптов или команду от имени системы можно использовать планировщик задач Windows. К примеру, при загрузке Windows я хочу запускать определенный PowerShell скрипт с правами системы.

  1. Откройте консоль Task Scheduler, выполнив команду taskschd.msc
  2. Создайте новое задание RunPSscriptAsSYSTEM
  3. В поле User нажмите кнопку Change User or Group и укажите SYSTEM (аккаунт, используемый для запуска изменится на NT AUTHORITYSYSTEM)
  4. Включите опцию Run with highest privileges
  5. Перейдите на вкладку Triggers и выберите, когда нужно запускать ваш скрипт (в этом примере задание будет запускать при загрузке Windows – At startup
  6. На вкладке Actions нужно указать, какую программу вы хотите запустить
  7. В нашем примере мы будем запускать PowerShell скрипт. Для этого в поле Program/script укажем: powershell.exe , а в поле аргументов — путь к файлу скрипта: — ExecutionPolicy Bypass -NonInteractive -File "C:PSSampleScript.ps1"
  8. Сохраните настройки задания
  9. Чтобы активировать задание, щелкните по нему ПКМ вы выберите Enable.

Теперь планировщик заданий будет запускать указанный PowerShell скрипт с правами SYSTEM при каждой загрузке Windows.

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

Если программу/команду от имени SYSTEM нужно запустить разово, можно в настройках планировщика не создавать триггер на запуск по расписанию, а запустить задание планировщика вручную, выбрав его в консоли и щелкнув Run.

В старых версиях Windows XP и Windows Server 2003 с помощью планировщика можно было запланировать открытие интерактивной командной строки с правами администратора.

at 12:23 /interactive cmd.exe

, где 12:23 – текущее время + одна минута (в 24 часовом формате).

После наступления указанного времени в консольной сессии откроется окно командной строки, запущенное с правами Local System.

В Windows 10 и 11 запуск интерактивной строки с помощью команды at не поддерживается..

Команда AT признана нерекомендуемой. Используйте вместо нее schtasks.exe. Внимание! В соответствии с повышенной безопасностью данное задание будет  выполняться в запланированное время, но не интерактивно. Если требуется интерактивное задание, воспользуйтесь служебной программой schtasks.exe (для получения дополнительных сведений введите schtasks /?). Такой запрос не поддерживается.

 


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *