Запуск regedit.exe от имени SYSTEM

Недавно в полной мере на себе ощутил последствия нарушения одного из правил администратора — «никому не доверяй!». Один из допущенных к администрированию сервера пользователей изменил права на ветку реестра HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersion , оставив на неё для администраторов сервера права только «чтение». Нам повезло, что сервер после данной «модификации» реестра успешно загрузился.

Хорошо, что данный пользователь смог запомнить что именно и каким образом он изменил (разрешения аккаунта SYSTEM (система) не трогались, остались – «полный доступ»). Пришлось немного понервничать, чтобы вернуть права на указанную ветку реестра обратно. Для этой цели понадобилась утилита PsExec v2.11, которую написал Марк Руссинович (Mark Russinovich). Она входит в комплект программ PsTools, о котором вы можете почитать на сайте Microsoft.

Скачать комплект программ PsTools вы можете по ссылке:

Извлеките из архива файл PsExec.exe необходимой разрядности и запустите его следующим образом:

где ключи означают:

  • -i — запуск указанной программы в интерактивном режиме;
  • -d — не ожидать окончания процесса запущенной программы;
  • -s — запуск указанной программы от имени аккаунта SYSTEM (система).

В диспетчере задач мы видим, что regedit запущен от имени аккаунта система :

Мне осталось вернуть разрешения администраторам «полный доступ» и перезагрузить сервер…

  • Currently 4.00/5
  • 1
  • 2
  • 3
  • 4
  • 5

Rating: 4.0/5(2 votes cast)

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

Способов добиться этого существует множество, давайте рассмотрим некоторые штатные возможности операционной системы Windows. Проще всего, если требуется запустить программу от имени администратора, достаточно щелкнуть по запускаемому файлу или ярлыку правой кнопкой мыши и выбрать пункт «Запуск от имени администратора». Ввести пароль и нажать кнопку «OK», программа запуститься от имени администратора.

Чтобы запустить программу от имени другого пользователя системы, нужно с нажатой клавишей Shift на клавиатуре щелкнуть правой кнопкой мыши на нужном файле и выбрать в контекстном меню пункт «Запуск от имени другого пользователя», ввести его логин и пароль.

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

Бывает, программа запускается только от имени администратора, а вы пользуетесь обычной учетной записью, тогда можно сократить запуск программы на одно действие, достаточно зайти в свойства ярлыка и на вкладке «Совместимость» отметить галочку «Выполнять эту программу от имени администратора». Теперь двойной клик левой кнопкой мыши по этому ярлыку сразу будет требовать ввода пароля администратора.

Команда Runas для запуска программ от имени другого пользователя

Для часто запускаемых программ от имени другого пользователя, неудобно каждый раз нажимать Shift и щелкать правой кнопкой мыши, проще воспользоваться специальной встроенной командой Runas. Для этого создадим ярлык, который будет запускать нужную программу от имени другого пользователя компьютера. Как создать ярлык можно прочитать здесь. В поле «Объект» напишем следующую команду:

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

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

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

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

Все хорошо работает, но вводить постоянно пароль быстро надоедает. На этот случай, команда Runas имеет специальный ключ /savecred. В случае его использования, пароль вводится только один раз при первом запуске, он сохраняется в недрах Windows и при последующих запусках подставляется автоматически. Вся команда выглядит следующим образом:

Внимание! Ключ /savecred не работает в Домашних версиях Windows.

Кажется вот оно счастье, однако есть определенные неудобства. Например, какая-либо программа отказывается запускаться в простой учетной записи. Вы запускаете ее вышеописанным способом, все замечательно. Теперь та же ситуация чуть под другим углом. Вы администратор компьютера, а например у вашего ребенка простая учетная запись и игра отказывается запускать под ним. Давать ему пароль администратора вы не намерены, поэтому вы создаете ярлык, прописываете ключ /savecred, вводите пароль первый раз и довольный потираете руки.

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

Так же он получит доступ ко всем файлам на жестком диске компьютера, даже если доступ к ним запрещен его учетной записи, включая папки «Мои документы» других пользователей компьютера. Согласитесь, довольно серьезная дыра в безопасности компьютера при использовании команды Runas с ключом /savecred.

У команды Runas есть ограничения на запуск некоторых системных программ от имени администратора компьютера, в том числе проводника. В Windows XP это обходится использованием ключа /separate:
runas /savecred /user:Андрей "explorer.exe /separate"
В более поздних версия операционной системы Windows он не работает, но можно воспользоваться любым другим файловым менеджером и получить доступ к файлам от имени админа.

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

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

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

Во-вторых, сделать запуск с помощью пакетного (batch) файла. Открываете текстовый редактор, например блокнот и пишете там строчку, которую писали в поле «Объект» ярлыка. Сохраняете его с расширение .bat. Теперь при запуске этого пакетного файла, точно так же выполнится команда, написанная в нем. Однако этого не достаточно, так как его содержимое можно посмотреть и изменить в простом текстовом редакторе.

Если в имени пользователя или пути к файлу есть русские буквы, то его нужно сохранить в кодировке DOS 866 или в начало bat файла на отдельной строке необходимо вставить chcp 1251.

В-третьих, сделать bat файл не читаемым, чтобы затруднить пользователю анализ, каким образом запускается программа. Для этого сконвертируем наш bat файл в привычный exe. Можно воспользоваться одной из программ конвертеров, например бесплатной программой «Bat To Exe Converter», которую можно скачать здесь. Запускаете программу и в поле «Batch file» указываете ваш bat файл. В поле «Save as» куда и под каким именем сохранить результат. Дополнительно для большей конспирации можно на вкладке «Versioninformations» в поле «Icon file» указать значок для нашего будущего exe-шника в формате ico. Остальные параметры можно не трогать. Когда все будет готово, нажимаете кнопку «Compile» и получаете свой exe файл.

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

В-четвертых, последний штрих, выдающий в нем командный файл, это на секунду появляющееся черное окно на рабочем столе. Избавиться от него совсем простым способом не получится, но можно достаточно просто свести его заметность к минимуму. Достаточно в свойствах ярлыка на вкладке «Ярлык» выбрать пункт «Свернутое в значок», теперь только на панели задач будет появляться на мгновение окно командной строки.

Все, теперь если человек от которого вы хотите скрыть админский пароль является чайником или обычным среднестатистическим пользователем можете спать спокойно. Конечно, грамотный человек сможет узнать содержимое созданного нами exe-шника, но по большому счету это не требуется. Достаточно догадаться, что используется команда runas и просто создать свой ярлык для запуска нужной программы так что, несмотря на все ухищрения это поможет только от начинающего пользователя.

Как удалить сохраненный пароль в команде Runas

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

Чтобы удалить сохраненный пароль, выполните «Пуск» ⇒ «Панель управления» ⇒ «Учетные записи пользователей и семейная безопасность» ⇒ «Диспетчер учетных данных».

В разделе «Учетные данные Windows» (интерактивный вход в систему) удаляете не нужные больше записи из хранилища.

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

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

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

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

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

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

PsExec

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

PsExec не требует установки, достаточно просто скопировать ее в локальную папку и запустить из консоли cmd или powershell. Для удобства использования можно поместить исполняемый файл в системный раздел (C:Windowssystem32). Для примера откроем новое окно командной строки вот такой командой:

psexec.exe -i -s cmd.exe

Ключ -s производит запуск от имени системы, а ключ -i открывает окно в интерактивном режиме. Теперь выполним в новом окне команду whoami и убедимся, что оно запущено от имени пользователя nt authoritysystem. Таким образом с помощью 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.

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