- Удаленное управление компьютером Windows из командной строки —
- Что нужно для psexec
- Что такое psexec и pstools
- Pass the hash (использование хеша вместо пароля)
- Адаптация скриптов powershell для linux
- Включение удалённого рабочего стола
- Задать вопрос по powershell
- Связанные статьи:
- Запуск командной строки на удалённом пк
- Запуск скрипта с помощью import-module
- Инструменты pstools
- Как в psexec запустить команду с аргументами
- Как включить учётную запись администратора
- Как вывести список открытых удалённо файлов с помощью psfile
- Как вывести список служб
- Как выключить, перезагрузить, приостановить удалённую систему с psshutdown
- Связанные статьи:
- Как запустить команду как пользователь system
- Как запустить команду на удалённой системе
- Как запустить приложение с графическим интерфейсом на удалённой системе
- Как запустить скрипт powershell в linux
- Как запустить скрипт powershell в windows
- Как запустить службу удалённо
- Как изменить пароль на удалённой системе с помощью pspasswd
- Как копировать исполнимый файл с локального на удалённую систему
- Как обновить powershell до последней версии
- Как остановить службу удалённо
- Как получить информацию об удалённой системе с psinfo
- Как получить процессов в удалённой системе с pslist
- Как получить список sid на удалённой системе с psgetsid
- Как получить список журналов событий на удалённой системе с помощью psloglist
- Как получить справку по командам в powershell
- Как создать интерактивную оболочку с подключением к удалённой системе
- Как убить процесс в удалённой системе с pskill
- Как установить powershell в linux
- Отключение брандмауэра
- Отличия powershell и cmd в windows
- Переименование удалённого пк
- Пинг с psping
- Удаленное управление компьютером windows из командной строки
- Управление службами в удалённой системе с помощью psservice
- Установка powershell в kali linux
- Как перенаправить вывод команды psexec
Удаленное управление компьютером 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:
Перехожу в папку с уже скаченными скриптами:
Импортирую файл с нужной функцией:
Включение удалённого рабочего стола
Проверить есть ли доступ к удалённому рабочему столу можно с помощью команды 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) Запускаем на удалённом ПК службу «Удаленный реестр».
- Входим в локальную оснастку «Службы»:
- Подключаемся к службам удалённого ПК: в боковом меню Службы в контекстном меню выбрать «Подключиться к другому компьютеру…»
- Находим службу «Удаленный реестр» и меняем тип запуска на «Вручную»
- Запускаем службу: кнопка «Запустить»
2) Подключаемся к реестру удалённого ПК.
- На локальном ПК запускаем редактор реестра:
Пробуем подключиться:
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.
Например для запуска 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. В этом примере мы перечислим все открытые удалённо файлы.
Как вывести список служб
Мы можем перечислить удалённые сервисы с опцией query.
Как выключить, перезагрузить, приостановить удалённую систему с psshutdown
Удалённую систему можно отключить командой PsShutdown, как показано ниже.
Связанные статьи:
Как запустить команду как пользователь system
При выполнении команд в удалённой системе привилегии и владелец процесса будут предоставлены пользователем. Если нам нужно изменить владельца удалённых команд на пользователя SYSTEM, мы указываем опцию -s.
В этом примере мы будем использовать regedit.exe:
Обратите внимание, что если на локальном компьютере нужно запустить программу с привилегиями SYSTEM (это намного более высокий привилегии, чем Администратор), то psexec также поможет. Например, чтобы получить доступ к разделам реестра Windows HKEY_LOCAL_MACHINESAMSAM достаточно выполнить команду:
Как запустить команду на удалённой системе
Основное использование команды PsExec — это просто запуск команды в удалённой системе. Чтобы запустить команду в удалённой системе, мы должны указать имя пользователя и пароль вместе с командой для запуска на удалённом компьютере.
Общий вид команды для запуска на удалённой системе:
Пример выполнения команды ipconfig на удалённом компьютере \hackware-server от имени пользователя Администратор с паролем Aa1:
Как мы видим, команда выполняется в удалённой системе без проблем.
У удалённого компьютера HACKWARE-SERVER IP адресом является 192.168.0.53, поэтому следующая команда эквивалентна предыдущей:
Обратите внимание, что в Windows (в противоположность Linux), регистр букв в именах компьютеров, командах и путях не имеет значения — можно использовать буквы любого регистра в любых местах.
Как запустить приложение с графическим интерфейсом на удалённой системе
Операционные системы Windows предоставляют по умолчанию графический интерфейс. PsExec можно использовать для открытия приложения с графическим интерфейсом на удалённой системе в указанной пользовательской консоли. Пользовательская консоль просто означает рабочий стол пользователя.
В этом примере мы запустим notepad.exe на удаленной системе. Пользователь удаленного системного администратора может взаимодействовать с этим блокнотом. То есть программа откроется на удалённой системе, как-либо взаимодействовать с ней на локальной системе не получится.
Поскольку используется опция -i, программа откроется в интерактивном режиме, что означает, что она фактически запустится на экране удалённого компьютера. Если бы -i была опущена в вышеупомянутой команде, то команда выполнялась бы в скрытом режиме, что означает не показывать какие-либо диалоговые окна или другие окна.
Мы получим нашу локальную оболочку после того, как удалённый пользователь закроет блокнот. После закрытия код выхода будет напечатан в консоли psexec.
Как запустить скрипт powershell в linux
В Linux для вызова консоли PowerShell нужно набрать:
Затем в консоли PowerShell либо просто запустите желаемый скрипт:
Либо запустите функцию после импорта файла с помощью Import-Module. Пример запуска через импорт одной из функции Invoke-TheHash:
Как запустить скрипт powershell в windows
Для запуска скрипта с расширением .ps1 нужно открыть консоль PowerShell и затем указать полный путь до файла. Вы также можете перейти в папку со скриптом либо с помощью команды cd, либо, если вы хотите полностью окунуться в стиль PowerShell, то можете использовать Set-Location.
Как запустить службу удалённо
Удалённый сервис может быть запущен с опцией start. В этом примере мы запустим сервис с именем mysql.
После запуска сервиса будет выведена информация о нём.
Как изменить пароль на удалённой системе с помощью pspasswd
Пароли пользователей удалённой системы можно легко изменить с помощью команды PsPasswd. В этом примере мы изменим пароль администратора на 123456Aa.
Как копировать исполнимый файл с локального на удалённую систему
Выполнение команд в удалённой системе — очень полезная функция, но есть и другая полезная функция, которая облегчит работу системных администраторов и пентестеров. PsExec может использоваться для копирования исполнимых файлов из локальной системы в удалённую систему. Мы задействуем опцию -c для операции копирования. По завершении команд скопированный экземпляр будет удалён.
В этом примере мы скопируем cmd.exe. После завершения операции копирования в удалённой системе будет запущен cmd.exe.
Как мы видим, мы получаем оболочку cmd в удалённой системе.
С опцией -c можно указать любой файл.
Ещё один пример:
В последнем примере как использовать 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:
Как получить информацию об удалённой системе с psinfo
PsInfo — это инструмент, используемый для получения об удалённой системе информации, такой как время работы, версия, вариант Windows и т. д.
Следующая информация об удалённой системе предоставлена в 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.
Вывод предоставит следующую информацию о процессах удалённой системы.
- Name — это имя исполняемого файла
- Pid — это ID процесса, который идентифицирует процессы (то есть отделяет друг от друга, является уникальной характеристикой процессов)
- Pri является приоритетом, который влияет на производительность процесса в периоды высокой нагрузки
- Thd — это номер потока
- Hnd — это счётчик открытых файловых обработчиков
- CPU Time — это общее использование ресурсов центрального процессора
- Elapsed Time — это время от начала процесса
Как получить список sid на удалённой системе с psgetsid
SID используется для более детальной идентификации пользователей Windows. Мы можем перечислить SID предоставленных пользователей с помощью команды PsGetSid, как показано ниже.
Как получить список журналов событий на удалённой системе с помощью psloglist
Журналы удалённой системы могут быть легко выгружены в локальную систему с помощью команды PsLogList. Если мы используем эту команду без каких-либо дополнительных параметров, она выведет все журналы событий из удалённой системы, которые заполнят окно консоли. Так что для примера мы с опцией -m ограничим вывод последними 5 минутами журналов событий.
Как получить справку по командам в powershell
Если вы хотите получить справку по опциям функции, команды или программы в PowerShell, то используйте команду Get-Help, после которой укажите другую команду, по которой вы хотите получить справку:
Для получения справки по Set-Location:
Для получения справки по Invoke-SMBEnum (после импорта функции из файла):
Как создать интерактивную оболочку с подключением к удалённой системе
До сих пор мы выполняли команды удалённо. После выполнения команды подключение к удалённой системе закрывалось. Это как сессионное соединение. С помощью PsExec мы можем получить удалённую оболочку или командную строку (по аналогии SSH в Linux).
Но начнём с того, что посмотрим информацию о текущей системе и пользователе:
Как убить процесс в удалённой системе с pskill
Процессы, запущенные в удалённой системе, могут быть легко остановлены с помощью команды PsKill. Чтобы убить процесс, мы должны указать идентификатор процесса или имя процесса в качестве аргумента. Мы убьём удалённый процесс с идентификатором процесса 2064.
Как установить powershell в linux
PowerShell работает также и в Linux, но некоторые команды PowerShell отсутствуют в Linux. При запуске скриптов PowerShell в Linux возникнут проблемы в следующих случаях:
- в скрипте используются команды, которые отсутствуют в 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:
Но если выполнить эту команду в PowerShell и в CMD, то можно увидеть, что вывод этих команд различается.
А если попытаться выполнить эту команду с опцией, например:
То в CMD она сработает, а в PowerShell завершится ошибкой.
Дело в том, что вместо реализации таких же утилит как в CMD, в PowerShell используются собственные командлеты, работа которых различается, например, выводом или поддержкой опций. В PowerShell сработают команды cd, ls, dir, cat, man, kill, mount, move, sort, pwd, wget, curl и другие, знакомые по Linux, но это НЕ ОЗНАЧАЕТ что эти команды поддерживают те же самые опции, что и опции в Linux.
Переименование удалённого пк
Текущее имя ПК можно увидеть через запрос к значению в реестре:
reg query «HKLMSYSTEMCurrentControlSetControlComputerNameComputerName» /v ComputerName
Изменяем в реестре имя ПК на New-PC-Name:
Для вступления в силу нового имени нужно перезагрузить компьютер:
shutdown /r /f /t 180
Здесь мы дали пользователю 3 минуты (180 секунд) на закрытие документов, но можно этот параметр изменить в соответствии со случаем.
Пинг с psping
Ещё одним полезным инструментом является PsPing, который создает ICMP-пакеты для проверки связи. Команда в примере запускается на локальной системе (но может быть запущена и удалённо).
Удаленное управление компьютером windows из командной строки
Приветствую. Иногда возникают задачи когда нужно что-либо сделать на удаленном компьютере, при этом либо нет возможности подключиться по RDP, например, если вдруг сервер сильно загружен, и ему не хватит ресурсов для запуска терминальной сессии (да да, у меня такое встречалось, не сказать что часто, но бывало ). Либо из командной строки задачу сделать быстрее. Ну или еще как вариант, если нужно что то сделать скрытно, в том случае если пользователь в момент когда это нужно сделать работает за компьютером. Пользователям Linux с этим гораздо проще, у них есть ssh. Но и в Windows есть возможность подключаться, с позволения сказать, в командную строку.
В общем и целом на помощь к нам приходят утилиты SysInternals, а именно — pstools, а еще конкретнее — psexec из этого набора утилит. Скачать это добро можно здесь .
После того как скачали, нужно эти утилиты разархивировать куда-нибудь. Я обычно на диске C: создаю папку ps, что бы удобнее было добираться до утилит. Установки они не требуют. Для того что бы подключиться к удаленному компьютеру в командной строке набираем:
За место cmd можно например запустить какой-нибудь батник или другую команду.
Управление службами в удалённой системе с помощью psservice
Команда PsService используется для просмотра, запуска, остановки служб в удалённой системе.
Установка powershell в kali linux
PowerShell добавлен в стандартные репозитории Kali Linux, поэтому установка очень простая:
Как перенаправить вывод команды psexec
После запуска команды в удалённой системе вывод команды будет напечатан в текущий стандартный вывод, который является нашей текущей оболочкой (окном командной строки). Этот вывод может быть перенаправлен в файл с помощью символа >. Если у нас много удалённых систем для запуска команд, эта опция будет очень полезна.
В этом примере выходные данные команды ipconfig сохраняются в файл с именем HACKWARE-SERVER_ifconfig.
Для вывода содержимого файла можно использовать команду Get-Content или её более короткий псевдоним cat: