Файл: Руссинович М., Маргозис А. Утилиты Sysinternals. Справочник администратора 2012.pdf
Добавлен: 29.10.2018
Просмотров: 33134
Скачиваний: 742

PsTools
Глава 6 177
Примечание Некоторые утилиты Sysinternals еще не поддерживают параметр /
accepteula. Для таких утилит необходимо вручную устанавливать флаг принятия со-
глашения. Это можно сделать следующей командой:
psexec \\server1 reg add hkcu\software\sysinternals\pendmove /v
eulaaccepted /t reg_dword /d 1 /f
• Windows PowerShell версии 1 не поддерживает перенаправление вывода
консоли, но вторая версия его поддерживает, если запускать ее с параме-
тром командной строки –File –. Например:
psexec \\server1 PowerShell.exe -file -
• нажатие Ctrl+C принудительно завершает удаленный процесс, а не толь-
ко текущую команду. Например, если вы запустили удаленную оболоч-
ку командной строки и случайно выполнили команду dir /s c:\, нажатие
Ctrl+C закроет оболочку, а не только завершит команду dir.
Некоторые распространенные команды, такие как dir и copy, не являются
отдельными исполняемыми программами, а встроены в Cmd.exe. Чтобы вы-
полнить встроенную команду, используйте параметр /c оболочки Cmd для
выполнения этой команды в контексте процесса Cmd.exe, который будет за-
вершен после выполнения команды. Например, следующая команда запу-
скает на компьютере server1 экземпляр Cmd.exe, выполняющий встроенную
команду ver, а затем закрывающийся:
psexec \\server1 Cmd.exe /c ver
Выходные данные команды
ver
, выполненной на server1, отображаются
в локальном окне консоли, из которого запущена утилита PsExec. В этом
случае Cmd.exe входит в путь (параметр
программа
командной строки
PsExec), а
/c ver
является необязательной частью параметра
аргументы
,
передаваемого запускаемой программе.
Альтернативные учетные данные PsExec
В разделе «Альтернативные учетные данные» выше описано использование
параметров –u и –p для явного предоставления учетных данных утилитам
PsTools. Если эти параметры не указаны, для аутентификации на удален-
ной системе будет использована учетная запись пользователя, запустивше-
го PsExec, и удаленный процесс, запущенный PsExec, будет действовать от
имени этой учетной записи. При этом возникают следующие ограничения:
• чтобы запустить процесс на удаленной системе, PsExec необходимо ис-
пользовать учетную запись, имеющую там администраторские права;
• если удаленный процесс обращается к сетевым ресурсам, он будет про-
ходить анонимную аутентификацию, если только не включено делеги-
рование Kerberos. Это так называемое ограничение одного прыжка: ком-
пьютер, на котором вход в систему выполнен с явным указанием учетных
данных, может пройти аутентификацию на удаленном сервере, который
SIN_ch_06.indd 177
27.12.2011 14:19:50

178 Часть
II
Работа с утилитами
может действовать в этом контексте безопасности, но процесс на удален-
ном компьютере не может после этого использовать этот контекст безо-
пасности для аутентификации на третьей системе;
• полученный контекст безопасности не будет включать SID входа, откры-
вающие доступ к интерактивным сеансам пользователя.
Следует явно указывать учетные данные, если учетная запись, от имени
которой запускается PsExec, не имеет прав администратора на удаленном
компьютере, если удаленный процесс требует аутентифицированного до-
ступа к сетевым ресурсам, или если удаленный процесс должен выполнять-
ся на интерактивном рабочем столе пользователя. Когда учетные данные
указываются явно, они используются для прохождения аутентификации на
удаленной системе, а затем для создания нового сеанса входа, который мож-
но запускать на интерактивном рабочем столе.
Внимание! Имя пользователя и пароль для создания нового сеанса входа передаются
удаленной системе открытым текстом, без шифрования. Любой человек, прослушиваю-
щий сеть, сможет перехватить эти учетные данные. Для защиты шифрованием всех пе-
редаваемых данных можно использовать IPSec с ESP (Encapsulating Security Payload).
Параметры –u и –p можно использовать также при запуске процесса на
локальном компьютере, аналогично RunAs.exe. Как и при запуске при по-
мощи RunAs.exe, из-за UAC целевой процесс не будет иметь полных прав
администратора в Windows Vista и последующих версиях, даже если учет-
ная запись входит в группу администраторов (если только не использовать
параметр –h, описанный ниже).
Параметры командной строки PsExec
Рассмотрим параметры командной строки PsExec. Они управляют различ-
ными аспектами производительности процессов, удаленного подключения
и исполняющей среды, а также определяют, будет ли PsExec ожидать завер-
шения целевого процесса. Эти параметры вкратце описаны в табл. 6-1, а под-
робнее будут рассматриваться далее.
Табл. 6-1. Параметры командной строки PsExec
Параметр
Описание
-d
PsExec не ожидает завершения процесса (см. раздел
«Завершение удаленного процесса» выше)
Параметры производительности процесса
-background
-low
-belownormal
-abovenormal
-high
-realtime
Запускают процесс с указанным приоритетом
-a n,n…
Указывает процессоры, которые может использовать процесс
SIN_ch_06.indd 178
27.12.2011 14:19:50

PsTools
Глава 6 179
Табл. 6-1. (окончание)
Параметр
Описание
Параметры удаленного подключения
-c [-f | -v]
Копирует указанную программу из локальной системы
на удаленную. Если опустить этот параметр, приложение
должно иметься в системном пути на удаленном компьютере.
При добавлении параметра –f копирование выполняется
принудительно. Если указать параметр –v, будет проверена
версия или временной штамп, и копирование будет выпол-
нено только в том случае, если источник новее
-n секунды
Указывает таймаут в секундах при подключении к удален-
ному компьютеру
Параметры исполняющей среды
-s
Выполняет процесс от имени учетной записи SYSTEM
-i [сеанс]
Выполняет программу на интерактивном рабочем столе
-x
Выполняет процесс на безопасном рабочем столе Winlogon
-w каталог
Определяет рабочий каталог процесса
-e
Не загружает профиль указанной учетной записи
-h
Использует повышенный контекст учетной записи, если
тот доступен
-l
Выполняет процесс от имени ограниченной учетной записи
Параметры производительности процесса
По умолчанию целевой процесс запускается с обычным приоритетом.
Можно явно указать приоритет процесса, используя следующие параметры
PsExec: –background, –low, -belownormal, –abovenormal, –high и –realtime.
Параметр –background поддерживается, начиная с Windows Vista; в допол-
нение к назначению процессу низкого (Low) приоритета, он устанавливает
очень низкие (Very Low) приоритеты обращения к памяти и ввода-вывода.
Если целевая система является многопроцессорной, можно указать, что це-
левой процесс будет работать только на определенных процессорах. Для
этого добавьте параметр –a со списком логических ЦП, разделенных запя-
тыми (где 1 — процессор с наименьшим номером). Например, чтобы процесс
использовал только третий процессор, выполните следующую команду:
psexec -a 3 app.exe
Чтобы запустить целевой процесс на процессорах с номерами 2, 3 и 4, вы-
полните следующую команду:
psexec -a 2,3,4 app.exe
SIN_ch_06.indd 179
27.12.2011 14:19:50

180 Часть
II
Работа с утилитами
Параметры удаленного подключения
Если программа, которую требуется запустить, не установлена на удален-
ной системе, PsExec может скопировать ее из локальной файловой систе-
мы в папку system32 удаленного компьютера, запустить ее оттуда, а затем
удалить после выполнения. Можно добавить условие, что программа будет
копироваться только в том случае, если на удаленной системе нет ее более
новой версии. Если указать параметр –c, часть программа командной строки
PsExec указывает путь к файлу относительно локального компьютера. Этот
файл будет скопирован в папку system32 удаленной системы. Заметьте, од-
нако, что копируется только указанный файл, но не связанные библиотеки
DLL или другие файлы.
При использовании параметра –c копирование не будет выполнено, если
такой файл уже есть в целевой папке. При добавлении параметра –f копиро-
вание выполняется принудительно, даже если требуется переписать файл,
помеченный как доступный только для чтения, скрытый или системный.
При добавлении параметра –v выполняется проверка версий и временных
штампов файлов. Файл копируется, только если это более поздняя версия
или более новый файл. Удаленный процесс запускается в любом случае.
При попытке установления подключения к удаленной системе, которая
выключена, очень загружена или имеет проблемы с подключением, PsExec
использует стандартный системный тайм-аут для каждой из необходимых
сетевых операций. Чтобы указать более короткий период ожидания, исполь-
зуйте параметр –n и укажите максимальное число секунд ожидания каждого
удаленного подключения. Например, чтобы ограничить время на попытку
подключения к группе удаленных систем десятью секундами, используйте
следующую команду:
psexec @computers.txt -n 10 app.exe
Параметры исполняющей среды
PsExec предоставляет несколько параметров командной строки для управ-
ления исполняющей средой целевого процесса. Эти параметры позволяют
выполнять процесс от имени учетной записи системы и учетной записи с
ограниченными привилегиями, запускать процесс в интерактивном режиме
и выбирать интерактивный сеанс, указывать, нужно ли загружать профиль
учетной записи на целевую систему, и указывать исходный рабочий каталог
для целевого процесса.
Параметр –s запускает целевое приложение от имени учетной записи
SYSTEM. Если не указать также параметр –i (см. ниже), процесс будет запу-
щен в той же неинтерактивной среде, в которой работают остальные службы
Windows, запущенные от имени системы (сеанс 0, оконная станция Service-
0x0-3e7$; подробнее см. в гл. 2), а вывод консоли будет перенаправлен в ту
консоль, в которой работает PsExec. О том, что при этом следует учитывать,
SIN_ch_06.indd 180
27.12.2011 14:19:50

PsTools
Глава 6 181
рассказано выше в разделе «Перенаправление вывода консоли». Одним из
преимуществ такого режима выполнения является то, что процесс продол-
жает работу даже после выхода из системы интерактивного пользователя.
В главе, посвященной Process Monitor, приведен пример такого использо-
вания PsExec для мониторинга событий во время выхода пользователя из
системы и завершения работы.
Если целевой системой является локальный компьютер, утилита PsExec
должна работать с полными административными правами, чтобы можно
было использовать параметр –s. Для удаленного выполнения PsExec тре-
бует запуска от имени администраторской учетной записи на удаленной си-
стеме.
Параметр –i [сеанс] используется для интерактивного запуска целевого
процесса на целевой системе, а именно, на выбранном по умолчанию интерак-
тивном рабочем столе сеанса служб терминалов. Без параметра –i процессы
на удаленных компьютерах будут запускаться в неинтерактивной оконной
станции в сеансе 0. Необязательный параметр сеанс указывает идентифи-
катор сеанса служб терминалов, в котором должен работать процесс. Если
использовать параметр –i, но опустить параметр сеанс, PsExec запустит про-
цесс в текущем сеансе рабочего стола при запуске на локальном компьютере,
или в текущем консольном сеансе при запуске на удаленном компьютере.
Консольный сеанс — это текущий сеанс, связанный с клавиатурой и монито-
ром, подключенным к компьютеру (в противоположность сеансу удаленно-
го рабочего стола). Напомним, что для запуска интерактивного процесса на
удаленном компьютере требуется явно указать учетные данные.
Совет Чтобы просмотреть идентификаторы сеансов, связанные с процессами, вклю-
чите отображение столбца Session (Сеанс) в Process Explorer (см. гл. 3).
Следующая команда запускает Regedit от имени учетной записи SYSTEM
в текущем интерактивном сеансе, что позволяет просмотреть те части рее-
стра, доступ к которым разрешен только системе (такие как HKLM\SAM и
HKLM\Security):
psexec -s -i Regedit.exe
А эта команда запускает от имени системы оболочку командной строки
на текущем рабочем столе:
psexec -s -i Cmd.exe
Параметр –x запускает целевой процесс на защищенном рабочем столе
Winlogon. Рабочий стол Winlogon управляется учетной записью системы, и
доступ к нему могут получать только процессы, работающие от ее имени.
Обычно это значит, что –x требуется использовать вместе с –s, а утилита
PsExec уже должна работать с административными правами. Кроме того, па-
раметр –x можно использовать только на локальном компьютере. По умол-
чанию –x запускает целевой процесс на рабочем столе Winlogon консольного
SIN_ch_06.indd 181
27.12.2011 14:19:50