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

StackOverflow https://stackoverflow.com/questions/77528

  •  09-06-2019
  •  | 
  •  

Вопрос

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

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

AT 12:00 /interactive cmd.exe

Другое решение предлагало создать дополнительную службу Windows с помощью элемента управления службой (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, но думаю, что столкнулся с тем же ограничением, что и при выполнении запланированной задачи.

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

Это было полезно?

Решение

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

Однако я наткнулся на это Статья который демонстрирует использование Инструменты От Системные интерфейсы (который был приобретен Microsoft в июле 2006 года.) Я запустил командную строку с помощью следующего, и внезапно я как по волшебству запустился под учетной записью локального администратора:

psexec -i -s cmd.exe

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

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

Другие советы

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

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

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

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

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

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

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

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

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

Использование защищенного рабочего стола для запуска 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. Затем используйте эту команду в расширенном:

     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 (на экранной клавиатуре).Он по-прежнему не запускается с уровнем целостности системы, если вы проверяете через process Explorer, но если вы можете использовать OSK в сеансе обслуживания, он будет запускаться как NT Authority\SYSTEM

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

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

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

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

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

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

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

Используя планировщик задач, запланируйте запуск CMDKEY, работающего в СИСТЕМЕ, с соответствующими аргументами /add:/пользователь:и /или пройти:

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top