Я хотел бы использовать «psexec» поверх локальной сети для запуска команды от имени другого пользователя, который одновременно вошел в систему.

Другими словами: я хочу использовать «psexec» со встроенными учетными данными администратора для запуска программы на рабочем столе Боба. Эта программа должна верить, что она была запущена Бобом с использованием его учетных данных. Поскольку я использую учетную запись администратора, я хотел бы обойтись без необходимости пароля Боба для этого (возможно, с помощью «runas»).

Редактировать 1

Разъяснения:

Я уже получил доступ к системе, так как у меня есть учетная запись администратора.

Я не чувствую, что агент / служба / exe работает все время в фоновом режиме.

Это домашняя установка.

Я думал о чем-то вроде этого: http://reboot.pro/files/file/237-runassystem-and-runfromtoken/, но применимо к любому другому пользователю.

Я хочу иметь возможность запускать такую программу, как игра или почтовый клиент, который сохраняет файлы по индивидуальным путям.** Таким образом, выполнение с правами администратора не будет эффективным, поскольку программа будет загружать профиль данных администратора, а не Боба (который вошел в систему).

Моя конечная цель - запустить команду 'whoami' и сказать, что я зарегистрированный пользователь.

Обновить

Мне удалось получить «cmd.exe» в качестве SYSTEM, а затем получить один экземпляр моей учетной записи (защищенный паролем) с помощью RunFromToken. Я собираюсь проверить это дальше.

5 ответов5

3

Нет, это полностью обойдёт точку индивидуальной безопасности.

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

0

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

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

Это разрешено из-за того, как Windows делегирует PRIVILEGE для олицетворения локально вошедших в систему пользователей для SYSTEM и Local Administrators. Вы можете найти информацию об этом PRIVILEGE в локальной групповой политике> Локальные политики> Назначения прав пользователя> Олицетворять клиента после аутентификации.

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

0

Вы не можете этого сделать и по чертовски веским причинам.

Это был бы Святой Грааль для любого вируса, если это возможно.
На компьютере под управлением Windows всегда есть несколько процессов, выполняющихся под несколькими учетными записями администратора (например, учетные записи LocalSystem и NetworkSystem, просто назовите 2.)
Если бы по вашему запросу удалось выполнить какой-либо произвольный процесс, можно было бы вставить новые процессы в эти учетные записи: ни в коем случае вы не сможете защитить свою систему от вирусов. (Любой произвольный процесс буквально означает, что он говорит: это также включает вирусы!)

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

Так что это очень веские причины, чтобы изолировать среды аккаунтов друг от друга. (Их намного больше, но это выходит за рамки этого вопроса.)

0

Без агента (например, через SCCM) вы не сможете сделать это напрямую.

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

0

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

Если все, что вы действительно хотите сделать, это выяснить, кто в данный момент подключен к компьютеру (локальному или удаленному), рассмотрите утилиту psloggedon от MS TechNet (ранее SysInternals): https://technet.microsoft.com/en- нас / Sysinternals / bb897545.aspx

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .