Запускать от имени другого пользователя без пароля из командной строки с повышенными привилегиями в Windows

Есть несколько утилит для запуска под другим пользователем (например: runas, cpau, psexec) но все они требуют пароль для соответствующего пользователя, даже если вы уже работаете с повышенными привилегиями.

Я хотел бы добиться следующего:

  1. У меня уже есть повышенный запрос (Administrator)
  2. Я хотел бы выполнить команду (например: calc.exe) как john без ввода / передачи пароля в утилиту запуска.

Например, в системе Unix вы можете просто:

root@server:~# su - john

7 ответов

В Windows вы можете сделать это только при наличии текущего сеанса входа в систему пользователя, которого вы пытаетесь выдать. Это связано с локальной групповой политикой "Олицетворять клиента после аутентификации", позволяющей членам группы "Администраторы" делать именно это (находится в разделе "Локальные политики"> "Назначения прав пользователя").

Я знаю, что одним из инструментов, позволяющих вам это сделать, является Process Hacker 2. Запустите инструмент от имени локального администратора и найдите процесс, работающий от имени пользователя, которого вы хотите выдать себя за другого. Щелкните правой кнопкой мыши на нем, выберите "Разное"> "Запуск от имени этого пользователя...", затем введите двоичный путь, который вы хотите запустить от имени этого пользователя, например, cmd. Затем CMD откроется как этот пользователь, не запрашивая пароль этого пользователя.

Я использую это все время. Требуется ввод учетных данных при первом использовании (и при изменении пароля), но это все.

runas /user:yourusernamehere /savecred "Your Executable Here"

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

C:\Windows\System32\cmd.exe /c "C:\yourbatfilehere.bat"

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

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

Если у вас есть повышенные привилегии, вы можете использовать планировщик задач Windows для запуска сценария (или чего-либо еще) от имени любого пользователя без его пароля.

  1. Откройте планировщик заданий
  2. Нажмите "Создать задачу..."
  3. Нажмите "Сменить пользователя или группу" и введите имя пользователя.
  4. Перейдите на вкладку "Действия" и выберите свой скрипт или исполняемый файл.
  5. Выполните задачу вручную или запланируйте, как хотите

Готово

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

Из командной строки CMD я могу сделать:

      powershell "Start-Process -Verb Runas 'iisreset' -Wait"

Это открывает отдельное окно Windows PowerShell (v5), выполняет сброс IIS и ожидает завершения процесса, прежде чем продолжить (полезно в сценарии - также работает как событие Pre/Post-Build в файле .csproj, что и делает). Я делаю).

Из командной строки PowerShell это еще проще:

      Start-Process -Verb Runas 'iisreset' -Wait

Как я уже сказал, хакерство... но оно выполняет свою работу.
Теоретически это должно работать и в Microsoft PowerShell (7.2 на момент написания статьи). Хотя я этого не проверял, так что YMMV.

Вот как я это делаю

psexec -u администратор -p пароль -i (идентификатор сеанса) -h -d cmd /c start (команда)

Идентификатор сеанса: извлекается с помощью следующей команды «qwinsta console». Команда: это то, что вам нужно запустить. (поймите, что если требуется взаимодействие с пользователем, этому пользователю нужно будет щелкнуть мышью или выполнить любые необходимые задачи)

Psexec можно найти на https://live.sysinternals.com .

Если вы поместите.exe в их загрузочную папку, вы сможете запустить его как они.

Другие вопросы по тегам