Как запустить CMD.exe под учетной записью локальной системы?

В настоящее время я запускаю Vista, и я хотел бы вручную выполнить те же операции, что и моя служба Windows. Поскольку служба Windows работает под учетной записью "Локальная система", я хотел бы подражать этому же поведению. В принципе, я хотел бы запустить CMD.EXE под учетной записью локальной системы.

Я нашел информацию в Интернете, в которой предлагается использовать CMD.exe, используя команду ATL DOS Task Scheduler, но я получил предупреждение Vista о том, что "из-за улучшений безопасности эта задача будет выполняться в то же время, но не в интерактивном режиме". Вот пример команды:

AT 12:00 /interactive cmd.exe

Другое решение предложило создать вторичную службу Windows через Service Control (sc.exe), которая просто запускает CMD.exe.

C:\sc create RunCMDAsLSA binpath= "cmd" type=own type=interact
C:\sc start RunCMDAsLSA

В этом случае служба не запускается и выводит на экран следующее сообщение об ошибке:

FAILED 1053: The service did not respond to the start or control request in a timely fashion.

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

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

До сих пор каждая из моих попыток закончилась неудачей. Любые предложения?

Ответ 1

Хотя я лично не тестировался, у меня есть все основания полагать, что вышеупомянутое решение AT COMMAND будет работать для XP, 2000 и Server 2003. На мой и Bryant-тестирование мы определили, что тот же подход не работа с Vista или Windows Server 2008 - скорее всего, из-за повышенной безопасности и/-ключительного коммутатора, устаревшего.

Однако я столкнулся с этой статьей которая демонстрирует использование PSTools из SysInternals (который был приобретен Microsoft в июле 2006 года). Я запустил командную строку через следующие и внезапно я работал под учетной записью Local Admin, например magic:

psexec -i -s cmd.exe

PSTools работает хорошо. Это легкий, хорошо документированный набор инструментов, который обеспечивает соответствующее решение моей проблемы.

Большое спасибо тем, кто предложил помощь.

Ответ 2

  • Загрузить psexec.exe из Sysinternals.
  • Поместите его в свой диск C: \.
  • Войдите в систему как стандартный или администратор и используйте следующую команду: cd \. Это помещает вас в корневую директорию вашего диска, где находится psexec.
  • Используйте следующую команду: psexec -i -s cmd.exe где -i для интерактивных и -s для системной учетной записи.
  • Когда команда завершается, будет запущена оболочка cmd. Тип whoami; он скажет "система"
  • Откройте диспетчер задач. Убейте explorer.exe.
  • Из командной строки с повышенными командами start explorer.exe.
  • Когда проводник запускается, обратите внимание на имя "система" в строке меню "Пуск". Теперь вы можете удалить некоторые файлы в директории system32, которые, как администратор, вы не можете удалить или как администратор, вам придется попытаться изменить разрешения для удаления этих файлов.

Пользователи, которые пытаются переименовать или удалить системные файлы в любом защищенном каталоге Windows, должны знать, что все файлы Windows защищены DACLS при переименовании файла, который вы должны изменить владельца, и заменить TrustedInstaller, которому принадлежит файл, и сделать любого пользователя похожим пользователь, принадлежащий к группе администраторов как владелец файла, затем попытайтесь переименовать его после изменения разрешения, он будет работать, и пока вы используете проводник Windows с привилегиями ядра, вы несколько ограничены в плане доступа к сети по соображениям безопасности, и это все еще тема исследования для меня, чтобы получить доступ назад

Ответ 3

Нашел ответ здесь, который, кажется, решает проблему, добавив /k, чтобы перейти к параметру binPath. Так что это даст вам:

sc create testsvc binpath= "cmd /K start" type= own type= interact

Однако Бен сказал, что это не сработало для него, и когда я попробовал его в Windows Server 2008, он создал процесс cmd.exe в локальной системе, но он не был интерактивным (я не мог видеть окно),

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

Ответ 4

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

Интерактивные службы больше не работают - или, по крайней мере, больше не отображают пользовательский интерфейс - в Windows Vista и Windows Server 2008 из-за изоляции сеанса 0.

Ответ 5

Использование Secure Desktop для запуска cmd.exe как system

Мы можем легко получить доступ к ядру через CMD в Windows XP/Vista/7/8.1, подключив отладчик:

REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\osk.exe" /v Debugger /t REG_SZ /d "C:\windows\system32\cmd.exe"
  1. Запустите CMD от имени администратора

  2. Затем используйте эту команду в Elevated:

     CMD REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\osk.exe" /v Debugger /t REG_SZ /d "C:\windows\system32\cmd.exe"
    
  3. Затем запустите osk (экранная osk). Он по-прежнему не работает с уровнем целостности системы, если вы проверяете через Process Explorer, но если вы можете использовать OSK в сеансе службы, он будет работать как NT Authority\SYSTEM

поэтому я подумал, что вы должны запустить его на Secure Desktop.

Запустите любой файл от имени администратора. Когда появятся подсказки UAC, просто нажмите Win + U и запустите OSK и вместо этого запустится CMD. Затем в командной строке с повышенными whoami введите whoami и вы получите NT Authority\System. После этого вы можете запустить Explorer из командной оболочки системы и использовать системный профиль, но вы несколько ограничены в том, что вы можете делать в сети через привилегии SYSTEM из соображений безопасности. Я добавлю больше объяснений позже, поскольку я обнаружил это год назад.

Краткое объяснение того, как это происходит

Запуск Cmd.exe под локальной системной учетной записью без использования PsExec. Этот метод запускает технику отладки отладчика, которая была обнаружена ранее, и у этой методики есть свои преимущества: ее можно использовать для отлова какого-то хитрого/вредоносного червя или вредоносного ПО в отладчике и запуска другого исполняемого файла, чтобы остановить распространение или временно повредить. здесь этот ключ реестра перехватывает экранную клавиатуру в собственном отладчике Windows и вместо этого запускает cmd.exe, но cmd по-прежнему будет работать с привилегиями пользователя, вошедшего в систему, однако, если мы запустим cmd в session0, мы сможем получить системную оболочку. поэтому мы добавим еще одну идею: мы добавляем cmd на защищенный рабочий стол, помним, что безопасный рабочий стол запускается в сеансе 0 под системной учетной записью, и мы получаем системную оболочку. Поэтому, когда вы запускаете что-либо с повышенными правами, вы должны отвечать на запросы UAC и UAC на темном, неинтерактивном рабочем столе, и как только вы видите это, вы должны нажать Win + U и затем выбрать OSK вы получите CMD.exe работает под привилегиями локальной системы. Есть еще больше способов получить локальный доступ к системе с помощью CMD

Ответ 6

альтернативой этому является Process hacker, если вы входите в run as... (Интерактивный не работает для людей с улучшениями безопасности, но это не имеет значения), и когда откроется окно, введите тип окна и установите SYSTEM в поле пользователя и поставьте C:\Users\Windows\system32\cmd.exe, оставив остальным щелкнуть ok, и у вас есть окно с cmd на нем и запускается, поскольку система выполняет другие шаги для себя потому что им предлагает вам знать их

Ответ 7

Есть другой способ. Существует программа под названием PowerRun, которая позволяет запускать повышенные cmd. Даже с правами TrustedInstaller. Это позволяет и для консоли и для команд GUI.

Ответ 8

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

Ответ 9

Я использую утилиту RunAsTi, чтобы работать как TrustedInstaller (высокая привилегия). Утилита может использоваться даже в режиме восстановления Windows (режим, который вы вводите, нажав Shift + Restart), утилита psexec там не работает. Но вам нужно добавить пути C:\Windows и C:\Windows\System32 (не X:\Windows и X:\Windows\System32) к PATH среды PATH, иначе RunAsTi не будет работать в режиме восстановления, он будет просто напечатайте: AdjustTokenPrivileges для SeImpersonateName: не все привилегии или группы, на которые ссылаются, назначены вызывающей стороне.

Ответ 10

Используя планировщик задач, запланируйте запуск CMDKEY в SYSTEM с соответствующими аргументами /add: /user: и /pass:

Не нужно ничего устанавливать.