Разное

Pstools как пользоваться: Утилиты пакета PStools

05.09.1978

Содержание

Утилиты пакета PStools

&nbsp &nbsp Быстрый переход к описанию утилит пакета:

PsExec
PsFile
PsGetSID
PsInfo
PsKill
PsList
PsLoggedOn
PsLogList
PsPasswd
PsService
PsShutdown
PsSuspend
Примеры использования в командных файлах
FePSTools — графический интерфейс для командной строки PSTools

&nbsp &nbsp Все утилиты пакета PStools работают во всех версиях Windows старше Windows NT и не требуют инсталляции. Позволяют осуществлять не только управление локальным компьютером, но и удаленное администрирование без установки на удаленном компьютере какого-либо программного обеспечения. Для большинства действий, выполняемых утилитами PsTools требуются административные привилегии.
&nbsp &nbsp Запуск утилит осуществляется из командной строки. В Windows Vista/7/8 нужен запуск от имени администратора. Справку по конкретной утилите можно получить задав ключ

-?.

  • PsExec — Позволяет выполнить приложение на локальном или удаленном компьютере. Естественно, при наличии соответствующих прав доступа. Большинство ключей командной строки, используемые для PSexec, используются и для других утилит пакета, поэтому будут рассмотрены подробно.

    Использование:

    psexec.exe [\\computer[,computer2[,…] | @file][-u user [-p psswd]][-s|-e][-i][-c [-f|-v]][-w directory][-d][-priority][-a n,n,…] cmd [arguments]

    computer — имя или IP-адрес компьютера. Если пропущено — то приложение запускается на локальном компьютере. Если используется шаблон (\\*), PsExec выполнит приложение на всех компьютерах текущего домена.

    @file — имя файла со списком компьютеров для выполнения.
    -u — имя пользователя. Если опущено — то будет использовано имя текущего пользователя.
    -p — пароль. Если опущен, то будет запрошен программой.
    -s — выполнить приложение с локальными системными правами (Local system account).
    -e — использовать указанный профиль пользователя.
    -i — разрешить удаленной программе взаимодействовать с рабочим столом на удаленном компьютере. Если ключ не задан, то выполнение удаленной программы происходит незаметно для пользователя удаленного компьютера.
    -c — копировать указанную программу на удаленный компьютер перед выполнением. Если ключ опущен, то программа для выполнения должна присутствовать на удаленном компьютере в путях поиска, задаваемых переменной окружения path.
    -f — выполнять копирование даже при наличии исполняемого файла на удаленном компьютере.
    -v — выполнять копирование только в случае, если исполняемый файл имеет более позднюю версию.
    -d — не ждать завершения удаленного процесса.
    -w — установить рабочий каталог для удаленного процесса.
    -priority — приоритет для удаленного процесса. Может принимать значения (в порядке возрастания) -low, -belownormal, -abovenormal, -high, -realtime.
    -a — указание процессоров (для мультипроцессорных систем) на котором будет выполняться приложение. Например — для CPU 1, CPU 4, ключ: «-a 1,4»
    program — имя приложения для выполнения на удаленной системе.
    arguments — аргументы для удаленного приложения. Пути файлов должны задаваться относительно удаленного компьютера и имена файлов или каталогов, содержащие пробелы должны заключаться в двойные кавычки, например — «C:\Program Files\User Folder\Programm.exe»

    &nbsp &nbsp Ввод с клавиатуры направляется на удаленный компьютер, нажатие Ctrl-C завершит удаленный процесс. Если не задано имя пользователя, то удаленный процесс будет выполнен на удаленной системе с правами локальной системной учетной записи, т.е. без доступа к сетевым ресурсам, даже если ваша учетная запись на удаленной системе дает вам такой доступ. Поэтому, если удаленному приложению требуется доступ к сетевым ресурсам, задавать имя пользователя в формате «Domain\User» обязательно. Код возврата (ERRORLEVEL) по завершению Psexec определяется удаленным приложением, что позволяет анализировать результаты выполнения удаленного приложения в командных файлах.

    Примеры:
    &nbsp — &nbsp запустить командный процессор cmd.exe на удаленном компьютере
    Psexec.exe \\192.168.0.1 cmd.exe
    Psexec.exe \\Comp1 cmd.exe
    Psexec.exe \\192.168.0.1 -u vasya -p mypass cmd.exe
    Psexec.exe \\192.168.0.1 -u vasya -p mypass -c -f -w C:\ cmd.exe
    В результате вы получаете доступ к командной строке на удаленном компьютере и увидите приглашение:

    Microsoft Windows 2000 [Версия 5.00.2195]
    (С) Корпорация Майкрософт, 1985-2000.
    С:\WINNT\system32 >

    &nbsp &nbsp Теперь команды, вводимые с консоли этого окна будут выполняться на удаленном компьютере. Однако, не стоит запускать на выполнение программы, использующие графический интерфейс, взаимодействие с ними будет невозможно.

    &nbsp &nbsp Вы можете выполнить любую консольную команду на удаленном компьютере. Примеры:

    — получить информацию о настройке TCP/IP
    Psexec.exe \\REMOTEPC -u Mydomain\MyUsername -p mypass ipconfig /all
    — получить информацию о сетевом окружении на REMOTEPC:
    Psexec.exe \\REMOTEPC -u Mydomain\MyUsername -p mypass net view
    — послать сообщение от REMOTEPC на другой компьютер (REMOTE2):
    Psexec.exe \\REMOTEPC -u Mydomain\MyUsername -p mypass net send REMOTE2 TEXT OF MESSAGE
    — подключить диск «C» удаленного компьютера REMOTE2 к удаленному компьютеру REMOTEPC:

    Psexec.exe \\REMOTEPC -u Mydomain\MyUsername -p mypass net use X: \\REMOTE2\C
    — скопировать каталог C:\TEST с удаленного компьютера REMOTEPC на удаленный компьютер REMOTE2:
    Psexec.exe \\REMOTEPC -u Mydomain\MyUsername -p mypass xcopy C:\test\*.* X:\TEST\*.*
    — архивировать данные каталога «C:\TEST» удаленного компьютера REMOTEPC на удаленный компьютер REMOTE2:
    Psexec.exe \\REMOTEPC -u Mydomain\MyUsername -p mypass arj a X:\ARHIV\test.arj C:\TEST\*.*
    &nbsp &nbsp Для того, чтобы выполнить командный файл (.bat или .cmd), нужно сначала скопировать его на удаленный компьютер, т.е. обязательно использовать ключ
    -c
    . Если в командном файле используются сетевые диски или команды, требующие доступ к сети (например, NET.EXE ), то нужно задать имя пользователя:
    Psexec.exe \\192.168.0.1 -u vasya -p mypass -c mycmd.cmd
    &nbsp &nbsp Иногда необходимо запустить приложение на удаленном компьютере, видимое для его пользователя. Используйте ключ -i:
    Psexec.exe \\192.168.0.1 -u vasya -p mypass -i notepad.exe
    После запуска блокнота (notepad.exe) PsExec будет ждать его завершения удаленным пользователем. Если в этом ожидании нет необходимости, то нужно использовать ключ -d.
    &nbsp &nbsp Особенность запуска приложения от имени локальной учетной записи позволяет получить в редакторе реестра (REGEDIT.EXE) доступ к разделам SAM и SECURITY. Для этого нужно запустить удаленно regedit без указания имени пользователя и пароля и использовать «-i»:
    psexec.exe \\REMOTE -i regedit.exe
    После чего на компьютере \\REMOTE запустится редактор реестра с доступными разделами SAM и SECURITY.
    Или локально с ключами -s и -i:
    psexec.exe -s -i regedit.exe

    В Windows Vista/7/8/10 используется изоляция сеанса, в котором работают системные службы, от сеанса пользователя (Session 0 Isolation), поэтому команда для этих версий ОС будет выглядеть иначе:
    psexec -s -i 0 regedit.exe


    после чего нужно нажать на кнопку «Просмотреть сообщение» в диалоговом окне «Обнаружение интерактивных служб».

    &nbsp &nbsp Учтите, что в таком режиме использования редактора реестра вы получаете права на создание, изменение и удаление даже таких ключей, которые доступны только процессам ядра.

    &nbsp &nbsp С точки зрения системного администрирования PSexec удобно использовать для запуска приложений на всех компьютерах домена (вместо имени компьютера задать — \\*) с правами администратора или под локальной системной учетной записью (ключ -s).
    Psexec.exe \\* -s install.exe — запустить install.exe на всех компьютерах домена под системной учетной записью

    &nbsp &nbsp Ну и последнее — Psexec можно использовать для обхода ошибки типа Negative delta time, возникающей на многоядерных системах из-за несовпадения счетчиков RTSC (Real Time Stamp Counter) у разных ядер. Для чего приложение запускается с помощью psexec только для одного ядра (ключ -a):

    psexec.exe -a 1 -i -w «папка приложения» «приложение»

  • PsFile — Использование аналогично использованию команды net.exe file, но может выполняться на удаленном компьютере. Выдает список файлов, открытых удаленными пользователями на указанном компьютере и позволяет принудительно их закрывать.
  • PsGetSid — Выводит на экран уникальный номер, идентифицирующий учетную запись пользователя, группы или компьютера. Он присваивается учетной записи при ее создании (код безопасности). Внутренние процессы Windows обращаются к учетным записям по их кодам безопасности, а не по именам пользователей или групп. Если удалить, а затем снова создать учетную запись с тем же именем пользователя, то предоставленные прежней учетной записи права и разрешения не сохранятся для новой учетной записи, так как их коды безопасности будут разными. Аббревиатура SID образована от Security ID.
    psgetsid.exe mydomain.ru\admin — выдать SID пользователя admin домена mydomain.ru
    pssetsid admin — выдать SID пользователя admin данного компьютера
    psgetsid S-1-5-21-854245398-1035525444-1417001333-1123 — выдать имя пользователя по SID
  • PsInfo — выдает системную информацию об удаленной или локальной системе (версия ОС, тип процессора, видеоадаптера, объем ОЗУ, установленное ПО и т.п.). Использование:

    psinfo [-h] [-s] [-d] [-c [-t delimiter]] [\\computer[,computer[,..]]|@file [-u Username [-p Password]]]

    Ключи (кроме рассмотренных выше для PSExec):
    -h — включить в выдаваемый отчет информацию об установленных обновлениях (hotfixes).
    -s — отображать список установленных программ.
    -d — отображать информацию о дисках (тип, файловая система, метка тома, размер, объем свободного пространства.
    -c — выдавать данные в формате CSV (текстовый файл с данными, разделенными по полям с помощью символа-разделителя — запятой). Вы можете импортировать данные из такого файла в другие приложения, например, в Excel.
    -t — позволяет задать символ разделитель в файлах формата CSV, если он должен отличаться от запятой.

  • PsKill — принудительно завершить процесс.

    Использование:

    pskill [\\computer [-u username [-p password]]]

    Если \\computer опущено — то выполняется завершение процесса на локальной машине.
    process Id or name — имя или идентификатор процесса (его можно получить с помощью рассматриваемой ниже утилиты PsList.exe).
    &nbsp &nbsp Кстати, с помощью PsKill можно принудительно получить перезагрузку или даже «синий экран смерти» (BSOD- Blue Screen Of Death), если завершать системные процессы (lsass, winlogon и т.п.)

    pskill winword — завершить процесс winword на локальном компьютере
    pskill \\comp3 -u admin -p password 620 — завершить процесс с идентификатором 620 на компьютере comp3
    pskill \\SERVER -u admin -p password winlogon — завершить процесс winlogon на компьютере SERVER. Будет вызван «синий экран смерти» системы. Подключение к компьютеру SERVER выполняется с использованием имени пользователя admin и пароля password

  • PsList — получить подробную информацию о запущенных процессах на локальной или удаленной системе.

    Использование:

    pslist.exe [-d][-m][-x][-t][-s [n] [-r n] [\\computer [-u username][-p password][name|pid]

    -d — включить в отчет информацию о потоках, выполняемых процессом (thread details).
    -m — включить в отчет информацию об использовании памяти (memory).
    -x — включить в отчет все вышеперечисленное.
    -t — выдать только дерево процессов (tree).
    -s [n] — запускаться в режиме диспетчера задач, каждые n секунд (по умолчанию — 1 сек. Для завершения нажать Escape.
    -r n — время обновления экрана в режиме диспетчера задач (по умолчанию -1 сек.).
    name — выдать информацию только о процессе с именем name. Если имеется несколько процессов с одинаковым именем, (например FAR), то будет выдана информация обо всех процессах, имя которых соответствует name. Если в качестве name задать часть имени, например символ «F», то в отчет попадут сведения о всех процессах, имя которых начинаются с указанной буквы.
    pid — выдать информацию о процессе с идентификатором pid. Будет выдана информация только об одном процессе, имеющем идентификатор pid.

  • PsLoggedOn — информация о пользователях, вошедших в систему.

    Использование:

    psloggedon.exe [-l] [-d domain] [-x] [\\computername]
    или psloggedon.exe [username]

    -l — показать только локальных пользователей.
    -d — показать только пользователей домена domain.
    -x — не показывать время входа в систему.

    psloggedon.exe -l \\server — Выдать имя локального пользователя компьютера server.
    psloggedon.exe \\server — Выдать список всех пользователей, подключенных к компьютеру server.
    psloggedon.exe admin -d mydomain.com — Найти в домене mydomain.com компьютер с залогиненым пользователем «admin».

  • PsLogList — выдать дамп журнала событий удаленной или локальной системы.

    Использование:

    psloglist [\\computer[,computer2[,…] | @file] [-u username [-p password]]] [-s [-t delimiter]] [-n # | -d #][-c][-x][-r][-a mm/dd/yy][-b mm/dd/yy] [-f filter] [-i ID,[ID,…]] [-o event source] [-l event log file] event log

    -a — выдать данные после указанного времени (after).
    -b — выдать данные до указанного времени (before).
    -c — очистить журнал событий после выдачи (clear).
    -d — выдать записи только за предыдущие n дней.
    -f — использовать фильтр типов событий (начальная буква i — информация, w — предупреждения, e — ошибки,»-f we» — предупреждения и ошибки).
    -i — выдать записи с указанным идентификатором ID (не более 10 ID).
    -l — выдать содержимое ранее сохраненного в файл журнала событий.
    -n — выдавать только первые n записей.
    -o — выдавать только по источнику события (-o cdrom).
    -s -t — ключи формирования выходного потока для строкового поиска.
    event log — тип журнала ( по умолчанию — System)

    &nbsp &nbsp Например, выдать в файл otlup.txt информацию об отказе в доступе (событие c id = 529 в журнале Security) на компьютере с адресом 192.168.0.25 за последние 7 дней:

    psloglist.exe \\192.168.0.25 -u admin -p admpass -d 7 -i 529 Security > otlup.txt
    &nbsp &nbsp Выдать в файл errors.txt информацию о предупреждениях и ошибках за последние 3 дня на текущем компьютере в журнале System:

    psloglist.exe -u admin -p admpass -d 3 -f we > errors.txt

    &nbsp &nbsp Если вы не знаете номер идентификатора события, но знаете его смысловое описание, то можно объединить выполнение PSloglist.exe с параметром -s, в цепочку с утилитой findstr.exe, указав последней ключевое слово (несколько слов) для поиска. Первый пример можно было бы выполнить и так:
    psloglist.exe \\192.168.0.25 -u admin -p admpass -d 7 Security | findstr -I /C:FAILURE > otlup.txt

    Ключ /C: задает строку поиска, ключ -I указывает, что не надо учитывать регистр символов. Если в строке поиска есть пробелы, то ее надо заключить в двойные кавычки — /C:»Audit Failure».

  • PsPasswd — сменить пароль на локальной или удаленной системе.

    Использование:

    pspasswd [\\[computer[,computer,[,…]|Domain]|@file] [-u Username [-p Password]]] Username [NewPassword]

    Username — имя пользователя, для которого будет изменен пароль.
    NewPassword — новый пароль.

  • PsService — управление службами на локальной или удаленной системе.

    Использование:

    psservice.exe [\\Computer [-u Username [-p Password]]]

    Cmd может принимать значения:
    query -запрос о состоянии службы.
    config — запрос о конфигурации службы
    setconfig — изменение типа запуска службы
    start — запустить службу
    stop — остановить службу
    restart — перезапустить службу
    pause — приостановить службу
    cont — продолжить работу приостановленной службы
    depend — показать список служб, зависящих от указанной
    find -найти службу в локальной сети

    &nbsp &nbsp Примеры:

    psservice \\gamerPC -u admin -p admpass query nncron — опросить состояние службы nncron на компьютере gamerPC
    psservice -u admin -p admpass setconfig nncron auto — установить на локальном компьютере тип запуска службы в «авто». Возможные варианты — demand — «вручную» и disabled — «отключено».
    psservice -u admin -p admpass find «DHCP клиент» — найти службу «DHCP клиент» в локальной сети. Результат — список компьютеров с работающей службой. Если после имени службы задать ключ all — то в список попадут и компьютеры, где служба установлена, но не запущена. И учтите, что имена служб содержащих русские символы должны задаваться в ДОС-кодировке и, при наличии пробелов — заключаться в двойные кавычки.

  • PsShutdown — выключить или перезагрузить локальную или удаленную систему.

    Использование:

    psshutdown -s|-r|-h|-d|-k|-a|-l|-o [-f] [-c] [-t [nn|h:m]] [-m «message»] [-u Username [-p password]] [\\computer[,computer[,…]|@file]

    -a — отменить запланированные перезагрузку или отключение.
    -c — разрешить локальному пользователю отменять перезагрузку или выключение.
    -d — перевести компьютер в спящий режим.
    -f — принудительно закрывать запущенные приложения.
    -h — перевод в режим спящий режим (если поддерживается) с выгрузкой содержимого оперативной памяти на диск с последующим восстановлением после включения.
    -k — выключить питание (перезагрузка, если выключение питания не поддерживается )
    -l — блокировка компьютера.
    -m — текст сообщения, которое будет выдано пользователю останавливаемого компьютера.
    -o — завершение сеанса текущего пользователя.
    -r — перезагрузить (Reboot) компьютер.
    -s — завершение работы без выключения питания.
    -t -счетчик времени в секундах до начала завершения работы (если не задан — 20 секунд) или время в 24-часовом формате, когда будет выполнено завершение работы системы. .

  • PsSuspend — приостановка и продолжение служб на удаленной или локальной системе.
    Использование:

    pssuspend [-r] [\\RemoteComputer [-u Username [-p Password]]]

    -r -продолжить работу ранее приостановленной службы.
    process Id or name — имя или идентификатор процесса. Можно получить с помощью ранее рассмотренной утилиты PsList.

    Примеры использования PSTools в командных файлах. &nbsp &nbsp Если у вас возникнут затруднения при понимании нижеизложенного — почитайте статью Командные файлы.
    &nbsp &nbsp Создадим командный файл, выполняющий поиск в локальной сети компьютеров с выполняющейся программой, имя которой (начальная часть имени) задается в качестве параметра при запуске, например, game . При обнаружении будет послано сообщение на компьютер ADMINCOMP и обнаруженное приложение будет принудительно завершено. Для поиска будем использовать утилиту Pslist.exe и анализировать ее код возврата. Значение переменной ERRORLEVEL равное нулю означает, что утилита обнаружила на удаленном компьютере процесс, удовлетворяющий условиям поиска. Имя процесса для поиска будем задавать в качестве параметра при запуске командного файла. Присвоим нашему командному файлу имя psl.bat. Запуск с параметром будет выглядеть следующим образом:
    psl.bat game
    &nbsp &nbsp Для начала, нужно проверить, задан ли параметр в командной строке при запуске, и, если не задан, выдадим сообщение пользователю и завершим выполнение. Если же параметр задан — перейдем на метку » PARMOK «:
    @echo off
    if «%1» NEQ «» GOTO PARMOK
    ECHO Нужно задать имя процесса для поиска
    exit
    :PARMOK &nbsp &nbsp Теперь нужно обеспечить последовательное формирование IP-адресов компьютеров для командной строки PSlist. Проще всего это сделать с помощью присвоения временной переменной окружения (действительной только на время выполнения командного файла) значения постоянной составляющей адреса (например — 192.168.0.) и вычисляемого значения младшей части (например, в диапазоне 1-254). Для примера будем считать, что нам необходимо просканировать компьютеры в диапазоне адресов:
    192.168.0.1 &nbsp — &nbsp 192.168.0.30:
    set IPTMP=192.168.0. — старшая часть адреса
    set /A IPLAST=1 — младшая часть. Ключ /A означает вычисляемое числовое выражение
    set IPFULL=%IPTMP%%IPLAST% — значение полного IP-адреса.
    &nbsp &nbsp Командная строка для PSlist будет выглядеть следующим образом:
    pslist \\%IPFULL% %1
    &nbsp &nbsp Теперь осталось только циклически запускать PSlist, прибавляя в каждом цикле единицу к младшей части адреса, пока ее значение не достигнет 30 и анализировать значение ERRORLEVEL после выполнения. Для анализа результата будем выполнять переход командой:
    GOTO REZULT%ERRORLEVEL%
    обеспечивающей переход на метку REZULT0 при обнаружении процесса и на REZULT1 — при его отсутствии.
    &nbsp &nbsp Окончательное содержимое командного файла:

    @echo off
    if «%1» NEQ «» GOTO PARMOK
    ECHO Нужно задать имя процесса для поиска
    exit
    :PARMOK
    set IPTMP=192.168.0.
    rem Зададим начальное значение » хвоста » IP- адреса
    set /A IPLAST=1
    rem M0 — метка для организации цикла
    :M0
    rem Переменная IPFULL — полное значение текущего IP-адреса
    set IPFULL=%IPTMP%%IPLAST%
    rem Если » хвост «больше 30 — на выход
    IF %IPLAST% GTR 30 GOTO ENDJOB
    pslist \\%IPFULL% %1
    GOTO REZULT%ERRORLEVEL%
    :REZULT0
    rem Если найдено приложение- отправим сообщение на ADMINCOMP
    net send ADMINCOMP Запущено %1 — %IPFULL%
    rem И завершим приложение с помощью PSkill
    pskill \\%IPFULL% %1
    :REZULT1
    rem Сформируем следующий IP-адрес
    set /A IPLAST=%IPLAST% + 1
    rem Перейдем на выполнение следующего шага
    GOTO M0
    rem Завершение работы
    :endjob
    exit

    &nbsp &nbsp В заключение добавлю, что для того, чтобы этот скрипт работал, PSlist.exe и PSkill.exe должны быть доступны в путях поиска исполняемых файлов, например в каталоге WINDOWS\system32. Пользователь, запускающий его, должен обладать правами администратора по отношению к сканируемым компьютерам. И, если текущий пользователь таковым не является, то в параметры запуска утилит PSlist.exe и PSkill.exe нужно добавить ключи, задающие имя пользователя и пароль.
    Этот командный файл несложен, но на практике не всегда применим, особенно когда в диапазоне IP- адресов есть большое количество выключенных компьютеров. Время выполнения в этом случае может быть неприемлемо большим. Для решения проблемы можно использовать опрос компьютеров по списку, полученному из сетевого окружения. Пример использования подобного приема найдете в статье «Командные файлы».

    Примеры использования утилиты PsShutdown в командных файлах можно найти в статье, посвященной планировщику NNcron.

    &nbsp &nbsp Веб-узел Sysinternals был создан в 1996 г. Марком Руссиновичем (Mark Russinovich) и Брюсом Когсвеллом (Bryce Cogswell) для размещения созданных ими усовершенствованных сервисных программ и технической информации, а в июле 2006 г. корпорация Microsoft приобрела компанию Sysinternals. После этого события, утилиты PsTools при первом запуске требуют подтверждения лицензионного соглашения в графическом окне, что может вызвать некоторые неудобства в случае, когда нет возможности сделать это подтверждение, например, на удаленном компьютере. Для решения данной проблемы используйте запуск утилит с ключом /accepteula (хотя бы 1 раз) или создайте командный файл с нужными вам утилитами пакета и выполните его на используемом компьютере:

    psexec.exe /accepteula
    psfile.exe /accepteula
    psgetsid.exe /accepteula
    Psinfo.exe /accepteula
    pskill.exe /accepteula
    pslist.exe /accepteula
    psloggedon.exe /accepteula
    psloglist.exe /accepteula
    pspasswd.exe /accepteula
    psservice.exe /accepteula
    psshutdown.exe /accepteula
    pssuspend.exe /accepteula

    &nbsp &nbsp При возникновении проблем с кодировкой кириллицы в командной строке, запустите редактор реестра и перейдите к разделу
    HKEY_CURRENT_USER\Console
    измените строковый параметр FaceName на Lucida Console и добавьте параметр типа REG_DWORD c именем CodePage присвоив ему десятичное (не шестнадцатеричное !!!) значение 1251.
    При работе в окне командного процессора, сменить кодовую страницу, можно с помощью команды CHCP
    CHCP — вывести номер текущей кодовой страницы
    CHCP 866 — установить кодовую страницу 866 (DOS)
    CHCP 1251 — установить кодовую страницу 1251 (Windows)

    Графическая оболочка для командной строки утилит PSTools .

    Front-end for PsTools (FePsTools) — программа графического интерфейса вокруг командной строки утилит пакета PsTools. Позволяет упростить создание нужных параметров для основных утилит пакета. В процессе заполнения полей и установки флажков, программа формирует требуемую для выполнения выбранной утилиты, командную строку, которую можно скопировать в буфер обмена, создать для нее ярлык, или выполнить непосредственно из среды FePsTools.

    Программа написана под .NET Framework 2.0 или старше. Инсталляция не требуется, но при первом запуске необходимо указать в настройках путь к используемому на данном компьютере пакету утилит PsTools — File — Settings — PsTools Directory.

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

    Устаревшая версия Pstools 2.44. ( приблизительно 1 Мб )

    Страница для скачивания текущей версии PSTools на сайте Microsft ( приблизительно 2 Мб )

    FePstools версии 2.0 ( приблизительно 370 кб )

    Если вы желаете поделиться ссылкой на эту страницу в своей социальной сети, пользуйтесь кнопкой «Поделиться»

    В начало &nbsp&nbsp&nbsp | &nbsp&nbsp&nbsp На главную страницу

  • Использование PsTools для управления другими ПК из командной строки

    На сегодняшнем уроке из серии Geek School, посвященной SysInternals, мы покажем вам, как использовать набор утилит PsTools для выполнения всех видов задач администрирования как локально, так и на удаленных компьютерах.

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

    Очевидно, что вы можете использовать удаленный рабочий стол или аналогичную службу для подключения к любому компьютеру с Windows и фактически видеть рабочий стол и делать все, что вы будете делать локально, но утилиты PsTools позволяют вам выполнять множество задач из командной строки — или, что еще лучше, из скрипт, который вы можете использовать позже.

    Это тот тип утилит, который лучше всего работает в корпоративной среде, и овладение этими инструментами определенно сделает вас намного лучше в работе по системному администрированию, сэкономит ваше время и позволит вам делать вещи намного умнее. Делать вещи умнее и быстрее — это важный навык для того, чтобы быть отличным сисадмином.

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

    • PsExec — выполняет процессы на удаленном компьютере
    • PsFile — показывает файлы, которые открываются на удаленном компьютере через сеть
    • PsGetSid — отображает идентификатор безопасности для компьютера или пользователя
    • PsInfo — выводит информацию о системе
    • PsKill — убивает процессы по имени или идентификатору
    • PsList — выводит информацию о процессах в командной строке
    • PsLoggedOn — список учетных записей, которые вошли в систему либо на компьютере или удаленного подключения
    • PsLogList — вытащить журнал событий из командной строки
    • PsPasswd — изменить пароль для пользователей
    • PsPing — довольно простая утилита ping с некоторыми дополнительными функциями
    • PsService — перечислять и вносить изменения в службы Windows
    • PsShutdown — выключить, выйти из системы или приостановить работу компьютера
    • PsSuspend — приостанавливать и возобновлять процессы (а не убивать их)

    Стоит отметить, что вы можете использовать такой инструмент, как PsExec, для запуска всех видов утилит командной строки на удаленных компьютерах, включая действительно полезные, такие как инструмент командной строки Autoruns и многие другие. Возможности безграничны, когда вы освоите мощь PsTools.

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

    Подключение к удаленным компьютерам (синтаксис для всех утилит)

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

    psinfo \\ имя_компьютера

    Вы также можете перечислить несколько компьютеров, таких как psinfo \\ computer1, computer2, computer3, или вы можете поместить все имена в файл и указать ссылку, например psinfo @ computerlist.txt. Последний синтаксис psinfo \\ *, который работает на всех компьютерах в домене, что, вероятно, не то, что вы будете использовать каждый день.

    Если вам нужно подключиться с альтернативными учетными данными, поскольку учетная запись вашего локального компьютера имеет другое имя пользователя и пароль, чем у другого компьютера, вы можете использовать опции -u и -p, хотя мы заметим, что вы можете не использовать -p для командная строка с паролем в команде по соображениям безопасности. Обновление: начиная с последней версии PsExec , ни один инструмент больше не передает пароли в виде открытого текста, поэтому единственное беспокойство — это если кто-нибудь сможет прочитать ваши файлы сценариев и увидеть пароль там.

    psinfo \\ имя_компьютера -u «пользователь» -p «пароль»

    Часть «user» команды изменится на «DOMAIN \ user», если вы находитесь в доменной среде и вам нужно перейти от текущего работающего пользователя.

    Примечание. Обычно вам необходимо подключаться к удаленным компьютерам с учетной записью администратора.

    Настройка доступа к удаленному администрированию

    Если вы находитесь в доменной среде, которой будет пользоваться большинство людей, которым необходимо использовать PsTools, вы можете полностью игнорировать этот раздел, поскольку все должно работать нормально. Для тех, кто работает под управлением Windows 7, 8 или Vista в домашней среде или использует несколько компьютеров в офисе без домена, вам потребуется настроить контроль учетных записей на удаленном компьютере, чтобы PsTools работал правильно.

    Проблема хорошо описана Microsoft :

    Когда пользователь, являющийся членом группы локальных администраторов на целевом удаленном компьютере, устанавливает удаленное административное соединение, например, с помощью команды net use * \\ remotecomputer \ Share $, он не будет подключаться как полный администратор. У пользователя нет возможности повышения прав на удаленном компьютере, и он не может выполнять административные задачи.

    Чтобы объяснить это по-другому, когда вы пытаетесь подключиться к другому компьютеру и запустить что-то, требующее доступа администратора, нет способа вызвать приглашение UAC и принять его с вашего компьютера, поэтому он не будет подключаться как администратор.

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

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

    Чтобы настроить UAC для запуска PsTools, вам нужно открыть редактор реестра и перейти к следующему ключу:

    HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \
    Windows \ CurrentVersion \ Policies \ System

    Когда вы окажетесь там, создайте новый 32-битный DWORD с правой стороны, присвойте ему имя LocalAccountTokenFilterPolicy и значение 1. Вам не нужно перезагружать компьютер, чтобы настройки вступили в силу.

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

    PsExec

    PsExec, вероятно, является самым мощным инструментом в наборе, так как вы можете выполнить любую команду в локальной командной строке так же, как и на удаленном компьютере. Это включает в себя все, что можно запустить из командной строки — вы можете изменить параметры реестра, запустить сценарии и утилиты или подключиться с этого компьютера к другому. Вывод команд будет показан на вашем локальном ПК, а не на удаленном.

    Синтаксис прост:

    psexec \\ computername <параметры> apptorun.exe <аргументы>

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

    psexec \\ имя_компьютера -u Пользователь -p Пароль ipconfig

    Эта команда выдаст вывод, подобный следующему:

    Если вы хотите передать вывод команды в другую команду или перенаправить вывод в файл, вы обычно просто делаете что-то вроде command.> C: \ users \ geek \ connections.txt

    В этом примере список открытых подключений, сгенерированных netstat, помещается в домашний каталог пользователя на удаленном компьютере в файл с именем connections.txt.

    Копирование программ на удаленный компьютер

    Вы не ограничены только приложениями на удаленном ПК при использовании PsExec, и фактически вы можете запускать все, что у вас есть локально. Например, если вы хотите выполнить проверку удаленной системы с помощью командной строки Autoruns, но на локальном компьютере у вас был только файл autorunsc.exe, вы можете использовать ключ -c, чтобы скопировать приложение. PsExec удалит инструмент из удаленной системы после завершения команды.

    Это важное время, чтобы упомянуть опцию -accepteula большинства инструментов SysInternals, которая обеспечит принятие лицензионного соглашения на компьютере, на котором была выполнена команда. Нам нужно добавить это в команду autorunsc.exe, иначе на удаленном компьютере произойдет сбой.

    psexec \\ имя_компьютера -c autorunsc.exe -accepteula

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

    Примечание. Если команда доступна только в командной строке, перед ней необходимо добавить cmd / c. Это включает в себя трубы и перенаправления, как | и>.

    Взаимодействие с зарегистрированным пользователем на удаленном ПК

    Вы можете использовать ключ -i, чтобы запустить приложение и позволить удаленному пользователю реально взаимодействовать с приложением. Возможно, вы захотите объединить это с ключом -d, который не ожидает завершения удаленного процесса, прежде чем PsExec вернет вам управление. Например, эта команда откроет окно «Блокнот» на удаленном компьютере:

    psexec \\ имя_компьютера -d -i блокнот

    Вы также можете выбрать запуск от имени пользователя SYSTEM с параметром -s, что может быть очень опасно. Например, если вы хотите открыть редактор реестра на своем компьютере, но с разрешениями уровня пользователя SYSTEM, вы можете запустить эту команду.

    psexec -i -d -s regedit.exe

    Если вам интересно, да, это даст вам доступ ко многим вещам, которые вы обычно не имеете права редактировать в реестре. И да, это действительно плохая идея.

    Запуск полной командной строки через PsExec

    Да, мы только что показали вам все эти примеры того, как выполнить одну команду через PsExec… и оказалось, что вы можете запустить полную оболочку на локальном компьютере, которая фактически работает на удаленном компьютере. Это как если бы вы были на консоли этого сервера (по большей части). И, к счастью, синтаксис для этого очень прост (добавьте имя пользователя, если вам нужно).

    psexec \\ computername cmd.exe

    После этого у вас будет командная строка, которая теперь запущена на удаленном ПК.

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

    Стоит отметить, что если вы хотите запускать команды PowerShell удаленно на другом компьютере , вы можете сделать это изначально с некоторыми изменениями конфигурации. К сожалению, PowerShell не очень хорошо работает с PsExec, если вы не используете кучу странных обходных путей, которые не стоят.

    Другие опции

    У команды psexec есть множество других действительно полезных опций, которые вы можете использовать — каждый из них будет использоваться в пробеле сразу после \\ computername и перед любой из других команд. Так что подумайте: psexec \\ computername -option <удаленная команда>.

    Если вы просто запустите команду psexec из командной строки без каких-либо дополнительных ключей, вы увидите их все.

    PsFile

    Эта команда показывает файлы, которые в данный момент открыты по сети на локальном или удаленном ПК, и работает аналогично команде Windows «net file». Синтаксис такой же, как и любая другая команда в наборе.

    psfile \\ имя_компьютера

    Да, этот не такой веселый, как последний.

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

    psfile \\ имя_компьютера <путь> -c

    PsGetSid

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

    PsInfo

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

    Если вы хотите получить гораздо больше информации из PsInfo, и я знаю, что вы это делаете, то вы можете использовать следующие параметры для добавления информации о диске (-d) и исправлений (-h), а также списка установленных приложений и их версий ( -s).

    psinfo -d -h -s

    Это дает намного больше информации, даже на почти пустой виртуальной машине:

    Вы также можете запустить PsInfo удаленно, добавив имя компьютера и, возможно, имя пользователя переключается … но есть одна большая проблема: он не будет работать, если не включена служба удаленного реестра. Перейдите в конец статьи, где мы поговорим о том, как включить его на удаленном компьютере.

    PsKill

    Эта команда очень проста — она ​​убивает процессы по имени или идентификатору, и вы можете использовать ключ -t для необязательного уничтожения всего дерева процессов.

    pskill \\ имя_компьютера <PID или имя>

    Проблема с PsKill состоит в том, что в последних версиях Windows есть очень мощная утилита для уничтожения задач, встроенная прямо в систему под названием Taskkill, которая имеет гораздо больше функций.

    PsList

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

    Примечание. Чтобы эта утилита работала на удаленном компьютере, вам нужно включить удаленную службу реестра. Обязательно прочитайте до конца урока, поскольку мы объясним, как с этим справиться позже.

    PsLoggedOn

    Эта утилита выводит список учетных записей, которые вошли в систему на компьютере или подключены удаленно. Это довольно просто и в значительной степени полезно в среде системного администратора.

    PsLogList

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

    psloglist \\ Компьютерная система

    Есть также опции -h, -d и -m, которые позволяют сузить список событий до последних x часов, дней или минут. Опция -n отображает список записей x, а ключ -r меняет порядок, поэтому самые последние записи будут в нижней части вывода. Последний параметр, который мы установили в этом примере как «Система», на самом деле не нужен — если вы его опустите, системный журнал всегда будет извлечен, но вы можете изменить его на «Приложение» или «Безопасность», чтобы вместо этого получать эти журналы.

    Стоит отметить, что если у вас есть доступ администратора к другому компьютеру, вы можете просто открыть Event Viewer и выбрать Connect из меню Action. Введите имя компьютера в списке, измените учетные данные, если вам нужно, и получите доступ к журналам событий таким образом.

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

    PsPasswd

    Эта утилита позволяет менять пароли для пользователей, как локальных, так и удаленных. Синтаксис такой же, как и все остальное:

    pspasswd \\ computer -u пароль пользователя -p <AccountToChange> <новый пароль>

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

    PsPing

    Эта утилита пингует, проверяет порты и выполняет тестирование задержки и пропускной способности. Довольно просто

    psping <имя_сервера>

    Или вы можете проверить подключение к порту, добавив номер порта следующим образом:

    psping <имя_сервера>: 80

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

    PsService

    Эта утилита позволяет вам иметь дело со службами Windows из командной строки. Это действительно довольно легко использовать — синтаксис работает так:

    psservice \\ имя_компьютера <команда> <аргументы>

    Список команд можно найти, посмотрев на справку /? вариантов, но есть несколько вариантов, которые вы найдете больше, чем остальные.

    • query — Запрашивает статус сервиса
    • config — Запрашивает конфигурацию
    • setconfig — устанавливает конфигурацию
    • start — запускает службу
    • stop — останавливает службу
    • restart — останавливает, а затем перезапускает службу
    • пауза — приостановка обслуживания
    • продолжение — Продолжает приостановленный сервис
    • зависимость — перечисляет сервисы, которые зависят от указанного
    • find — ищет экземпляр службы в сети
    • security — сообщает о разрешениях безопасности, назначенных службе.

    В частности, начало | остановить | пауза | перезапустить | Опции cont действительно просты и понятны. Например, в следующей команде вы можете заменить «запуск» любой из этих других команд.

    psservice \\ computername start <имя_службы>

    Другие параметры можно использовать для запроса дополнительной информации об услуге или изменения конфигурации.

    Примечание: встроенная утилита sc.exe имеет массу полезных функций, которые перекрываются с этой утилитой. Основное отличие заключается в том, что PsService немного более удобна для пользователя.

    PsShutdown

    Эта утилита позволяет выключить, выйти из системы или даже перевести компьютер в спящий режим. Проблема в том, что она не лучше встроенной утилиты shutdown.exe и фактически была разработана для Windows XP, поэтому в большинстве случаев рекомендуется использовать встроенную утилиту.

    Единственная опция, которую PsShutdown предоставляет, которую вы не можете получить иным способом, — это ключ (-d) для перевода компьютера в спящий режим, что может быть удобно.

    psshutdown \\ имя_компьютера -d

    Вы также можете использовать опцию -h, чтобы перевести компьютер в режим гибернации.

    PsSuspend

    Эта утилита очень похожа на PsKill, но она делает то, чего не может встроенная утилита Taskkill — вы можете приостанавливать процессы, а не уничтожать их, что может быть очень удобно, если вы хотите временно остановить процесс, интенсивно использующий процессор, из работает, пока вы выполняете задачу системного администратора.

    Приостановить процесс очень легко:

    pssuspend \\ computer <PID или имя>

    И возобновить этот процесс так же просто — все, что вам нужно сделать, это добавить ключ -r.

    pssuspend \\ computer -r <PID или имя>

    Когда утилиты не подключаются из-за удаленного реестра

    Некоторые из этих утилит, включая PsInfo, PsList, PsLogList и PsLoggedOn, требуют, чтобы удаленная служба реестра была включена на удаленном компьютере, и она не включена по умолчанию в современных версиях Windows.

    Хорошей новостью является то, что эту проблему легко устранить, и вам не нужно оставлять включенный удаленный реестр. Просто запустите эту команду, используя PsService, чтобы запустить службу:

    psservice \\ computername start RemoteRegistry

    И затем, когда вы закончите с тем, что вы делаете с PsInfo или PsList, вы можете снова остановить службу, используя эту команду:

    psservice \\ computername stop RemoteRegistry

    Простые решения — лучшие, не так ли?

    Следующий урок

    Обязательно присоединяйтесь к нам завтра, когда мы расскажем о файловых и дисковых утилитах и ​​еще нескольких интересных вещах.

    Использование PsTools для управления другими ПК из командной строки

    На сегодняшнем уроке из серии Geek School, посвященной SysInternals, мы покажем вам, как использовать набор утилит PsTools для выполнения всех видов задач администрирования как локально, так и на удаленных компьютерах.

    ШКОЛЬНАЯ НАВИГАЦИЯ

    1. Что такое инструменты SysInternals и как вы их используете?
    2. Понимание Process Explorer
    3. Использование Process Explorer для устранения неполадок и диагностики
    4. Понимание Process Monitor
    5. Использование Process Monitor для устранения неполадок и поиска взлома реестра
    6. Использование автозапуска для работы с процессами запуска и вредоносными программами
    7. Использование BgInfo для отображения системной информации на рабочем столе
    8. Использование PsTools для управления другими ПК из командной строки
    9. Анализ и управление вашими файлами, папками и дисками
    10. Заключение и совместное использование инструментов

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

    Очевидно, что вы можете использовать удаленный рабочий стол или аналогичную службу для подключения к любому компьютеру с ОС Windows и фактически видеть рабочий стол и делать все, что вы будете делать локально, но утилиты PsTools позволяют выполнять множество задач из командной строки — или, что еще лучше, из скрипт, который вы можете использовать позже.

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

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

    • PsExec — выполняет процессы на удаленном компьютере
    • PsFile — показывает файлы, которые открываются на удаленном компьютере через сеть
    • PsGetSid — отображает идентификатор безопасности для компьютера или пользователя
    • PsInfo — выводит информацию о системе
    • PsKill — убивает процессы по имени или идентификатору
    • PsList — выводит информацию о процессах в командной строке
    • PsLoggedOn — список учетных записей, которые вошли в систему либо на компьютере или удаленного подключения
    • PsLogList — вытащить журнал событий из командной строки
    • PsPasswd — изменить пароль для пользователей
    • PsPing — довольно простая утилита ping с некоторыми дополнительными функциями
    • PsService — перечислять и вносить изменения в службы Windows
    • PsShutdown — выключить, выйти из системы или приостановить работу компьютера
    • PsSuspend — приостанавливать и возобновлять процессы (а не убивать их)

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

    в том числе действительно полезные, такие как инструмент командной строки Autoruns и многое другое. Возможности безграничны, когда вы освоите мощь PsTools.

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

    Подключение к удаленным компьютерам (синтаксис для всех утилит)

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

    psinfo \\ имя_компьютера

    Вы также можете перечислить несколько компьютеров, таких как psinfo \\ computer1, computer2, computer3, или вы можете поместить все имена в файл и ссылку, например psinfo @ computerlist.txt. Последний синтаксис psinfo \\ *, который работает на всех компьютерах в домене, что, вероятно, не то, что вы будете использовать каждый день.

    Если вам нужно подключиться с альтернативными учетными данными, поскольку учетная запись вашего локального компьютера имеет другое имя пользователя и пароль, чем у другого компьютера, вы можете использовать параметры -u и -p, хотя мы заметим, что вы можете не использовать -p для командная строка с паролем в команде по соображениям безопасности. Обновление: начиная с последней версии PsExec, ни один инструмент больше не передает пароли в виде открытого текста, поэтому единственное беспокойство — это если кто-нибудь сможет прочитать ваши файлы сценариев и увидеть там пароль.

    psinfo \\ имя_компьютера -u «пользователь» -p «пароль»

    Часть «user» команды изменится на «DOMAIN \ user», если вы находитесь в доменной среде и вам нужно перейти от текущего работающего пользователя.

    Примечание. Обычно вам необходимо подключаться к удаленным компьютерам с учетной записью администратора.

    Настройка доступа к удаленному администрированию

    Если вы находитесь в доменной среде, которой будет пользоваться большинство людей, которым нужно использовать PsTools, вы можете полностью игнорировать этот раздел, поскольку все должно работать нормально. Для тех, кто работает под управлением Windows 7, 8 или Vista в домашней среде или использует несколько компьютеров в офисе без домена, вам потребуется настроить контроль учетных записей на удаленном компьютере, чтобы PsTools работал правильно.

    Проблема хорошо описана Microsoft:

    Когда пользователь, являющийся членом группы локальных администраторов на целевом удаленном компьютере, устанавливает удаленное административное соединение, например, с помощью команды net use * \\ remotecomputer \ Share $, он не будет подключаться как полный администратор. У пользователя нет возможности повышения прав на удаленном компьютере, и он не может выполнять административные задачи.

    Чтобы объяснить это по-другому, когда вы пытаетесь подключиться к другому компьютеру и запустить что-то, требующее доступа администратора, нет способа вызвать приглашение UAC и принять его с вашего компьютера, поэтому он не будет подключаться как администратор.

    И это не плохо. Вы не должны изменять этот параметр, не понимая полностью, что вы разрешите распространению вредоносного ПО с одного компьютера на другой — при условии, что у вредоносного ПО есть ваше локальное имя пользователя и пароль, и этот пароль совпадает с другим компьютером, и Вредоносные программы — это хитрость, а большинство — нет. Но это еще не то, что нужно воспринимать легкомысленно.

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

    Чтобы настроить UAC для запуска PsTools, вам нужно открыть редактор реестра и перейти к следующему ключу:

    HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \

    Windows \ CurrentVersion \ Policies \ System

    Когда вы окажетесь там, создайте новый 32-битный DWORD с правой стороны, дайте ему имя LocalAccountTokenFilterPolicy и значение 1. Вам не нужно перезагружать компьютер, чтобы настройки вступили в силу.

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

    PsExec

    PsExec, вероятно, является самым мощным инструментом в наборе, так как вы можете выполнить любую команду в локальной командной строке так же, как и на удаленном компьютере. Это включает в себя все, что можно запустить из командной строки — вы можете изменить параметры реестра, запустить сценарии и утилиты или подключиться с этого компьютера к другому. Вывод команд будет показан на вашем локальном ПК, а не на удаленном.

    Синтаксис прост:

    psexec \\ computernameapptorun.exe

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

    psexec \\ имя_компьютера -u Пользователь -p Пароль ipconfig

    Эта команда выдаст вывод, подобный следующему:

    Следующая страница: Использование PsExec для запуска удаленных команд

    PsExec64 — что это? (PSEXESVC)

    Небольшая утилита удаленного выполнения команд без необходимости установки в систему, например позволяет изменить некоторые параметры Windows, установить/деинсталлировать приложения.

    РЕКЛАМА

    Важно понимать:

    1. Название компонента содержит цифру 64 — видимо имеется ввиду, что компонент предназначен для 64-битных операционных систем.
    2. PsExec64 входит в состав PsTools (Sysinternals).
    3. Устанавливать PsExec64 не нужно, достаточно поместить в системный каталог, например System32, после — запустить используя системную консоль CMD / PowerShell.

    Суть работы:

    1. Внутри PsExec64 находится компонент PSEXESVC, представляющий из себя сервис (службу).
    2. Запуск команды используя PsExec64 подразумевает сперва установку сервиса в скрытую директорию Admin$ (зависит от версии).
    3. После установки — служба запускается. Между службой (PSEXESVC) и PsExec64 устанавливается обмен данными, необходимый для выполнения команды / получения результатов.
    4. Завершение выполнения команды подразумевает удаление службы.

    Шаблон:

    psexec64 \\названиеПК [-u юзер [-p пароль]] приложение [ключи]

    При отсутствии названия юзера/логина — команда будет выполнена на ПК, с которого запущена утилита (без доступа к сетевым данным удаленной машины). Пример — команда удаления кэша DNS (Domain Name System) удаленного ПК SRV1:

    psexec64 \\SRV1 ipconfig /flushdns

    РЕКЛАМА

    Итог: команда будет выполнена на удаленном ПК SRV1 используя вашу учетку. Консоль отобразит результат выполнения, включая код ошибки (0 при отсутствии).

    Выполнение нескольких команд. В таком случае рекомендуется установить сессию указав:

    psexec64 \\SRV1 cmd

    РЕКЛАМА

    Итог: команды можно выполнять без предварительного указания названия удаленной машины.

    Выполнение команд на нескольких ПК возможно используя следующий сценарий:

    psexec64 \\SRV1, SRV2

    Важно: запуск команды на всех доменах текущего ПК возможно при указании звездочки — psexec64 \\*

    Некоторые параметры (ключи):

    1. -c — исполняемый файл копируется на удаленную машину для дальнейшего запуска. Пример — psexec64 \\SRV1 -c file.exe. Отсутствие ключа подразумевает что папка удаленной машины уже содержит файл. Наличие файла не в системном каталоге подразумевает указание полного пути (при пробелах путь заключается в кавычки). PS: предположительно при использовании ключа -c можно также указать не только файл для копирования, но и путь, куда именно будет скопирован файл. Дополнительно можно использовать ключ -f — тогда при наличии файла он будет перезаписан, а при ключе -v файл будет перезаписан при условии что файл, который копируется — имеет более новую версию.
    2. -i — отключение скрытого режима работы на удаленном ПК.
    3. -d — отключение ожидания завершения работы запущенной программы.
    4. -h — запуск приложения с повышенными правами.
    5. -l — запуск приложения с правами группы Пользователи (вместо Администраторы).

    Помните, получить справку по командам можно просто введя PsExec64 и нажав энтер.

    Удачи.

    На главную! 25.02.2021

    РЕКЛАМА

    1000++ способ запуска команд на удаленном компьютере / Хабр


    В наше время даже для собак придумали удаленное управление.

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

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


    Когда-то давно я устроился работать в организацию в период эпидемии Kido\Conficker. Наиболее простым способом выяснить, все ли хорошо в ИС компании, была славная утилита от Касперского под названием Kido Killer, которая проверяла наличие вируса и устраняла его. Запускать программу на доброй сотне машин руками было невесело, поэтому пришлось знакомиться с автоматизацией.

    Если в операционных системах *nix для удаленного запуска, как правило, используется SSH, то у Windows способов запуска программ и скриптов воистину как песка в пустыне. Я разберу основные варианты, как общеизвестные, так и экзотические. Таких очевидных вещей как telnet-сервер касаться не буду, тем более Microsoft уже убрала его из современных ОС.



    Psexec

    Пожалуй, это первое, что приходит на ум, когда идет речь об удаленном запуске программ. Утилита от Марка Руссиновича используется еще со времен Windows NT и до сих пор применяется. Помимо основной функции, можно использовать ее и как Runas, и для запуска программ в пользовательской сессии терминального сервера. Psexec также позволяет задавать ядра процессора, на которых будет запускаться программа, и ее приоритет в системе.

    В качестве примера посмотрим, установлено ли обновление, закрывающее нашумевшую уязвимость SMB на списке компьютеров:

    psexec @computers.txt /u USER /p PASS cmd.exe /v /c ""systeminfo | find "KB4012212" || echo !computername! >> \\server\share\log.txt"""

    В файле computers.txt находится список компьютеров. Для запуска по всему домену можно использовать \\*. В файле \\server\share\log.txt будут появляться имена рабочих станций или серверов без обновления. Если в домене существуют компьютеры с *nix на борту или нет доступа к административному сетевому ресурсу Admin$ ― команда на этой машине не выполнится, но обработка продолжится. Чтобы скрипт не зависал при каждой попытке подключения, можно задать тайм-аут с помощью ключа -n.

    Если компьютер выключен ― мы об этом не узнаем. Поэтому лучше предварительно проверять доступность машин или собирать в файле информацию об успешном или неудачном выполнении.

    К минусам Psexec можно отнести то, что она из-за своего удобства и популярности часто используется вирусописателями. Поэтому антивирусные системы могут обнаруживать утилиту как опасность вида remote admin.

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


    WMIC

    Для управления системами Windows с помощью разных графических утилит часто используется WMI (Windows Management Instrumentation) ― реализация объектно-ориентированного стандарта управления WBEM. В качестве утилиты с графическим интерфейсом для работы с WMI можно использовать wbemtest.exe.

    Для работы с WMI из консоли создана wmic.exe. Например, для проверки установленных обновлений вместо жутковатой конструкции из предыдущего примера можно использовать простую команду:

    wmic /node:"servername" qfe get hotfixid | find "KB4012212"

    Использовать список компьютеров также можно командой /node:»@computers.txt».

    Еще при помощи WMI можно запускать программы – синтаксис предельно прост:

    wmic /node:"servername" process call create "cmd /c somecommands"

    К сожалению, в отличие от Psexec, получить вывод в консоли не получится ― придется выводить результаты команды в файл.

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


    Групповые политики и скрипты

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


    Скрипты, выполняющиеся при старте и завершении системы.


    Скрипты, выполняющиеся при входе и выходе пользователя из системы.

    Скрипты, настраиваемые в пользовательском разделе, выполняются от имени пользователя, а в разделе компьютера ― под аккаунтом SYSTEM.


    Назначенные задания

    Довольно интересный способ, заслуживающий право на жизнь. Назначенные задания можно создавать из командной строки при помощи утилиты schtasks.exe, выполнять их, затем удалять. Подробнее с синтаксисом можно ознакомиться в документации, я же разберу пример использования назначенных заданий в доменной среде. Предположим, нам нужно выполнить команду как можно быстрее вне зависимости от того, выключен компьютер или нет. Для этого используются так называемые предпочтения групповых политик (Group Policy Preference).

    Искать установку назначенных заданий следует в конфигурации компьютера или пользователя ― «Настройка ― Параметры панели управления ― Назначенные задания».


    Создание нового назначенного задания.

    Для выполнения команды или скрипта ASAP понадобится создать «Немедленную задачу (Windows 7 и выше)». Если вдруг в инфраструктуре остались машины под управлением Windows XP, то подойдет «Очередное задание (Windows XP)».

    Стоит сделать несколько политик с соответствующими WMI-фильтрами или создать два разных назначенных задания в одной политике с нацеливанием ― например, при помощи того же WMI-фильтра. Это поможет избежать конфликтов в разнородной среде со старыми и новыми Windows.

    Пример WMI-фильтра для применения политики только на компьютерах с Windows XP:

    SELECT * FROM Win32_OperatingSystem WHERE Version LIKE "5.1%" AND ProductType = "1"

    В остальном процедура создания назначенного задания тривиальна. Единственное, не забывайте отметить пункт «Применить один раз и не применять повторно», если задача не требует повторного запуска.


    Запускаем немедленную задачу только один раз.

    При использовании таких назначенных заданий программа запустится, как только компьютер получит обновление групповой политики. Это удобно: не нужно проверять доступность компьютеров в случае Psexec и wmic и заставлять пользователей перезагружать машины, как в случае скриптов групповых политик. При необходимости можно скопировать файл скрипта локально в разделе «Настройка ― Конфигурация Windows ― Файлы».

    Назначенные задания позволяют явно задать имя пользователя для запуска программы, в том числе и для SYSTEM.


    Через реестр

    Модификация реестра на пользовательских машинах ― странный вариант, лишь на случай крайней необходимости. Можно использовать ветки Run или RunOnce. Подробнее о них ― в документации. Сама модификация реестра может проводиться через групповые политики или из командной строки ― например, такой командой:

    reg add \\COMPUTER\HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce /v script /t Reg_SZ /d "script.cmd"

    В зависимости от ветки реестра, процесс будет выполняться или под пользователем, выполнившим вход в систему, или под аккаунтом SYSTEM.

    Есть и другие способы, такие как правка ярлыков в папке «Автозагрузка» или добавление в ярлык к популярной программе && script.cmd, но эти методы уже из серии «можно, но не нужно».

    Теперь перейдем к новым инструментам.


    PowerShell, оправдывая свое название, может подключаться к удаленным компьютерам при помощи WMI, RPC и WS-Management (WSMan). Использование последнего метода требует предварительной настройки.

    Командлеты, не требующие предварительной настройки, как правило, имеют параметр ComputerName, но не имеют параметра Session. Посмотреть список таких командлетов можно командой:

    Get-Command | where { $_.parameters.keys -contains "ComputerName" -and $_.parameters.keys -notcontains "Session"}

    Для настройки WSMan в общем случае достаточно выполнить команду Enable-PSRemoting-Force. Она запустит службу удаленного управления WinRM и пропишет исключения в фаерволе ― в принципе, это можно сделать для всего домена при помощи групповых политик. Подробнее настройка описана в документации.

    После того как все компьютеры будут готовы принимать запросы, мы сможем подключаться при помощи соответствующих командлетов PowerShell. Для проверки возможности подключения используется командлет Test-WSMan.


    Проверка возможности подключения.

    Для того чтобы выполнить определенную команду или скрипт, используется командлет Invoke-Command со следующим синтаксисом:

    Invoke-Command -ComputerName COMPUTER -ScriptBlock { COMMAND } -credential USERNAME

    Где COMPUTER ― имя компьютера, COMMAND ―– имя команды, а USERNAME ― имя пользователя, если оно нужно.


    Смотрим содержимое диска С удаленного компьютера.

    Если же нам нужно получить полноценную консоль ― не автоматизации ради, а ради управления конкретным компьютером, ― то можно использовать командлет Enter-PSSession.


    Работаем в консоли удаленного компьютера.

    Напомню, что с помощью JEA можно ограничить доступные подобной сессии командлеты или дать доступ нужным без прав администратора.

    Конечно, кроме встроенных средств и небольших утилит, существует множество программ для управления структурой. Помимо взрослых решений, для управления конфигурациями вроде Chef, Ansible и MS SCCM можно использовать и средства мониторинга вроде Zabbix, и даже консоль управления антивирусом Касперского.

    В период гетерогенных структур хорошо бы иметь возможность унифицированного управления Windows и Linux. Это можно сделать и с помощью PowerShell, что само по себе достойно отдельной статьи ― стоит такую сделать или уже лишнее?

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

    Пакет утилит Sysinternals Suite.

        Инструменты Sysinternals — это набор бесплатных программ для администрирования и мониторинга компьютеров под управления операционных систем Windows. Изначально программы Sysinternals (Winternals) разрабатывались компанией Winternals Software LP под руководством двух разработчиков — Марка Руссиновича (Mark Russinovich) и Брайса Когсуэлла (Bryce Cogswell). В июле 2006 года корпорация Microsoft приобрела компанию Winternals Software LP и всю её продукцию. В настоящее время веб-сайт Sysinternals переехал на веб-портал Microsoft и стал частью Microsoft TechNet. В составе Microsoft Technet теперь имеется раздел Windows Sysinternals , где можно скачать полный набор утилит Sysinternals Suit в виде архива, либо отдельные утилиты из его состава.

    В настоящее время, пакет инструментов Windows Sysinternals может использоваться даже без загрузки на локальный компьютер благодаря возможности совместного доступа к ресурсу Sysinternals Live, который может быть подключен в качестве сетевого диска. Хотя, стоит отметить, что быстродействие данного ресурса оставляет желать лучшего и скорее всего его можно рассматривать как аварийный вариант работы.

    С сетевым диском, конечно, скорость обмена данными гораздо ниже, чем с локальным, но с ним можно без проблем работать, как с обычным локальным диском, в том числе и в командной строке. Так, например, командой

    start R:\autoruns.exe

    утилита autoruns.exe может быть запущена в отдельном окне. Таким образом, находясь в любом месте, где есть доступ в Интернет, можно воспользоваться самым функциональным и эффективным набором инструментов для Windows – Sysinternals Suite.

        Большинство утилит пакета Sysinternals Suite для получения полной функциональности требуют наличия административных привилегий. Для операционных систем семейства Windows 2000/XP достаточно того, чтобы пользователь работал под учетной записью члена группы администраторов. В среде операционных систем Widows Vista/Windows 7 необходим запуск утилит с использованием пункта контекстного меню «Запустить от имени администратора». Командные файлы, в которых используются утилиты командной строки, также должны выполняться в контексте учетной записи с привилегиями администратора.

    Пакет Sysinternals Suite включает в себя несколько десятков небольших утилит, как консольных, так и с графическим интерфейсом, многие из которых широко известны в среде системных администраторов и продвинутых пользователей — пакет программ PSTools, утилиты мониторинга Process Monitor, Autoruns, Process Explorer, антируткит RootkitRevealer и т.д. Многие из них рассматриваются в отдельных статьях, ссылки на которые найдете на главной странице сайта в разделе Windows . Пакет Sysinternals Suite обновляется несколько раз в год, состав его может изменяться — меняются версии программ, некоторые из утилит удаляются, некоторые добавляются, но основной набор существует более десяти лет, что говорит о его востребованности в среде администраторов и грамотных пользователей операционных систем семейства Windows. Параметры командной строки консольных утилит и графический интерфейс пользователя для большинства программ очень схожи, что значительно облегчает их практическое использование.

    AccessChk

    Accesschk — консольная утилита для просмотра прав доступа пользователя к файлам, каталогам, ключам и разделам реестра, процессам и потокам.

    accesschk -u user1 -c MpsSvc -v — отобразить права пользователя user1 по отношению к службе MpsSvc (Брандмауэр Windows 7. Напомню, что в среде Windows Vista/Windows 7 утилита Accesschk должна запускаться от имени администратора). Ключ -v означает подробный вывод результатов. Если это ключ не задан, то права пользователя индицируются символами R (Read) и W (Write). Отображение R означает разрешение на просмотр состояния (Query_Status), конфигурации (Query_Config) и запуск (Service_Start) службы. W означает наличие права на изменения конфигурации и состояния службы. Комбинация RW означает, что имеется доступ к любым допустимым действиям по отношению к службе. (Service_All_Access). Если задан ключ -v то вместо символов R и WR отображается описание прав доступа, как, например Service_All_Access — разрешен полный доступ

    accesschk -c MpsSvc -w -v — отобразить список учетных записей, имеющих право полного доступа (ключ -w ) к службе MpsSvc.

    accesschk -u user1 -c * -w -v — отобразить список служб, к которым пользователь user1 имеет полный доступ.

    accesschk -u user1 -k hklm\security — отобразить права доступа пользователя user1 к подразделам раздела HKLM\SECURITY реестра.

    accesschk -u user1 -k hklm\security -d — ключ -d означает обработку только верхнего уровня (каталога файловой системы или раздела реестра)

    accesschk -u user1 C:\Users -d — отобразить права пользователя user1 по отношению к каталогу C:\Users

    accesschk -u user1 C:\Users — отобразить права пользователя user1 по отношению к подкаталогам каталога C:\Users

    accesschk C:\Users -w — отобразить список учетных записей, имеющий полный доступ к каталогу C:\Users

    accesschk -u user1 -p wininit -v — отобразить права пользователя user1 по отношению к процессу wininit

    К сожалению, утилита accesschk не умеет (по крайней мере, на момент написания статьи — не умела ) работать с именами учетных записей, служб и каталогов, содержащих символы русского алфавита.

    AccessEnum

    AccessEnum — утилита для просмотра прав учетных записей по отношению к элементам файловой системы и реестра Windows.

    Полученные данные можно сохранить (кнопка Save) и использовать в дальнейшем для анализа и обнаружения изменений в правах доступа к файлам, каталогам, разделам и ключам реестра (меню File — Compare to Saved. . . ) .

    CacheSet

    Утилита CacheSet — это приложение, позволяющее управлять параметрами рабочего набора (Working Set) кэша файлов системы. Используется для подбора оптимальных параметров и увеличения скорости и стабильности работы ПК. Изменяя минимальные и максимальные значения размера рабочего кэш, можно добиться некоторого увеличения производительности системы.

    Установка новых значений минимума и максимума происходит при нажатии на кнопку Apply. Кнопка Reset позволяет вернуть значения минимального и максимального размера кэш, которые были заданы на момент запуска утилиты.

    Contig

    Contig — утилита командной строки для увеличения производительности системы путем дефрагментации отдельных, часто используемых файлов. Удобно использовать для дефрагментации файлов виртуальных машин, образов ISO на загрузочных флешках с использованием загрузчика Grub, которому может потребоваться не фрагментированный файл-образ, для дефрагментации некоторых, часто считываемых с диска файлов.

    Contig.exe /? — выдать справку по использованию утилиты.

    Contig.exe -a E:\LiveCD.iso — провести анализ на фрагментированность файла E:\LiveCD.iso

    Contig.exe E:\LiveCD.iso — выполнить дефрагментацию заданного файла.

    Contig.exe -a -s C:\windows\*.exe — выполнить анализ всех файлов с расширением exe в каталоге C:\Windows и его подкаталогах (ключ -s)

    Contig.exe C:\windows\system32\*.exe — дефрагментировать все файлы с расширением exe в системном каталоге C:\Windows\System32

    Повышение производительности системы при целенаправленном использовании Contig.exe как правило, выше по сравнению с тем, что может быть получено при использовании стандартных средств дефрагментации Windows.

    Disk2vhd

    Утилита Disk2vhd используется для создания виртуального жесткого диска формата VHD виртуальной машины Microsoft (Virtual Hard Disk — Microsoft’s Virtual Machine disk format) на основе данных физического диска реальной машины. Операция по созданию диска виртуальной машины может выполняться непосредственно в среде работающей ОС. Графический интерфейс пользователя программы Disk2vhd позволяет выбрать для преобразования любой из логических дисков реального компьютера и преобразовать его в виртуальный диск, который можно будет использовать для работы в среде виртуальной машины Microsoft Virtual PC.

    DiskMon

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

    В основном окне программы отображается номер диска в системе (колонка Disk), тип операции (колонка Requst), номер сектора на диске, к которому выполнялось обращение (колонка Sector), и размер поля данных (колонка Lenth). При необходимости определить к какому файлу имеет отношение сектор с определенным номером, можно воспользоваться консольной утилитой NFI.EXE (NTFS File Sector Information Utility) из состава пакета Support Tools от Microsoft. Скачать 10кб
    Формат командной строки
    nfi.exe Диск Номер сектора
    nfi.exe C: 655234 — отобразить имя файла, которому принадлежит сектор 655234
    nfi.exe C: 0xBF5E34 — то же самое, но номер сектора задан в шестнадцатеричной системе счисления
    В результате выполнения команды будет выдано сообщение

    ***Logical sector 12541492 (0xbf5e34) on drive C is in file number 49502.
    \WINDOWS\ system32\ D3DCompiler_38.dll

    Т.е. интересующий нас сектор принадлежит файлу D3DCompiler_38.dll в каталоге Windows\system32.

    DiskView

    Программа DiskView позволяет получить в графическом виде карту использования дискового пространства:

    Выбор диска для просмотра выполняется в поле Volume нижней части окна программы. После выбора диска и нажатия кнопки Refresh программа выполняет сканирование и вывод карты расположения файлов и каталогов. В нижнем окне отображается своеобразная шкала расположения данных относительно начала диска. Цвет участка соответствует характерным особенностям отображаемых групп кластеров . Для получения справки по цветовой маркировке можно воспользоваться меню Help — Legend. . . :

    First cluster of the fragment — цвет начального кластера в цепочке.
    Contiguous file cluster — кластер принадлежит непрерывному (не фрагментированному) файлу.
    Ftagmented file cluster — кластер принадлежит фрагментированному файлу.
    System file cluster — кластер принадлежит системному файлу
    Unused cluster — кластер принадлежит свободному пространству
    Unused cluster in MFT zone — свободный кластер в зоне MFT оглавления диска
    User Highlighted File cluster — кластер принадлежит выбранному пользователем файлу.

    В верхнем окне отображается более детализированная карта расположения данных. Полоса прокрутки позволяет выбрать зону отображения. Выбор указателем любой точки дискового пространства в нижнем окне, вызывает отображение карты кластеров для выбранного участка файловой системы в верхнем. Для изменения уровня детализации карты служит кнопка Zoom в нижней части основного окна программы. Щелчок на карте кластеров в верхнем окне приведет к отображению имени файла в поле HighLight и выделению цветом группы соответствующих ему кластеров. Двойной щелчок на поле отображаемых кластеров, в верхнем окне, вызывает окно свойств:

    Для отображения степени использования диска и информации о количестве файлов и фрагментов используется меню «File» — «Statistics»

    DU

    du.exe — утилита командной строки для определения статистики использования дискового пространства в каталогах файловой системы Windows. Для получения перечня ключей можно выполнить запуск du.exe без параметров, или с параметром /?. Примеры использования утилиты:

    du.exe C:\ — отобразить информацию об использовании корневого каталога диска C: — число файлов, подкаталогов и размер занимаемого дискового пространства.

    FileMon

    FileMon (File Monitor) — утилита для отслеживания в режиме реального времени всей активности файловой системы. Позволяет определить, какие процессы обращаются к файлам и каталогам, какие операции и над какими объектами файловой системой выполняются. В настоящее время утилита FileMon заменена утилитой Process Monitor (ProcMon). Подробное описание и порядок использования обеих программ приведены в отдельных статьях:

    Filemon — отслеживание обращений к файловой системе.

    Process Monitor — отслеживание активности процессов Windows.

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

    MoveFile

    MoveFile позволяет выполнить удаление или перенос файла при следующей перезагрузке Windows. Используется в тех случаях, когда файл монопольно захвачен каким-либо приложением или сервисом и удалить или перенести его обычными средствами невозможно. Пример использования:

    movefile.exe «C:\Documents And Settings\user\Local Settings\TEMP\svchost.exe» C:\virus\svchost.ex_

    Операцию по переносу файла реально выполняет диспетчер сеансов Windows (Session Manager SMSS.EXE), который в процессе загрузки системы считывает зарегистрированные утилитой MoveFile команды переименования и удаления из ключа реестра
    HKLM\ System\ CurrentControlSet\ Control\ Session Manager\ PendingFileRenameOperations .
    После выполнения переноса, данный ключ реестра будет удален. Для просмотра запланированных утилитой MoveFile переносов можно воспользоваться утилитой PendMoves из набора Sysinternals Suite.

    PageDefrag

    PageDefrag (pagedfrg.exe) по популярности многие годы находится на 4-5 месте среди утилит от Sysinternals. Позволяет повысить быстродействие системы путем дефрагментации файлов реестра (файлов SYSTEM, SOFTWARE, SAM, SECURITY,DEFAULT каталога \windows\system32\config), журналов системы ( в этом же каталоге ) и файла подкачки (pagefile.sys).

    После запуска, утилита выводит перечень файлов, которые могут быть обработаны и степень их фрагментации.

    Для дефрагментации используется создаваемая утилитой системная служба pgdfgsvc.exe и, как и в случае с утилитой MoveFile, — диспетчер сеансов Windows (SMSS.EXE (аббревиатура от англ. Session Manager Subsystem Service) — подсистема управления сеансами в Windows) . Диспетчер сеансов в процессе загрузки системы обрабатывает ключ реестра
    HKLM\ SYSTEM\ CurrentControlSet\ Control\ Session Manager\ BootExecute
    В данном ключе содержится информация о тех программах, которые должны быть выполнены диспетчером SMSS.EXE в процессе начальной загрузки Windows. Стандартно — это программы проверки файловой системы. Утилита PageDefrag добавляет в данный ключ команды, обеспечивающие запуск службы pgdfgsvc и, соответственно, дефрагментацию системных файлов, выполняемую до того, как они потребуются для развертывания системы. При необходимости, можно отменить дефрагментацию, выполнить ее однократно, или установить режим выполнения при каждой загрузке Windows.

    Программу PageDefrag можно запускать в консольном режиме, регулируя настройки с помощью параметров командной строки.

    pagedefrag [-e | -o | -n] [-t ]

    -e — Дефрагментация при каждой загрузке
    -o — Однократная дефрагментация
    -n — отмена дефрагментации
    -t — Обратный отсчет времени в секундах перед началом дефрагментации

    Примеры:

    pagedefrag -e -t 10 — выполнять дефрагментацию при каждой загрузке и установить режим ожидания 10 секунд для отмены выполнения при нажатии пользователем любой клавиши.

    pagedefrag -o — выполнить однократную дефрагментацию при следующей перезагрузке системы.

    pagedefrag -n — отменить ранее запланированную дефрагментацию.

    Утилиты Sysinternals Suite для работы с сетью.

    ADRestore

    ADRestore позволяет просмотреть список удаленных объектов Active Directory (AD) и, при необходимости, — восстановить выбранные. Для получения справки используется ключ /? . При запуске без параметров утилита выводит список объектов AD, помеченных как удаленные.

    Примеры :

    adrestore > C:\adodel.txt — вывести список всех объектов AD, помеченных как удаленные, в файл C:\adodel.txt
    adrestore.exe laserjet — вывести список удаленных объектов AD, в имени которых содержится строка «laserjet»
    adrestore -r — вывести список объектов AD с запросом на восстановление.
    adrestore -r — вывести список объектов AD с запросом на восстановление.

    ADinsight

    ADInsight — утилита для наблюдения за обменом данными между клиентом и сервером по протоколу LDAP. Очень полезна при поиске причин ненормальной работы служб и приложений в среде Active Directory , отслеживании разрешений, поиске причин низкой производительности, и просто для изучения механизма взаимодействия объектов AD.

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

    Фильтры для поиска и подсветки событий используются так же, как и в большинстве утилит Sysinternals с графической оболочкой. При настройках по умолчанию, строки подсвеченные красным цветом, относятся к событиям, завершившимся с ошибкой. Контекстное меню также позволяет непосредственно из среды ADInsight вызвать другую программу из состава пакета Sysinternals Suite — проводник Active Directory ADExplorer , используемую для просмотра структуры данных AD и по возможностям и интерфейсу пользователя схожей с утилитой ADSIEdit от Microsoft. TCPView

    TCPView — стабильно входит в десятку наиболее популярных утилит пакета Sysinternals Suite. Используется для отображения списка всех установленных в системе соединений по протоколам TCP и UDP с подробными данными, в том числе с указанием локальных и удаленных адресов и состояния TCP-соединений. В операционных системах Windows XP и старше, программа TCPView также отображает имя процесса, которому принадлежит данное соединение. В некотором смысле, TCPView является дополнением стандартной утилиты операционной системы Windows Netstat.exe, но кроме представления данных о соединениях в удобной форме, позволяет выполнить дополнительные действия — разорвать конкретное соединение, завершить процесс, создавший соединение и определить имя хоста, участвующего в соединении.

    Контекстное меню, вызываемое правой кнопкой мышки позволяет выполнять определенные действия над выбранным соединением:

    Procees Properties — отобразить свойства процесса, связанного с данным соединением. Отображается название процесса, версия, имя и путь исполняемого файла.

    End Process — завершить процесс, связанный с данным соединением.

    Close Connection — принудительно завершить выбранное соединение .

    Whois — выполнить запрос на получение данных об узле, участвующем в данном соединении.

    Copy — скопировать в буфер обмена информацию данной строки.

    С использованием основного меню программы можно сохранить данные о всех текущих соединениях в текстовый файл ( меню File — Save ) . В составе пакета Sysinternals Suite, кроме программы TCPView имеется консольный вариант Tcpvcon с теми же функциональными возможностями.

    Утилиты Sysinternals Suite для анализа сведений о процессах .

    Autoruns — утилита для отслеживания точек автоматического запуска программ. Статья об Autoruns размещена в разделе «Безопасность».
    Process Monitor — утилита для отслеживания активности процессов в Windows (использование памяти, процессора, обращения к файлам и реестру, сетевая активность и т.п.).
    Process Explorer — утилита для наблюдения за использованием ресурсов системы отдельными процессами.
    PSTools — набор утилит командной строки для удаленного запуска приложений (PSExec), получения списка процессов на локальном или удаленном компьютере (PSList), принудительного завершения задач (Pskill), управления службами (PSService) . Кроме того, в набор PsTools входят служебные программы для перезагрузки или выключения компьютеров, вывода содержимого журналов событий, поиска зарегистрированных по сети пользователей и многое другое.

    ListDLLs

    ListDLLs — утилита командной строки для получения списка используемых библиотек DLL отдельными процессами. При запуске без параметров, на экран выводится список всех процессов и всех загруженных библиотек. Подсказку по применению утилиты можно получить с использованием ключа /?. Формат командной строки:

    listdlls [-r] [-v | -u] [processname|pid]
    или
    listdlls [-r] [-v] [-d dllname]

    processname — имя ( или часть имени) процесса, для которого нужно отобразить список загруженных DLL.
    pid — идентификатор процесса, для которого нужно отобразить список загруженных DLL .
    -d dllname — имя библиотеки DLL.
    -r отображать DLL , которые перемещены, так как не загружены по их базовому адресу
    -u — отображать только те модули, которые не имеют цифровой подписи.
    -v — отображать версию библиотеки DLL .

    Примеры использования :

    listdlls — отобразить список всех процессов и всех загруженных библиотек DLL

    listdlls > C:\listdlls.txt — сохранить в текстовый файл с именем C:\listdlls.txt список всех процессов и всех загруженных библиотек DLL

    listdlls win — отобразить список DLL для все процессов, имя которых начинается со строки «win»

    listdlls winlogon — отобразить список DLL , используемых процессом winlogon

    listdlls 495 — отобразить список DLL , используемых процессом с номером идентификатора PID=495

    listdlls -d ntdll.dll — отобразить список процессов, использующих библиотеку ntdll.dll

    Handle

    Handle — утилита командной строки для отображения информации открытых дескрипторах (хэндлах) для любого процесса в системе. Она позволяет посмотреть, какие программы открыли файл, с какими правами доступа, типы объектов и имена дескрипторов программы, а также, при необходимости, принудительно закрыть файл по номеру его дескриптора. При запуске без параметров, на экран выводится полный список дескрипторов всех открытых на данный момент файлов. Подсказку по использованию программы, можно получить введя ключ /?. Формат командной строки:

    handle [[-a [-l]] [-u] | [-c [-y]] | [-s]] [-p |] [name]
    -a — вывод информации о всех дескрипторах.
    -c — закрыть файл с указанным номером дескриптора. Необходимо учитывать, что принудительное закрытие файла, может вызвать аварийное завершение процесса или потерю данных.
    -y — не требовать подтверждения при закрытии дескриптора файла.
    -s — отображать счетчики для каждого типа открытых дескрипторов.
    -u — отображать имя пользователя, в контексте учетной записи которого открыт файл.
    -p — отображать дескрипторы, открытые процессом с указанным именем (частью имени). или идентификатором PID

    Примеры использования:

    handle | more — отобразить список всех открытых дескрипторов всех процессов в режиме постраничного вывода на экран.
    handle -p winlogon — отобразить список дескрипторов файлов, открытых процессом с именем winlogon
    handle -p winlogon > C:\winlogonh.txt — то же, что и в предыдущем случае, но с перенаправлением вывода в файл C:\winlogonh.txt
    handle -u — вывести список всех дескрипторов файлов всех процессов с отображением учетной записи, связанной с процессом.
    handle -u user1 — отобразить список дескрипторов файлов, открытых в контексте учетной записи пользователя с именем «user1»
    handle -s — отобразить счетчики по каждому типу и суммарное число открытых дескрипторов.

    Утилиты безопасности пакета Sysinternals Suite .

    К утилитам безопасности можно отнести и программы для определения точек автоматического запуска (Autoruns), наблюдения за процессами (ProcMon), проверки прав доступа к ресурсам системы и т.п. Но, кроме того, в пакет Sysinternals Suite входит утилита RootkitRevealer основным предназначением которой является обнаружение rootkit-средств (руткитов) при заражении системы вирусами, реализующими специальные механизмы скрытия своего присутствия в системе.

    Термин «rootkit» по отношению к программам-шпионам, троянам, и прочему вредоносному ПО, означает, что для сокрытия своего присутствия от антивирусных программ, используется перехват системных функций и коррекция результатов их выполнения таким образом, чтобы не было возможности обнаружить некоторые файлы, каталоги и сетевые соединения, создаваемые вредоносной программой. Так, например, при запросе списка файлов в каталоге, из результатов может быть удалена информация о файле самого вируса. Реально такой файл присутствует в файловой системе, но для программных средств, использующих функции API, перехваченные вирусом, он невидим. Rootkit-программы подразделяются на несколько классов в зависимости от способности сохранять работоспособность после перезагрузки компьютера и типа запуска (в пользовательском режиме или в режиме ядра). Но главный признак руткитов — это перехват и коррекция результатов системных вызовов.

    Принцип работы RootkitRevealer основан на использовании кроме стандартных функций API-интерфейсов для файловой системы и реестра, своих собственных подпрограмм, реализующих эти же функции. Несоответствие полученных результатов может означать наличие rootkit-программы. RootkitRevealer выполняет сканирование реестра и файловой системы при нажатии кнопки Scan и результаты своей работы отображает в основном окне.

        Path — путь файла или ключа реестра.
    Timestamp — Время модификации.
    Size — размер
    Description — описание события — признак возможного наличия rootkit в системе.

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

    В первую очередь, должны настораживать файлы и ключи реестра, для которых в поле Description) присутствует описание события «Hidden from Windows API» — скрыто от API-интерфейса Windows. В подавляющем большинстве случаев — строка результатов сканирования указывает на наличие rootkit , поскольку, скрытыми от Windows API обычно бывают только служебные файлы, относящиеся к файловой системе NTFS ( имена которых начинаются со знака $ — $BitMap, $BadClus, $MFT и т.п. ) При сканировании можно отключить отображение событий, связанных с стандартными скрытыми служебными файлами используя меню Options — поставить галочку для пункта Hide Standard NTFS Metadata Files . Кроме того, нужно учитывать, что некоторые антивирусы прячут свои файлы от Windows API таким же образом, как и вредоносные программы, и каждая строка результатов сканирования с признаком Hidden from Windows API требует дополнительного анализа — в каком каталоге находится скрытый файл, его имя, расширение, размер, время модификации. В приведенном выше примере сканирования, скрытыми от Windows API являются файлы с расширением .sys , расположенные в каталоге драйверов (C:\Windows\system32\drivers) и имеющие размер в десятки килобайт — это и есть драйверы rootkit.

    Другие возможные описания события в поле Description могут быть ложной тревогой и говорить о том, что выполнение какой-либо функции API завершилось подозрительным результатом. Обычно это вызвано тем, что в процессе сканирования в мультизадачной среде Windows, какая-то из программ выполнила модификацию проверяемых данных или легальное программное обеспечение использует специализированные методы, схожие с теми, которыми пользуются создатели вирусов.

    Key name contains embedded nulls — имя ключа реестра содержит пробелы, что может сделать такой ключ невидимым для стандартного редактора реестра.

    Data mismatch between Windows API and raw hive data — несоответствие данных ключа реестра, полученных с использованием Windows API и реальных данных куста реестра. Может быть вызвано изменением данных реестра, которое произошло в процессе сканирования.

    Access denied — доступ запрещен. На практике, такое описание встречается при наличии установленных в системе средств эмуляции CD/DVD приводов ( Alcohol 120, Daemon Tools) , некоторых антивирусных продуктов, использующих драйвер SPTD.SYS .

    Необходимо учитывать, что RootkitRevealer выполняет сканирование из своей копии со случайным именем файла, запущенной как служба Windows. Такой тип запуска делает затруднительным его обнаружение вирусами и принудительное завершение процедуры сканирования. Поэтому, наличие процесса с невразумительным именем при работе RootkitRevealer является нормальным, но бывают случаи, когда вирус блокирует запуск программы, например, по имени «RootkitRevealer». В этом случае, программа просто не запускается, что, кстати, уже является очень весомым признаком наличия вируса в системе. В таком случае, можно просто переименовать исполняемый файл RootkitRevealer.exe, а еще лучше скопировать его в текущем каталоге под другим случайным именем .

    Существует возможность запуска RootkitRevealer с параметрами в командной строке:

    rootkitrevealer [-a] [-c] [-m] [-r] [logfile]

    -a — автоматически выполнить сканирование и завершиться.
    -c — сформировать результаты сканирования в формате CSV
    -m — выполнять сканирование метаданных NTFS
    -r — не выполнять сканирование реестра Windows
    logfile — имя и путь файла для записи результатов сканирования.

    Пример запуска:

    rootkitrevealer -a C:\RRevealer.log — выполнить сканирование с записью в файл C:\RRevealer.log и завершиться.

    Если вы желаете поделиться ссылкой на эту страницу в своей социальной сети, пользуйтесь кнопкой «Поделиться»

    Выполнение консольных команд на удаленных компьютерах по сети / Argon / Blog

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

    Я использую 2 средства удаленного выполнения консольных команд: PsExec и WinRM, у каждого из них есть свои преимущества.

    PsExec

    Одним из отличных решений поставленной в заголовке задачи является использование программы PsExec от великого Марка Руссиновича.

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

    Если PsExec запускается от имени администратора, который входит в тот же домен, что и удаленны компьютер, то никаких учетных данных даже вводить не нужно. В противном случае, их можно указать в командной строке, либо PsExec сама их запросит. PsExec работает на ОС начиная с Windows 2000 и заканчивая 64-битным Windows Server 2008 R2.

    Очень полезными в PsExec являются следующие возможности:

    • Выполнение команды на группе компьютеров. Пример: следующая команда позволяет принудительно применить самые свежие групповые политики:
      psexec @group.txt gpupdate /force
    • Выполнение команд от имени системной учетной записи. Пример: следующая команда заставит удаленную систему принудительно проверить обновления:
      psexec \\computer -s wuauclt /detectnow
    • Копирование выполняемой программы на удаленный компьютер перед выполнением. Пример: следующая команда позволит обновить членство данного компьютера в группе безопасности Active Directory (токен доступа) без перезагрузки:
      psexec \\computer -c -s klist.exe purge

    Трудно переоценить пользу этой программы, если использовать скрипты и возможности консольных команд, встроенных в Windows.

    Windows Remote Management

    Изначально это была серверная технология для удаленного управления оборудованием, которая появилась в Windows Server 2003 R2 как часть компонента Hardware Management, но недавно Microsoft выпустили пакет Windows Management Framework, который включает в себя PowerShell 2.0 и WinRM 2.0 и устанавливается на клиентские ОС как обновление. Подробности можно прочитать в статье KB968929.

    Прелесть WinRM заключается в простоте развертывания в доменной среде через WSUS в качестве факультативного обновления ОС и мощи, которую даёт совместное с PowerShell применение.

    Использование WinRM происходит через 2 команды.

    winrm.cmd служит для конфигурирования настроек и диагностики клиента и сервера WinRM.

    Для того, чтобы сервер WinRM начал принимать команды, должна быть запущена служба Windows Remote Management и произведена её начальная конфигурация. Используйте команду

    winrm quickconfig на локальной машине, либо финт ушами
    psexec -s \\servername winrm quickconfig по сети, используя PsExec от имени системной учетной записи.

    Будет предложено автоматически запускать службу WinRM и разрешить уделенные подключения, соглашайтесь 😉

    Чтобы успешно подключаться к WinRM серверу (имеется в виду серверная часть, принимающая команды), не входящему в тот же домен, что и ваш клиентский компьютер, необходимо на клиенте этот целевой сервер добавить в «доверенный список» следующей командой:

    winrm set winrm/config/client @{TrustedHosts="servername"}, где вместо servername можно указать IP-адрес, либо * (звёздочку).

    Для пользователей Windows Vista и Windows 7, работающим не от имени встроенного администратора (обычно так и бывает), нужно выполнить следующую команду

    reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f

    По умолчанию, установлено ограничение на 5 одновременных соединений WinRM от клиента, для увеличения этого числа выполните команду

    winrm s winrm/config/winrs @{MaxShellsPerUser="X"}

    winrs.exe — клиент для отправки запросов к серверной части. Пример: следующая команда принудительно перезагрузит удаленную систему…

    winrs -r:servername shutdown /r /t 0

    В доменной среде при отправке команд используются учетные данные запустившего пользователя. Для посыла команд от имени другого пользователя используются ключи -u:user -p:pass. Пример: следующая команда очистит локальный кэш DNS-имён на удаленной системе

    winrs -r:servername -u:user -p:pass ipconfig /flushdns

    PsExec — Windows Sysinternals | Документы Microsoft

    • 4 минуты на чтение

    В этой статье

    Марк Руссинович

    Дата публикации: 25 мая 2021 г.

    Скачать PsTools (3,5 МБ)

    Введение

    Утилиты, такие как Telnet, и программы удаленного управления, такие как ПК Symantec Anywhere позволяет запускать программы в удаленных системах, но они могут быть боль при настройке и требование, чтобы вы установили клиентское программное обеспечение на удаленные системы, к которым вы хотите получить доступ.PsExec — это легкий telnet-замена, позволяющая выполнять процессы в других системах, в комплекте с полной интерактивностью для консольных приложений, без необходимость вручную устанавливать клиентское программное обеспечение. Наиболее эффективные возможности использования PsExec включать запуск интерактивных командных запросов в удаленных системах и инструменты удаленного включения, такие как IpConfig, которые иначе не имеют возможность показывать информацию об удаленных системах.

    Примечание: некоторые антивирусные сканеры сообщают, что один или несколько инструментов заражен вирусом «удаленного администратора».Ни один из PsTools не содержит вирусов, но они использовались вирусами, поэтому они запускают уведомления о вирусах.

    Установка

    Просто скопируйте PsExec на путь к исполняемому файлу. При вводе «psexec» отображается его синтаксис использования.

    Использование PsExec

    См. Июльский выпуск журнала Windows IT Pro Magazine за 2004 г. статья, которая охватывает расширенное использование PsExec.

    Использование:

      psexec [\\ компьютер [, компьютер2 [, ...] | @ файл]] [- u пользователь [-p psswd] [- ns] [- r имя_службы] [- h] [- l] [- s | -e] [- x] [- i [сеанс]] [- c исполняемый файл [-f | -v]] [- w каталог] [- d] [- <приоритет>] [- an, n, ...] cmd [аргументы]
      
    .
    Параметр Описание
    -a Отдельные процессоры, на которых может работать приложение, с запятыми, где 1 — процессор с наименьшим номером. Например, чтобы запустить приложение на ЦП 2 и ЦП 4, введите: «-a 2,4»
    -c Скопировать указанный исполняемый файл в удаленную систему для выполнения.Если вы опустите этот параметр, приложение должно находиться в системном пути удаленной системы.
    -d Не ждать завершения процесса (не интерактивно).
    Не загружает профиль указанной учетной записи.
    -f Скопируйте указанную программу, даже если файл уже существует в удаленной системе.
    -i Запустите программу, чтобы она взаимодействовала с рабочим столом указанного сеанса удаленной системы.Если сеанс не указан, процесс выполняется в сеансе консоли. Этот флаг требуется при попытке запустить консольные приложения в интерактивном режиме (с перенаправленным стандартным вводом-выводом).
    -h Если целевая система Vista или выше, запускает ли процесс с повышенным токеном учетной записи, если он доступен.
    Запустить процесс от имени ограниченного пользователя (удаляет группу «Администраторы» и разрешает только права, назначенные группе «Пользователи»).В Windows Vista процесс выполняется с низким уровнем целостности.
    Задает тайм-аут в секундах при подключении к удаленным компьютерам.
    -п Задает необязательный пароль для имени пользователя. Если вы его опустите, вам будет предложено ввести скрытый пароль.
    -r Задает имя удаленной службы, которую нужно создать или с которой нужно взаимодействовать.
    Запустить удаленный процесс в системной учетной записи.
    -u Задает необязательное имя пользователя для входа на удаленный компьютер.
    -v ​​ Скопируйте указанный файл только в том случае, если он имеет более высокий номер версии или новее, чем файл в удаленной системе.
    -w Задайте рабочий каталог процесса (относительно удаленного компьютера).
    Отображение пользовательского интерфейса на безопасном рабочем столе Winlogon (только в локальной системе).
    — приоритет Задает -low, -belownormal, -abovenormal, -high или -realtime для запуска процесса с другим приоритетом. Используйте -background для работы с нехваткой памяти и приоритетом ввода-вывода в Vista.
    компьютер Указывает PsExec для запуска приложения на указанном удаленном компьютере или компьютерах. Если вы опустите имя компьютера, PsExec запустит приложение в локальной системе, а если вы укажете подстановочный знак (\\ *), PsExec запустит команду на всех компьютерах в текущем домене.
    @ файл PsExec выполнит команду на каждом из компьютеров, перечисленных в файле.
    ЦМД Имя приложения для выполнения.
    аргументы Аргументы для передачи (обратите внимание, что пути к файлам должны быть абсолютными путями в целевой системе).
    -accepteula Этот флаг подавляет отображение диалогового окна лицензии.

    Приложения, в названии которых есть пробелы, можно заключить в кавычки например

      psexec \\ marklap "c: \\ long name app.exe"
      

    Ввод передается в удаленную систему только при нажатии клавиши Enter. Нажатие Ctrl-C завершает удаленный процесс.

    Если вы опустите имя пользователя, процесс будет запущен в контексте вашего учетная запись в удаленной системе, но не будет иметь доступа к сети ресурсы (потому что он выдает себя за другое лицо).Укажите действительное имя пользователя в синтаксис Domain \ User , если удаленному процессу требуется доступ к сети ресурсов или для запуска в другой учетной записи. Обратите внимание, что пароль и передаются в удаленную систему в зашифрованном виде.

    Коды ошибок

    , возвращаемые PsExec, относятся к приложениям, которые вы выполнить, а не PsExec.

    Примеры

    В этой статье, которую я написал, описывается, как PsExec работает и дает советы о том, как его использовать:

    Следующая команда запускает интерактивную командную строку на \ marklap :

      psexec -i \\ marklap cmd
      

    Эта команда выполняет IpConfig в удаленной системе с / все переключатель, и отображает результат локально:

      psexec -i \\ marklap ipconfig / все
      

    Эта команда копирует программу test.exe в удаленную систему и выполняет его в интерактивном режиме:

      psexec -i \\ marklap -c test.exe
      

    Укажите полный путь к программе, которая уже установлена ​​на удаленном компьютере. система, если его нет на пути к системе:

      psexec -i \\ marklap c: \ bin \ test.exe
      

    Запустите Regedit в интерактивном режиме в системной учетной записи, чтобы просмотреть содержимое ключи SAM и SECURITY ::

      psexec -i -d -s c: \ windows \ regedit.exe
      

    Для запуска Internet Explorer с правами ограниченного пользователя используйте это команда:

      psexec -l -d "c: \ программные файлы \ Internet Explorer \ iexplore.исполняемый"
      

    Скачать PsTools (3,5 МБ)

    PST Инструменты

    PsExec является частью постоянно растущего набора инструментов командной строки Sysinternals. которые помогают в администрировании локальных и удаленных систем, названных PsTools .

    Работает на:

    • Клиент: Windows Vista и выше.
    • Server: Windows Server 2008 и выше.

    PsTools — Windows Sysinternals | Документы Microsoft

    • 2 минуты на чтение

    В этой статье

    Марк Руссинович

    Дата публикации: 23 марта 2021 г.

    Скачать PsTools Suite (3.5 МБ)

    Введение

    В комплекты ресурсов для Windows NT и Windows 2000 входит ряд инструменты командной строки, которые помогут вам управлять системами Windows NT / 2K. Со временем я пополнил коллекцию подобных инструментов, в том числе включены в комплекты ресурсов. Эти инструменты отличает то, что они все позволяют управлять как удаленными системами, так и локальной. В Первым инструментом в пакете был PsList, инструмент, позволяющий просматривать подробные информация о процессах, и пакет постоянно пополняется.В Префикс «Ps» в PsList связан с тем, что стандартный процесс UNIX перечисление инструмента командной строки называется «ps», поэтому я принял этот префикс для все инструменты, чтобы связать их вместе в набор инструментов с именем PsTools .

    Примечание

    Некоторые антивирусные сканеры сообщают, что один или несколько инструментов заражены вирусом «удаленного администратора». Ни один из PsTools не содержит вирусов, но они использовались вирусами, поэтому они запускают уведомления о вирусах.

    Инструменты, включенные в набор PsTools , которые можно загрузить как пакет, а это:

    • PsExec — выполнять процессы удаленно
    • PsFile — показывает файлы, открытые удаленно
    • PsGetSid — отображать SID компьютера или пользователя
    • ПсИнфо — список информации о системе
    • ПсПинг — измерить производительность сети
    • PsKill — убить процессы по имени или идентификатору процесса
    • PsList — перечислить подробную информацию о процессах
    • PsLoggedOn — увидеть, кто вошел в систему локально и через совместное использование ресурсов (полный источник в комплекте)
    • PsLogList — дамп записей журнала событий
    • PsPasswd — меняет пароли аккаунтов
    • PsService — услуги просмотра и контроля
    • PsShutdown — выключает и при необходимости перезагружает компьютер
    • PsSuspend — приостанавливает процессы
    • PsUptime — показывает, сколько времени система работает с момента ее последняя перезагрузка (функциональность PsUptime была включена в PsInfo

    Пакет загрузки PsTools включает файл справки в формате HTML с полным информация об использовании всех инструментов.

    Скачать PsTools Suite (3,5 МБ)

    Работает на:

    • Клиент: Windows Vista и выше
    • Server: Windows Server 2008 и выше
    • Nano Server: 2016 и выше

    Установка

    Ни один из инструментов не требует специальной установки. Вам даже не нужно устанавливать какое-либо клиентское программное обеспечение на удаленные компьютеры, на которые вы нацеливаете их. Запустите их, введя их имя и любые параметры командной строки, которые вам нужны.Чтобы показать полную информацию об использовании, укажите параметр командной строки «-?». Если у вас есть вопросы или проблемы, посетите форум Sysinternals PsTools.

    Ссылки по теме

    Введение в PsTools: Уэс Миллер дает общий обзор Sysinternals PsTools в мартовской колонке своей колонки журнала TechNet.

    PsTools Учебное пособие для системных администраторов

    Вы действительно должны восхищаться людьми, которые жертвуют свое время и опыт на разработку бесплатных инструментов для сообщества.Бесплатная часть — это здорово, но также чертовски хороша абсолютная универсальность некоторых из этих инструментов. В этом случае мы должны поблагодарить Марка Руссиновича и Дэйва Соломона из Sysinternals, поскольку именно они разработали широкий выбор бесплатных инструментов под названием PsTools. Вы можете скачать их здесь. Все инструменты, содержащиеся в PsTools, управляются из командной строки через сеанс cmd.exe. Многие ли из вас думают так же, как я, когда дело доходит до инструментов, управляемых из командной строки? Когда я думаю об инструментах командной строки, я сразу думаю о вреде.Это может быть хакер, взломавший систему или дальнейшее использование уже взломанной сети. Значительная часть хороших хакерских инструментов используется через командную строку. Что ж, в этой статье мы исследуем функциональность пакета PsTools и то, как он может повлиять на вас как на системного администратора или практикующего специалиста по безопасности.

    Любят и хакеры, и системные администраторы

    Теперь инструменты, включенные в набор PsTools, нравятся как хакерам, так и системным администраторам по нескольким причинам.Инструменты красивые, маленькие по размеру и при этом довольно функциональные. Очень удобно иметь небольшую программу, которая позволит вам удаленно перезагружать компьютер или, например, выводить системную информацию. Все это объединяет манипуляции с компьютером, причем, как правило, удаленно. Именно здесь на ум приходят мысли хакера, когда я думаю об инструментах, управляемых из командной строки, и тем более, когда на ум приходит PsTools. Принимая во внимание эти мысли, вероятно, будет хорошей идеей использовать эти инструменты в контролируемой лабораторной среде, чтобы увидеть, как они работают, и для чего или зачем вы их используете.

    Подготовить платформу для PsTools

    Чтобы дать контекст использования некоторых из этих инструментов, я буду использовать их после получения доступа к компьютеру на системном уровне здесь, в моей лаборатории. Таким образом, вы могли увидеть, для чего злонамеренный хакер может использовать эти инструменты. Чтобы получить права на удаленное выполнение кода, я буду использовать Metasploit Framework. В конце концов, зачем вообще компилировать мой собственный код, если он уже существует для использования в вышеупомянутой программе? Помимо Metasploit, я также буду использовать VMware и tcpdump.exe для этого лабораторного упражнения. Итак, с этими инструментами давайте перейдем к первому инструменту в пакете PSTools.

    псексек

    Инструмент psexec используется для удаленного выполнения программ на компьютере. Я использовал это в прошлом для выполнения программ, которые я установил в альтернативном потоке данных. Довольно часто, когда хакер может получить доступ к одному из компьютеров в сети, в которой вы работаете, вы увидите, что psexec передается. Когда я писал вышеупомянутую статью, psexec работал прекрасно.Теперь, когда я пишу об этом в этой статье, есть несколько действительно странных причуд. Он не хотел работать, и мне пришлось потратить час или около того, чтобы попытаться выяснить, что пошло не так. Короче говоря, мне удалось заставить его работать, но с другим синтаксисом, чем в статье, указанной выше. В связи с этим, если кто-нибудь из вас может сказать мне, что здесь отличается, мне было бы очень интересно узнать. С учетом сказанного давайте посмотрим, как использовать psexec через обратную оболочку, предоставляемую Metasploit.

    Рисунок 1

    На приведенном выше снимке экрана мы видим, что psexec был запущен успешно.Хотя ipeye.exe (сканер портов командной строки, о котором я напишу в будущем) действительно работает, он возвращает код ошибки 0. На самом деле странно, поскольку он никогда не делал этого раньше, однако тест действительно работает, и мы были возможность удаленно вызывать исполняемый файл с помощью psexec. Если у вас есть доступ на системном уровне на удаленном компьютере через оболочку, вы также можете просто вызвать программу напрямую. Поэкспериментируйте с psexec и освоитесь с ним, так как есть довольно много переключателей, доступных для вашего использования.

    psfile

    Этот инструмент позволит вам увидеть, какие файлы открываются удаленно на компьютере, на котором вы запускаете эту программу локально. Под этим я подразумеваю, что если вы вызовете psfile, скажем, на 192.168.1.100, он покажет вам, какие файлы на 192.168.1.100 в настоящее время просматриваются удаленными компьютерами. Однако он не покажет вам IP-адрес компьютера, который удаленно открыл файл на вашем локальном компьютере. Что он позволит вам сделать, так это закрыть файл, который просматривается удаленно, если вы того пожелаете.Это довольно удобная функция. Увидеть — значит поверить, поэтому давайте посмотрим, как выглядит этот инструмент при вызове.

    Рисунок 2

    Как вы можете видеть на скриншоте выше, при запуске psfile будут перечислены файлы, которые были открыты удаленно. Также указан путь в локальной системе, где находится просматриваемый файл. Это также может быть удобной функцией, если вы видите в вашей системе новые каталоги, которых раньше не было!

    псгетсид

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

    Рисунок 3

    psinfo

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

    Рисунок 4

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

    пслист

    Еще один чертовски удобный инструмент в этом наборе — pslist.Эта программа предоставит вам список того, что именно работает на компьютере, на котором вы ее вызываете. Можете ли вы представить себе, как злонамеренный хакер мог бы использовать такую ​​программу? Ну, например, они могут захотеть узнать, работает ли на вашем компьютере антивирусное решение. Та или любая другая программа, представляющая для них особый интерес. Взгляните на снимок экрана ниже, чтобы увидеть результат работы инструмента.

    Рисунок 5

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

    пскилл

    Об использовании этого инструмента довольно легко догадаться, как только вы увидите его название. Что этот инструмент сделает за вас, так это позволит вам уничтожать процессы либо локально на вашем компьютере, либо на удаленных.Удаленное использование этого инструмента, вероятно, одна из причин, по которой он понравится хакеру. Как мы видели выше, pslist предоставит очень хороший список всех запущенных процессов. Из этого списка человек со злым умыслом может решить убить процесс, который помешал бы его планам.

    Рисунок 6

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

    пслогедон

    Еще один удобный инструмент в этом прекрасном наборе инструментов — psloggedon.Может ли кто-нибудь из вас подумать, почему это может быть полезно злонамеренному хакеру? Давайте посмотрим на снимок экрана ниже, чтобы увидеть, всплывает ли что-нибудь по идее.

    Рисунок 7

    Что ж, если бы я был кем-то, кто только что взломал компьютер удаленно или локально, я бы хотел знать, кто вошел в систему, помимо меня самого. Если вы запустите этот инструмент на удаленном компьютере, на который вы только что перевели эту программу по протоколу TFTP, то я, например, определенно был бы смущен, увидев, что администратор вошел в систему! Этот администратор предлагал мне немедленно отключиться и вернуться позже.Бродить по компьютеру, пока системный администратор вошел в систему, было бы похоже на нарушение закона перед полицейскими. Совсем не лучшая идея, так как вы просто просите, чтобы вас поймали. Наконец, временная метка, указанная для вошедшего в систему пользователя, также может быть полезна, так как она сообщит вам, вошел ли кто-то в систему после того, как вы взломали этот компьютер, или они были там все время.

    psloglist

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

    Рисунок 8

    На скриншоте видно, что способ вызова psloglist достаточно прост: просто введите его и нажмите Enter. Оттуда вы можете захотеть передать вывод через команду «| more». Таким образом, ввод не будет пролетать мимо вас, и вы сможете просматривать его страницу за страницей.На снимке экрана отмечена система, журналы которой вы просматриваете, например: \\ WIN2K2, а остальные поля довольно просты. Как вы можете видеть здесь, psloglist — это довольно удобный небольшой инструмент, который позволит вам получить доступ к журналам событий, которые содержат много информации.

    pspasswd

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

    Рисунок 9

    Выше показан синтаксис командной строки, используемый для фактического изменения пароля администратора на компьютере, на котором вы запускаете этот инструмент. Все очень просто, не правда ли! Хотя злоумышленник может не захотеть делать такое очевидное изменение, такая возможность существует. Попытка войти в систему как администратор на следующий день только для того, чтобы узнать, что ваш пароль не работает, будет действительно неприятным шоком.

    psservice

    Этот инструмент позволит вам составлять список и управлять службами не только на локальном, но и на удаленном компьютере.Есть сходство с инструментом pslist в том, что он перечисляет службы, запущенные на компьютере. Хотя psservice также позволит вам останавливать, приостанавливать и запускать те же самые службы. Давайте посмотрим на скриншот ниже.

    Рисунок 10

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

    psshutdown

    Вы когда-нибудь сидели за своим компьютером, усердно работая, только для того, чтобы увидеть всплывающее окно с сообщением, что компьютер собирается выключиться через X секунд? Дерьмо! Мне лучше сохранить мою работу! Что ж, вы тоже можете обладать мощью могущественного системного администратора, используя инструмент psshutdown.

    Рисунок 11

    На скриншоте выше было обрезано меню справки, так как оно довольно обширное, и чтобы показать их все, можно было бы сделать довольно большой снимок экрана. Вот вам вопрос. Может ли кто-нибудь из вас придумать причину, по которой вы хотели бы выключить компьютер, а также перезагрузить его? Что ж, если кто-то из вас помнит, как читал эту серию статей, ответ содержится в ней. Достаточно хорошей причиной для перезагрузки компьютера было бы, если бы вы взломали его с помощью эксплойта и хотели бы защитить этот компьютер.Вам нужно будет установить исправление для того самого эксплойта, который вы использовали для проникновения, а затем перезагрузить компьютер, чтобы исправление вступило в силу. Вроде умно, не правда ли? Помните, что атаки не обязательно должны работать на передовой. В конце концов, зачем изобретать велосипед. Я бы порекомендовал вам потратить некоторое время и воссоздать то, о чем я писал в статье, на которую я ссылался выше.

    pssuspend

    Последний инструмент, который мы рассмотрим в пакете PsTools, — это pssuspend. Как вы помните, я ранее говорил, что многие инструменты по своей природе являются дополнительными.Последний инструмент — отличный тому пример. Для эффективного использования этого инструмента вам потребуется вызвать другой инструмент; pslist.

    Рисунок 12

    Если вы помните, то, что pslist сделает для вас, это предоставит список всех запущенных процессов. Он также предоставит вам еще один очень необходимый фрагмент информации, например: Pid, ​​также известный как идентификатор процесса. Имея в руках этот Pid, ​​вы можете использовать pssuspend для приостановки или возобновления определенного процесса. Этот инструмент — еще один отличный пример не только универсальности пакета PsTools, но и его простой функциональности.

    Упаковка

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

    Пакет PsTools — прекрасный пример обоюдоострых функциональных возможностей, которыми обладает большинство компьютерных инструментов. Как мы видели, инструменты в этом наборе работают очень хорошо, в том числе из командной строки. Большинство взломов компьютерных сетей приводит к тому, что злоумышленник получает обратную оболочку. В конце концов, это не означает, что большинству злоумышленников будет возвращен файл explorer.exe. Вот почему очень важно освоиться с cmd.Сеанс exe для большинства инструментов взлома будет контролироваться через один. Что ж, как всегда, я надеюсь, что эта серия статей была вам полезна, и я буду благодарен за ваши отзывы. До следующего раза!

    Просмотры сообщений: 11 142


    Все, что вы хотели знать о Psexec

    Если и существовала утилита командной строки, которая могла бы конкурировать с robocopy с точки зрения полезности, то это PsExec. Утилита Sysinternals PsExec настолько же распространена, насколько и входит в арсенал ИТ-администратора. Этот инструмент позволяет администраторам удаленно запускать команды, как если бы они находились на локальном компьютере.

    Чтобы подробно рассказать об инструменте PsExec, он должен был описать этот желанный инструмент в ATA Ultimate Guide. В этом руководстве вы узнаете, что такое psexec, на что он способен, а также множество примеров использования этого полезного инструмента.

    Что такое PsExec.exe?

    Если вы новичок в ИТ или, возможно, у вас не было необходимости запускать команды и инструменты на удаленных компьютерах, возможно, вы не знаете, что такое psexec.

    PsExec или psexec.exe — это утилита командной строки, созданная для Windows.Это позволяет администраторам запускать программы на локальных и, чаще всего, удаленных компьютерах. Это бесплатная служебная часть пакета Sysinternals pstools, созданного Марком Руссиновичем много лет назад.

    Он был создан для замены таких инструментов, как telnet, которые заставляли вас открывать порты и вносить уязвимости в систему безопасности. В настоящее время у нас есть другие варианты, такие как PowerShell Remoting и Invoke-Command PowerShell cmdlet, но PsExec все еще имеет свое место.

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

    Он поддерживает все версии Windows, начиная с Windows XP. Это означает, что да, PsExec в Windows 10 тоже есть. Это простой в использовании инструмент, который работает практически со всем, но не путайте его простоту с возможностями!

    Предварительные требования

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

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

    На момент написания этой статьи PsExec находится на v2.2 и будет той версией, о которой вы узнаете в этой статье.

    Установка PSexec (с удаленной настройкой компьютера)

    С технической точки зрения, вам не нужно устанавливать PsExec, поскольку это всего лишь служебная программа командной строки, но достаточно близкая к ней.Поскольку установка не требуется, вам просто нужно загрузить и извлечь ее из zip-файла PsTools. PsExec недоступен как отдельная утилита и является частью набора инструментов PsTools.

    Загрузка PSExec

    Вы можете распаковать ZIP-файл вручную или вот удобный фрагмент PowerShell для загрузки и извлечения PsExec из ZIP-файла pstools. Обратите внимание, что при этом будут удалены все другие инструменты PsTools. Многие из них все еще удобны, но мы не будем рассматривать их в этой статье.

      PS> Invoke-WebRequest -Uri 'https://download.sysinternals.com/files/PSTools.zip' -OutFile 'pstools.zip'
    PS> Expand-Archive -Path 'pstools.zip' -DestinationPath "$ env: TEMP \ pstools"
    PS> Move-Item -Path "$ env: TEMP \ pstools \ psexec.exe".
    PS> Remove-Item -Path "$ env: TEMP \ pstools" -Recurse  

    Конфигурация удаленного компьютера

    После того, как вы загрузили PsExec, вам нужно будет убедиться, что все удаленные компьютеры, на которых вы собираетесь его запускать, открыты. PsExec имеет простые требования; Общий доступ к файлам и принтерам включен и доступен административный ресурс admin за долларов США.

    Вы можете перейти на все удаленные компьютеры, открыть апплет Windows Firewall , перейти к Allowed Apps и включить File and Printer Sharing на всех компьютерах, как показано ниже.

    Обратите внимание, что Общий доступ к файлам и принтерам представляет собой известную угрозу безопасности, поэтому убедитесь, что включен только профиль брандмауэра Private .

    Разрешение общего доступа к файлам и принтерам в брандмауэре Windows

    Или вы можете посетить каждый компьютер и запустить утилиту netsh, чтобы открыть его через:

     > netsh advfirewall firewall set rule group = "File and Printer Sharing" new enable = Yes  

    Или вы можете использовать для этого командлет PowerShell Set-NetFirewallRule .

      PS51> Set-NetFirewallRule -DisplayGroup «Общий доступ к файлам и принтерам» -Включено True -Profile Private  

    Если вы не хотите посещать каждый компьютер, у вас есть доступ к PowerShell Remoting и вы находитесь в домене Active Directory, вы также можете открыть брандмауэр на нескольких компьютерах одновременно с помощью командлета Invoke-Command .

      PS51> Invoke-Command -ComputerName PC1, PC2, PC3 -ScriptBlock {Set-NetFirewallRule -DisplayGroup «Общий доступ к файлам и принтерам» -Enabled True -Profile Private}  

    Использование PsExec

    Прежде чем вы сможете бегать, вам нужно пройтись.Если вы никогда раньше не использовали PsExec, вас ждет удовольствие! Обязательно сначала прочтите этот раздел, чтобы намочить ноги и изучить основы, прежде чем прыгать в глубокий конец позже в этой статье.

    При первом запуске PsExec в новой системе вы сразу увидите лицензионное соглашение PsExec. Вам нужно будет нажать на кнопку Согласен , чтобы начать ее использовать.

    Лицензионное соглашение PSExec (EULA)

    Если вы не хотите, чтобы лицензионное соглашение отображалось, вы можете принять его в автоматическом режиме, используя переключатель / acceptpteula , как показано ниже.

     > Псексек / Accepteula  

    Позже в этой статье вы узнаете несколько приемов, как отключить всплывающее окно EULA на локальных и удаленных компьютерах.

    В поисках помощи

    При изучении PsExec вообще не следует использовать какие-либо переключатели. Если вы просто запустите psexec без переключателей, он вернет все параметры и краткое объяснение того, что каждый из них делает. Для вашего удобства все параметры представлены в таблице ниже.

    Коммутатор Пояснение
    -a Отдельные процессоры, на которых может работать приложение, с запятыми, где 1 — процессор с наименьшим номером.Например, чтобы запустить приложение на ЦП 2 и ЦП 4, введите: «-a 2,4»
    -c Скопируйте указанную программу в удаленную систему для выполнения. Если вы опустите этот параметр, приложение должно находиться в системном пути удаленной системы.
    -d Не ждать завершения процесса (не интерактивно).
    -e Не загружает профиль указанной учетной записи.
    -f Скопируйте указанную программу, даже если файл уже существует в удаленной системе.
    -i Запустить программу, чтобы она взаимодействовала с рабочим столом указанного сеанса в удаленной системе. Если сеанс не указан, процесс выполняется в сеансе консоли. Некоторые сообщают о лучших результатах при использовании переключателя -s с -i из-за неразборчивости окон.
    -h Если целевая система Vista или выше, имеет процесс
    -l Запуск от имени ограниченного пользователя (удаляет группу «Администраторы» и разрешает только привилегии, назначенные группе «Пользователи»).В Windows Vista процесс выполняется с низким уровнем целостности.
    -n Задает тайм-аут в секундах при подключении к удаленным компьютерам.
    -p Задает дополнительный пароль для имени пользователя. Если вы его опустите, вам будет предложено ввести скрытый пароль.
    -r Задает имя удаленной службы для создания или взаимодействия. с участием.
    -s Запустить удаленный процесс в системной учетной записи.
    -u Задает дополнительное имя пользователя для входа в компьютер.
    -v Скопируйте указанный файл, только если он имеет более высокий номер версии или новее, чем тот, который находится в удаленной системе.
    -w Задайте рабочий каталог процесса (относительный
    -x Отображение пользовательского интерфейса на безопасном рабочем столе Winlogon (только для локальной системы).
    -arm Указывает удаленный компьютер имеет архитектуру ARM.
    -priority Указывает -low, -belownormal, -abovenormal, -high или
    -realtime запустить процесс с другим приоритетом. Используйте
    -background для запуска с низким объемом памяти и приоритетом ввода-вывода в Vista.
    компьютер Прямой PsExec для запуска приложения на указанном компьютере или компьютерах. Если вы не укажете имя компьютера, PsExec запустит приложение в локальной системе, а если вы укажете подстановочный знак (\ *), PsExec запустит
    @file PsExec выполнит команду на каждом из компьютеров, перечисленных в файле. .
    -accepteula Этот флаг подавляет отображение диалогового окна лицензии.
    -nobanner Не отображать стартовый баннер и сообщение об авторских правах.

    Запуск простой удаленной команды

    По сути, PsExec требует двух параметров: имени компьютера и команды для запуска. Если у вас есть команда для запуска на удаленном компьютере, не требующая аргументов, например hostname , вы можете просто добавить ее после имени компьютера.

    Обратите внимание: если вы не укажете полный путь к файлу, запускаемая команда должна быть указана в пользовательском или системном пути. Кроме того, если у вас есть программа с пробелами в имени, вы всегда можете заключить программу в такие пробелы, как «my application.exe».

     > psexec \\ REMOTECOMPUTER имя хоста  

    Ниже показано, что для выполнения команды hostname на компьютере CONTOSODC1 вы определяете путь UNC, за которым следует команда.PSExec затем безопасно подключится к удаленному компьютеру, выполнит команду и вернет результат. В этом случае команда hostname вернула имя хоста компьютера, которым является CONTOSODC1 .

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

    Примечание. Код ошибки или выхода, возвращаемый psexec, не исходит от самого PsExec.Вместо этого он исходит от команды, которую psexec выполнил на удаленном компьютере.

    Успешное выполнение удаленной команды psexec

    Как PsExec работает на удаленных компьютерах

    PsExec выполняет несколько шагов для выполнения программ на удаленных компьютерах.

    1. Создайте файл PSEXESVC.exe в C: \ Windows .
    2. Создайте и запустите службу Windows на удаленном компьютере под названием PsExec .
    3. Выполнить программу под родительским процессом psexesvc.exe .
    4. По завершении служба PsExec Windows будет остановлена ​​и удалена.

    Если процесс не работает на 100% правильно, возможно, вам придется вручную удалить службу с помощью команды sc .

    Выполнение простой локальной команды

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

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

     > psexec <локальная команда или EXE-файл>  

    Зачем вы это делаете? Одна из причин — выполнять команды от имени локальной учетной записи SYSTEM . Вы можете использовать переключатель -s для запуска любой команды как SYSTEM локально или удаленно, о чем вы узнаете позже.

    Посмотрите короткое видео ниже. Обратите внимание, что вам просто нужно предоставить переключатель -s вместе с исполняемым файлом интерпретатора команд для psexec, чтобы запустить новый сеанс команд как NT AUTHORITY \ SYSTEM .

    Запуск Psexec от имени СИСТЕМЫ

    Команды PsExec (для углубленного изучения)

    Когда вы освоите основы, вы можете приступить к изучению более продвинутых техник в psexec. PsExec может делать гораздо больше, чем просто запускать одну команду на одном компьютере.

    Выполнение команд на нескольких компьютерах

    PsExec не ограничивается только запуском команд на одном удаленном компьютере за раз. Этот инструмент также поддерживает копирование программ и запуск команд одновременно на нескольких компьютерах.

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

    Имена компьютеров, разделенных запятыми

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

     > psexec \\ REMOTECOMPUTER1, REMOTECOMPUTER2, REMOTECOMPUTER3  
    Все компьютеры в домене Active Directory

    Если вы запускаете PsExec на компьютере, присоединенном к домену Active Directory, и хотите запустить выполнение команды на всех компьютерах в этом домене, используйте подстановочный знак.

    PsExec выполнит поиск по всему домену Active Directory и попытается выполнить команду на каждом компьютере. Ниже приведен пример синтаксиса того, как PsExec будет пытаться подключиться к каждому компьютеру в домене, частью которого является исполняющий компьютер, и выполнить команду hostname .

     > psexec \\ * имя хоста
    
    PsExec v2.2 - удаленное выполнение процессов
    Copyright (C) 2001-2016 Марк Руссинович
    Sysinternals - www.sysinternals.com
    
    Перечисление домена ...  

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

    Использование подстановочного знака заставляет PsExec выполнить команду net view / all , чтобы сначала найти все компьютеры в домене. Это устаревший способ поиска информации о компьютере из-за его зависимости от NetBIOS.

    Чтение из файла

    Другой способ запускать команды на нескольких компьютерах одновременно — использовать текстовый файл. Используя синтаксис @ , PsExec будет читать каждую строку в текстовом файле, как если бы это было имя компьютера.Затем он будет обрабатывать каждый компьютер индивидуально.

    Ниже вы можете увидеть пример использования PowerShell для создания текстового файла с разделенными строками имен компьютеров и использования его в качестве входных данных для psexec.

      PS51> (Get-AdComputer -Filter *). Имя | Out-файл computers.txt
    PS51> psexec @ computers.txt имя хоста  

    Копирование локальных программ на удаленный компьютер

    Используя переключатель -c , psexec скопирует любую локальную программу на удаленный компьютер перед выполнением.

    Возможно, у вас есть EXE-файл на локальном компьютере в папке C: \ Tools , и вы хотите запустить его на удаленном компьютере. Вы можете сделать это, используя следующий синтаксис:

     > psexec \\ REMOTECOMPUTER -c C: \ Tools \ program.exe  

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

    Если вам нужно скопировать файлы на удаленные компьютеры до использования PsExec, используйте вместо этого командлет PowerShell Copy-Item .

    Запуск удаленных процессов под альтернативными учетными данными

    Еще один популярный вариант использования PsExec — запуск команд под альтернативными учетными записями. По умолчанию PsExec будет пытаться подключиться к удаленному компьютеру под вашей текущей учетной записью. В частности, будет олицетворять вашу учетную запись на удаленном компьютере.

    Использование переключателя -u и дополнительного переключателя -p позволяет подключаться к удаленному компьютеру с альтернативной учетной записью пользователя. Затем PsExec зашифрует имя пользователя и пароль и отправит их на удаленный компьютер для аутентификации.

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

     > psexec \\ REMOTECOMPUTER hostname -u localadmin -p [email protected] $$ word  

    Если оба компьютера являются членами Active Directory, обязательно укажите перед учетной записью пользователя имя домена.

     > psexec \\ REMOTECOMPUTER имя хоста -u contoso.local \ domainadmin -p [защита электронной почты] $$ word  

    Обратите внимание, что если вы не используете переключатель -u , psexec олицетворяет вашу вошедшую учетную запись на удаленном компьютере. У него не будет доступа к каким-либо сетевым ресурсам.

    Запуск процессов от имени учетной записи ЛОКАЛЬНОЙ СИСТЕМЫ

    Одной из наиболее полезных функций запуска PsExec под альтернативной учетной записью является использование переключателя -s .Этот переключатель позволяет PsExec (и вашему удаленно запускаемому приложению) работать под учетной записью LOCAL SYSTEM удаленного (или локального) компьютера.

    Обратите внимание, что я не указал имя удаленного компьютера. PsExec также будет работать на локальном компьютере. В этом случае я использую опцию -s , чтобы указать PsExec запустить локальную командную строку в качестве учетной записи LOCAL SYSTEM.

    Запуск psexec от имени ЛОКАЛЬНОЙ СИСТЕМЫ

    Чтобы запустить командную строку как ЛОКАЛЬНАЯ СИСТЕМА на удаленном компьютере, добавьте имя компьютера в ссылку, как показано ниже:

     > psexec -s \\ REMOTECOMPUTER cmd  

    Удаленный запуск приложений с графическим интерфейсом

    Еще один полезный переключатель PsExec — -i .По умолчанию PsExec не позволяет удаленно выполняемой команде вызывать какие-либо окна на удаленном компьютере. Это полезно, потому что если вы выполняете команды удаленно, вы все равно не увидите экран.

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

    Может быть, вам нужно открыть окно блокнота на удаленном компьютере. Не проблема. Запустите блокнот .exe с переключателем -i и PsExec откроет Блокнот.

     > psexec -i \\ REMOTECOMPUTER блокнот  
    Запуск psexec в интерактивном режиме

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

    Использование переключателя -d с -i укажет PsExec не ждать завершения удаленного процесса.Вместо этого он отключится и вернет вам управление, как только удаленный процесс будет выполнен. & 1 .).

    Примеры использования PsExec

    Как только вы научитесь использовать psexec, вы неизбежно столкнетесь с различными конкретными вариантами использования. В этом разделе вы познакомитесь с некоторыми реальными случаями использования и примерами использования psexec.

    Запуск удаленной командной строки (

    psexec cmd )

    Один из наиболее распространенных вариантов использования — запуск PsExec в виде интерактивной командной строки. PsExec не просто выполняет команды удаленно. Он также может отправлять выходные данные команды обратно на вашу консоль.Из-за этого он может стать отличным Telnet (если кто-то еще его использует) или, возможно, заменой PowerShell Enter-PSSession .

    Чтобы запустить удаленную команду, укажите имя удаленного компьютера и запустите приложение cmd . Cmd — это интерпретатор команд Windows. Поскольку PsExec поддерживает интерактивное использование, он с радостью вернет мигающий курсор и приглашение.

     > psexec \\ REMOTEPC cmd  
    Открытие командной строки на удаленном компьютере

    На данный момент мир — ваша устрица.Вы можете запускать команды на локальном компьютере через эту «вложенную» командную строку, и они будут выполняться на удаленном компьютере.

    Чтобы выйти из командной строки, введите exit . PsExec остановит процесс cmd на удаленном компьютере и вернет фокус на локальный компьютер.

    НЕ используйте Ctrl-C для закрытия интерактивного сеанса cmd. Всегда используйте , выход . Если вы используете Ctrl-C, сеанс psexec останется запущенным на удаленном компьютере.

    Удаленная установка программного обеспечения

    Вы можете использовать PsExec как средство развертывания программного обеспечения для бедняков. Возможно, у вас есть установщик MSI, который вам нужно запустить на одном или нескольких удаленных компьютерах, под названием setup.msi . Этот установщик необходимо скопировать на удаленные компьютеры, а затем запустить с помощью утилиты msiexec.exe с несколькими переключателями.

    Ниже приведен пример того, как вы можете использовать PsExec для удаленного развертывания программного обеспечения. В этом примере копируется установка .msi на удаленный компьютер, а затем интерактивно запускает установщик MSI под учетной записью SYSTEM .

     > psexec.exe \\ REMOTECOMPUTER –i –s «msiexec.exe / i setup.msi» -c setup.msi  

    Принятие лицензионного соглашения без переключателя

    / acceptpteula

    Как упоминалось ранее, при первом запуске PsExec вам необходимо принять лицензионное соглашение. Вы можете использовать переключатель / acceptpteula , но вы также можете «поставить» его в реестр.

    При первом запуске PsExec создает раздел реестра по адресу HKCU \ Software \ Sysinternals \ PsExec .Вместо этого раздела реестра он создает значение реестра с именем EulaAccepted со значением DWORD 1 .

    Используя свой любимый метод изменения реестра на удаленных компьютерах, вам просто нужно создать этот ключ / значение на компьютерах, на которых вы хотите запустить PsExec. После создания нет необходимости запускать / acceptpteula !

    Объединение PowerShell и PsExec

    До PowerShell у нас был только PsExec. Теперь у нас есть варианты. PowerShell может заменить PsExec во многих ситуациях, но дополнить его в других.

    Создание имен компьютеров с помощью PowerShell

    Вместо использования \ * для поиска всех компьютеров в домене вы можете использовать PowerShell. Используя PowerShell, вы можете не только выбирать определенные компьютеры, но и не использовать уязвимое для брандмауэра поведение net view / all .

    Вы можете использовать PowerShell, чтобы создать строку, содержащую все имена компьютеров, разделенные запятой. Затем вы можете передать эту строку в PsExec, который с радостью обработает каждую из них, как вы вводили каждую вручную.

    Ниже вы можете увидеть пример использования части командлета Get-AdComputer в модуле ActiveDirectory PowerShell.

      PS51> psexec "\\ $ ((Get-AdComputer -Filter *). Name -join ',')" имя хоста  

    Включение удаленного взаимодействия PowerShell

    Если у вас есть удаленные компьютеры, с которыми вы предпочитаете использовать PowerShell Remoting вместо PsExec, вы можете использовать PsExec для их включения.

    Запустив Enable-PSRemoting или winrm.cmd на удаленных компьютерах, вы можете быстро включить удаленное взаимодействие PowerShell на многих компьютерах одновременно.

    Ниже вы можете увидеть пример вызова командного файла winrm.cmd на удаленном компьютере, работающем под учетной записью SYSTEM. Поскольку выходные данные этой команды не нужны, они заглушаются с помощью 2> & 1> $ null .

      $ computerName = 'УДАЛЕННЫЙ КОМПЬЮТЕР'
    psexec "\\ $ Computername" -s c: \ windows \ system32 \ winrm.cmd quickconfig -quiet 2 &> & 1> $ null  

    Сообщения об ошибках PsExec

    Стоит еще раз напомнить, что большинство кодов ошибок, возвращаемых PsExec, исходят от удаленного процесса; не от PsExec.Но полезно иметь представление об этих кодах ошибок и о том, что они могут означать.

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

    Ниже приведен список наиболее распространенных кодов ошибок, которые может возвращать PsExec.

    Код ошибки Объяснение
    -2146232576 Обычно возвращается Центром обновления Windows при возникновении ошибки.
    0 Команда успешно выполнена
    1 Неправильная функция. Произошла проблема. Вот и все.
    1603 Неустранимая ошибка при установке. Обычно это возвращается msiexec.
    2 Система не может найти указанный файл
    4 Система не может открыть файл.
    5 Доступ запрещен.
    6 Неверный дескриптор.
    6118 Список серверов для этой рабочей группы в настоящее время недоступен

    Ваш отзыв

    ATA Ultimate Guides — это большие . В них много информации, и я обязательно пропущу кое-что здесь или там или сделаю ошибку. Если вы заметили что-то не так или считаете, что что-то нужно добавить в это руководство, сообщите мне об этом в комментариях. Я был бы счастлив отметить вас в этом посте.

    Кредиты

    • Спасибо Матиасу (комментарии) за многочисленные отзывы.

    PsExec — Выполнить процесс удаленно — Windows CMD

    PsExec — Выполнить процесс удаленно — Windows CMD — SS64.com

    Выполнить процесс командной строки на удаленном компьютере.

     Синтаксис
          psexec \\  компьютер  [,  компьютер  [, ..] [ параметры ]  команда  [ аргументы ]
    
          psexec @  run_file  [ параметры ]  команда  [ аргументы ]
    
    Параметры:
    
         компьютер  Компьютер, на котором psexec будет выполнять команду  .По умолчанию = локальная система
                  Для запуска на всех компьютерах в текущем домене введите "\\ *"
                   
       @  run_file  Выполните команду   на каждом компьютере, указанном в указанном текстовом файле.
    
         команда  Имя программы, выполняемой на удаленном компьютере.
    
         аргумента  передаваемых аргументов (пути к файлам должны быть абсолютными в целевой системе)
    
       -a  n ,  n , ... Установить привязку процессора к  n .Процессоры имеют номера 1,2,3,4 и т. Д.
                  поэтому, чтобы запустить приложение на ЦП 2 и ЦП 4, введите: "-a 2,4"
    
       -c Скопировать программу (, команда ) в удаленную систему для выполнения.
       -c -f Копировать, даже если файл уже существует в удаленной системе.
       -c -v Копировать, только если файл более поздней версии или новее, чем удаленная копия.
    
       Если вы опустите параметр -c, приложение должно находиться в системном пути удаленной системы.-d Не ждать завершения работы приложения.
                  Используйте только для неинтерактивных приложений.
    
       -e НЕ загружать профиль указанной учетной записи.
                  (В ранних версиях PSEXEC: загружайте профиль учетной записи пользователя, не используйте с -s)
    
       -f Копировать указанную программу, даже если файл уже существует в удаленной системе.
    
       -h Запуск с повышенным токеном учетной записи, если он доступен. (Vista или выше)
    
       -i Interactive - запустить программу, чтобы она взаимодействовала с рабочим столом удаленной системы.Если сеанс не указан, процесс выполняется в сеансе консоли.
    
       -l Limited - запускать процесс от имени пользователя с ограничениями. Работайте с низкой целостностью.
                  Удаляет группу администраторов и разрешает только привилегии, назначенные группе пользователей.
    
       -n  с  Укажите тайм-аут ( с  секунды) для подключения к удаленному компьютеру.
    
       -p  psswd  Укажите пароль для  пользователя  (необязательно). Передано как открытый текст.Если он не указан, вам будет предложено ввести скрытый пароль.
    
       -r Имя удаленной службы, которую нужно создать или с которой нужно взаимодействовать.
    
       -s Запускать удаленный процесс в учетной записи SYSTEM (используйте с осторожностью).
    
       -u  пользователь  Укажите имя пользователя для входа на удаленный компьютер (необязательно).
    
       -v Копировать указанный файл, только если он имеет более высокий номер версии или новее
                  чем в удаленной системе.-w  каталог  Установить рабочий каталог процесса (относительно удаленного компьютера).
    
       -x Отобразить пользовательский интерфейс на рабочем столе Winlogon (только в локальной системе).
    
       -низкое, -ниже нормальное, -абовенормальное, -высокое или -реальное время
                  Эти параметры запустят процесс с другим приоритетом.
                  также -background (Vista и выше) будет работать с низким объемом памяти и приоритетом ввода-вывода.
    
       -accepteula Подавить отображение диалогового окна лицензии.

    Для работы PsExec необходимо включить Общий доступ к файлам и принтерам на удаленном компьютере. Это можно сделать с помощью netsh advfirewall или групповой политики (Политика локального компьютера> Конфигурация пользователя> Административные шаблоны> Компоненты Windows> Общий доступ к сети)
    Вам также может потребоваться включить его в разделе «Панель управления»> «Сеть»> «Сетевой адаптер»> «Свойства».

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

    Когда вы укажете имя пользователя, удаленный процесс будет выполняться в этой учетной записи и будет иметь доступ к сетевым ресурсам этой учетной записи. Если вы укажете альтернативное имя пользователя / пароль, PsExec отправит пароль для входа в виде открытого текста. Это может быть угрозой безопасности, если неавторизованные сетевые анализаторы могут перехватить трафик между локальной и удаленной системой.

    PsExec можно использовать для запуска приложений с графическим интерфейсом пользователя, но в этом случае графический интерфейс появится на удаленной машине.

    Ввод передается в удаленную систему, когда вы нажимаете клавишу ввода — нажатие Ctrl-C завершит удаленный процесс.

    PsExec не требует, чтобы вы были администратором локальной файловой системы, с правильным паролем psexec позволит UserA запускать команды от имени UserB — замена Runas.

    Если вы убиваете процесс PsExec, вам также может потребоваться вручную удалить фоновую службу:
    sc.exe \\ workstation64 удалить psexesvc

    PsExec также может использоваться для запуска процесса (на удаленном или локальном компьютере) как СИСТЕМА, это очень привилегированная учетная запись, аналогичная учетной записи root на машине UNIX ~ используйте с особой осторожностью.

    Принять eula

    При первом запуске PsExec создаст ключ реестра лицензий:
    HKCU \ Software \ Sysinternals \ PsExec \ EulaAccepted = 0x01

    Psexec проглотит первую «-accepteula» в командной строке, независимо от того, где она встречается, поэтому при использовании psexec для запуска любых других утилит ps * вам придется дважды передать «-accepteula»:

    psexec -accepteula -s c: \ utils \ pslist.exe -accepteula

    Заключите любые длинные имена файлов в кавычки.

    Коды ошибок, возвращаемые PsExec, относятся к выполняемым вами приложениям, а не к PsExec.

    Внутренние команды

    Внутренние команды (такие как COPY, CD, DIR и т. Д.) Доступны только в оболочке CMD. Чтобы запустить эти команды из PsExec, вы должны вызвать CMD / C, а затем передать команды в качестве параметров — см. Примеры ниже.

    Примеры:

    Запустите интерактивную командную строку на \\ workstation64, окно подсказки CMD появится локально:
    (Это эквивалентно PowerShell: New-PSSession ServerName ; Start-PSSession ServerName )

    C: \> PSEXEC \\ рабочая станция64 CMD

    Запустите интерактивную командную строку с повышенными привилегиями на \\ workstation64, ее необходимо запустить из локальной командной строки с уже повышенными правами:

    C: \> PSEXEC \\ workstation64 -h CMD

    Запустите интерактивную командную строку PowerShell с повышенными привилегиями на \\ workstation64, ее необходимо запустить из локальной командной строки с уже повышенными правами:

    C: \> PSEXEC \\ workstation64 -h powershell

    Выполнить программу, которая уже установлена ​​в удаленной системе:

    C: \> PSEXEC \\ workstation64 «c: \ Program Files \ test.exe «

    Подключитесь к workstation64 и запустите IPCONFIG, чтобы отобразить IP-адрес удаленного ПК:

    C: \> PSEXEC \\ рабочая станция64 ipconfig

    Подключитесь к workstation64 и укажите каталог:

    C: \> PSEXEC \\ workstation64 -s cmd / c каталог c: \ work

    Подключитесь к workstation64 и скопируйте файл с другого сервера:

    C: \> PSEXEC \\ workstation64 -s cmd / c copy \\ server21 \ share45 \ file.ext c: \ localpath

    Выполните IpConfig в удаленной системе и отобразите результат локально:

    C: \> PSEXEC \\ workstation64 ipconfig / все

    Скопируйте программу test.exe в удаленную систему и запустить его в интерактивном режиме под учетной записью DannyGlover:

    C: \> PSEXEC \\ workstation64 -c test.exe -u DannyGlover -p Pa55w0rd

    Запустить Internet Explorer на локальном компьютере, но с ограниченными правами пользователя:

    C: \> PSEXEC -l -d «c: \ program files \ internet explorer \ iexplore.exe»

    Запустите Regedit на локальном компьютере с правами SYSTEM:

    C: \> PSEXEC -s -i regedit.exe

    Из PowerShell запустите VBscript на удаленной рабочей станции, передайте некоторые параметры и запишите результат:

    $ script = ‘C: \ Program Files \ demo.vbs ‘
    $ args = «еще кое-что»
    & PSEXEC -s \\ workstation64 «c: \ windows \ system32 \ cscript.exe» $ script $ args / log ‘C: \ logs \ demo.txt’

    «Не спрашивайте, что нужно миру. Спросите, что заставляет вас оживать, и делайте это. Потому что миру нужны люди, которые ожили »- Говард Турман

    Связанные команды:

    Q942817 — Настройка Remote UAC LocalAccountTokenFilterPolicy (разрешить удаленное администрирование)
    RUNAS — Выполнение программы под другой учетной записью пользователя.
    xCMD — Сторонняя утилита.
    Эквивалентная команда PowerShell: Invoke-Command
    Эквивалентная команда bash (Linux): xon — запустить X-программу на удаленном компьютере.


    Авторские права © 1999-2021 SS64.com
    Некоторые права защищены.

    Как использовать инструменты Psexec для выполнения команд и получения удаленных систем Windows с оболочкой? — ПОФТУТ

    Операционная система

    Windows предоставляет различные способы управления удаленными системами. Telnet, RDP, VNC — вот некоторые из них.Но эти параметры обычно привязаны к графическому пользовательскому интерфейсу. Если мы предпочитаем интерфейс командной строки, есть альтернатива под названием Psexec.

    Psexec на самом деле представляет собой набор инструментов, состоящий из следующих инструментов.

    • PSexec , используемый для выполнения команд на удаленном компьютере или получения оболочки из удаленной системы
    • PsFile , используемый для вывода списка файлов и папок в удаленной системе
    • PsGetSid , используемого для отображения идентификатора безопасности для удаленного компьютера или пользователя
    • PsInfo используется для получения подробной информации об удаленной системе
    • PsKill используется для уничтожения процесса в удаленной системе в соответствии с именем или идентификатором
    • PsList используется для подробного перечисления процессов в удаленной системе
    • PsLoggedOn используется для вывода списка вошедших в систему пользователей в удаленных системах
    • PsLogList используется для вывода списка журналов событий, находящихся в удаленных системах
    • PsPasswd используется для изменения заданного пароля пользователя в удаленной системе
    • PsPing используется для проверки связи с удаленной системы система
    • PsServervice , используемая для отображения и управления службами Windows на удаленной системе. STEM
    • PsShutdown используется для завершения работы, выхода из системы, приостановки и перезапуска удаленной системы Windows
    • PsSuspend , используемой для приостановки и возобновления процессов в удаленной системе Windows.
    • PsUptime , используемый для отображения времени безотказной работы удаленной системы

    Большинство этих инструментов представлены в 32- и 64-битной архитектуре. Соответственно можно использовать двоичные файлы.

    Загрузить Psexec Tools

    PStools разработан Марком Руссиновичем и может быть загружен по следующей ссылке. PStools является частью пакета «Sysinternals», который предоставляет множество инструментов для управления системой и внутренних функций. PStools можно загрузить с веб-сайта Sysinternals.

    https://download.sysinternals.com/files/PSTools.zip

    Дистанционная система команд запуска

    В большинстве случаев команда Psexec просто запускается в удаленной системе. Чтобы запустить команду в удаленной системе, мы должны предоставить имя пользователя и пароль вместе с командой, которая будет запускаться в удаленной системе. Синтаксис Ps exec приведен ниже.

     psexec [имя_компьютера или IP-адрес] [параметры] [команда] [аргументы_команды] 

    В этом примере мы запустим команду ipconfig в удаленной системе, где ее IP-адрес — 192.168.122.66 . Имя пользователя: , администратор, , пароль: 123456Ww .

     $ psexec \\ 192.168.122.66 -u Администратор -p 123456Ww ipconfig 
    Дистанционная система запуска команд

    Как мы видим, команда выполняется в удаленной системе без проблем.

    Перенаправить вывод команды Psexec

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

     $ psexec \\ 192.168.122.66 -u Администратор -p 123456Ww ipconfig> 192.168.122.66_ifconfig 

    В этом примере вывод команды ipconfig сохраняется в файл с именем 192.168.122.66_ipcopnfig .

    Передать хэш

    В предыдущем примере мы предоставили пароль пользователя. Единственный вариант — это не пароль пользователя в виде открытого текста.Мы также можем предоставить хеш-значение токена пользователя. Следуя примеру, мы предоставляем хеш токена пользователя.

     $ psexec \\ 192.168.122.66 -u Администратор -p q23q34t34twd3w34t34wtw34t ipconfig 

    Копировать команду из локальной в удаленную систему

    Запуск команд в удаленной системе — очень полезная функция, но есть еще одна полезная функция, которая облегчит работу системным администраторам и пен-тестерам. Psexec можно использовать для копирования команды из локальной системы в удаленную.Мы будем использовать опцию -c для копирования. После завершения команд удаленный экземпляр будет удален.

    В этом примере мы скопируем файл cmd.exe . После завершения операции копирования в удаленной системе будет запущен cmd.exe.

     $ psexec \\ 192.168.122.66 -u Администратор -p 123456Ww -c cmd.exe 
    Копировать команду из локальной в удаленную систему

    Как мы видим, мы получаем командную оболочку в удаленной системе.

    Выполнить команду от имени системного пользователя

    При выполнении команд в удаленной системе привилегии и владелец процесса будут предоставлены пользователю.Если нам нужно изменить пользователя-владельца удаленных команд на пользователя System , мы предоставим опцию -s .

    В этом примере мы будем использовать regedit.exe

     $ psexec \\ 192.168.122.66 -u Администратор -p 123456Ww -s regedit.exe 

    Запуск приложения с графическим интерфейсом пользователя в удаленной системе

    Операционные системы Windows по умолчанию предоставляют графический интерфейс. Psexec можно использовать для открытия приложения с графическим интерфейсом пользователя в удаленной системе в указанной пользовательской консоли. Консоль пользователя просто означает рабочий стол пользователя.

    В этом приложении мы запустим notepad.exe в удаленной системе. Пользователь удаленной системы Администратор может взаимодействовать с этим блокнотом.

     $ psexec \\ 192.168.122.66 -u Администратор -p 123456Ww -i notepad.exe 
    Запустить приложение с графическим интерфейсом пользователя в удаленной системе

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

    Создание интерактивной оболочки в удаленной системе

    До сих пор мы запускали команды удаленно.После завершения выполнения команды соединение с удаленной системой закрывается. Это похоже на сеансовое соединение. Psexec предоставляет удаленную оболочку или командную строку. Psexec подключает удаленный компьютер и предоставляет нам оболочку MS-DOS. Чтобы получить удаленную оболочку, мы предоставим команду cmd.exe в удаленной системе.

     $ psexec \\ 192.168.122.66 -u Администратор -p 123456Ww cmd.exe 
    Создание интерактивной оболочки в удаленной системе

    Запустите Regedit с системными привилегиями

    Реестром

    Windows можно управлять с помощью инструмента с графическим интерфейсом под названием «Regedit».Доступ к Regedit можно получить от текущего пользователя, но в некоторых случаях может потребоваться редактирование локального системного реестра с правами «Система». Мы можем открыть «Regedit» с системными привилегиями с помощью следующей команды psexec.

     $ psexec -s -i regedit.exe 

    Инструменты Psexec

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

    Файл списка в удаленной системе с помощью PsFile

    Команда PsFile может использоваться для вывода списка или закрытия открытых файлов. Синтаксис очень похож на команду PSexec. В этом примере мы перечислим файлы, расположенные по адресу C: \ Users \ в удаленной системе.

     $ psfile \\ 192.168.122.66 -u Администратор -p 123456Ww 
    Список файлов в удаленной системе с помощью PsFile

    Список идентификаторов безопасности в удаленной системе с помощью PsGetSid

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

     $ psgetsid \\ 192.168.122.66 -u Администратор -p 123456Ww 
    Список SID в удаленной системе с помощью PsGetSid

    Получение информации об удаленной системе с помощью PSInfo

    PsInfo — это инструмент, используемый для получения информации об удаленной системе, такой как время работы, версия, вариант Windows и т. Д.

     $ psinfo \\ 192.168.122.66 -u Администратор -p 123456Ww 
    Получите информацию об удаленной системе с помощью PSInfo

    Следующая информация об удаленной системе предоставлена ​​ PsInfo

    • Время работы показывает, сколько дней и часов работает система
    • Версия ядра показывает ядро ​​операционной системы
    • Тип продукта показывает версию операционной системы
    • Версия продукта
    • Номер сборки ядра
    • Зарегистрированная организация
    • Зарегистрированный владелец
    • IE версии показывает версию Internet Explorer
    • Системный корень показывает, где установлена ​​операционная система
    • Процессор показывает количество процессоров или потоков
    • Процессор Скорость
    • Тип процессора` показывает подробную версию и имя процессора
    • Физическая память
    • Видеодрайвер показывает имя загруженного в данный момент драйвера

    Список процессов в удаленной системе с помощью PsList

    Процессы, запущенные в удаленной системе, можно легко просмотреть с помощью команды PsList .

     $ pslist \\ 192.168.122.66 -u Администратор -p 123456Ww 
    Список процессов в удаленной системе с помощью PsList

    В выходных данных будет представлена ​​следующая информация об удаленных системных процессах.

    • Имя — это имя исполняемого файла
    • Pid — это идентификатор процесса, который идентифицирует процессы
    • Pri — приоритет, влияющий на производительность процесса во время большой нагрузки
    • Thd — номер потока
    • Hnd — количество обработчиков открытых файлов
    • Время ЦП — это общий использованный ресурс ЦП в виде времени
    • Истекшее время — это время с начала процесса.

    Завершить процесс в удаленной системе с помощью PsKill

    Процессы, запущенные в удаленной системе, можно легко остановить с помощью команды PsKill . Чтобы убить процесс, мы должны предоставить идентификатор процесса или имя процесса в качестве аргумента. Мы уничтожим удаленный процесс с идентификатором процесса 2064 .

     $ pskill \\ 192.168.122.66 -u Администратор -p 123456Ww 2064 
    Завершить процесс в удаленной системе с помощью PsKill

    Мы получаем сообщение Process 2064 on 192.168.122.66 убито ....

    Список журналов событий в удаленной системе с помощью PsLogList

    Журналы удаленной системы могут быть легко выгружены в локальную систему с помощью команды PsLogList . Если мы используем эту команду без каких-либо дополнительных параметров, она сбросит все журналы событий из удаленной системы, которые заполнят командную строку. Поэтому для примера мы ограничим журналы событий за последние 5 минут с помощью опции -m .

     $ psloglist \\ 192.168.122.66 -u Администратор -p 123456Ww -m 5 
    Список журналов событий в удаленной системе с помощью PsLogList

    Изменить пароль в удаленной системе с помощью PsPasswd

    Пароли пользователей удаленной системы можно легко изменить с помощью команды PSPasswd .В этом примере мы изменим пароль пользователя Administrator на 123456Aa .

     $ pspasswd \\ 192.168.122.66 -u Администратор -p 123456Ww Администратор 123456Aa 
    Изменить пароль в удаленной системе с помощью PsPasswd

    Пинг с PsPing

    Еще один полезный инструмент — PsPing , который будет создавать пакеты ICMP для проверки связи. Эта команда запустит локальную систему.

     $ psping google.com 

    Управление службой в удаленной системе с помощью PsService

    Команда PsService используется для вывода списка, запуска и остановки служб в удаленной системе.

    Список услуг

    Мы можем перечислить удаленную службу с опцией запроса .

     $ psservice \\ 192.168.122.66 -u Администратор -p 123456Aa запрос 
    Список услуг

    Запуск службы удаленно

    Удаленная служба может быть запущена с опцией start . В этом примере мы запустим службу с именем ALG service.

     $ psservice \ 192.168.122.66 -u Администратор -p 123456Aa запустить ALG 
    Запуск службы удаленно

    После запуска сервиса распечатывается информация о сервисе.

    Остановить службу удаленно

    В следующем примере мы остановим службу ALG .

     $ psservice \\ 192.168.122.66 -u Администратор -p 123456Aa остановить ALG 
    Остановить службу удаленно

    Выключение, перезагрузка, приостановка удаленной системы с помощью PSShutdown

    Удаленную систему можно выключить с помощью команды PSShutdown , как показано ниже.

     $ psshutdown \\ 192.168.122.66 -u Администратор -p 123456Aa -k 

    Швейцарский армейский нож системного администратора

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

    Многие из них предназначены для оплаты продуктов. Однако бесплатные инструменты обеспечивают чрезвычайно надежное удаленное управление системами Windows, позволяя ИТ-администраторам удаленно выполнять команды и выполнять другие действия. Одним из таких инструментов, который был чрезвычайно популярен среди администраторов Windows, является PsExec . Что такое PsExec? Как используется PsExec? Он установлен в Windows по умолчанию? Как это работает с Windows 10? В этом руководстве мы рассмотрим PsExec, швейцарский армейский нож системного администратора, и увидим, чем и почему этот инструмент так ценен.

    Что такое PsExec?

    Администраторы Windows давно нуждаются в программах, позволяющих выполнять удаленные процессы в других системах. В отличие от Linux, с возможностью удаленного подключения по SSH и другими встроенными инструментами, Windows ограничена в возможности удаленного выполнения команд, помимо взаимодействия с удаленными системами с помощью удаленного рабочего стола Windows. Это средство «удаленного» администрирования сред Windows является громоздким, сложным и далеко не эффективным в масштабах.

    PsExec — это приложение типа telnet, которое позволяет выполнять процессы и взаимодействовать с консольными приложениями без использования полного сеанса рабочего стола.Дополнительным преимуществом PsExec является то, что он не требует установки клиентского программного обеспечения для удаленного подключения ни на хосте, ни на целевом клиенте. Он позволяет запускать интерактивные командные запросы в удаленных системах Windows. Он обеспечивает удаленный доступ к инструментам, с которыми вы иначе не могли бы взаимодействовать в Windows, например к команде IPconfig.

    Инструмент PsExec является членом очень известного набора инструментов PsTools от Sysinternal. Windows Sysinternals — это набор инструментов, содержащий более 70 бесплатных утилит, которые позволяют администраторам Windows отслеживать, управлять и устранять неполадки Windows.Инструменты SysInternals были детищем Марка Руссиновича и Брайса Когсвелла. В настоящее время инструменты все еще разрабатываются и поддерживаются.

    Убедительные характеристики, простота использования и функциональность делают PsExec чрезвычайно универсальным, функциональным и популярным среди администраторов Windows инструментом для удаленного выполнения команд. Теперь, когда мы лучше понимаем, что такое PsExec и некоторые его характеристики, давайте рассмотрим, как эффективно использовать PsExec, и несколько вариантов использования.

    Почему бы просто не использовать PowerShell?

    Могут ли администраторы в настоящее время не использовать в среде новые инструменты и возможности, такие как удаленное взаимодействие PowerShell, вместо PsExec? В некоторых средах организации могут перейти на использование удаленного взаимодействия PowerShell и других новых удаленных возможностей. Тем не менее, устаревшие операционные системы все еще могут быть обнаружены как часть инфраструктуры из-за определенных бизнес-требований или требований к программному обеспечению в некоторых текущих бизнес-средах.

    PsExec поддерживает версии Windows до Windows XP и может эффективно использоваться во всех операционных системах от XP до текущей версии Windows 10.Могут возникнуть проблемы с использованием удаленного взаимодействия PowerShell с устаревшими операционными системами, такими как Windows XP. Кроме того, это должно быть включено и потенциально может быть проблематичным. PsExec — это более традиционный и простой процесс подключения, запуска службы и запуска команд.

    В этом случае использование PowerShell может не

    Требования для использования PsExec

    Требования к использованию и запуску PsExec относительно просты, поскольку сама утилита не устанавливается.Однако при использовании утилиты PsExec следует помнить о нескольких вещах. К ним относятся:

    • PsExec — это решение только для Windows, которое работает между компьютерами Windows
    • Вам понадобится хост-компьютер Windows для подключения к целевым хостам Windows, которыми вы хотите управлять.
    • Общий ресурс admin $ должен быть доступен в целевой системе Windows
    • Вам нужно будет убедиться, что у вас есть соединение между хостом, на котором работает PsExec, и целевым компьютером, которым вы хотите управлять.Это включает в себя:
      • Убедитесь, что брандмауэр не фильтрует трафик между вашим хостом и целью
      • Включение общего доступа к файлам и принтерам Исключение брандмауэра Защитника Windows на целевом компьютере с Windows


    Разрешение общего доступа к файлам и принтерам в брандмауэре Защитника Windows

    Загрузка и установка PsExec

    Чтобы начать использовать PsExec, вам необходимо загрузить инструмент и установить его на административную рабочую станцию, с которой вы будете его запускать.Вы можете загрузить PsExec как часть пакета PsTools, который легко (и бесплатно) доступен от Microsoft. Загрузите PsTools по следующей ссылке:

    Инструменты загружаются в виде файла .zip, содержащего исполняемые файлы для пакета PS Tools. После распаковки пакета PS Tools вы увидите список доступных инструментов как часть пакета PS Tools. Ниже показан каталог после распаковки файла .zip. Вы увидите, что у вас PsExec.exe и PsExec64.exe .


    После распаковки набора инструментов PS Tools в каталог

    Установка PsExec

    Как упоминалось ранее, нет необходимости устанавливать набор инструментов PS Tools по отдельности. Это самоисполняющиеся файлы, в которых есть все необходимое как часть самого исполняемого файла. Однако есть несколько вещей, которые вы, вероятно, захотите сделать после загрузки пакета PS Tools на свою административную рабочую станцию. К ним относятся следующие:

    • Добавьте каталог PS Tools в конфигурацию PATH Windows
    • Последствия для безопасности и исключения антивируса

    Давайте рассмотрим эти шаги один за другим и посмотрим, почему они необходимы.

    Добавьте PsExec в конфигурацию PATH Windows

    Чтобы позволить PsExec иметь встроенное поведение встроенной утилиты Windows , вам нужно добавить каталог PS Tools в оператор Windows PATH. Что это значит? Добавление каталога PS Tools в оператор PATH упростит использование инструментов и позволит запускать их без вашего внимания в каталоге, содержащем исполняемые файлы пакета PS Tools. Для этого вам нужно скопировать каталог PS Tools в централизованное, интуитивно понятное место, а затем добавить это место в конфигурацию Windows PATH.

    Ниже папка PSTools, содержащая утилиты PS Tools после копирования в корень диска C.


    Копирование каталога PSTools в корень диска C

    После копирования каталога PSTools в место, где вы хотите их разместить, вам необходимо отредактировать системную переменную PATH в свойствах Advanced System в клиенте Windows или операционной системе Windows Server. Вы можете перейти к свойствам расширенной системы, набрав sysdm.cpl > Дополнительно> Переменные среды . Затем отредактируйте переменную PATH в переменных System .


    Изменение системной переменной PATH Windows для добавления пути к каталогу PSTools

    Как вы можете видеть ниже, после добавления конфигурации переменной PATH для каталога PSTools теперь мы можем ввести psexec. Windows находит исполняемый файл без выполнения команды в родительском каталоге PSTools.


    Проверка переменной PATH путем выполнения команды PsExec вне родительского каталога
    Последствия для безопасности и исключения антивируса

    Важно учитывать безопасность при использовании утилиты PsExec.Несмотря на то, что это мощная, полезная и полезная утилита, ее можно использовать для злонамеренных действий, о чем мы поговорим ниже. Любой неправильно используемый инструмент может нанести огромный ущерб производственной системе или среде. Только тем, кто имеет опыт работы с инструментами командной строки осторожным и хорошо протестированным образом, должно быть разрешено взаимодействовать с производственными системами с помощью PsExec.

    При использовании набора утилит PSTool, включая PsExec, важно учитывать то, что многие антивирусные решения помечают PsExec и другие утилиты PSTools как вредоносные.Являются ли утилиты PSTools вредоносными? PsExec и другие PSTools не являются вредоносными инструментами. Они были разработаны под эгидой Microsoft и являются законными инструментами подразделения SysInternals. Почему они отмечены?


    Файл, помеченный в папке пакета PSTools известным поставщиком антивируса

    Создатели вредоносных программ и злоумышленники становятся все лучше и изощреннее в использовании собственных или законных инструментов для взлома систем. Если злоумышленник может использовать встроенный, законный или известный инструмент, он, скорее всего, не будет отмечен как подозрительный, даже если используется для злонамеренных действий.Даже с новыми решениями для кибербезопасности, внесенными в белый список, встроенные или легитимные инструменты, такие как те, что находятся в PSTools, могут быть внесены в белый список организациями. Злоумышленники это знают. Они часто используют эти инструменты, чтобы их не пометили как подозрительные. Может потребоваться гораздо больше времени для того, чтобы действия с использованием легитимных инструментов стали рассматриваться как подозрительные.

    Например, программа-вымогатель NotPetya использует служебную программу PsExec для копирования и распространения через PsExec в общие ресурсы admin $ с помощью удаленного WMI. Программа-вымогатель BitPaymer также использует утилиту PsExec для копирования и выполнения вредоносных команд в среде для быстрого и эффективного распространения программ-вымогателей.

    В записке создателя инструмента Марка Руссиновича последствия использования инструмента для безопасности описываются следующим образом:

    «Последнее замечание по безопасности касается вирусов. Некоторые вирусы используют PsExec для распространения в сети, и в результате несколько основных антивирусных продуктов помечают PsExec как троянскую программу или червя. Помните, что PsExec работает в удаленных системах только в том случае, если он работает под учетной записью, имеющей членство в группе администраторов в удаленной системе. Другими словами, если учетная запись, из которой вы ее запускаете, не имеет административного доступа к удаленной системе, PsExec не сможет выполнить процесс в удаленной системе.Кроме того, функциональность PsExec может быть реализована другими способами; таким образом, PsExec удобен только для авторов вирусов, которые в противном случае могли бы легко реализовать функциональность, предоставляемую PsExec ».

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

    Прочие ценные бумаги PsExec, указанные в примечании

    Есть и другие функции безопасности и поведения, на которые следует обратить внимание при работе с PsExec. Служба PsExec использует безопасность Windows, и олицетворяет учетную запись, из которой вы запускаете служебную программу PsExec в локальной системе . Важно понимать ограничения и предостережения при выдаче себя за другое лицо с точки зрения PsExec.

    По замыслу, выдача себя за другое лицо несколько ограничена. Удаленные процессы не имеют доступа к сетевым ресурсам, даже если учетная запись обычно имеет доступ к этим ресурсам.Предположим, что учетная запись, олицетворяемая для подключения, не имеет прав локального администратора в удаленной системе. В этом случае PsExec позволяет указать другую учетную запись для предоставления альтернативного пользовательского контекста для команд. Чтобы использовать альтернативные учетные данные с PsExec, обратите внимание на несколько переключателей:

    • -u укажите логин — REMOTEMACHINEadministrator
    • -p укажите пароль для альтернативных учетных данных — -p administrator_pass ipconfig
    • Полная команда — psexec -u REMOTEMACHINEadministrator -p mypassword ipconfig

    Чтобы предотвратить атаку «через плечо» путем ввода пароля на виду, вы можете опустить переключатель -p, и PsExe запросит пароль.При вводе пароля символы не выводятся на экран. Это обеспечивает некоторую гибкость в том, как вводятся пароли для альтернативных учетных данных.

    Работает под учетной записью LOCAL SYSTEM

    Другой вариант, касающийся учетных данных пользователя, — это возможность использовать учетную запись LOCAL SYSTEM . Учетная запись LOCAL SYSTEM — это чрезвычайно мощная учетная запись, которая имеет разрешения на взаимодействие с основными службами и процессами Windows. Примеры включают Winlogon и службу Local Security Authority Subsystem Service (LSASS) .Системная учетная запись Windows — единственная учетная запись, которая имеет возможность доступа к определенным ресурсам, таким как значения реестра HKEY_LOCAL_MACHINESAM, а также к специальному каталогу информации о системном томе в последних системах Windows. Чтобы запустить PsExec в качестве учетной записи ЛОКАЛЬНОЙ СИСТЕМЫ, вы передаете переключатель -s :

    • psexec -s \ REMOTEHOST <команда>

    Функциональность LOCAL SYSTEM также полезна, когда необходимо запустить процесс или консольное приложение в контексте учетной записи LOCAL SYSTEM на локальном компьютере.Еще один полезный вариант использования утилиты PsExec — это простой способ запустить программу под пользователем ЛОКАЛЬНОЙ СИСТЕМЫ. В локальной системе Windows вы можете использовать следующее для запуска программы под учетной записью LOCAL SYSTEM:

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

    Как работает PsExec?

    Вы можете задаться вопросом, как PsExec работает под капотом и как он предоставляет функциональные возможности для выполнения удаленных команд на целевых компьютерах Windows. Рабочий процесс PsExec выглядит следующим образом:

    1. PsExec начинает с извлечения из исполняемого образа встроенной службы Windows под названием Psexesvc
    2. Служба копируется в долю Admin $ удаленной системы
    3. API диспетчера служб Windows затем используется для удаленного интерфейса с целевым компьютером
    4. Служба Psexesvc запущена в удаленной системе
    5. Создается именованный канал с именем psexecsvc, к которому утилита PsExec подключается и отправляет команды удаленной цели
    6. Указанный удаленный исполняемый файл запускается вместе с указанными вами параметрами

    Управление службой Psexesvc

    Как уже упоминалось, служба Psexesvc установлена ​​на удаленном компьютере.Вы можете контролировать поведение службы на удаленной цели. Поведение Psexesvc по умолчанию выглядит так:

    • Служба ожидает завершения работы исполняемого файла, затем отправляет код выхода обратно в PsExec для печати на локальной консоли
    • Используя параметр -d (не ждать), служба завершит работу после запуска исполняемого файла

    Понимание рабочего процесса и того, как PsExec взаимодействует с удаленными системами, поможет с точки зрения устранения неполадок и помнит о безопасности.

    Изучение функциональности PsExec

    Первое, что вам нужно сделать, это изучить функциональные возможности утилиты PsExec. Вы можете легко увидеть возможности, предоставляемые инструментом, если вы введете команду psexec без переключателей. Как показано, PsExec имеет достаточное количество переключателей командной строки для взаимодействия с удаленной целью и управления поведением.

    Использование: psexec [\ computer [, computer2 [,…] | @ файл]] [- u пользователь [-p psswd]] [- ns] [- r имя_службы] [- h] [- l] [- s | -e] [- x] [- i [сеанс]] [ -c [-f | -v]] [- w каталог] [- d] [- <приоритет>] [- an, n,…] cmd [аргументы]

    -a Отдельные процессоры, на которых приложение может работать с

    запятых, где 1 — процессор с наименьшим номером.Например,

    , чтобы запустить приложение на ЦП 2 и ЦП 4, введите:

    «-а 2,4»

    -c Копировать указанную программу в удаленную систему для

    исполнение. Если вы опустите эту опцию, заявка

    должен находиться в системном пути удаленной системы.

    -d Не ждать завершения процесса (неинтерактивный).

    -e Не загружает профиль указанной учетной записи.

    -f Копировать указанную программу, даже если файл уже

    существует в удаленной системе.

    -i Запустить программу, чтобы она взаимодействовала с рабочим столом

    указанный сеанс в удаленной системе. Если нет сеанса —

    указывает, что процесс выполняется в сеансе консоли.

    -h Если целевая система Vista или выше, имеет процесс

    запускается с токеном с повышенными правами, если он доступен.

    -l Запустить процесс от имени ограниченного пользователя (удаляет группу администраторов

    и разрешает только привилегии, назначенные группе пользователей).

    В Windows Vista процесс выполняется с низким уровнем целостности.

    -n Задает тайм-аут в секундах при подключении к удаленным компьютерам.

    -p Задает необязательный пароль для имени пользователя. Если вы опустите это

    вам будет предложено ввести скрытый пароль.

    -r Задает имя удаленной службы для создания или взаимодействия.

    с.

    -s Запустить удаленный процесс в системной учетной записи.

    -u Задает необязательное имя пользователя для входа в удаленный

    компьютер.

    -v Копировать указанный файл только в том случае, если он имеет более высокий номер версии

    или новее, чем в удаленной системе.

    -w Установить рабочий каталог процесса (относительно

    удаленный компьютер).

    -x Отображение пользовательского интерфейса на безопасном рабочем столе Winlogon (локальная система

    Только

    ).

    -arm Указывает, что удаленный компьютер имеет архитектуру ARM.

    -priority Указывает -low, -belownormal, -abovenormal, -high или

    — в реальном времени для запуска процесса с другим приоритетом.Используйте

    — фон для работы с нехваткой памяти и приоритетом ввода-вывода в Vista.

    компьютер Direct PsExec для запуска приложения на удаленном компьютере

    компьютер или указанные компьютеры. Если опустить компьютер

    имя PsExec запускает приложение в локальной системе,

    , и если вы укажете подстановочный знак (\ *), PsExec запустит

    на всех компьютерах в текущем домене.

    @file PsExec выполнит команду на каждом из перечисленных компьютеров

    в файле.

    cmd Имя приложения для выполнения.

    arguments Аргументы для передачи (обратите внимание, что пути к файлам должны быть

    абсолютных путей в целевой системе).

    -accepteula Этот флаг подавляет отображение диалогового окна лицензии.

    -nobanner Не отображать стартовый баннер и сообщение об авторских правах.

    Приложения, в названии которых есть пробелы, можно заключить в

    .

    кавычек, например psexec \ marklap «c: приложение с длинным именем.исполняемый».

    Ввод передается в удаленную систему только при нажатии клавиши ввода

    , а нажатие Ctrl-C завершает удаленный процесс.

    Если вы опустите имя пользователя, процесс будет запущен в контексте вашего

    Учетная запись

    в удаленной системе, но не будет иметь доступа к сети

    ресурсов (потому что он выдаёт себя за другое лицо). Укажите действительное имя пользователя

    в синтаксисе DomainUser, если удаленному процессу требуется доступ

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

    пароль и команда зашифрованы при передаче в удаленную систему.

    Коды ошибок

    , возвращаемые PsExec, относятся к приложениям, которые вы используете.

    , а не PsExec.

    Как используется PsExec?

    Есть много способов использования команды PsExec. К ним относятся:

    • Выполнение определенной удаленной команды на одном компьютере
    • Запуск общей командной строки или командной строки PowerShell на удаленном компьютере
    • Выполнение удаленной команды на нескольких компьютерах
    • Чтение компов из файла
    • Интерактивный запуск программ для удаленных конечных пользователей

    Выполнение удаленной команды на одном компьютере

    Теперь, когда у нас есть базовое представление о PsExec, что это такое, и мы изучили параметры командной строки, давайте приступим к использованию PsExec с несколькими базовыми примерами подключения и функциональности.В своей основной форме для PsExec требуется следующее:

    1. Команда PsExec
    2. Целевой компьютер
    3. Команда для запуска на цели

    Мы используем PsExec для подключения к удаленному компьютеру с именем win10remote и вызываем команду ipconfig удаленного компьютера . Вывод на консоль — это вывод ipconfig удаленной рабочей станции Windows 10.


    Выполнение команды ipconfig на удаленном компьютере с помощью PsExec

    Запуск общей командной строки или командной строки PowerShell на удаленном компьютере

    Изначально вы, вероятно, сначала думаете о выполнении определенной команды на удаленном компьютере с Windows.Однако одним из убедительных вариантов использования PsExec является возможность запускать общую командную строку или сеанс PowerShell на удаленном компьютере. Таким образом, если вам необходимо выполнить удаленное устранение неполадок на удаленном компьютере, не зная, какая конкретная команда вам может понадобиться, вы можете начать с общей командной строки или сеанса PowerShell.

    Как вы можете видеть ниже, мы запускаем сеанс PowerShell на удаленном узле, а затем выдаем команды на целевом узле Windows, чтобы начать устранение неполадок.После запуска командной строки PowerShell мы можем запускать такие команды, как Ipconfig, route print и т. Д. Таким образом, вам не нужно начинать новый сеанс PsExec на удаленном хосте Windows для каждой команды, которую вы хотите запустить.


    Использование общей командной строки PowerShell, запущенной с помощью PsExec, для устранения неполадок

    Выполнение удаленной команды на нескольких компьютерах

    Вы, возможно, думали ранее, что вам может потребоваться создать какой-либо пакетный сценарий для циклического прохождения нескольких удаленных компьютеров, если у вас есть несколько, на которых вам нужно выполнить удаленную команду.Однако эта функция встроена в PsExec. Чтобы запустить удаленную команду на нескольких компьютерах, используйте следующий синтаксис:

    PsExec запустит удаленную команду на всех именах компьютеров, перечисленных в строке UNC, разделенных запятой.

    Чтение компов из файла

    Если вам интересно, можно ли использовать PowerShell вместе с PsExec, да, вы можете. Один из простых способов продемонстрировать, как вы можете передавать информацию в PsExec из PowerShell, — это перечислить компьютеры из Active Directory, чтобы предоставить PsExec список компьютеров для выполнения удаленных команд.Простым примером этого является использование модуля Active Directory PowerShell для передачи компьютеров из Active Directory в текстовый файл. Когда у вас есть текстовый файл, вы можете заставить PsExec прочитать текстовый файл, чтобы перечислить компьютеры, которые были экспортированы из Active Directory.

    Модуль Active Directory PowerShell устанавливается путем установки AD DS и AD LDS Tools под Role Administration Tools на хосте Windows Server.


    Установка инструментов AD DS и AD LDS для установки модуля Active Directory PowerShell

    После установки модуля Active Directory PowerShell вы можете использовать его для создания входного файла для PsExec.Что, если вы хотите очистить кеш DNS на всех компьютерах, входящих в конкретное подразделение Active Directory? Вы можете сделать что-то вроде следующего:

    • psexec «\ $ ((Get-AdComputer -Filter * -SearchBase« OU = TestOU, DC = cloud, DC = local »). Имя -join‘, ’)» ipconfig / flushdns

    Приведенная выше команда выполняет поиск определенного подразделения Active Directory, объединяет полученные компьютеры в строковый формат с разделителями-запятыми, который необходим команде PsExec для подключения к нескольким удаленным компьютерам, а затем запускает команду Ipconfig / flushdns.

    Интерактивный запуск программ для удаленных конечных пользователей

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

    Для этого вы можете использовать следующую команду:

    • psexec -i \ remotewindows winword.exe

    Приведенная выше команда запустит Microsoft Word в интерактивном режиме, чтобы конечный пользователь увидел запуск программы на своей рабочей станции Windows. Это отличный инструмент, помогающий удаленным конечным пользователям запускать определенную программу, если они не могут использовать свои обычные ярлыки.

    Заключительные мысли

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

    PsExec — это мощный инструмент, который является частью набора инструментов PSTools от SysInternals. Это мощная утилита, которая позволяет ИТ-администраторам удаленно подключаться к хостам Windows и выполнять команды в удаленной системе. Требования для подключения к удаленным системам Windows минимальны.К ним относятся учетные данные, которые позволяют подключаться к общей папке Admin $ удаленного компьютера, разрешен общий доступ к файлам и принтерам, а также разрешения локального администратора, если это необходимо для настройки на удаленном узле Windows.

    PsExec предоставляет множество различных возможностей, которые позволяют вам взаимодействовать с одним удаленным хостом Windows, несколькими компьютерами Windows, запускать программы в интерактивном режиме и даже работать в тандеме с Windows PowerShell для получения списка компьютеров из Active Directory.Из-за характера того, что может делать PsExec, организации должны быть осторожны с тем, у кого есть доступ для запуска утилиты и в каких местах она может быть запущена. Вредоносные программы, в том числе многие варианты программ-вымогателей, могут использовать PsExec для распространения вредоносных файлов и выполнения определенных команд в сети для компрометации среды.

    Организации могут отказаться от внесения PsExec и других инструментов командной строки в белый список во всем мире, поскольку они могут быть использованы в злонамеренных целях. Лучшим подходом является использование минимального количества разрешенных рабочих станций, которым разрешено использовать PsExec для подключения к удаленным клиентам Windows.Таким образом, поверхность атаки намного меньше, если вредоносное ПО пытается использовать известные, распространенные или встроенные инструменты командной строки. В общем, PsExec — это швейцарский армейский нож системного администратора для выполнения удаленного администрирования из командной строки, обеспечивающий быстрый и легкий доступ для устранения неполадок, настройки и оказания помощи конечным пользователям.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *