Утилиты пакета PStools
    Быстрый переход к описанию утилит пакета:
PsExec
PsFile
PsGetSID
PsInfo
PsKill
PsList
PsLoggedOn
PsLogList
PsPasswd
PsService
PsShutdown
PsSuspend
Примеры использования в командных файлах
FePSTools — графический интерфейс для командной строки PSTools
   
Все утилиты пакета PStools работают во всех версиях Windows старше Windows NT
и не требуют инсталляции. Позволяют осуществлять не только
управление локальным компьютером, но и удаленное администрирование без установки
на удаленном компьютере какого-либо программного обеспечения. Для большинства
действий, выполняемых утилитами PsTools требуются административные привилегии.
   
Запуск утилит осуществляется
из командной строки. В Windows Vista/7/8 нужен запуск от имени администратора.
Справку по конкретной утилите можно получить задав ключ
Использование:
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 выполнит приложение на всех компьютерах текущего домена.
-u — имя пользователя. Если опущено — то будет использовано имя текущего пользователя.
-p — пароль. Если опущен, то будет запрошен программой.
-s — выполнить приложение с локальными системными правами (Local system account).
-e — использовать указанный профиль пользователя.
-i — разрешить удаленной программе взаимодействовать с рабочим столом на удаленном компьютере. Если ключ не задан, то выполнение удаленной программы происходит незаметно для пользователя удаленного компьютера.
-f — выполнять копирование даже при наличии исполняемого файла на удаленном компьютере.
-v — выполнять копирование только в случае, если исполняемый файл имеет более позднюю версию.
-d — не ждать завершения удаленного процесса.
-w — установить рабочий каталог для удаленного процесса.
-priority — приоритет для удаленного процесса. Может принимать значения (в порядке возрастания) -low, -belownormal, -abovenormal, -high, -realtime.
program — имя приложения для выполнения на удаленной системе.
arguments — аргументы для удаленного приложения. Пути файлов должны задаваться относительно удаленного компьютера и имена файлов или каталогов, содержащие пробелы должны заключаться в двойные кавычки, например — «C:\Program Files\User Folder\Programm.exe»
   
Ввод с клавиатуры направляется на удаленный компьютер, нажатие Ctrl-C завершит удаленный процесс.
Если не задано имя пользователя, то удаленный процесс будет выполнен на удаленной
системе с правами локальной системной учетной записи, т.е. без доступа к сетевым ресурсам,
даже если ваша учетная запись на удаленной системе дает вам такой доступ.
Поэтому, если удаленному приложению требуется доступ к сетевым ресурсам,
задавать имя пользователя в формате «Domain\User» обязательно. Код возврата (ERRORLEVEL) по
завершению Psexec определяется удаленным приложением, что позволяет анализировать результаты
выполнения удаленного приложения в командных файлах.
  —   запустить командный процессор 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 >
   
Теперь команды, вводимые с консоли этого окна будут выполняться на удаленном компьютере.
Однако, не стоит запускать на выполнение программы, использующие графический интерфейс,
взаимодействие с ними будет невозможно.
— получить информацию о настройке 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:
— скопировать каталог 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\*.*
    Для того, чтобы выполнить командный файл (.bat или .cmd), нужно сначала скопировать его на удаленный компьютер, т.е. обязательно использовать ключ
Psexec.exe \\192.168.0.1 -u vasya -p mypass -c mycmd.cmd
    Иногда необходимо запустить приложение на удаленном компьютере, видимое для его пользователя. Используйте ключ -i:
Psexec.exe \\192.168.0.1 -u vasya -p mypass -i notepad.exe
После запуска блокнота (notepad.exe) PsExec будет ждать его завершения удаленным пользователем. Если в этом ожидании нет необходимости, то нужно использовать ключ -d.
    Особенность запуска приложения от имени локальной учетной записи позволяет получить в редакторе реестра (REGEDIT.EXE) доступ к разделам SAM и SECURITY. Для этого нужно запустить удаленно regedit без указания имени пользователя и пароля и использовать «-i»:
После чего на компьютере \\REMOTE запустится редактор реестра с доступными разделами SAM и SECURITY.
Или локально с ключами -s и -i:
psexec.exe -s -i regedit.exe
В Windows Vista/7/8 используется изоляция сеанса, в котором работают системные службы, от сеанса
пользователя (Session 0 Isolation), поэтому команда для этих версий ОС будет выглядеть иначе:
psexec -s -i 0 regedit.exe
после чего нужно нажать на кнопку «Просмотреть сообщение» в диалоговом окне «Обнаружение интерактивных служб».
    Учтите, что в таком режиме использования редактора реестра вы получаете права на создание, изменение и удаление даже таких ключей, которые доступны только процессам ядра.
   
С точки зрения системного администрирования PSexec удобно использовать для запуска
приложений на всех компьютерах домена (вместо имени компьютера задать — \\*) с
правами администратора или под локальной системной учетной записью (ключ -s).
Psexec.exe \\* -s install.exe — запустить install.exe на всех
компьютерах домена под системной учетной записью
psexec.exe -a 1 -i -w «папка приложения» «приложение»
psgetsid.exe mydomain.ru\admin — выдать SID пользователя admin домена mydomain.ru
pssetsid admin — выдать SID пользователя admin данного компьютера
psgetsid S-1-5-21-854245398-1035525444-1417001333-1123 — выдать имя пользователя по SID
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 [\\computer [-u username [-p password]]]
Если \\computer опущено — то выполняется завершение процесса на локальной
машине.
process Id or name — имя или идентификатор процесса (его
можно получить с помощью рассматриваемой ниже утилиты PsList.exe).
   
Кстати, с помощью 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.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.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 [\\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)
    Например, выдать в файл 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
    Выдать в файл errors.txt информацию о предупреждениях и ошибках за последние
3 дня на текущем компьютере в журнале System:
psloglist.exe -u admin -p admpass -d 3 -f we > errors.txt
    Если вы не знаете номер идентификатора события, но знаете его смысловое описание,
то можно объединить выполнение 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 [\\[computer[,computer,[,…]|Domain]|@file] [-u Username [-p Password]]] Username [NewPassword]
Username — имя пользователя, для которого будет изменен пароль.
NewPassword — новый пароль.
Использование:
psservice.exe [\\Computer [-u Username [-p Password]]]
Cmd может принимать значения:
query -запрос о состоянии службы.
config — запрос о конфигурации службы
setconfig — изменение типа запуска службы
start — запустить службу
stop — остановить службу
restart — перезапустить службу
pause — приостановить службу
cont — продолжить работу приостановленной службы
depend — показать список служб, зависящих от указанной
find -найти службу в локальной сети
    Примеры:
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 -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 [-r] [\\RemoteComputer [-u Username [-p Password]]]
-r -продолжить работу ранее приостановленной службы.
process Id or name — имя или идентификатор процесса. Можно получить с помощью ранее рассмотренной утилиты PsList.
Примеры использования PSTools в командных файлах.
    Если у вас возникнут затруднения при понимании нижеизложенного — почитайте статью Командные файлы.    Создадим командный файл, выполняющий поиск в локальной сети компьютеров с выполняющейся программой, имя которой (начальная часть имени) задается в качестве параметра при запуске, например, game . При обнаружении будет послано сообщение на компьютер ADMINCOMP и обнаруженное приложение будет принудительно завершено. Для поиска будем использовать утилиту Pslist.exe и анализировать ее код возврата. Значение переменной ERRORLEVEL равное нулю означает, что утилита обнаружила на удаленном компьютере процесс, удовлетворяющий условиям поиска. Имя процесса для поиска будем задавать в качестве параметра при запуске командного файла. Присвоим нашему командному файлу имя psl.bat. Запуск с параметром будет выглядеть следующим образом:
psl.bat game
    Для начала, нужно проверить, задан ли параметр в командной строке при запуске, и, если не задан, выдадим сообщение пользователю и завершим выполнение. Если же параметр задан — перейдем на метку » PARMOK «:
@echo off
if «%1» NEQ «» GOTO PARMOK
ECHO Нужно задать имя процесса для поиска
exit
:PARMOK     Теперь нужно обеспечить последовательное формирование IP-адресов компьютеров для командной строки PSlist. Проще всего это сделать с помощью присвоения временной переменной окружения (действительной только на время выполнения командного файла) значения постоянной составляющей адреса (например — 192.168.0.) и вычисляемого значения младшей части (например, в диапазоне 1-254). Для примера будем считать, что нам необходимо просканировать компьютеры в диапазоне адресов:
192.168.0.1   —   192.168.0.30:
set IPTMP=192.168.0. — старшая часть адреса
set /A IPLAST=1 — младшая часть. Ключ /A означает вычисляемое числовое выражение
set IPFULL=%IPTMP%%IPLAST% — значение полного IP-адреса.
    Командная строка для PSlist будет выглядеть следующим образом:
pslist \\%IPFULL% %1
    Теперь осталось только циклически запускать PSlist, прибавляя в каждом цикле единицу к младшей части адреса, пока ее значение не достигнет 30 и анализировать значение ERRORLEVEL после выполнения. Для анализа результата будем выполнять переход командой:
GOTO REZULT%ERRORLEVEL%
обеспечивающей переход на метку REZULT0 при обнаружении процесса и на REZULT1 — при его отсутствии.
    Окончательное содержимое командного файла:
@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
   
В заключение добавлю, что для того, чтобы этот скрипт работал, PSlist.exe и PSkill.exe должны быть доступны в путях
поиска исполняемых файлов, например в каталоге WINDOWS\system32. Пользователь, запускающий его, должен обладать правами администратора по отношению к сканируемым компьютерам.
И, если текущий пользователь таковым не является, то в параметры запуска утилит PSlist.exe и PSkill.exe нужно добавить ключи, задающие
имя пользователя и пароль.
Этот командный файл несложен, но на практике не всегда применим, особенно когда в
диапазоне IP- адресов есть большое количество выключенных компьютеров. Время выполнения в
этом случае может быть неприемлемо большим.
Для решения проблемы можно использовать опрос компьютеров по списку,
полученному из сетевого окружения.
Пример использования подобного приема найдете в статье «Командные файлы».
Примеры использования утилиты PsShutdown в командных файлах можно найти в статье, посвященной планировщику NNcron.
    Веб-узел 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
…
   
При возникновении проблем с кодировкой кириллицы в командной строке, запустите
редактор реестра и перейдите к разделу
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 кб )
Если вы желаете поделиться ссылкой на эту страницу в своей социальной сети, пользуйтесь кнопкой «Поделиться»
В начало     |     На главную страницу
admcomp.ru
CMD «Живее всех живых», пакет утилит Pstools.
Привет всем, наконец-то нашёл время для написания статьи, в нашем городе Челябинске закрыли все учебные заведения в связи с эпидемией гриппа и ОРВИ так что в моём распоряжении целая неделя на творческую работу и на обдумывание, реализацию моих планов в IT бизнесе. Сегодня я создам рубрику «CMD» стандартный интерпретатор команд Windows, в этом разделе я буду описывать интересные команды, программы, создавать Bat файлы.
С командной строкой я встречаюсь практически каждый день на парах в институте, 70% пар у нас проходят в компьютерных классах. Каждую пару чтобы не умереть со скуки, я изучаю, исследую ресурсы нашей локальной сети, самое занятное дело посмотреть чем там админчики занимаются и что они прячут на своих жёстких дисках).
Если умело использовать связки команд можно добиться многого.
Сегодня я расскажу о замечательном наборе программ PStools.
Я обычно работаю в telnet’e но когда он выключен на удалённой машине и желательно его не включать чтобы не выдать себя, я использую пакет утилит Pstools конечно он не идеал, телнет по круче всё же но тоже не плохая альтернатива.
Утилиты пакета PStools (Mark Russinovich).
Описание утилит пакета:
PsExec
PsFile
PsGetSID
PsInfo
PsKill
PsList
PsLoggedOn
PsLogList
PsPasswd
PsService
PsShutdown
PsSuspend
PsExec
ВВедение
Программа PsExec — это облегченный вариант Telnet. Она позволяет выполнять процессы в удаленных системах, используя для этого все возможности интерактивного интерфейса консольных приложений, и при этом нет необходимости вручную устанавливать клиентское программное обеспечение. Основное достоинство PsExec — это возможность вызывать в интерактивном режиме интерфейс командной строки в удаленных системах и удаленно запускать программы (в фоновом режиме так и в интерактивном) выполнять какие либо команды.
Установка
Просто скопируйте программу PsExec в папку для исполняемых файлов (system32) либо перейдите в текущую папку с программой и запускайте от туда. При вводе команды psexec на экран выводится справка о синтаксисе команды.
Программа PsExec работает в операционных системах Windows Vista, NT 4.0, Win2000, Windows XP и Server 2003, в том числе в 64-разрядных версиях ОС
Использование
psexec [\\компьютер[,компьютер2[,…] | @файл][-u пользователь [-p пароль]][-n s][-l][-s|-e][-x][-i [сеанс]][-c [-f|-v]][-w каталог][-d][-][-a n,n,… ] программа [аргументы]
компьютер
Указывает программе PsExec, что нужно запустить приложение на заданном компьютере или компьютерах. Если имя компьютера не указано, то программа PsExec запустит приложение в локальной системе, если же вместо имени компьютера задан символ «звездочка» (\\*), то программа PsExec запустит приложение на всех компьютерах текущего домена.
@файл Указывает программе PsExec, что нужно запустить приложение на всех компьютерах, перечисленных в заданном текстовом файле.
-a Процессоры, на которых можно запустить приложение, отделяются запятыми, при этом процессоры нумеруются, начиная с 1. Например, чтобы запустить приложение на процессорах втором и четвертом, введите «-a 2,4»
-c Указанная программа копируется в удаленную систему для выполнения. Если этот параметр не задан, то приложение должно находиться в системной папке удаленной системы.
-d Указывает, что не нужно ждать завершения приложения. Этот параметр следует использовать только при запуске неинтерактивных приложений.
-e Указанный профиль учетной записи не загружается.
-f Указанная программа копируется в удаленную систему, даже если такой файл в удаленной системе уже есть.
-i Запускаемая программа получает доступ к рабочему столу указанного сеанса в удаленной системе. Если сеанс не задан, то процесс выполняется в консольном сеансе.
-l При запуске процесса пользователю предоставляются ограниченные права (права группы администраторов отменяются, и пользователю предоставляются только права, назначенные группе «пользователи»). В ОС Windows Vista процесс запускается с низким уровнем благонадежности.
-n Позволяет задать задержку подключения к удаленным компьютерам (в секундах).
-p Позволяет указать необязательный пароль для имени пользователя. Если этот параметр опущен, то будет выдан запрос на ввод пароля, при этом пароль не будет отображаться на экране.
-s Удаленный процесс запускается из системной учетной записи.
-u Позволяет указать необязательное имя пользователя для входа в удаленную систему.
-v Указанный файл копируется в удаленную систему вместо уже имеющегося только при условии, что номер его версии выше или он более новый.
-w Позволяет указать для процесса рабочий каталог (путь внутри удаленной системы).
-x Отображает интерфейс пользователя на рабочем столе Winlogon (только в локальной системе)
-приоритет (приоритет) Позволяет задавать для процесса различные приоритеты:
-low (низкий), -belownormal (ниже среднего), -abovenormal (выше среднего), -high (высокий) или -realtime (реального времени).
программа Имя запускаемой программы.
аргументы Передаваемые аргументы (обратите внимание, что пути файлов должны указываться как локальные пути в целевой системе).
Чтобы задать имя приложения, которое содержит пробелы, используйте кавычки, например psexec \\ip «c:\длинное имя\test.exe». Введенные данные передаются в удаленную систему при нажатии клавиши «Ввод», для завершения удаленного процесса нужно нажать сочетание клавиш Ctrl-C.
Если имя пользователя не задано, то удаленный процесс запускается из той же учетной записи, что и программа PsExec. Однако поскольку удаленный процесс является олицетворением, то он не будет иметь доступа к сетевым ресурсам удаленной системы. Если имя пользователя задано, то удаленный процесс запускается из указанной учетной записи и получает доступ к тем же сетевым ресурсам удаленной системы, что и данная учетная запись. Учтите, что пароль передается в удаленную систему в виде открытого текста.
При обращении к локальной системе эту версию программы PsExec можно использовать вместо программы Runas, поскольку для программы PsExec не требуются права администратора.
Примеры
psexec \\ip cmd
Вызывает интерактивный интерфейс командной строки в удалённой системе \\ip:
psexec \\ip ipconfig /all
Запускает в удаленной системе программу IpConfig с параметром /all и выводит полученные данные на экран локальной системы:
psexec \\ip -c test.exe
PsExec с ключом -c копирует программу (test.exe) на удаленную машину далее выполняет её в интерактивном режиме и удаляет её с удаленной системы после завершения работы.
psexec \\ip c:\bin\test.exe
Если не указан путь к программе, которую надлежит выполнить, то PsExec обращается в каталог \windows\system32 на удаленной системе. Если известно, что программа находится не в этом каталоге, следует ввести полный путь на удаленной машине.
psexec -i -d -s c:\windows\regedit.exe
Запускает в интерактивном режиме из системной учетной записи программу Regedit для просмотра данных разделов реестра SAM и SECURITY:
psexec -l -d «c:\program files\internet explorer\iexplore.exe»
Используется для вызова программы Internet Explorer от имени пользователя с ограниченными правами:
psexec \\ip -u login -p pass cmd
Запуск cmd от определённого пользователя.
psexec \\ip -u Mydomain\MyUsername -p mypass net view
Посмотрим сетевое окружение с удалённого пк, доменный вариант
psexec \\PC1 -u Mydomain\MyUsername -p mypass net use X: \\PK2\C$
Подключить скрытый ресурс диск «C$» удаленного компьютера PK2 к удаленному компьютеру PC1
psexec \\ip -u login -p pass -c mycmd.cmd
Выполнение командного файл (.bat или .cmd), нужно сначала скопировать его на удаленный компьютер, используем ключ -c. Если в командном файле используются сетевые диски или команды, требующие доступ к сети (например, NET.EXE ), то нужно задать имя пользователя.
psexec \\ip -u login -p pass -i notepad.exe
Пример ключа -i иногда необходимо запустить приложение на удаленном компьютере, видимое для его пользователя.
psexec \\* -s install.exe
Запуск приложений на всех компьютерах домена (вместо имени компьютера задать — \\*) с правами администратора или под локальной системной учетной записью (ключ -s).
psexec.exe -a 1 -i -w «папка приложения» «приложение»
Psexec можно использовать для обхода ошибки типа «Negative delta time», возникающей на многоядерных системах из-за несовпадения счетчиков RTSC (Real Time Stamp Counter) у разных ядер. Для чего приложение запускается с помощью psexec только для одного ядра (ключ -a):
psexec \\remote cmd /c ver
Если на удаленной системе нужно выполнить одну консольную команду, следует использовать ключ /c, указав вслед за ним выполняемую команду.
Наверно всё на этом оставим программу Psexec переходим к остальным программам.
PsFile
Введение
Служебная программа PsFile с интерфейсом командной строки выводит на экран список файлов системы, которые открыты удаленно, а также позволяет закрывать открытые файлы по имени или по идентификатору файла.
PsFile похожа на команду net.exe file.
Команда «net file» выводит на экран список файлов, открытых другими компьютерами в системе, в которой выполняется данная команда, однако она усекает длинные имена путей и не позволяет просматривать эти данные для удаленных систем.
Применение
По умолчанию программа PsFile выводит список файлов локальной системы, которые открыты удаленными системами. Если после команды ввести символ «- », на экран выводится информация о синтаксисе этой команды.
psfile [\\удаленный_компьютер [-u имя_пользователя [-p пароль]]] [[Id | путь] [-c]]
-u Позволяет указать необязательное имя пользователя для входа в систему удаленного компьютера.
-p Позволяет указать пароль для имени пользователя. Если этот параметр опущен, то появится подсказка, предлагающая ввести пароль, при этом он не будет отображаться на экране.
Id Идентификатор файла (присвоенный программой PsFile), для которого необходимо вывести информацию или который нужно закрыть.
путь Полный или частичный путь к файлам, для которых необходимо вывести информацию или которые нужно закрыть.
-c Позволяет закрыть файлы, определенные с помощью идентификатора или пути.
Пример PsFile \\computer -u username -p password
PsGetSid
Введение
Выводит на экран уникальный номер, идентифицирующий учетную запись пользователя, группы или компьютера. Он присваивается учетной записи при ее создании (код безопасности). Внутренние процессы Windows обращаются к учетным записям по их кодам безопасности, а не по именам пользователей или групп. Если удалить, а затем снова создать учетную запись с тем же именем пользователя, то предоставленные прежней учетной записи права и разрешения не сохранятся для новой учетной записи, так как их коды безопасности будут разными. Аббревиатура SID образована от Security ID.
Применение
psgetsid [\\computer[,computer[,…] | @file] [-u username [-p password]]] [account|SID]
Пример
PsGetSid \\computer -u username -p password account
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 [- ] [-t] [\\компьютер [-u имя_пользователя] [-p пароль]]
— Выводится перечень допустимых параметров.
-t Завершает процесс и все процессы — его потомки.
\\компьютер Имя компьютера, где выполняется процесс, который нужно завершить. Удаленный компьютер должен быть виден в сетевом окружении ОС NT.
-u имя_пользователя
Если нужно завершить процесс, выполняемый в удаленной системе, но ваши учетные данные не содержат прав администратора для этой системы, то для входа в удаленную систему с правами администратора следует использовать этот параметр. Если пароль не задан с помощью параметра -p, то программа PsKill выдаст запрос на ввод пароля, при этом вводимый пароль не будет отображаться на экране.
-p пароль
Этот параметр позволяет задать пароль в командной строке, что дает возможность вызывать программу PsKill из пакетного файла. Если указать имя учетной записи без параметра -p, то программа PsKill в процессе работы выдаст запрос на ввод пароля.
идентификатор_процесса Идентификатор процесса, который нужно завершить.
имя_процесса Имя одного или нескольких процессов, которые нужно завершить.
Применение
pskill [\\computer [-u username [-p password]]]
process Id or name имя или идентификатор удаленного процесса (его можно получить с помощью PsList.exe).
С помощью PsKill можно принудительно перезагрузить или даже вызвать «синий экран смерти» (BSOD- Blue Screen Of Death), если завершать системные процессы (lsass, winlogon и т.п.)
PsList
Введение
Получить подробную информацию о запущенных процессах на локальной или удаленной системе.
pslist.exe [-d][-m][-x][-t][-s [n] [-r n] [\\computer [-u username][-p password][name|pid]
-d Выводятся сведения о потоке
-m Выводятся сведения о памяти.
-x Выводится список процессов, сведения о памяти и потоках.
-t Выводится дерево процесса.
-s [n] Запускается режим диспетчера задач, дополнительно можно указать продолжительность использования режима в секундах. Для отмены режима нажмите клавишу Esc.
-r n Периодичность обновления сведений в окне диспетчера задача (значение по умолчанию — 1).
\\компьютер Вместо вывода информации о процессах на локальном компьютере программа PsList выводит сведения об указанной операционной системе Windows NT или 2000. Задайте параметр -u, указав имя и пароль пользователя, от имени которого следует войти в удаленную систему, если ваших прав недостаточно для получения информации о счетчиках производительности этой системы.
-u Имя пользователя. Если нужно прекратить процесс, выполняемый в удаленной системе, но ваша учетная запись не имеет прав администратора для этой системы, то для входа в удаленную систему с правами администратора следует использовать этот параметр. Если пароль не задан с помощью параметра -p, то программа PsList выдаст запрос на ввод пароля, при этом вводимый пароль не будет отображаться на экране.
-p Пароль. Этот параметр позволяет задать пароль в командной строке, что дает возможность вызывать программу PsList из пакетного файла. Если указать имя учетной записи без параметра -p, то программа PsList в процессе работы выдаст запрос на ввод пароля.
имя Выводятся сведения о процессах, имена которых начинаются с заданной строки.
-e Выводятся сведения о процессе, имя которого точно соответствует введенной строке.
pid При указании этого параметра программа PsList вместо вывода списка всех выполняющихся в системе процессов производит поиск процесса с указанным идентификатором PID. Таким образом, если ввести команду
pslist 53, то будут выведены статистические данные процесса, PID которого равен 53.
PsList \\computer -u username -p password account
PsLoggedOn
Введение
Это приложение, выводящее список пользователей, вошедших в систему как в локальном режиме, так и через ресурсы локального или удаленного компьютера. Если указать вместо имени компьютера имя пользователя, программа PsLoggedOn проведет поиск среди компьютеров в сетевом окружении и сообщит, вошел ли данный пользователь в одну из этих систем. В комплекте загружаемых файлов имеется полная версия исходного кода.
Вошедшим в локальную систему программа PsLoggedOn считает пользователя, профиль которого загружен в реестр; при составлении списка таких пользователей она проводит поиск среди элементов раздела реестра HKEY_USERS. Обнаружив раздел, имя которого совпадает с идентификатором безопасности того или иного пользователя, программа PsLoggedOn определяет имя этого пользователя и выводит его. Для составления списка пользователей, вошедших в систему через общие ресурсы, программа PsLoggedOn обращается к прикладному программному интерфейсу NetSessionEnum. Следует иметь в виду, что среди пользователей, вошедших через общие ресурсы на искомые удаленные компьютеры, программа PsLoggedOn укажет и ваше собственное имя — дело в том, что для доступа к реестру удаленной системы вы должны выполнить вход.
Применение
psloggedon [- ] [-l] [-x] [\\имя_компьютера | имя_пользователя]
— Вывод списка поддерживаемых параметров и единиц измерения, применяемых при выводе данных.
-l Вывод списка пользователей, вошедших только в локальную систему (без сеансов через сетевые ресурсы).
-x Запрет на вывод временных параметров входа в систему.
\\имя_компьютера Позволяет указать имя компьютера, к которому должен относиться список вошедших пользователей.
имя_пользователя При указании имени пользователя программа PsLoggedOn проводит в сети поиск систем, в которые этот пользователь вошел. Эта возможность позволяет, в частности, убедиться в том, что тот или иной пользователь не числится среди вошедших в системы, перед изменением настроек его профиля.
Пример
psloggedon.exe -l \\server
Выдать имя локального пользователя компьютера server.
psloggedon.exe \\server
Выдать список всех пользователей, подключенных к компьютеру server.
psloggedon.exe admin -d mydomain.com
Найти в домене mydomain.com компьютер с залогиненым пользователем «admin».
PsLogList
Введение
В состав комплекта Resource Kit входит программа elogdump, которая позволяет сохранить содержимое журнала событий локального или удаленного компьютера. Программа PsLogList является аналогом этой программы, с той лишь разницей, что PsLogList позволяет выполнить вход на удаленную систему и получить строки сообщений с компьютера, на котором расположен просматриваемый журнал, в случаях, если текущий набор учетных сведений не позволяет получить доступ к журналу событий.
Использование
По умолчанию программа PsLogList выводит в удобном формате содержимое системного журнала событий локального компьютера. С помощью параметров командной строки можно просматривать содержимое журналов на других компьютерах, осуществлять доступ к журналам с правами другой учетной записи, или выводить содержимое журналов в удобном для строкового поиска формате.
psloglist [- ] [\\имя_компьютера[,имя_компьютера[,…] | @файл [-u имя_пользователя [-p пароль]]] [-s [-t разделитель]] [-m #|-n #|-h #|-d #|-w][-c][-x][-r][-a мм/дд/гг][-b мм/дд/гг][-f фильтр] [-i ID[,ID[,…] | -e ID[,ID[,…]]] [-o источник[,источник][,..]]] [-q источник[,источник][,..]]] [-l файл_журнала]
@файл Выполнить команду для каждого из компьютеров, перечисленных в указанном текстовом файле.
-a Вывести записи, созданные после указанной даты.
-b Вывести записи, созданные до указанной даты.
-c Очистить журнал после вывода содержимого.
-d Вывести записи за предыдущие n дней.
-e Исключить события с указанными кодом ID (до 10 шт).
-f Применить к типам событий фильтр (например “-f w” для вывода только предупреждений).
-h Вывести записи за предыдущие n часов.
-i Вывести только события с указанными кодом ID (до 10 шт).
-l Вывести записи, содержащиеся в указанном файле журнала событий.
-m Вывести записи за предыдущие n минут.
-n Вывести только указанное количество последних событий.
-o Вывести записи только от указанных источников (например “-o cdrom”).
-p Необязательный параметр, указывает пароль для пользователя. Если этот параметр опустить, то будет выдан запрос на ввод пароля, при этом пароль не будет отображаться на экране.
-q Исключить из вывода записи от указанных источников (например “-o cdrom”).
-r Выводить события в порядке от наиболее давних к наиболее свежим.
-s Указывает программе PsLogList выводить записи журнала событий по одной на строчку, разделяя поля запятыми. Этот формат удобен для текстового поиска, например можно выполнить команду psloglist | findstr /i текст_для_поиска. Также этот формат удобен для импортирования результатов в электронные таблицы.
-t По умолчанию разделителем полей является запятая, но с помощью этого параметра можно указать другой символ в качестве разделителя.
-u Необязательный параметр. Указывает имя пользователя для выполнения входа на удаленную систему.
-w Ожидать новых сообщений и выводить их по мере их появления в журнале (доступно только для локальной системы).
-x Выводить расширенные данные.
имя_журнала По умолчанию программа PsLogList выводит содержимое системного журнала событий. Можно указать другой журнал. Для этого достаточно ввести первые несколько букв имени журнала (приложение, система или безопасность).
PsPasswd
Введение
Cменить пароль на локальной или удаленной системе.
Использование:
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 -найти службу в локальной сети
Примеры
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
На сегодня это всё, всем удачи.
Источники:
microsoft.com
white55.narod.ru
Понравилось это:
Нравится Загрузка…
Похожее
logsit.wordpress.com
Удаленное управление компьютером.
PsExec — утилита для удаленного выполнения команд
Выполнение команд на удаленном компьютере — задача довольно распространенная. Это может быть необходимо для изменения настроек системы, установки или удаления программ и много еще для чего. Для решения подобных задач есть довольно много различных инструментов, начиная с серьезных программных комплексов типа System Center Configuration Manager и заканчивая скромными утилитами командной строки . Об одной из таких утилит и пойдет речь в этой статье.
Утилита PsExec входит в состав пакета PsTools компании Sysinternals. Она позволяет выполнять команды на удаленных компьютерах и при этом не требует установки в систему. Для использования утилиты достаточно просто скопировать ее в папку с исполняемыми файлами (напр. C:\Windows\system32) и запустить из любой оболочки командной строки: Cmd или PowerShell.
Принцип работы программы состоит в следующем: в ресурсах исполняемого файла PsExec.exe находится еще один исполняемый файл – PSEXESVC, который является службой Windows. Перед выполнением команды PsExec распаковывает этот ресурс в скрытую административную папку удалённого компьютера Admin$ (C:\Windows), в файл C:\Windows\system32\psexesvc.exe.
Примечание. Если вы с помощью ключа -c указали программе, что необходимо скопировать исполняемые файлы на эту систему, они тоже скопируются в эту папку.
После завершения копирования PsExec устанавливает и запускает службу, используя API функции Windows для управления службами. Затем, после запуска PSEXESVC между ним и PsExec устанавливается соединение для передачи данных (ввода команд и получения результатов). По завершению работы PsExec останавливает службу и удаляет её с целевого компьютера.
Синтаксис PsExec выглядит следующим образом:
psexec \\компьютер [-u пользователь [-p пароль]] программа [аргументы]
Имя пользователя и пароль можно и не задавать, тогда удаленный процесс запускается из под той же учетной записи, что и программа PsExec. Однако поскольку удаленный процесс является олицетворением, то он не будет иметь доступа к сетевым ресурсам удаленной системы. Если же задать имя пользователя, то удаленный процесс запустится из под указанной учетной записи и получит доступ к тем же сетевым ресурсам удаленной системы, что и данная учетная запись. Однако имейте ввиду, что пароль передается в удаленную систему открытым текстом.
В качестве примера очистим кэш dns на удаленном компьютере SRV1:
psexec \\SRV1 ipconfig /flushdns
Команда будет запущена на компьютере SRV1 под вашими учетными данными. После завершения работы ipconfig весь текстовый вывод будет передан на ваш компьютер, а кроме того будет возвращён код выполнения команды (error code). В случае если команда выполнилась успешно, он будет равен 0.
Если нужно выполнить несколько команд, то лучше установить с удаленным компьютером интерактивный сеанс. Для этого вводим команду psexec \\SRV1 cmd . Теперь команды, вводимые на локальном компьютере будут выполняться на удаленном компьютере SRV1.
PsExec позволяет выполнить команду одновременно на нескольких компьютерах. Для этого можно ввести имена компьютеров через запятую: psexec \\SRV1, SRV2 или сохранить их в текстовом файле и затем указать его адрес: psexec @c:\comp.txt . Если же вместо имени компьютера поставить звездочку, вот так: psexec \\* , то команда будет выполнена на всех компьютерах домена.
И еще один интересный способ использования утилиты PsExec. Если не указывать имя компьютера, то по умолчанию команда выполняется в локальной системе. Используя ключ -s можно запускать программы под учетной записью системы. Например, запустим сеанс командной строки: psexec -s cmd и затем командой whoami проверим, под каким пользователем мы сейчас работаем. Эта возможность может пригодиться для отладки программ или доступа к скрытым разделам реестра SAM и SECURITY.
Ну и несколько слов о ключах программы. Все описывать не буду, расскажу о наиболее интересных:
-c
Указанная программа копируется в удаленную систему для выполнения. Например:
psexec \\SRV1 -c test.exe
Если этот параметр не задан, то приложение должно находиться в системной папке удаленного компьютера. Если же на удаленном компьютере такая программа уже есть и находится не в системном каталоге, то необходимо указать к ней полный путь (если имя программы содержит пробелы, то его необходимо поместить в кавычки):
psexec \\SRV1 «c:\program files\test.exe»
Если вместе с ключом -c использовать ключ -f то даже если программа уже есть в удаленной системе, она будет перезаписана. А с ключом -v она перезапишется только в том случае, если копируемая версия программы более новая чем та, что установлена в системе.
-i
Работа программы в интерактивном режиме. По умолчанию PsExec выполняет команды в скрытом режиме, то есть на системе где выполняется команда, не выводятся никакие окна или диалоги. Однако есть возможность изменить это с помощью ключа -i . После него можно указать номер сессии, в которой выводить окна, а можно и не указывать, тогда интерфейс будет отображен в консольной сессии.
-d
Указывает, что не нужно ждать завершения приложения. В этом случае мы не получим выходных данных от консольной утилиты, но зато сможем не дожидаясь завершения предыдущей команды запускать следующие. Этот параметр следует использовать только при запуске неинтерактивных приложений.
-h
Используется для запуска программы в режиме повышения полномочий. Может потребоваться в операционных системах Windows Vista и выше для запуска некоторых программ, вносящих изменения в настройки системы (например regedit).
-l
А с помощью этого ключа можно наоборот понизить полномочия. При запуске процесса пользователю вне зависимости от его принадлежности к группе администраторов предоставляются ограниченные права (права группы «администраторы» отменяются, и пользователю предоставляются только права, назначенные группе «пользователи»).
Полную справочную информацию о всех ключах программы можно получить, просто введя команду psexec в командной строке без параметров.
windowsnotes.ru
Утилиты пакета PStools
    Быстрый переход к описанию утилит пакета:
PsExec
PsFile
PsGetSID
PsInfo
PsKill
PsList
PsLoggedOn
PsLogList
PsPasswd
PsService
PsShutdown
PsSuspend
Примеры использования в командных файлах
FePSTools — графический интерфейс для командной строки PSTools
   
Все утилиты пакета PStools работают во всех версиях Windows старше Windows NT
и не требуют инсталляции. Позволяют осуществлять не только
управление локальным компьютером, но и удаленное администрирование без установки
на удаленном компьютере какого-либо программного обеспечения. Для большинства
действий, выполняемых утилитами PsTools требуются административные привилегии.
   
Запуск утилит осуществляется
из командной строки. В Windows Vista/7/8 нужен запуск от имени администратора.
Справку по конкретной утилите можно получить задав ключ -?.
Использование:
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»
   
Ввод с клавиатуры направляется на удаленный компьютер, нажатие Ctrl-C завершит удаленный процесс.
Если не задано имя пользователя, то удаленный процесс будет выполнен на удаленной
системе с правами локальной системной учетной записи, т.е. без доступа к сетевым ресурсам,
даже если ваша учетная запись на удаленной системе дает вам такой доступ.
Поэтому, если удаленному приложению требуется доступ к сетевым ресурсам,
задавать имя пользователя в формате «Domain\User» обязательно. Код возврата (ERRORLEVEL) по
завершению Psexec определяется удаленным приложением, что позволяет анализировать результаты
выполнения удаленного приложения в командных файлах.
Примеры:
  —   запустить командный процессор 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 >
   
Теперь команды, вводимые с консоли этого окна будут выполняться на удаленном компьютере.
Однако, не стоит запускать на выполнение программы, использующие графический интерфейс,
взаимодействие с ними будет невозможно.
   
Вы можете выполнить любую консольную команду на удаленном компьютере. Примеры:
— получить информацию о настройке 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\*.*
   
Для того, чтобы выполнить командный файл (.bat или .cmd), нужно сначала
скопировать его на удаленный компьютер, т.е.
обязательно использовать ключ -c.
Если в командном файле используются сетевые диски
или команды, требующие доступ к сети (например, NET.EXE ), то нужно задать имя пользователя:
Psexec.exe \\192.168.0.1 -u vasya -p mypass -c mycmd.cmd
   
Иногда необходимо запустить приложение на удаленном компьютере, видимое для его пользователя.
Используйте ключ -i:
Psexec.exe \\192.168.0.1 -u vasya -p mypass -i notepad.exe
После запуска блокнота (notepad.exe) PsExec будет ждать его завершения удаленным пользователем.
Если в этом ожидании нет необходимости, то нужно использовать ключ -d.
   
Особенность запуска приложения от имени локальной учетной записи позволяет получить в
редакторе реестра (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 используется изоляция сеанса, в котором работают системные службы, от сеанса
пользователя (Session 0 Isolation), поэтому команда для этих версий ОС будет выглядеть иначе:
psexec -s -i 0 regedit.exe
после чего нужно нажать на кнопку «Просмотреть сообщение» в диалоговом окне
«Обнаружение интерактивных служб».
    Учтите, что в таком режиме использования редактора реестра вы получаете права на создание, изменение и удаление даже таких ключей, которые доступны только процессам ядра.
   
С точки зрения системного администрирования PSexec удобно использовать для запуска
приложений на всех компьютерах домена (вместо имени компьютера задать — \\*) с
правами администратора или под локальной системной учетной записью (ключ -s).
Psexec.exe \\* -s install.exe — запустить install.exe на всех
компьютерах домена под системной учетной записью
   
Ну и последнее — Psexec можно использовать для обхода ошибки типа «Negative delta time»,
возникающей на многоядерных системах из-за несовпадения счетчиков RTSC (Real Time
Stamp Counter) у разных ядер. Для чего приложение запускается с помощью psexec
только для одного ядра (ключ -a):
psexec.exe -a 1 -i -w «папка приложения» «приложение»
psgetsid.exe mydomain.ru\admin — выдать SID пользователя admin домена mydomain.ru
pssetsid admin — выдать SID пользователя admin данного компьютера
psgetsid S-1-5-21-854245398-1035525444-1417001333-1123 — выдать имя пользователя по SID
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 [\\computer [-u username [-p password]]]
Если \\computer опущено — то выполняется завершение процесса на локальной
машине.
process Id or name — имя или идентификатор процесса (его
можно получить с помощью рассматриваемой ниже утилиты PsList.exe).
   
Кстати, с помощью 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.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.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 [\\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)
    Например, выдать в файл 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
    Выдать в файл errors.txt информацию о предупреждениях и ошибках за последние
3 дня на текущем компьютере в журнале System:
psloglist.exe -u admin -p admpass -d 3 -f we > errors.txt
    Если вы не знаете номер идентификатора события, но знаете его смысловое описание,
то можно объединить выполнение 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 [\\[computer[,computer,[,…]|Domain]|@file] [-u Username [-p Password]]] Username [NewPassword]
Username — имя пользователя, для которого будет изменен пароль.
NewPassword — новый пароль.
Использование:
psservice.exe [\\Computer [-u Username [-p Password]]]
Cmd может принимать значения:
query -запрос о состоянии службы.
config — запрос о конфигурации службы
setconfig — изменение типа запуска службы
start — запустить службу
stop — остановить службу
restart — перезапустить службу
pause — приостановить службу
cont — продолжить работу приостановленной службы
depend — показать список служб, зависящих от указанной
find -найти службу в локальной сети
    Примеры:
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 -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 [-r] [\\RemoteComputer [-u Username [-p Password]]]
-r -продолжить работу ранее приостановленной службы.
process Id or name — имя или идентификатор процесса. Можно получить с помощью ранее рассмотренной утилиты PsList.
Примеры использования PSTools в командных файлах.
    Если у вас возникнут затруднения при понимании нижеизложенного — почитайте статью Командные файлы.    Создадим командный файл, выполняющий поиск в локальной сети компьютеров с выполняющейся программой, имя которой (начальная часть имени) задается в качестве параметра при запуске, например, game . При обнаружении будет послано сообщение на компьютер ADMINCOMP и обнаруженное приложение будет принудительно завершено. Для поиска будем использовать утилиту Pslist.exe и анализировать ее код возврата. Значение переменной ERRORLEVEL равное нулю означает, что утилита обнаружила на удаленном компьютере процесс, удовлетворяющий условиям поиска. Имя процесса для поиска будем задавать в качестве параметра при запуске командного файла. Присвоим нашему командному файлу имя psl.bat. Запуск с параметром будет выглядеть следующим образом:
psl.bat game
    Для начала, нужно проверить, задан ли параметр в командной строке при запуске, и, если не задан, выдадим сообщение пользователю и завершим выполнение. Если же параметр задан — перейдем на метку » PARMOK «:
@echo off
if «%1» NEQ «» GOTO PARMOK
ECHO Нужно задать имя процесса для поиска
exit
:PARMOK     Теперь нужно обеспечить последовательное формирование IP-адресов компьютеров для командной строки PSlist. Проще всего это сделать с помощью присвоения временной переменной окружения (действительной только на время выполнения командного файла) значения постоянной составляющей адреса (например — 192.168.0.) и вычисляемого значения младшей части (например, в диапазоне 1-254). Для примера будем считать, что нам необходимо просканировать компьютеры в диапазоне адресов:
192.168.0.1   —   192.168.0.30:
set IPTMP=192.168.0. — старшая часть адреса
set /A IPLAST=1 — младшая часть. Ключ /A означает вычисляемое числовое выражение
set IPFULL=%IPTMP%%IPLAST% — значение полного IP-адреса.
    Командная строка для PSlist будет выглядеть следующим образом:
pslist \\%IPFULL% %1
    Теперь осталось только циклически запускать PSlist, прибавляя в каждом цикле единицу к младшей части адреса, пока ее значение не достигнет 30 и анализировать значение ERRORLEVEL после выполнения. Для анализа результата будем выполнять переход командой:
GOTO REZULT%ERRORLEVEL%
обеспечивающей переход на метку REZULT0 при обнаружении процесса и на REZULT1 — при его отсутствии.
    Окончательное содержимое командного файла:
@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
   
В заключение добавлю, что для того, чтобы этот скрипт работал, PSlist.exe и PSkill.exe должны быть доступны в путях
поиска исполняемых файлов, например в каталоге WINDOWS\system32. Пользователь, запускающий его, должен обладать правами администратора по отношению к сканируемым компьютерам.
И, если текущий пользователь таковым не является, то в параметры запуска утилит PSlist.exe и PSkill.exe нужно добавить ключи, задающие
имя пользователя и пароль.
Этот командный файл несложен, но на практике не всегда применим, особенно когда в
диапазоне IP- адресов есть большое количество выключенных компьютеров. Время выполнения в
этом случае может быть неприемлемо большим.
Для решения проблемы можно использовать опрос компьютеров по списку,
полученному из сетевого окружения.
Пример использования подобного приема найдете в статье «Командные файлы».
Примеры использования утилиты PsShutdown в командных файлах можно найти в статье, посвященной планировщику NNcron.
    Веб-узел Sysinternals был создан в 1996 г. Марком Руссиновичем (Mark Russinovich) и Брюсом Когсвеллом (Bryce Cogswell) для размещения созданных ими усовершенствованных сервисных программ и технической информации, а в июле 2006 г. корпорация Microsoft приобрела компанию Sysinternals. Раздел Sysinternals в Microsoft TechNet. После этого события, утилиты 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
…
   
При возникновении проблем с кодировкой кириллицы в командной строке, запустите
редактор реестра и перейдите к разделу
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 бывает полезен, когда возможности обновленных версий не устраивают Вас по каким-либо причинам.
В начало       |       На главную страницу
white55.narod.ru
разбираем схему и технические инструменты атаки / Ростелеком-Солар corporate blog / Habr
Статью «Один квартал из жизни SOC. Три инцидента без купюр» весьма активно плюсовали, так что мы решили рассказать о еще одной интересной атаке, расследованием которой мы недавно занимались.Существует мнение, что международные корпорации и крупные компании, идущие в ногу со временем в оказании услуг своим клиентам, так же четко выстраивают процессы во всех областях своей деятельности, в том числе в информационной безопасности. К сожалению, это не всегда так.
Некоторое время назад крупная компания с развитой инфраструктурой обратилась к нам за помощью. Проблема заключалась в странных событиях в инфраструктуре компании:
- Рабочие станции и серверы внезапно уходили на перезагрузку и выводились из домена.
- Пользователи обнаруживали, что их учетная запись заблокирована.
- Компьютеры некоторых сотрудников стали «тормозить» без видимой причины.
Для разбора ситуации мы подключили основные инфраструктурные источники к SIEM-системе, находящейся в облаке Solar JSOC. Для этого мы разместили сервер-коллектор для сбора логов на площадке заказчика и построили site-to-site между площадками. Параллельно компании были высланы инструкции по настройке необходимого уровня аудита, а также подробное описание подготовительных работ для подключения источника.
На первом этапе мы подключили межсетевые экраны и прокси, антивирус, логи контроллеров домена и DNS. Уже к вечеру следующего дня у нас были логи всех необходимых систем.
Первое, что удалось детектировать, – обращение с 12 рабочих станций к серверам управления Corkow/Metel. Оказалось, что в течение более чем двух лет клиентские части одной из модификаций вируса Win32/Corkow оставались никем незамеченными в инфраструктуре компании, несмотря на наличие антивирусного ПО. Вредоносы отправляли телеметрию на давно выключенные серверы управления (доменные имена серверов были названы в честь двух великих русских художников и широко известны аналитикам ИБ). Антивирусный вендор, ПО которого использовалось в компании, так и не добавил известные сигнатуры в свои базы, поэтому не мог детектировать вирус.
Но дело оказалось не в этом хоть и нашумевшем, но более не опасном вирусе. Буквально через несколько часов мониторинга, впервые в реальной практике Solar JSOC, был выявлен полноценный, не тестовый, DNS-туннель, отправляющий информацию с нескольких хостов инфраструктуры компании.
DNS-туннели можно назвать изысками в повседневной жизни безопасника. Они используются довольно редко, но в последнее время засветились в ряде громких дел международного масштаба как канал вывода информации за периметр компании.Первым делом были приняты меры по блокированию внешних адресов на всех пограничных сетевых устройствах.Но опасность DNS-туннелей кроется не только в том, что с их помощью можно незаметно похитить данные из инфраструктуры. DNS-туннели позволяют строить reverse shell с конечным хостом, что позволяет контролировать его действия удаленно.
Несмотря на то, что DNS-туннели – тема очень старая, и все решения класса IPS и NGFW должны их детектировать, на практике это далеко не так. Малейшее изменение параметров (например, передача payload в поле key или другом поле стандартного формата DNS, либо за пределами стандартных полей DNS-запроса) позволяет легко обойти стандартные сигнатуры.
Сразу после обнаружения компании был отправлен запрос на исследование обнаруженных источников DNS-туннелей. Несколько машин были подключены на уровне локальных логов, а также был запущен процесс снятия образов для дальнейшего исследования.
При подключении хостов специалисты Solar JSOC столкнулись с первой сложностью – Security Log был пуст на всех машинах. Параллельно исследовался образ, и тут возникла вторая сложность – USN (Update Sequence Number) и MFT (Master File Table) не содержали хоть сколько-нибудь значимой информации, последняя — из-за частой плановой дефрагментации дисков.
Первую существенную информацию удалось обнаружить в логах контроллеров домена – там был выявлен доступ к хостам под учетной записью доменного администратора. Вход осуществлялся с logon type 3 – сетевой вход.
Далее, анализируя на всех потенциально скомпрометированных хостах System Log, который не был очищен, мы обнаружили установку службы it_helpdesk. После анализа MD5-суммы стало понятно, что это переименованная утилита PsExec. ИТ-подразделение компании подтвердило, что данное ПО не является корпоративным стандартом администрирования и не используется сотрудниками.
PsExec входит в состав PsTools – пакета бесплатных утилит, разработанных компанией Sysinternals и затем приобретённых Microsoft. Они предназначены для упрощения администрирования операционных систем Microsoft Windows. Сама утилита PsExec позволяет удаленно выполнять процессы.PsExec позволяет перенаправлять входные и выходные данные удаленно запущенной исполняемой программы посредством использования SMB и скрытого ресурса общего доступа $ADMIN на удаленной системе. С помощью этого ресурса PsExec использует интерфейс программирования диспетчера управления Windows Service control Manager API для запуска службы PsExecsvc на удаленной системе, которая создает именованный канал (named pipe), по которому работает PsExec.
После этого департамент информационной безопасности компании, используя систему централизованного управления инфраструктурой, выявил все хосты, на которых когда-либо запускалась данная служба. Общее количество таких хостов превысило 40 единиц.
А теперь вернемся к исследованию образов рабочих станций. Анализ текущего состояния файловой системы одной из машин и воспроизведение заражения в лабораторных условиях дало понятную хронологию заражения:
I Этап
- Переименование оригинальной библиотеки system_dll.dll в system_dll2 и создание вредоносного объекта system_dll.dll. При этом system_dll.dll обращается к system_dll2 за функциями, которые не определены в его коде. system_dll.dll представляет собой вредоносный объект типа PE, который служит для загрузки библиотеки _________.dll.
- Создание _________.dll — представляет собой вредоносный объект типа PE, который служит для установления связи с произвольными серверами по протоколу DNS и выполнения различных команд. Данная библиотека загружается вредоносным объектом system_dll.dll.
- При последнем запуске it-helpdesk на машине предположительно осуществляется запуск объекта C:\Windows\system32\shutdown.exe с целью инициации перезагрузки операционной системы. Данная перезагрузка необходима, чтобы служба System Service подгрузила в свое адресное пространство вредоносную библиотеку System_dll.dll.
II Этап
- После перезагрузки операционной системы появляются события ошибок резолва домена random symbols.xxxxx.su, что может свидетельствовать о функционировании скрытого канала передачи данных с использованием протокола DNS (произвольные данные передаются в доменном имени 3-го уровня).
- Создание библиотеки Windows/System32/malware_dll.dll, которая представляет собой вредоносный объект типа PE, служащий для перехвата введенных с клавиатуры данных. Хранение перехваченных данных осуществляется в файле %USER%/AppData/LocalLow/NTUSER.DAT. Данные в файле закодированы с использованием побайтового кодирования с вычитанием байта 10H.
- Создание на атакуемом хосте вредоносного объекта jusched.exe, который служит для перезагрузки библиотеки malware_dll.dll. При этом объект jusched.exe прописывается в автозагрузке (ветка реестра HKLM\Software\Microsoft\Windows\CurrentVersion\Run), это означает, что система будет загружать данный объект при старте сеанса от любого пользователя.
III Этап
- При последующем создании сеанса пользователя, подгружается его профиль, запускается кейлоггер, создается файл LocalLow/NTUSER.DAT и осуществляется запись в него результатов работы кейлоггера в рамках всего сеанса пользователя.
- Также на данном этапе выполняется запуск архиватора из командной строки rar.exe с целью создания архива C:\ProgrammData\0.0. Данный архив содержит в себе теневую копию файла SAM и ветку реестра HKLM\SYSTEM. Данная связка файлов может использоваться для извлечения хешей учетных записей из файла SAM.
- В некоторых случаях данный этап сопровождается множественными перезагрузками операционной системы, выполнением команд wevtutil, gpscript, nslookup, cmdkey и др., а также очисткой журнала Application.
- На одной из исследуемых машин были зафиксированы создание и множественные запуски объекта tvnserver.exe с одновременным появлением на машине вредоносного объекта users.exe и записи в ветку реестра HKLM\Software\Corporation ключей 000 и 001 с конфигурацией вредоноса.
Общая схема заражения выглядит следующим образом:
Описание инструментов, используемых для реализации атаки
Для реализации атаки в рамках исследуемых образов рабочих станций и серверов использовались следующие компоненты вредоносного ПО:
Имя компонента |
Назначение компонента |
Malware_dll.dll |
Кейлоггер (32-битная версия) |
Malware_dll64.dll |
Кейлоггер (64-битная версия) |
Bach.dll |
Переименованная оригинальная библиотека System_dll.dll, которая является службой SystemService |
System_dll.dll |
Библиотека, которая при запуске службы System_Service подкачивается в svchost.exe. System_dll.dll поддерживает те же вызовы, что и system_dll2.dll, путём перенаправления всех этих функций в system_dll2.dll. Подтягивает _________.dll. Является 32-разрядной версией |
System_dll.dll_ |
64-разрядная версия System_dll.dll |
_________.dll |
BackDoor, 32-разрядная версия |
_________.dll_ver2 |
64-разрядная версия _________.dll |
S64 |
Аналог System_dll.dll для х64 архитектуры |
P64 |
Аналог _________.dll для х64 архитектуры |
It_helpdesk.exe |
Переименованный PsExesvc.exe (компонент PSExec, который создается и запускается на удаленной машине с целью выполнения заданных действий |
Users.exe |
BackDoor. Функционал аналогичен _________.dll, но маскируется под jusched.exe – «Java Update Scheduler» |
Активность вредоносных компонентов
- Malware_dll.dll:
- Создание файла «\%APPDATA%\LocalLow\NTUSER.DAT».
- Создание мьютекса «mbowefvncwiomcowermg32».
- Устанавливает перехват нажатий клавиш на клавиатуре.
- Шифрование полученных данных и последующая запись в файл из первого пункта.
- System_dll.dll:
- Автозапуск посредством службы System Service.
- Загрузка _________.dll.
- _________.dll и users.exe:
- Отправка на резолв DNS-адресов:
— www.gf8ealht9d22________________.com
— 832v1hda31sqfcl5bh81lmqk74z.xxxxxxxxx.com
— 13bmvqdr1ju64dqm6n8877hbo0z.xxxxxxxxx.com - Отправка DNS-пакетов на управляющий сервер (xxxxx.su).
- Исполнение команд, полученных от управляющего сервера.
- Возможно создание ключей реестра для хранения данных между перезапусками процесса в ветках HKLM или HKCU:
— \Software\Corporation\000
— \Software\Corporation\001
— \Software\Corporation\002
- Отправка на резолв DNS-адресов:
Общение клиента с сервером
Всё общение сервера с клиентом шифруется. Ключ шифрования: 25 d9 01 4c 21 c9 ed 89 86 14 8d 05 _________
Вирус отправляет на управляющий сервер DNS-пакеты для резолва. DNS-имя, начиная с третьего поддомена, представляет собой закодированные данные.
На сервер отправляются пакеты вида <27 symbols>.xxxxx.su. Последовательность может быть и более 27 символов, но минимальный пакет в 27 символов. Последовательность из 27 символов – это закодированные после шифрования данные, которые клиент передаёт серверу. Данный пакет не несёт в себе никакой информации, кроме псевдорандомных чисел и хеш-суммы пакета. Псевдорандомные числа нужны, чтобы после всех преобразований пакеты не были похожи друг на друга. Пакет из 27 символов говорит серверу, что он готов принять команду на обработку. Пример такого пакета:
В ответ приходит команда в виде 6 адресов ipv4 – 24 байта данных. Данные адреса записываются последовательно и сортируются по младшему октету. Отбросив младшие октеты, получим последовательность из 18 байт.
Первый байт – количество не используемых данных (n = 1-3).
Последние n байт – псевдорандомные и не используются в дальнейшем.
Оставшиеся байты – зашифрованные данные с ключом выше.
Первые три байта – псевдорандомное число и хеш-сумма пакета, что делает одну и туже команду от сервера визуально различающуюся, из-за чего ip-адреса кажутся рандомными. Остальное – команда.
Дальнейшие шаги и ликвидация последствий
На первом этапе поиска индикаторов анализировались образы четырех рабочих станций, с которых фиксировались активные DNS-туннели.
После выявления хостовых и сетевых индикаторов, а также общей схемы действий злоумышленников необходимо было проверить всю инфраструктуру как для выявления источника заражения, так и с целью поиска всех скомпрометированных узлов.
Общая картина поиска индикаторов компрометации выглядела следующим образом:
Поиск осуществлялся как силами специалистов Solar JSOC, так и сотрудниками компании. Всего на на поиск ушло 3 дня. Скоуп зараженных систем вырос до 64, количество скомпрометированных учетных записей потенциально возросло до общего количества сотрудников компании, так как одна из скомпрометированных машин являлась контроллером домена.
На втором этапе для исследования были выбраны еще несколько машин для поиска дополнительных индикаторов компрометации. Образы, дампы были сняты, и можно было приступать к процессу «перезаливки» скомпрометированных хостов.
В случае обнаружения такого массового, длительного и глубокого заражения процесс вычищения «хвостов» очень труден и долог. Последовательность действий выглядела следующим образом:
- Работа с учетными записями:
- Смена паролей для всех указанных скомпрометированных учетных записей, включая учетные записи от бизнес-приложений.
- Привилегии сервисных учетных записей были ограничены, введен запрет на использование учетных записей с правами доменного администратора для работы служб.
- На время работ с учетными записями был введен мораторий на использование удаленного доступа сотрудников за исключением ИТ-администраторов. Параллельно для них был запущен второй фактор аутентификации.
- Закрыты типовые бреши организаций с развитой инфраструктурой:
- Прямые доступы в интернет в обход прокси.
- Удалено ПО, классифицируемое как not-a-virus и активно использующее интернет.
- Собран профиль открытых портов на периметре, верифицировано и закрыто лишнее «на горячую», благо, произошедший инцидент позволял это сделать.
- Администраторы прикладных систем усилили контроль за действиями и транзакциями, выполняемыми в критичных бизнес-приложениях, особенно связанных с финансовыми транзакциями, транзакциями в рамках бонусных программ и программ лояльности, доступом к клиентской и партнерской базе и т.п.
- Для ИТ-администраторов был введен полный запрет на работу с критичными бизнес-приложениями из-под локальных учетных записей на своих АРМах. Все было переведено на доменные учетные записи с ограниченными привилегиями, находящиеся под контролем системы мониторинга.
Основные рекомендации и меры по мониторингу
Злоумышленники всегда резервируют свои доступы в инфраструктуру, поэтому параллельно осуществлялся полноценный мониторинг инцидентов и профилирование всех активностей.
С последним была отдельная сложность, так как, собрав профиль за две недели, нельзя с полной уверенностью назвать его легитимным, ведь злоумышленники все еще могли быть в инфраструктуре. Поэтому необходима была процедура согласования всех собранных активностей с компанией и уже в дальнейшем – фиксация собранных профилей. Общие рекомендации по выявлению резервных доступов выглядели следующим образом:
- Провести аудит установленного на рабочих станциях и серверах софта с целью выявления инструментов удаленного управления и нелегитимного ПО.
- Обеспечить контроль запуска программ на критичных компьютерах и серверах компании, ввести «белые списки» разрешенного программного обеспечения, особенно в отношении средств удаленного управления.
Одновременно Solar JSOC осуществлял мониторинг активности на критичных серверах и рабочих станциях по следующим направлениям:
- Сетевые запросы к известным опасным и вредоносным ресурсам, а также попытки DNS-запросов к вредоносным доменам.
- Активность привилегированных учетных записей – репорты ежедневно отправлялись ответственным сотрудникам и собственникам учетных записей на предмет верификации действий.
- Изменения в группах привилегированных пользователей.
- Запускаемые процессы на критичных серверах и рабочих станциях.
- Изменения системных директорий и критичных веток реестра на предмет нелегитимных исполняемых файлов, библиотек и параметров.
- Использование систем удаленного управления.
- Аномалии в DNS-трафике.
- Вирусная активность на критичных хостах.
- Вредоносные почтовые рассылки.
- Аномалии в профилях подключения к критичным серверам.
- Использования служебных учетных записей не по назначению.
Основные выводы и результаты расследования инцидента
После принятия оперативных мер по блокированию угрозы появилось время для сведения полного отчета о произошедшем инциденте:
- Каналом попадания вредоносного ПО на зараженные машины являлась уже скомпрометированная на момент заражения учетная запись с правами администратора домена, которую использовали с нескольких машин в ЛВС компании.
- Для передачи вредоносных файлов на машину, выполнения команд удаленного управления и завершения заражения машин кейлоггером использовался инструмент PsExec.
- На исследуемых зараженных машинах обнаружены следы другого ПО для удалённого управления, которое попало туда несколько лет назад. Среди RAT были TIghtVNC, WinVNC, Pointdev.
- В результате работы кейлоггера, как правило, были скомпрометированы учетные данные пользователя от ОС и ряда бизнес-приложений, его почтовая переписка, критичные файлы с парольной информацией от серверов ключевых бизнес-приложений, паспортные данные сотрудников.
- Каналом последующего удаленного управления и передачи информации злоумышленникам являлся DNS-туннель.
В качестве заключительной мысли хочется отметить, что обнаружение аналогичных инцидентов – это задача Security Operations Center, но и без него кое-что можно сделать, если правильно организовать работу с рядовыми сотрудниками компании и постоянно повышать их Security Awareness.
Злоумышленники часто пытаются скрыть свою активность от службы информационной безопасности и ИТ-администраторов, поскольку именно эти категории сотрудников компетентны в области информационной безопасности и понимают, что различные аномалии могут быть вызваны внешними воздействиями. При этом хакеры часто пренебрегают сокрытием своих действий от рядовых пользователей. Повышенная нагрузка на компьютер, странные действия на системе, внезапно открывшиеся или закрывшиеся приложения, появление новых файлов, иконок, установленных приложений, которые замечает пользователь, могут служить индикатором компрометации системы. Поэтому безопасникам необходимо внимательно относиться к входящим запросам, жалобам со стороны персонала компании и мотивировать сотрудников на информирование ответственных по отмеченным аномалиям.
habr.com
Утилита PsExec и удаленное управление системами
PsExec — это удобная утилита командной строки, с помощью нее можно запускать программы на удаленных Windows системах, перенаправляя данные, которые выводится приложением на экран на локальный ПК. Т.е. при работе с этой утилитой складывается ощущение, что приложение работает локально на вашем ПК. PsExec – бесплатная утилита и ее можно скачать по адресу https://download.sysinternals.com/files/PSTools.zip.
Какие требования к окружению при работе с утилитой PsExec? Для удаленного запуска команд и процессов необходимо, чтобы на удаленном и локальном ПК функционировали службы «Сервер» и «Рабочая станция» (Workstation и Server), а на удаленном компьютере должен быть доступен стандартный общий ресурс Admin$.
Удобство PsExec в том, что ее легко развернуть в сети благодаря возможности удаленной установки, без необходимости устанавливать или настраивать что-либо на каждом. На удаленном ПК PsExec работает в виде службы Windows с таким же именем.
PsExec очень удобна при выполнении множества задач по обслуживанию и администрированию удаленных рабочих станций и серверов. Устанавливать ее не нужно, можно просто скопировать ее в каталог, определенный в переменной %path% (например, C:WindowsSystem32). При запуске команд через PsExec на удаленном ПК запустится служба PsExec (исполняемый файл system32psexesvc.exe), соответственно для нормальной работы вам понадобятся права администратора домена на удаленной машине. Формат запуска и параметры командной строки у утилиты PsExec следующие:
Usage: psexec [computer[,computer2[,…] | @file][-u user [-p psswd]][-n s][-l][-s|-e][-x][-i [session]][-c [-f|-v]][-w directory][-d][-<priority>][-a n,n,… ] cmd [arguments]
В том случае, если имя пользователя и пароль не указаны, используются права текущего пользователя:
psexec buh_pc1 cmd.exe
psexec buh_pc1 -u admin -p P@ssw0rd notepad.exe
В принципе эту утилиту можно рассматривать как альтернативу telnet. Внимание: при использовании PsExec будьте осторожны, так как в принципе соединение между сервером и клиентом PsExec не шифруется и данные можно перехватить сетевым сниффером.
Если вам понадобится запустить определенную команду на нескольких компьютерах одновременно (например, shutdown –f –r –t 0 ☺), то их имена или ip-адреса нужно перечислить через запятую, или же поместить в текстовый файл, который выбрать в качестве одного их параметров утилиты PsExec..
psexec buh_pc1, buh_pc2 shutdown –f –r –t 0
psexec @c:list_of_buh_pc.txt shutdown –f –r –t 0
При использовании ключа “-c” указанная программа сначала скопируется с вашего ПК на удаленный, а потом выполнится. Ключ “-i” заставляет указанную команду запустится в интерактивном режиме. Если вы хотите, чтобы после запуска определенной команды PsExec не ждал ее окончания, а вывернул вам управление (командную строку), нужно указать параметр “-d”:
psexec -d buh_pc1 chkdsk
Эта команда запустит на удаленной системе процесс проверки диска, а администратор сможет продолжить введение команд.
winitpro.ru
Работа c удаленными рабочими станциями из консоли.
Пожалуй одним из лучших иснструментов для работы с удаленными рабочими станциями являются утилиты Марка Руссиновича pstools.
Список утилит —
PsExec — Выполнение команд (программ) на удаленной машине.
PsFile — полчение данных об открытых на удаленном компьютере файлах,
Синтаксис
PsGetSid — Получение кода безопасности (SID) компьютера или пользователя.
PsInfo — Получение сведений об операционной системе Windows.
PsKill — Ликвидация процессов по имени или коду процесса.
PsList — Получение подробных сведений о запущенных процессах.
PsLoggedOn — Получение сведений обо всех локально подключенных пользователях, а также всех пользователях, подключенных к общим ресурсам.
PsLogList — Создание дампа журнала событий Windows.
PsPasswd — Изменение паролей учетных записей пользователей.
PsService — Просмотр и управление службами Windows.
PsShutdown -Выключение, перезапуск, перевод в спящий режим или приостановка работы компьютера.
PsSuspend — Приостановка запущенных процессов.
Я думаю специалисты MS расписали данные утилиты более чем подробно, поэтому копипастом заниматься не буду, просто даю ссылки — тут и тут.
Заострим внимание на следущих моментах, для работы PSExec в windows 7 (для подключения к Windows 7) необходимо добавить ключ в реестр —
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\system /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f
В противном случае, при попытке подключения вы полчите сообщение — Couldn’t Access.
И второй вариант, это руссификация удаленной консоли, какого-то единого решения я не нашел, поэтому меняю шрифт в свойствах консоли на «Lucida Concole» и перед запуском psexec меняю кодировку на 1251 — chcp 1251. Теперь работа с удаленной консолью идет с поддержкой русского языка, но сообщения локальной консоли будут крякозябрами …. для этого можно поиграться между chcp 1251 и chcp 866.
Итак доступ к командной строке на удаленной машине:
psexec \\computer cmd.exe
Если компьютер работает в домене и Вы являетесь доменным админом, то вводить имя и пароль не нужно, а если машина работает в рабочей группе, то необходимо задать —
psexec \\computer -u username -p password cmd.exe
В удаленной консоли можно делать все то же, что и в локальной, например изменить дату и время —
Узнать парметры сети, сбросить кэш ДНС, перегистроваться в DHCP
и т.п.
Для Windows 7 указать ключ продукта —
C:\Windows\System32\slmgr.vbs /ipk <код ключа>
Изменить настройки сети —
netsh interface ip set address name="LAN" static 192.168.0.5 255.255.255.0 192.168.0.1
netsh interface ip set address name="LAN" dhcp
Список можно продолжать еще очень долго, все эти команды вы неоднократно найдете на страницах книг или интернета.
Командная строка это всего лишь один вариант использования psexec.
Приведу еще несколько примеров.
Копирование программы в удаленную систему с его запуском в интерактивном режиме.
psexec \\computer -c virus.exe
Если программа уже, то нужно указать полный путь к этой программе
psexec \\computer d:\123\virus.exe
Запуск редактора реестра в интерактивном режиме из системной учетной записи для просмотра данных разделов реестра SAM и SECURITY:
psexec -i -d -s c:\windows\regedit.exe
Вызов Internet Explorer от имени пользователя с ограниченными правами
psexec -l -d "c:\program files\internet explorer\iexplore.exe"
Что еще может быть полезно для работы с удаленными машинами? Советую посмотреть в сторону WinRM (Windows Remote Manager) Windows Powershell.
Также интересно:
greendail.ru