Запуск командной строки/ программы от имени SYSTEM в Windows
26.08.2020
itpro
Windows 10, Windows Server 2012 R2, Windows Server 2016
комментариев 9
В Windows для выполнения некоторых действий недостаточно иметь права администратора. Например, вы не сможете заменить или удалить системные файлы, некоторые ветки реестра, остановить системные службы или выполнить другие потенциально небезопасные действия, которые могут нарушить стабильность системы. Системному администратору в таких случая приходится назначать себе владельцем таких объектов или выполнять действия от имени системы. В этой статье мы рассмотрим, как запустить программу или командную строку в Windows от имени привилегированного аккаунта SYSTEM (Local System).
Дисклаймер. Внесение изменение в образ Windows от имени системы – это нештатная операция. Имейте в виду, что некорректные действия с правами NT AUTHORITY\SYSTEM могут сломать вашу Windows. На практике запуск процессов от имени системы используется довольно редко, т.к. в большинстве случаев можно решить проблему более штатными методами: runas, запуск программ без прав админа и подавлением запроса UAC, назначение администратора владельцем файлов/веток реестра, отключение UAC для определенной программы, назначением прав пользователям на службу.
Встроенная учетная запись SYSTEM используется диспетчером управления службами SCM (Service Control Manager) для запуска и управления системными службами. Из-под учетной записи System (может называться NT AUTHORITY\SYSTEM, Local System или Computer\LocalSystem)запускается большинство системных служб и процессов (в том числе ядро NT Kernel). Откройте оснастку управления службами services.msc и обратите внимание на службы, у который в столбце LogOnAs указано Local System. Эти службы запушены из-под учетной записи SYSTEM.
Запуск командной строки от Local System в старых версиях Windows (до Vista)
В снятых с поддержки Windows XP и Windows Server 2003 была интересная возможность, позволяющая запустить программу или же интерактивную командную строку (cmd) с правами системы через планировщик. Достаточно войти с правами администратора, открыть командную строку и набрать в ней:
at 12:23 /interactive cmd.exe
, где 12:23 – текущее время + одна минута (в 24 часовом формате).
После наступления указанного времени перед вами открывается окно командной строки, запущенное с правами Local System. Если вы выполнили эту команду в терминальном (rdp) сессии Windows Server 2003/XP, имейте в виду, что командная строка с правами System отображается только в консольной сессии (как подключиться к rdp консоли).
В Windows 10 запуск интерактивной строки с помощью команды at не поддерживается. Вместо него рекомендуется использовать schtasks.exe .
Команда AT признана нерекомендуемой. Используйте вместо нее schtasks.exe. Внимание! В соответствии с повышенной безопасностью данное задание будет выполняться в запланированное время, но не интерактивно. Если требуется интерактивное задание, воспользуйтесь служебной программой schtasks.exe (для получения дополнительных сведений введите schtasks /?). Такой запрос не поддерживается.
Запуск программ от имени системы с помощью PSExec в Windows 10
Начиная с Windows 7 трюк с запуском интерактивной командной строки от имени системы через планировщик не работает. Для запуска команд от имени NT Authority\ System можно использовать утилиту PSExec.exe от Sysinternals.
Утилиту PSExec.exe можно скачать на сайте Microsoft https://docs.microsoft.com/en-us/sysinternals/downloads/psexec. Утилита PSExec знакома любому администратору и в первую очередь предназначена для удаленного управления Windows, однако в ней есть полезная возможность запуска процессов от имени System. Некоторые антивирусы могут опознавать PSExec.exe как потенциально небезопасную программу (с помощью psexec кстати распространялся печально известный вирус notpetya),
Утилита PSExec не требует установки. Откройте командную строку с правами администратора (“Run as administrator”) перейдите в каталог, в котором находится исполняемый файл PSexec.exe и наберите:
psexec -i -s cmd.exe
параметр -i запускает приложение в интерактивном режиме (пользователь может взаимодействовать с программой на рабочем столе, если это параметр не указывать, процесс запускается в консольной сесии), —s означает что командную строку нужно запустить из-под системы
При первом запуске PsExec попросит вас принять лицензионное соглашение.
После выполнения команды появится новое окно с командной строкой, запущенной из-под учетной записи NT Authority\System. Проверьте это, выполнив команду:
Таким образом вы запустить любую программу, команду или скрипт с правами системы. Достаточно в параметре утилиты PsExec изменить cmd.exe на имя исполняемого файла нужной программы.
В открывшемся окне командной строки вы можете выполнять любые команды в контексте SYSTEM. Теперь вы сможете изменить, переименовать или удалить системные файлы/ветки реестра, владельцем которых является TrustedInstaller или SYSTEM. Все программы или процессы, которые вы запустите их этого окна также будут запущены с повышенными привилегиями LocalSystem. Например, можно остановить системную службу, или закрыть дескриптор занятого системой файла.
С помощью PSExec вы можете получить интерактивную командную с правами NT AUTORITY\СИСТЕМА с удаленного компьютера. Для этого используется команда:
psexec -s \\msk-PCBuh2 cmd.exe
При появлении ошибки couldn’t install PSEXESVC service , убедитесь, что:
-
командная строка запущена от имени администратора;
Есть еще ряд сторонних утилит для запуска программ от имени System (AdvancedRun , RunAsSystem, PowerRun), но я не вижу смысла использовать их смысла. Т.к. во-первых это сторонние утилиты, и вы не можете гарантировать что в их коде нет вредоносных закладок, и во-вторых официальная утилита PsExec от Microsoft отлично справляется с задачей.
Предыдущая статья Следующая статья
Как запустить программу от имени системы
В операционных системах Windows прав локального администратора хватает для выполнения практически любых действий. Но иногда бывают ситуации, когда админских прав все же недостаточно.
Для примера откроем редактор реестра и попробуем в разделе HKEY_LOCAL_MACHINE\SECURITY создать подраздел. Как видите, у нас ничего не получилось, нет доступа.
Дело в том, что доступ к этим разделам имеет только система, для всех остальных пользователей они закрыты. И единственный способ попасть в них — это запустить редактор реестра от имени системы.
Учетная запись системы — это встроенная учетная запись SYSTEM, которую диспетчер управления службами (Service Control Manager, SCM) использует для управления службами. Эта учетная запись предоставляет максимально широкие привилегии в локальной системе и имеет доступ к большинству системных объектов. Соответственно любой процесс, выполняемый в контексте учетной записи SYSTEM, наследует все ее права и доступы.
Примечание. Насчет названия учетной записи есть некоторые разночтения. Так в зависимости от того, где она используется, ее могут называть SYSTEM, NT AUTHORITY\SYSTEM, LocalSystem или ComputerName\LocalSystem.
Для запуска от имени системы есть много различных способов, я расскажу о двух наиболее простых. Итак, способ первый.
PsExec
Утилита командной строки PsExec входит в состав пакета PsTools от Sysinternals. Изначально PsExec предназначена для удаленного управления, но ее можно использовать и для запуска процессов с повышенными привилегиями. Кстати, по этой причине некоторые антивирусы опознают PsExec как ″трояна″.
PsExec не требует установки, достаточно просто скопировать ее в локальную папку и запустить из консоли cmd или powershell. Для удобства использования можно поместить исполняемый файл в системный раздел (C:\Windows\system32). Для примера откроем новое окно командной строки вот такой командой:
psexec.exe -i -s cmd.exe
Ключ -s производит запуск от имени системы, а ключ -i открывает окно в интерактивном режиме. Теперь выполним в новом окне команду whoami и убедимся, что оно запущено от имени пользователя nt authority\system. Таким образом с помощью PsExec можно запустить любое приложение с правами системы.
С PsExec все просто и понятно, этот способ используется с незапамятных времен и до сих пор актуален. Но, исключительно ради разнообразия, рассмотрим еще один способ.
PowerRun
PowerRun — графическая утилита, специально предназначенная для запуска программ с повышенными правами (TrustedInstaller/Nt Authority/System). Установка ей не требуется, достаточно скопировать утилиту в локальную папку и запустить. При желании можно выбрать русскоязычный интерфейс, хотя на мой взгляд в нем нет необходимости. Интерфейс у PowerRun простой, интуитивно понятный, все основные действия вынесены в виде кнопок на центральную панель.
Для запуска приложений есть несколько вариантов запуска, на выбор. Для редактора реестра и командной строки, как для наиболее часто используемых приложений, специально выделены кнопки на панели управления. Для примера нажимаем на кнопку и консоль открывается от имени системы.
Если приложение будет запускаться регулярно, то для него лучше создать отдельную запись. В записи можно указать параметры запуска, такие как путь, ключи и команды, а также рабочую директорию. Окно запуска можно сделать скрытым, минимизировать или наоборот, максимально развернуть. Для управления записями в панели управления имеются три кнопки — создание, удаление и редактирование.
Для примера создадим запись для запуска командной строки. Окно должно открываться в нормальном режиме, в качестве рабочей директории задан профиль текущего пользователя (%userprofile%), после запуска выполняется команда whoami.
Запустить запись можно либо кнопкой, либо из контекстного меню, либо просто двойным кликом.
Дополнительно можно на базе созданной записи создать bat- или vbs-скрипт. Это позволит максимально упростить и ускорить процедуру запуска программы с системными правами.
Особо продвинутые пользователи могут запускать PowerRun напрямую из командной строки. Синтаксис и примеры команд можно посмотреть в справке, которая открывается командой PowerRun.exe с ключом /?.
Для примера запустим все ту же консоль и выполним в ней команду whoami:
PowerRun.exe /K whoami
И еще один интересный момент, о котором надо знать при работе с PowerRun. По умолчанию PowerRun умеет запускать программы с правами пользователей Nt Authority/System и TrustedInstaller. С первым более менее понятно, а вот о втором стоит рассказать чуть подробнее.
Начиная с Windows Vista в операционные системы Windows внедрена технология WRP (windows resource protection), предназначенная для защиты файлов и ключей реестра. WRP при помощи исполняемого модуля trustedinstaller.exe ограничивает доступ к критически важным системным ресурсам для всех пользователей, включая и администраторов. Правом доступа к этим ресурсам обладает только системный пользователь TrustedInstaller, который является их владельцем.
Так вот, PowerRun можно запускать как с правами TrustedInstaller, так и без них. Для переключения нужно открыть конфигурационный файл PowerRun.ini и изменить значение параметра TrustedInstaller. Значение 1 означает наличие прав TrustedInstaller, а 0 — их отсутствие. Также из командной строки для запуска только с правами системы можно указать ключ /SYS.
Как видите, запустить любую программу с правами системы не просто, а очень просто. Но не стоит лезть во внутренности операционной системы без крайней необходимости, поскольку в результате подобного вмешательства есть шанс ее поломать. Ну и конечно, желательно делать резервные копии. На всякий случай
Как вызвать командную строку от имени системы (Local System)
Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов России Pyatilistnik.org. В прошлый раз мы с вами разобрали способы выключения компьютера средствами командной строки, в сегодняшней публикации мы рассмотрим задачу, как вызвать cmd от имени системной учетной записи Local System, рассмотрим варианты применения данной задачи. Думаю, что многим коллегам данная статья будет весьма познавательна и каждый найдет применение данному лайвхаку.
Какого назначение системной учетной записи Local System
Учетная запись Ststem не отображается среди других учетных записей в диспетчере пользователей, но зато вы ее легко можете увидеть на вкладке «Безопасность» у любого системного диска, файла. куста реестра или папки. По умолчанию для учетной записи «Система (System)» предоставлены права полного доступа.
- Ключ реестра HKEY_CURRENT_USER связан с пользователем по умолчанию, а не текущим пользователем. Чтобы обратиться к профилю другого пользователя, имитируйте этого пользователя, а затем обратитесь к HKEY_CURRENT_USER.
- Служба может открыть ключ реестра HKEY_LOCAL_MACHINE\SECURITY.
- Служба представляет мандат компьютера для удаленного сервера. Если служба открывает командное окно (на экране дисплея) и запускает командный файл, пользователь должен нажать CTRL+C, чтобы закончить работу командного файла и получить доступ к окну команды с привилегиями LocalSystem.
Привилегии LocalSystem
- SE_ASSIGNPRIMARYTOKEN_NAME
- SE_AUDIT_NAME
- SE_BACKUP_NAME
- SE_CHANGE_NOTIFY_NAME
- SE_CREATE_PAGEFILE_NAME
- SE_CREATE_PERMANENT_NAME
- SE_CREATE_TOKEN_NAME
- SE_DEBUG_NAME
- SE_INC_BASE_PRIORITY_NAME
- SE_INCREASE_QUOTA_NAME
- SE_LOAD_DRIVER_NAME
- SE_LOCK_MEMORY_NAME
- SE_PROF_SINGLE_PROCESS_NAME
- SE_RESTORE_NAME
- SE_SECURITY_NAME
- SE_SHUTDOWN_NAME
- SE_SYSTEM_ENVIRONMENT_NAME
- SE_SYSTEM_PROFILE_NAME
- SE_SYSTEMTIME_NAME
- SE_TAKE_OWNERSHIP_NAME
- SE_TCB_NAME
- SE_UNDOCK_NAME
Сценарии вызова командной строки из под System
Давайте приведу интересную задачку по нашей теме. Предположим у вас есть доменная среда Active Directory. Вы с помощью инструмента групповой политики или SCCM развернули специализированное ПО, под названием StaffCop, или что-то другое. В момент развертывания или последующей настройки вы задали так, что пользователь даже при наличии прав локального администратора в своей системе не может останавливать службу и менять ее тип запуска, вопрос может ли локальный администратор это поправить и выключить службу?
Способы вызвать командную строку от имени системы
https://download.sysinternals.com/files/PSTools.zip
Далее вам необходимо распаковать zip архив, в результате чего будет вот такой список утилит.
cd путь до вашей папки с утилитой PsExec.exe
Мой пример: cd C:\Дистрибутивы\PSTools
Командой dir я проверил, что это та папка и я вижу нужные мне утилиты PsExec.exe или PsExec64.exe.
Последним шагом мы текущее окно командной строки из под текущего пользователя перезапустим от имени Local System. Пишем:
PsExec64.exe -i -s cmd.exe или PsExec -i -s cmd.exe
В итоге я вижу, что у меня открылось новое окно командной строки и оно уже работает в контексте «C:\Windows\system32>«, это и означает учетную запись Local System (Системная учетная запись)
Теперь давайте из под нее попробуем остановить нашу службу StaffCop Scheduler. Для этого есть ряд команд:
net stop «StaffCop Scheduler»
sc stop Scheduler
Далее вам необходимо изменить тип запуска и поменять с автоматического на отключена. Для этого пишем команду:
sc config Scheduler start= disabled
Как видим все успешно отработало. Если посмотреть оснастку «Службы», то видим вот такую картину.
cmd.exe && cd C:\Дистрибутивы\PSTools\ && psexec -i -s cmd.exe
Щелкаем по файлу правым кликом и выбираем пункт «Запуск от имени администратора». В результате чего у вас сразу будет запущено окно cmd с правами учетной записи SYSTEM. Проверить, это можно введя команду whoami. Ответ NT AUTORITY\СИСТЕМА.
Если нужно запустить удаленно командную строку от имени NT AUTORITY\СИСТЕМА, то выполните такую конструкцию
psexec -s \\имя компьютера cmd.exe
На этом у меня все, с вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org.
Популярные Похожие записи:
- Как удалить sIDHistory у объектов Active Directory
Как дать права на Deleted Objects в Active Directory
- Как массово поменять пароль локального администратора в домене
Не удалось назначить SPN учетной записи, ошибка 0x21c7/8647
Ошибка The number of connections to this computer is limited
База данных диспетчера учетных записей на сервере не содержит записи
Мар 11, 2022 17:49 Автор — Сёмин Иван
5 Responses to Как вызвать командную строку от имени системы (Local System)
выдаёт Error establishing communication with PsExec service on A1-.
╤хЄхтр яряър эхфюёЄєяэр. ╟р шэЇюЁьрЎшхщ ю ЁрчЁх°хэшш яЁюсыхь т ёхЄш юсЁрЄшЄхё№
ъ ёяЁртюўэющ ёшёЄхьх Windows. почему?
вин7.
У меня такая же ошибка. Как исправить?
Иван Семин :
Ошибка из-за того, что сервис не запущен на той стороне либо вы запускаете команду не от имени администратора, на каком именно этапе у вас возникает ошибка? Так же если у вас в пути на русском языке есть пробелы, то возьмите путь в двойные кавычки с обеих сторон
Роман Рыбин :
Иван, доводилось ли вам сталкиваться с ситуацией когда whoami возвращает например karavan\admin, а set в числе прочего возвращает USERNAME=SYSTEM и USERPROFILE=C:\Windows\system32\config\systemprofile.
у меня не меняется статус службы на автоматический. Некорректный параметр failed 87. пишу
sc config имя_службы start= auto
Добавить комментарий
Поиск по сайту
Подписка на youtube канал
Выберите рубрику
Active directory, GPO, CA Android Apple ASUS, Sony VAIO CentOS Cisco, Mikrotik Debian, FreeBSD DNS Exchange, Power Shell HP/3Com Hyper-V IBM IIS и FTP, web и seo Juniper Lenovo, intel, EMC, Dell Microsoft Office Microsoft SQL server, Oracle Microsoft System Center NetApp Network, Телефония News Raid, LSI, Adaptec Supermicro Ubuntu Utilities Veeam Backup & Replication, Windows Server Backup Vmware, VirtualBox Windows 7 Windows 8/8.1 Windows 10, Windows 11 Windows 2008/2008 R2 Windows 2012/2012 R2 Windows Server 2016, Windows Server 2019, Windows Server 2022 WordPress, 1C Битрикс Безопасность, Kali СХД Сертификация перед сном
Подписка не Telegram
Последние записи
- Ошибка System Chassis 1 Chassis intro на ESXI хосте
- Конвертирование виртуального диска в raw, qcow2, qed, vdi, vmdk, vhd
- Редиректы в Яндекс вебмастере
- Дубли заголовков и описаний в Яндекс вебмастере
- Как сделать 301 редирект на McHost
Запускаем задачу от имени SYSTEM
По некоторым причинам может нам понадобиться запуск программ от имени SYSTEM. Разумеется, «Запуск от имени» нам не подойдёт.
Надо ли для этого писать целый драйвер? Конечно нет! Способов запустить задачу от имени SYSTEM есть множество. Мы пойдём по лёгкому пути.
Достаточно воспользоваться штатным планировщиком, запускающим приложения с привилегиями SYSTEM.
Запустите командную строку. Наберите в ней
at *время* /interactive *программа*
Где *время* — укажите время на минуту-другую позже текущего времени;
Где *программа* укажите путь к исполняемому файлу.
Параметр /interactive означает, что будет отображено окно программы CMD.EXE (в противном случае процесс будет в памяти, но на экран ничего выводится не будет).
Подробнее об этой команде можно узнать из встроеной справки:
at /?
или
help at
Терпеливо ждём минуту-другую, и вот открылась программа. От имени SYSTEM.
А что делать если консоли недостаточно? Тогда можно сделать еще одну хитрость и получить полный графический интерфейс, но с правами все той же Системы. Для этого необходимо написать следующий bat-файл (назовем его SysStart.bat):
taskkill /im explorer.exe
explorer.exe
Остается только запустить его через планировик, например:
at 15:41 /interactive “d:\myutils\sysstart.bat”
Важно: работа с планировщиком по умолчанию доступна пользователю с правами Администратора, и НЕ ДОСТУПНА пользователю с ограничеными правами.