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

Что нужно для psexec

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

1. На обеих машинах, т.е. удалённом компьютере (которым будем управлять) и локальном компьютере (с которого будем управлять), должен быть включён общий доступ к файлам и принтерам. Для их включения смотрите статью «SMB: настройка общей сетевой папки в Windows».

Что такое psexec и pstools

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


Состав PsTools:

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

Pass the hash (использование хеша вместо пароля)

Указывать в командной строке пароль плохо для безопасности. А использование интерактивного ввода не позволяет использовать psexec.exe в скриптах. Выход из этой ситуации — использовать хеш пароля.

PsExec не может напрямую использовать хеш (хотя это ошибочно утверждается в некоторых инструкциях). Для применения хеша (Pass The Hash) с PsExec нужно использовать Windows Credential Editor или Mimikatz или Metasploit.

Пример выполнения Pass The Hash с PsExec. Вначале в Mimikatz:

Адаптация скриптов powershell для linux


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

В Invoke-TheHash есть функция Invoke-SMBEnum, которая выполняет перечисление пользователей, групп, сетевых сессий и совместных ресурсов. В Windows эта функция работает отлично. Попробую использовать её в Linux.

Запускаю консоль PowerShell:

pwsh


Перехожу в папку с уже скаченными скриптами:

cd ./bin/Invoke-TheHash/

Импортирую файл с нужной функцией:

Import-Module .Invoke-SMBEnum.ps1

Запускаю:

Включение удалённого рабочего стола

Проверить есть ли доступ к удалённому рабочему столу можно с помощью команды telnet, попробовав подключиться к соответствующему порту. Для Windows штатным является подключение по протоколу RDP на порт 3389 (хотя, конечно, и порт для RDP можно изменить и использовать другие протоколы). В случае открытого порта (подключения разрешены) мы увидим приглашение командной оболочки telnet:

Если же подключение запрещено, то команда зависнет на этапе “Trying 192.168.2.68…”

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

Если мы получили доступ к командной строке удалённого ПК (см. PsExec выше), то выполняем:

reg add “HKLMSYSTEMCurrentControlSetControlTerminal Server” /v fDenyTSConnections /t REG_DWORD /d 0 /f

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

1) Запускаем на удалённом ПК службу “Удаленный реестр”.

  • Входим в локальную оснастку “Службы”:

services.msc

  • Подключаемся к службам удалённого ПК: в боковом меню Службы в контекстном меню выбрать “Подключиться к другому компьютеру…”
  • Находим службу “Удаленный реестр” и меняем тип запуска на “Вручную”
  • Запускаем службу: кнопка “Запустить”

2) Подключаемся к реестру удалённого ПК.

  • На локальном ПК запускаем редактор реестра:

regedit

Пробуем подключиться:

mstsc

3) Если подлкючиться не удаётся, то нужно ещё донастроить брандмауэр на удалённом ПК

  • Получаем досутп к командной строке удалённого ПК с помощью PsExec:

psExec64.exe \192.168.2.68 cmd

  • Добавляем разрешающее правило в брандмауэр Windows на удалённое подключение к рабочему столу (порт 3389):

netsh advfirewall firewall add rule name=”Allow Remote Desktop” dir=in protocol=TCP localport=3389 action=allow

См. также

Задать вопрос по powershell

На этой странице я планирую добавлять ответы на часто возникающие вопросы и решения для частых проблем у новичков с PowerShell, поэтому если вам что-то ещё не понятно, то спрашивайте здесь в комментариях.

Связанные статьи:

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

Для подключения можно использовать IP адрес или имя компьютера:

psExec64.exe \192.168.2.68 cmd

или если хотим подключиться не от имени текущего пользователя, то:

PsExec.exe \192.168.2.68 -u ДоменПользователь -p Пароль cmd

Если ПК не в домене, то вместо “Домен” указываем имя ПК.

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

Запуск скрипта с помощью import-module

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

:/>  GPT или MBR, чем отличаются?

Например для запуска WinPwn нужно вначале импортировать файл с функциями:

Import-Module .WinPwn.ps1

А после этого можно вызывать содержащиеся в файле функции:

WinPwn

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


До сих пор мы рассмотрели возможности утилиты PsExec, которая является самой популярной в пакете PsTools. Но в PsTools ещё много утилит для типичных действий, которые регулярно выполняют системные администраторы. Рассмотрим их далее.

Как в psexec запустить команду с аргументами

Аргументы программы достаточно указать через пробел после самой команды:

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

В моих тестах на последних Windows 10 и Windows Server 2021 команда PsExec работает только с учётной записью Администратор. Поэтому в этом разделе описано, как активировать пользователя Администратор, который по умолчанию присутствует в Windows, но в обычных, не серверных версиях, этот пользователь отключён.


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

1. Нажмите клавиши Win r, чтобы открыть окно запуска команды.

2. Введите lusrmgr.msc и нажмите Enter.

3. Откройте Пользователи.

4. Щёлкните правой кнопкой мыши Администратор и выберите Свойства.

5. Снимите флажок «Отключить учётную запись» и нажмите ОК.

6. Снова щёлкните правой кнопкой мыши учётную запись администратора и выберите «Задать пароль».

7. Укажите пароль для учётной записи администратора и нажмите «ОК».

Как вывести список открытых удалённо файлов с помощью psfile


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

.psfile \HACKWARE-SERVER -u Администратор -p Aa1

Как вывести список служб

Мы можем перечислить удалённые сервисы с опцией query.

.psservice \HACKWARE-SERVER -u Администратор -p Aa1 query

Как выключить, перезагрузить, приостановить удалённую систему с psshutdown

Удалённую систему можно отключить командой PsShutdown, как показано ниже.

.psshutdown \HACKWARE-SERVER -u Администратор -p Aa1 -k

Связанные статьи:

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

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


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

.psexec \HACKWARE-SERVER -u Администратор -p Aa1 -i -s regedit.exe

Обратите внимание, что если на локальном компьютере нужно запустить программу с привилегиями SYSTEM (это намного более высокий привилегии, чем Администратор), то psexec также поможет. Например, чтобы получить доступ к разделам реестра Windows HKEY_LOCAL_MACHINESAMSAM достаточно выполнить команду:

psexec -s -i regedit.exe

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

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


Общий вид команды для запуска на удалённой системе:

.psexec \КОМПЬЮТЕР -u Администратор -p ПАРОЛЬ КОМАНДА АРГУМЕНТЫ КОМАНДЫ

В этой команде:

Пример выполнения команды ipconfig на удалённом компьютере \hackware-server от имени пользователя Администратор с паролем Aa1:

.psexec \HACKWARE-SERVER -u Администратор -p Aa1 ipconfig

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


У удалённого компьютера HACKWARE-SERVER IP адресом является 192.168.0.53, поэтому следующая команда эквивалентна предыдущей:

.psexec \192.168.0.53 -u Администратор -p Aa1 ipconfig

Обратите внимание, что в Windows (в противоположность Linux), регистр букв в именах компьютеров, командах и путях не имеет значения — можно использовать буквы любого регистра в любых местах.

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

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

В этом примере мы запустим notepad.exe на удаленной системе. Пользователь удаленного системного администратора может взаимодействовать с этим блокнотом. То есть программа откроется на удалённой системе, как-либо взаимодействовать с ней на локальной системе не получится.

.psexec \HACKWARE-SERVER -u Администратор -p Aa1 -i notepad.exe

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

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

Как запустить скрипт powershell в linux

В Linux для вызова консоли PowerShell нужно набрать:

pwsh

Затем в консоли PowerShell либо просто запустите желаемый скрипт:

./hello_world.ps1


Либо запустите функцию после импорта файла с помощью Import-Module. Пример запуска через импорт одной из функции Invoke-TheHash:

Как запустить скрипт powershell в windows

Для запуска скрипта с расширением .ps1 нужно открыть консоль PowerShell и затем указать полный путь до файла. Вы также можете перейти в папку со скриптом либо с помощью команды cd, либо, если вы хотите полностью окунуться в стиль PowerShell, то можете использовать Set-Location.

Как запустить службу удалённо

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

:/>  Default rdp что это и Как запустить подключение к удаленному рабочему столу (mstsc) с помощью командной строки

.psservice \HACKWARE-MIAL -u Администратор -p 1234 start mysql


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

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

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

.pspasswd \HACKWARE-SERVER -u Администратор -p Aa1 Администратор 123456Aa

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

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

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

.psexec \HACKWARE-SERVER -u Администратор -p Aa1 -c cmd.exe


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

С опцией -c можно указать любой файл.

Ещё один пример:

psexec \J3BCD011 -c "Z:filesccleaner.exe” cmd /S

В последнем примере как использовать PsExec мы используем опцию -c для копирования программы ccleaner.exe на удалённый компьютер J3BCD011, а затем запускаем выгруженный файл с параметром /S, который говорит CCleaner включить тихую установку (не требует ввода пользователя). Добавление такого аргумента требует cmd.

Как обновить powershell до последней версии

По умолчани в Windows 10 предустановлена версия PowerShell 5, но в настоящее время последней версией является PowerShell 7. Чтобы обновиться до последней версии смотрите статью «Как установить PowerShell 7 в Windows 10». Обратите внимание, что PowerShell 7 не заменит PowerShell 5. То есть в системе будут доступны обе версии PowerShell.

Как остановить службу удалённо

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

.psservice \HACKWARE-MIAL -u Администратор -p 1234 stop mysql

Как получить информацию об удалённой системе с psinfo

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

.psinfo \HACKWARE-SERVER -u Администратор -p Aa1


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

  • Uptime показывает, сколько дней и часов работает система
  • Kernel Version показывает ядро операционной системы
  • Product Type показывает версию операционной системы
  • Product Version версия продукта
  • Kernel Build Number номер сборки ядра
  • Registered Organization организация
  • Registered Owner владелец
  • IE Version показывает версию Internet Explorer
  • System Root показывает, где установлена операционная система
  • Processor показывает количество процессоров или потоков
  • Processor Speed скорость (частота) центрального процессора
  • Processor Type показывает подробную версию и имя процессора
  • Physical Memory количество физической памяти
  • Video Driver показывает имя загруженного драйвера

Как получить процессов в удалённой системе с pslist

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

.pslist \HACKWARE-SERVER -u Администратор -p Aa1

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

  • Name — это имя исполняемого файла
  • Pid — это ID процесса, который идентифицирует процессы (то есть отделяет друг от друга, является уникальной характеристикой процессов)
  • Pri является приоритетом, который влияет на производительность процесса в периоды высокой нагрузки
  • Thd — это номер потока
  • Hnd — это счётчик открытых файловых обработчиков
  • CPU Time — это общее использование ресурсов центрального процессора
  • Elapsed Time — это время от начала процесса

Как получить список sid на удалённой системе с psgetsid


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

.psgetsid \HACKWARE-SERVER -u Администратор -p Aa1

Как получить список журналов событий на удалённой системе с помощью psloglist

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

.psloglist \HACKWARE-SERVER -u Администратор -p Aa1 -m 5

Как получить справку по командам в powershell

Если вы хотите получить справку по опциям функции, команды или программы в PowerShell, то используйте команду Get-Help, после которой укажите другую команду, по которой вы хотите получить справку:

Get-Help КОМАНДА

Для получения справки по Set-Location:

Get-Help Set-Location


Для получения справки по Invoke-SMBEnum (после импорта функции из файла):

Get-Help Invoke-SMBEnum

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

До сих пор мы выполняли команды удалённо. После выполнения команды подключение к удалённой системе закрывалось. Это как сессионное соединение. С помощью PsExec мы можем получить удалённую оболочку или командную строку (по аналогии SSH в Linux).

Но начнём с того, что посмотрим информацию о текущей системе и пользователе:

Как убить процесс в удалённой системе с pskill

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

.pskill \HACKWARE-SERVER -u Администратор -p Aa1 2064

Как установить powershell в linux

PowerShell работает также и в Linux, но некоторые команды PowerShell отсутствуют в Linux. При запуске скриптов PowerShell в Linux возникнут проблемы в следующих случаях:

:/>  TELNET— основы использования

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

Могут быть и другие причины проблем, но много всё равно работает.


Многие дистрибутивы Linux поддерживаются официально и простые инструкции по установке PowerShell в свой дистрибутив, а также установочные файлы вы найдёте здесь:

Отключение брандмауэра

Отключаем брандмауэр для всех профилей сети:

netsh advfirewall set allprofiles state off

Включение:

netsh advfirewall set allprofiles state on

Отличия powershell и cmd в windows


В Windows PowerShell уже давно устанавливается по умолчанию.

Чтобы открыть PowerShell, нажмите Win x и выберите Windows PowerShell (администратор):

В приглашении командной строки вы увидите PS и текущую рабочую директорию:

Чтобы открыть CMD нужно нажать Win r, напечатать cmd и нажать ENTER:


Приглашение командной строки CMD выглядит так:

В CMD можно запустить:

  • утилиты командной строки Windows
  • встроенные функции CMD
  • файлы .bat

В PowerShell можно запустить всё то же самое, что и в CMD, а также дополнительно:

  • команды языка PowerShell
  • скрипты PowerShell


В PowerShell сработает такая простая команда как dir:

dir

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

А если попытаться выполнить эту команду с опцией, например:

dir /A

То в CMD она сработает, а в PowerShell завершится ошибкой.

Дело в том, что вместо реализации таких же утилит как в CMD, в PowerShell используются собственные командлеты, работа которых различается, например, выводом или поддержкой опций. В PowerShell сработают команды cd, ls, dir, cat, man, kill, mount, move, sort, pwd, wget, curl и другие, знакомые по Linux, но это НЕ ОЗНАЧАЕТ что эти команды поддерживают те же самые опции, что и опции в Linux.

Get-Alias

Переименование удалённого пк

Текущее имя ПК можно увидеть через запрос к значению в реестре:

reg query “HKLMSYSTEMCurrentControlSetControlComputerNameComputerName” /v ComputerName

Изменяем в реестре имя ПК на New-PC-Name:

Для вступления в силу нового имени нужно перезагрузить компьютер:

shutdown /r /f /t 180

Здесь мы дали пользователю 3 минуты (180 секунд) на закрытие документов, но можно этот параметр изменить в соответствии со случаем.

Пинг с psping


Ещё одним полезным инструментом является PsPing, который создает ICMP-пакеты для проверки связи. Команда в примере запускается на локальной системе (но может быть запущена и удалённо).

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

Приветствую. Иногда возникают задачи когда нужно что-либо сделать на удаленном компьютере, при этом либо нет возможности подключиться по RDP, например, если вдруг сервер сильно загружен, и ему не хватит ресурсов для запуска терминальной сессии (да да, у меня такое встречалось, не сказать что часто, но бывало smiley). Либо из командной строки задачу сделать быстрее. Ну или еще как вариант, если нужно что то сделать скрытно, в том случае если пользователь в момент когда это нужно сделать работает за компьютером. Пользователям Linux с этим гораздо проще, у них есть ssh. Но и в Windows есть возможность подключаться, с позволения сказать, в командную строку.

В общем и целом на помощь к нам приходят утилиты SysInternals, а именно – pstools, а еще конкретнее – psexec из этого набора утилит. Скачать это добро можно <![CDATA[]]>здесь<![CDATA[]]>.

После того как скачали, нужно эти утилиты разархивировать куда-нибудь. Я обычно на диске C: создаю папку ps, что бы удобнее было добираться до утилит. Установки они не требуют. Для того что бы подключиться к удаленному компьютеру в командной строке набираем:

c:psPsExec.exe \192.168.1.114 -u domainuser -p password cmd

За место cmd можно например запустить какой-нибудь батник или другую команду.

Видео по теме:

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

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

Установка powershell в kali linux

PowerShell добавлен в стандартные репозитории Kali Linux, поэтому установка очень простая:

sudo apt install powershell

Как перенаправить вывод команды psexec

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

.psexec \HACKWARE-SERVER -u Администратор -p Aa1 ipconfig > HACKWARE-SERVER_ifconfig


В этом примере выходные данные команды ipconfig сохраняются в файл с именем HACKWARE-SERVER_ifconfig.

Для вывода содержимого файла можно использовать команду Get-Content или её более короткий псевдоним cat:

cat .HACKWARE-SERVER_ifconfig

Оставьте комментарий