Windows c правами system

Windows c правами system

Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов России Pyatilistnik.org. В прошлый раз мы с вами разобрали способы выключения компьютера средствами командной строки, в сегодняшней публикации мы рассмотрим задачу, как вызвать cmd от имени системной учетной записи Local System, рассмотрим варианты применения данной задачи. Думаю, что многим коллегам данная статья будет весьма познавательна и каждый найдет применение данному лайвхаку.

Какого назначение системной учетной записи Local System

Системная учетная запись (Local System) – это специальная встроенная, локальная учетная запись, созданная Windows в момент установки, для использования в системе и запуска из под нее различных служб Windows. В Windows огромное количество служб и процессов для своего запуска и работы используют именно системную запись. Посмотреть это можно в оснастке «Службы», которую можно открыть из окна «Выполнить» введя в нем services.msc.

Учетная запись Ststem не отображается среди других учетных записей в диспетчере пользователей, но зато вы ее легко можете увидеть на вкладке «Безопасность» у любого системного диска, файла. куста реестра или папки. По умолчанию для учетной записи «Система (System)» предоставлены права полного доступа.

Служба, которая запускается в контексте учетной записи LocalSystem, наследует контекст обеспечения безопасности Диспетчера управления службами (SCM). Пользовательский идентификатор безопасности (SID) создается из значения SECURITY_LOCAL_SYSTEM_RID. Учетная запись не связывается с учетной записью любого пользователя, который начал работу. Она имеет несколько значений:

  • Ключ реестра HKEY_CURRENT_USER связан с пользователем по умолчанию, а не текущим пользователем. Чтобы обратиться к профилю другого пользователя, имитируйте этого пользователя, а затем обратитесь к HKEY_CURRENT_USER.
  • Служба может открыть ключ реестра HKEY_LOCAL_MACHINE\SECURITY.
  • Служба представляет мандат компьютера для удаленного сервера. Если служба открывает командное окно (на экране дисплея) и запускает командный файл, пользователь должен нажать CTRL+C, чтобы закончить работу командного файла и получить доступ к окну команды с привилегиями LocalSystem.

Привилегии LocalSystem

  1. SE_ASSIGNPRIMARYTOKEN_NAME
  2. SE_AUDIT_NAME
  3. SE_BACKUP_NAME
  4. SE_CHANGE_NOTIFY_NAME
  5. SE_CREATE_PAGEFILE_NAME
  6. SE_CREATE_PERMANENT_NAME
  7. SE_CREATE_TOKEN_NAME
  8. SE_DEBUG_NAME
  9. SE_INC_BASE_PRIORITY_NAME
  10. SE_INCREASE_QUOTA_NAME
  11. SE_LOAD_DRIVER_NAME
  12. SE_LOCK_MEMORY_NAME
  13. SE_PROF_SINGLE_PROCESS_NAME
  14. SE_RESTORE_NAME
  15. SE_SECURITY_NAME
  16. SE_SHUTDOWN_NAME
  17. SE_SYSTEM_ENVIRONMENT_NAME
  18. SE_SYSTEM_PROFILE_NAME
  19. SE_SYSTEMTIME_NAME
  20. SE_TAKE_OWNERSHIP_NAME
  21. SE_TCB_NAME
  22. SE_UNDOCK_NAME

Сценарии вызова командной строки из под System

Давайте приведу интересную задачку по нашей теме. Предположим у вас есть доменная среда Active Directory. Вы с помощью инструмента групповой политики или SCCM развернули специализированное ПО, под названием StaffCop, или что-то другое. В момент развертывания или последующей настройки вы задали так, что пользователь даже при наличии прав локального администратора в своей системе не может останавливать службу и менять ее тип запуска, вопрос может ли локальный администратор это поправить и выключить службу?

Способы вызвать командную строку от имени системы

Я очень давно занимаюсь системным администрированием и уяснил давно принцип, если у вас есть права локального администратора, то вы можете все. Обойти любые ограничения и политики. Напоминаю. что я для тестирования развернул агента StaffCop, это такая программа для слежки, которую используют всякие шарашкины конторы. Агент по умолчанию запрещает выключение службы и изменение ее типа. Выглядит, это вот таким образом. Служба работает, имеет имя StaffCop Scheduler, но вот сделать с ней ничего не получается, все не активно.

Для того, чтобы вызвать cmd от имени системы, вам необходимо скачать замечательный набор утилит PSTools, а конкретно нам будет нужна утилита PsExec.exe или PsExec64.exe. Если вы мой постоянный читатель, то вы помните, что я их использовал, чтобы удаленно включить RDP доступ на сервере. Скачать сборник PSTools можно с официального сайта по ссылке ниже, или же у меня с сайта.

Читайте также:  Температура процессора ноутбука windows 10

Далее вам необходимо распаковать zip архив, в результате чего будет вот такой список утилит.

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

Мой пример: cd C:\Дистрибутивы\PSTools

Командой dir я проверил, что это та папка и я вижу нужные мне утилиты PsExec.exe или PsExec64.exe.

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

В итоге я вижу, что у меня открылось новое окно командной строки и оно уже работает в контексте «C:\Windows\system32>«, это и означает учетную запись Local System (Системная учетная запись)

Теперь давайте из под нее попробуем остановить нашу службу StaffCop Scheduler. Для этого есть ряд команд:

Далее вам необходимо изменить тип запуска и поменять с автоматического на отключена. Для этого пишем команду:

Как видим все успешно отработало. Если посмотреть оснастку «Службы», то видим вот такую картину.

Так, что имея права локального администратора и утилиту PsExec.exe, можно делать что угодно. Надеюсь, что вы теперь будите чаще вызывать окно командной строки от имени учетной записи системы. Давайте с вами напишем небольшой батник, который будет из ярлыка вызывать cmd от имени Local System. Создадим тестовый файл, поменяем ему сразу расширение с txt на cmd и откроем его текстовым редактором. Пропишем код:

Щелкаем по файлу правым кликом и выбираем пункт «Запуск от имени администратора». В результате чего у вас сразу будет запущено окно cmd с правами учетной записи SYSTEM. Проверить, это можно введя команду whoami. Ответ NT AUTORITY\СИСТЕМА.

Если нужно запустить удаленно командную строку от имени NT AUTORITY\СИСТЕМА, то выполните такую конструкцию

NSudo — простой портативный инструмент, позволяющий запускать процессы с правами System или TrustedInstaller

Не секрет, что далеко не все операции с реестром, конфигурационными и исполняемыми файлами доступны пользователю, работающему даже с администраторскими привилегиями. Если владельцем объекта являются TrustedInstaller или System , то они попросту не позволят вам изменить файл или настройку, поскольку обладают еще более высокими привилегиями. Конечно, вы можете загрузиться с LiveCD и сделать всё, что вам нужно.

Но есть способ попроще — выполнить нужные вам действия от имени этих «высокопоставленных» служб.

Для этих целей разработчиком Kenji Mouri была создана NSudo — портативная утилита, позволяющая делегировать права служб TrustedInstaller и System обычному администратору.

Загрузить этот инструмент можно со страницы проекта github.com/M2Team/NSudo/releases.

Распаковав архив NSudo_V_All_Components , вы найдете в нём несколько каталогов, среди которых вам нужен NSudo Launcher . Зайдите в него и запустите от имени администратора командный файл nsudo.bat.

На миг на экране появится окно командной строки, а затем откроется небольшое окошко, в котором вам будет предложено выбрать службу, от имени которой вы станете совершать действия и файл, который следует открыть.

По умолчанию делегируются права TrustedInstaller , но вы можете выбрать и System , если оно того требует. А еще рекомендуем установить галку «Enable All Privileges», чтобы уж наверняка получить все необходимые привилегии. В поле «Open» указываем путь к файлу или быструю команду запуска и жмем «Run». Запускается выбранная программа, но с какими правами?

С наивысшими, так как мы предоставили ей права Системы. То, что процесс программы действительно работает от имени Системы, определить нетрудно: откройте Диспетчер задач, переключитесь на вкладку «Подробности» и посмотрите, кто является хозяином процесса.

А еще NSudo поддерживает консольный режим, в коем доступно на порядок больше функций, которые могут понадобиться опытным пользователям.

Как получить права администратора в Windows.

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

Читайте также:  Windows globalization что это

Если вы все таки решили получить для своей учетной записи права администратора (причины могут быть самые разные), то давайте рассмотрим 5 способов как это сделать.

1. Самый простой способ

Открываем Панель управления → Учетные записи пользователей → Изменение типа своей учетной записи.

В следующем окне помечаем пункт «Администратор» и нажимаем «Изменение типа учетной записи».

2. С помощью командной строки

Открываем командную строку от имени администратора (например, с зажатой клавишей Shift нажимаем правую кнопку мыши на свободном месте рабочего стола, в контекстном меню выбираем «Открыть командную строку»). В командной строке вводим net user и нажимаем Enter. Откроется список учетных записей пользователей и системных учетных записей. Запоминаем точное название учетной записи, которой хотим предоставить права администратора. Вводим команду net localgroup Администраторы имя_пользователя /add и нажимаем клавишу Enter.

Затем вводим net localgroup Пользователи Имя_пользователя /delete , где вместо «Имя_пользователя» вводим название учетной записи, нажимаем Enter. Если имя пользователя состоит из нескольких слов, необходимо заключить его в кавычки.

Можно попробовать ввести такую команду: net user Администратор /active:yes .

3. С помощью утилиты «Локальные пользователи и группы»

Открываем диалоговое окно «Выполнить» (Win + R), вводим команду lusrmgr.msc и нажимаем «ОК». Открываем папку «Пользователи», дважды кликаем по учетной записи, для которой хотим получить права администратора.

В открывшемся окне на вкладке «Членство в группах» нажимаем «Дополнительно».

В следующем окне в поле имен выбираемых объектов пишем Администраторы и нажимаем «ОК».

В предыдущем окне, в списке групп, удаляем лишние, чтобы осталась только группа «Администраторы».

4. С помощью редактора реестра

Открываем редактор реестра (Win + R → regedit → «ОК»). Открываем ветку HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ Windows\ CurrentVersion\ Policies\ System . Выделив раздел System, справа находим следующие параметры и задаем им такие значения:

«FilterAdministratorToken»=dword:00000001 «EnableLUA»=dword:00000001 «ConsentPromptBehaviorAdmin»=dword:00000000

5. С помощью локальных групповых политик

Открываем «Редактор локальных групповых политик» (Win + R → gpedit.msc → «ОК»). Открываем ветку: Конфигурация компьютера → Конфигурация Windows → Параметры безопасности → Локальные политики → Параметры безопасности . В правой части окна находим параметр « Учетные записи: Состояние учетной записи Администратор ».

Двойным щелчком левой кнопки мыши открываем этот параметр, задаем значение «Включен», нажимаем «Применить» и «ОК».

Как запустить программу от имени системы

В операционных системах Windows прав локального администратора хватает для выполнения практически любых действий. Но иногда бывают ситуации, когда админских прав все же недостаточно.

Для примера откроем редактор реестра и попробуем в разделе HKEY_LOCAL_MACHINE\SECURITY создать подраздел. Как видите, у нас ничего не получилось, нет доступа.

Дело в том, что доступ к этим разделам имеет только система, для всех остальных пользователей они закрыты. И единственный способ попасть в них — это запустить редактор реестра от имени системы.

Учетная запись системы — это встроенная учетная запись SYSTEM, которую диспетчер управления службами (Service Control Manager, SCM) использует для управления службами. Эта учетная запись предоставляет максимально широкие привилегии в локальной системе и имеет доступ к большинству системных объектов. Соответственно любой процесс, выполняемый в контексте учетной записи SYSTEM, наследует все ее права и доступы.

Примечание. Насчет названия учетной записи есть некоторые разночтения. Так в зависимости от того, где она используется, ее могут называть SYSTEM, NT AUTHORITY\SYSTEM, LocalSystem или ComputerName\LocalSystem.

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

PsExec

Утилита командной строки PsExec входит в состав пакета PsTools от Sysinternals. Изначально PsExec предназначена для удаленного управления, но ее можно использовать и для запуска процессов с повышенными привилегиями. Кстати, по этой причине некоторые антивирусы опознают PsExec как ″трояна″.

Читайте также:  Linux policy based routing

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.

Как видите, запустить любую программу с правами системы не просто, а очень просто. Но не стоит лезть во внутренности операционной системы без крайней необходимости, поскольку в результате подобного вмешательства есть шанс ее поломать. Ну и конечно, желательно делать резервные копии. На всякий случай 🙂

Оцените статью