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


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

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

AT 12:00 /interactive cmd.exe

другое решение предложило создать вторичную службу Windows с помощью элемента управления службой (sc.exe), который просто запускает CMD.исполняемый.

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

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

9 114

9 ответов:

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

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

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. открыть Диспетчер задач. Убить исследователя.исполняемый.
  7. из командной оболочки с повышенными правамиstart explorer.exe.
  8. при запуске проводника обратите внимание на имя "система" в строке меню Пуск. Теперь вы можете удалить некоторые файлы в каталоге system32, которые как администратор вы не можете удалить или как администратор вам придется очень постараться, чтобы изменить разрешения на удаление этих файлов.

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

нашел ответа здесь который, кажется, решает проблему, добавляя / 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... (Interactive не работает для людей с усилителями безопасности, но это не имеет значения) и когда окно открывается, поместите службу в тип коробки и положенная система в коробку потребителя и положенный C:\Users\Windows\system32\cmd.exe оставьте остальные нажмите кнопку ОК и boch у вас есть окно с cmd на нем и запустить как система теперь сделать другие шаги для себя, потому что я предлагаю вам знать их

использование безопасного рабочего стола для запуска cmd.exe как система

мы можем получить доступ к ядру через 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.затем используйте эту команду в Elavated CMD REG ADD " HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Варианты исполнения\ОСК.exe " / V Debugger / T REG_SZ / d "C:\windows\system32\cmd.EXE-файл"

3.Запустите ОСК экранная клавиатура она все равно не запускается с уровнем целостности системы, если вы проверяете через процесс исследует, но если вы можете использовать ОСК в сессии да, он будет работать как система authroitry НТ

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

запустите любой файл в качестве администратора, когда появятся подсказки UAC просто нажмите клавишу windows + U и запустите OSK, и он будет запустите CMD вместо этого в повышенной командной строке введите команду Whoami, и вы получите выходную систему NT Authority, и вы можете запустить проводник из командной оболочки системы и ввести системный профиль, но вы несколько ограничены тем, что вы можете сделать в сети через системные привилегии по соображениям безопасности. Краткое объяснение того, как это происходит

Запуск Cmd.exe под учетной записью локальной системы без использования PsExec. Этот метод выполняется Метод ловушки отладчика, который был обнаружен ранее, Ну этот метод имеет свои преимущества он может быть использован для ловушки некоторых хитрых / вредоносных червей или вредоносных программ в отладчике и запустить некоторые другие exe вместо того, чтобы остановить распространение или временное повреждение. здесь этот раздел реестра захватывает экранную клавиатуру в собственном отладчике windows и запускает cmd.exe вместо этого, но cmd все равно будет работать с привилегиями зарегистрированных пользователей, однако если мы запустим cmd в session0, мы можем получить системную оболочку. поэтому мы добавляем сюда еще одну идею, которую мы охватываем cmd на безопасном рабочем столе, помните, безопасный рабочий стол работает в session0 под системной учетной записью, и мы получаем системную оболочку.поэтому, когда вы что-нибудь запустить с повышенными правами вы должны ответить на запрос контроля учетных записей и запросы UAC на темном номера интерактивный рабочий стол и как только вы видите его, вы должны нажать клавишу Windows + U, а затем выбрать ОСК вы получите команду cmd.exe работает под привилегиями локальной системы, есть еще больше способов получить доступ к локальной системе с CMD

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

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

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