В настоящее время я использую Vista, и я хотел бы вручную выполнить те же операции, что и моя служба Windows. Так как служба Windows работает под учетной записью локальной системы, я хотел бы эмулировать такое же поведение. По сути, я хотел бы запустить CMD.EXE под учетной записью локальной системы.
В Интернете я нашел информацию, которая предлагает запустить CMD.exe с помощью AT-команды DOS Task Scheduler, но я получил предупреждение 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, но думаю, что я столкнулся с тем же ограничением, которое было обнаружено при выполнении запланированной задачи.
До сих пор каждая из моих попыток заканчивалась неудачей. Какие-либо предложения?
источник
-d
добавленным, так что я могу продолжать использовать консоль, с которой я его запустил.cd \
. Это помещает вас в корневой каталог вашего диска, где находится psexec.psexec -i -s cmd.exe
где -i для интерактивной и -s для системной учетной записи.whoami
; это будет сказать «система»start explorer.exe
.Пользователи, которые пытаются переименовать или удалить системные файлы в любом защищенном каталоге Windows, должны знать, что все файлы Windows защищены с помощью DACLS. При переименовании файла вы должны сменить владельца и заменить TrustedInstaller, которому принадлежит файл, и сделать любого пользователя таким, как пользователь, который принадлежит к группе администраторов как владелец файла, затем попытайтесь переименовать его после изменения разрешения, оно будет работать, и пока вы работаете в проводнике Windows с привилегиями ядра, вы несколько ограничены с точки зрения доступа к сети по соображениям безопасности, и это все еще тема исследования для меня, чтобы получить доступ обратно
источник
Нашел здесь ответ, который, кажется, решил проблему, добавив / k start к параметру binPath. Так что это даст вам:
sc create testsvc binpath= "cmd /K start" type= own type= interact
Однако Бен сказал, что у него это не работает, и когда я попробовал его на Windows Server 2008, он создал процесс cmd.exe в локальной системе, но он не был интерактивным (я не мог видеть окно).
Я не думаю, что есть простой способ сделать то, что вы просите, но мне интересно, зачем вы вообще это делаете? Вы просто пытаетесь увидеть, что происходит, когда вы запускаете свой сервис? Похоже, вы могли бы просто использовать ведение журнала, чтобы определить, что происходит, вместо того, чтобы запускать exe как локальную систему ...
источник
HKLM\SYSTEM\CurrentControlSet\Control\Windows\NoInteractiveServices
необходимо установить значение 0 (по умолчанию 1)Я бы порекомендовал вам разработать минимальный набор разрешений, который действительно нужен вашей службе, и использовать его, а не слишком привилегированный контекст локальной системы. Например, Местная служба .
Интерактивные службы больше не работают - или, по крайней мере, больше не отображают пользовательский интерфейс - в Windows Vista и Windows Server 2008 из-за изоляции сеанса 0 .
источник
Использование Secure Desktop для запуска
cmd.exe
от имениsystem
Мы можем легко получить доступ к ядру
CMD
в Windows XP / Vista / 7 / 8.1, подключив отладчик:Запуск
CMD
от имени администратораЗатем используйте эту команду в Elevated:
Затем запустите
osk
(на экранной клавиатуре). Он по-прежнему не работает с уровнем целостности системы, если вы проверите через Process Explorer, но если вы можете использовать OSK в сеансе обслуживания, он будет работать какNT Authority\SYSTEM
поэтому я подумал, что вы должны запустить его на Secure Desktop.
Запустите любой файл от имени администратора. Когда появятся подсказки UAC, просто нажмите Win+ Uи начните,
OSK
иCMD
вместо этого он запустится . Затем в командной строке с повышенными правами введите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
источник
альтернативой этому является Process hacker, если вы запускаете run as ... (Interactive не работает для людей с улучшениями безопасности, но это не имеет значения), и когда окно открывается, поместите Service в тип box, поместите SYSTEM в box пользователя и поместите C : \ Users \ Windows \ system32 \ cmd.exe оставьте остальные, нажмите кнопку ОК, и все, у вас есть окно с cmd и запустите его как система, теперь выполните другие шаги для себя, потому что я предлагаю вам знать их
источник
Есть другой способ. Существует программа под названием PowerRun, которая позволяет запускать повышенные cmd. Даже с правами TrustedInstaller. Это позволяет для консоли и команд GUI.
источник
если вы можете написать пакетный файл, который не должен быть интерактивным, попробуйте запустить этот пакетный файл как службу, чтобы сделать то, что нужно сделать.
источник
Я использую утилиту RunAsTi, чтобы работать как TrustedInstaller (высокая привилегия). Утилита может использоваться даже в режиме восстановления Windows (режим, в который вы входите , нажимая
Shift
+Restart
), утилита psexec там не работает. Но вам нужно добавить путиC:\Windows
иC:\Windows\System32
(неX:\Windows
иX:\Windows\System32
) пути кPATH
переменной среды, иначе RunAsTi не будет работать в режиме восстановления, он просто выведет : AdjustTokenPrivileges for SeImpersonateName: не все привилегии или группы, на которые имеются ссылки, назначены вызывающей стороне .источник
Используя планировщик задач, запланируйте запуск CMDKEY в SYSTEM с соответствующими аргументами / add: / user: и / pass:
Не нужно ничего устанавливать.
источник