1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

PsExec: обзор утилиты для удаленного выполнения команд

PsExec и что он может делать

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

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

Что такое PsExec?

Утилита PsExec была разработана как часть пакета инструментов PsTools, изначально разработанного Марком Руссиновичем (Mark Russinovich) из компании Sysinternals, которая теперь принадлежит компании Microsoft. Инструмент выполнен как инструмент управления на основе командной строки и позволяет удаленно выполнять процессы в другой системе. Этот инструмент очень гибкий в том отношении, что он позволяет использовать различные учетные данные, а не те, которые использует пользователь, выполняющий программу, а это означает, что вы можете управлять устройствами, разделенными границами домена и сайта. PsExec не только выполняет программы на удаленной системе, она может перенаправлять входные и выходные данные между системами так, что вы можете использовать интерактивные инструменты удаленно.

В отличие от большинства программных продуктов, связанных с Microsoft, внутренний принцип работы PsExec не представляет собой секрета и довольно прост. PsExec позволяет перенаправлять входные и выходные данные удаленно запущенной исполняемой программы посредством использования SMB и скрытого ресурса общего доступа $ADMIN на удаленной системе. С помощью этого ресурса PsExec использует интерфейс программирования диспетчера управления Windows Service control Manager API для запуска службы PsExecsvc на удаленной системе, которая создает именованный канал (named pipe), по которому работает PsExec. Именно этот именованный канал позволяет перенаправление ввода/вывода обратно в систему, на которой работает PsExec.

Положительная сторона PsExec

Как и предполагалось при начальном создании программы PsExec, она может использоваться для выполнения большого количества полезных задач, которые могут помочь администратору системы. Одной из таких ситуаций, в которой мне пришлось оказаться, была ситуация, когда я знал DNS имя компьютера, но не знал точных параметров IP конфигурации (DNS сервер, основной шлюз и т.д.). При нормальных обстоятельствах я бы использовал ipconfig на локальной системе для определения этой информации. Однако в большинстве случаев это означает, что мне пришлось бы ехать в другое место и одалживать компьютер пользователя, соответственно снижая уровень его продуктивности на этот день. Поскольку команда ipconfig не имеет возможности выполнения на удалённых машинах, я могу использовать PsExec для ее успешного выполнения, как показано на рисунке 1.

Рисунок 1: Использование PsExec для выполнения ipconfig на удаленной системе

После вызова PsExec, удаленный компьютер вводится вслед за двумя наклонными (\), после чего вводиться команда ipconfig. Когда вы выполняете PsExec, она по умолчанию входит в %SYSTEM% каталог удаленной системы, на которой вы пытаетесь ее выполнить, и по этой причине мне не пришлось указывать полный путь. Наконец, ключ /all для команды ipconfig указывается, чтобы отобразить всю доступную информацию ipconfig.

Еще одной распространённой ситуацией применения PsExec является ее использование для установки обновлений, заплаток и исправлений. Хотя предпочитаемым способом выполнения этой задачи является использование групповой политики, могут быть ситуации, когда этот способ слишком медленный. Я сталкивался со многими ситуациями, где нужно было устанавливать высокоприоритетное исправление безопасности, которое не могло ждать стандартного времени обновления групповой политики, поэтому я использовал PsExec для более быстрой установки файла. Этот пример показан на рисунке 2.

Читать еще:  IntelliJ IDEA 2018.1 — улучшенный анализ кода, поддержка частичных коммитов Git, Android Studio 3.0 и многое другое

Рисунок 2: Удаленное выполнение исполняемого исправления

На рисунке выше в команде используются дополнительные компоненты. Во-первых, обратите внимание, что там указаны имена двух других компьютеров, разделённых запятыми после двойной наклонной (\). PsExec позволяет указывать несколько целевых устройств, или файл, содержащий список имен или адресов устройств. Эта команда также включает /c ключ, который используется, когда нужно указать файл на локальной системе, который нужно выполнить на удаленной системе. В этом примере я указал файл patch.exe. Этот файл расположен в моей локальной системе в корне диска C, поэтому я указал полный путь к файлу. Ключ /c просматривает %SYSTEM% каталог локальной системы по умолчанию. Как вы видите, файл успешно выполнен, и выходная информация перенаправлена обратно в локальную консоль системы, на которой выполняется PsExec.

И еще одной, последней ситуацией законного использования PsExec является ситуация удаленного администрирования систем с высоким уровнем привилегий, при использовании системы от имени учетной записи с более низким уровнем привилегий. Не могу вспомнить точное количество раз, когда мне приходилось работать с компьютерами пользователей и получать звонки, требовавшие от меня выполнения административных задач, таких как смена пароля. Конечно, в среде Active Directory я мог просто использовать протокол RDP для входа в контроллер домена и выполнения этой задачи, но у меня было несколько клиентов, которые не использовали active directory или RDP по ряду причин. В этой ситуации очень удобно просто вставить USB накопитель и воспользоваться установленной на него утилитой PsExec. В случае, показанном на рисунке 3, я использовал PsExec для сброса пользовательского пароля на системе, путем подъема уровня привилегий сетевого инструмента, выполняемого под PsExec.

Рисунок 3: Смена пользовательского пароля путем повышения привилегий PsExec

Выполнение незаконных операций с помощью PsExec

Теперь давайте рассмотрим темную сторону инструмента и посмотрим на те вещи, которые можно выполнить с помощью PsExec в недобрых намерениях. Прежде всего, давайте рассмотрим ситуацию, в которой злоумышленник получил учетные данные системы, но не имеет непосредственного доступа к ней. В этом случае, злоумышленник намеревается получить контроль над GUI или командной строкой системы, но возможности использования этих учетных данных могут быть ограничены. Одним из способов, который может оказаться полезным в такой ситуации, является использование PsExec для выполнения исполняемых файлов лазеек (backdoor executable) на системе, как показано на рисунке 4.

Рисунок 4: Вредоносная программа запущена на системе удаленно

В этой ситуации удаленный злоумышленник использует PsExec с ключом /c для выполнения файла nc.exe на удаленной системе. Наряду с этим используются ‘u и ‘p ключи, которые указывают имя и пароль взломанной системы, чтобы файл мог выполняться с привилегиями корневого уровня. Без ведома жертвы, файл, исполняемый на его системе, представляет собой лазейку, которая позволит взломщику подключаться к системе и получать доступ к административному интерпретатору команд.

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

Рисунок 5: Использование хэш-значения пароля для удаленного выполнения файла

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

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

Читать еще:  Как разблокировать планшет, если вы забыли пароль? Как разблокировать планшет? Советы и инструкции

Рисунок 6: Доступ к реестру компьютера жертвы

Вышеуказанная команда выполняется непосредственно на локальной системе, но указывает ключ ‘s, чтобы использовать локальную учетную запись SYSTEM. Этот ключ используется в сочетании с опцией ‘I (интерактивный), которая выполняет regedit в интерактивном режиме. Выполнение этой команды запустит regedit с доступом SYSTEM, что обеспечит дополнительный доступ к некоторым интересующим файлам. Одним из примеров такого является SAM файл, содержащий хэш-значения паролей пользователя. Учитывая определенные мотивы, взломщик с таким доступом к системе и PsExec с легкостью может извлечь все хэши паролей из системы, используя данную методику, обеспечив себя информацией, которая может позволить скомпрометировать другие системы или учетные записи.

Несколько предупреждений

Учетные данные в открытом виде – если вас волнует то, кто может прослушивать активность в вашей сети, то использование инструмента PsExec является не самым удачным выбором. PsExec передает все учетные данные пользователя в чистом (незашифрованном) виде, а это означает, что если вы передаете имя пользователя или пароль для удаленного доступа к системе, любой пользователь в сети может перехватить эти учетные данные с помощью инструмента Wireshark или Tcpdump.

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

PsExec и Metasploit – по возможности я никогда не использую PsExec отдельно. Изменённая версия PsExec теперь включена в Metasploit Framework. Metasploit представляет собой среду для тестирования систем на возможность проникновения, которая предоставляет приличный набор функций. Если вы хотите использовать PsExec для определенного рода оценки безопасности, то следует воспользоваться дополнительными функциями, предлагаемыми Metasploit. Я использовал эту версию PsExec в своей предыдущей статье о технике передачи хэша Passing the Hash.

Заключение

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

PsExec: обзор утилиты для удаленного выполнения команд

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

PsExec — это утилита командной строки, с возможность вызывать в интерактивном режиме интерфейс командной строки в удаленных системах Windows и удаленно запускать различные команды.

Эта утилита ставиться на только на компьютер администратора. Для установки необходимо ее скачать, вот ссылка на официальный сайт Microsoft . После скачивания архива его необходимо разархивировать, в разархивированной папке найти файл PsExec.exe. Нажмите на нем два раза, появиться окно с лицензионным соглашением, нажимаем «Agree«.

На этом установка PSEXEC можно считать оконченной.

Разберем синтаксис команды:

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 Указанная программа копируется в удаленную систему для выполнения. Если этот параметр не задан, то приложение должно находиться в системной папке удаленной системы.

Читать еще:  Настройка умных часов smart bracelet. Включение фитнес браслета Xiaomi Mi Band и настройка Mi Fit

-d Указывает, что не нужно ждать завершения приложения. Этот параметр следует использовать только при запуске неинтерактивных приложений.

-e Указанный профиль учетной записи не загружается.

-f Указанная программа копируется в удаленную систему, даже если такой файл в удаленной системе уже есть.

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

-l При запуске процесса пользователю предоставляются ограниченные права (права группы администраторов отменяются, и пользователю предоставляются только права, назначенные группе «пользователи»). В ОС Windows Vista процесс запускается с низким уровнем благонадежности.

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

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

-s Удаленный процесс запускается из системной учетной записи.

-u Позволяет указать необязательное имя пользователя для входа в удаленную систему.

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

-w Позволяет указать для процесса рабочий каталог (путь внутри удаленной системы).

-x Отображает интерфейс пользователя на рабочем столе Winlogon (только в локальной системе).

-приоритет (приоритет) Позволяет задавать для процесса различные приоритеты: -low (низкий), -belownormal (ниже среднего), -abovenormal (выше среднего), -high (высокий) или -realtime (реального времени).

программа Имя запускаемой программы.

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

Примеры работы команды PSEXEC:

1) Для того чтобы запустить командную строку другого компьютера, необходимо ввести
psexec \ cmd

например:
psexec \WIN782 cmd

после этого можете вводить необходимые вам команды.

2) Для того чтобы запустить какою либо программу (в данном примере test.exe) на удаленном компьютере необходимо выполнить команду, (эта команда копирует программу test.exe в удаленную систему и выполняет ее в интерактивном режиме).

psexec \ -c test.exe

например:
psexec \WIN782 -c test.exe

3) Если в удаленной системе такая программа уже установлена и находится не в системном каталоге, укажите полный путь к этой программе

Утилита 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][-

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

В принципе эту утилиту можно рассматривать как альтернативу telnet. Внимание: при использовании PsExec будьте осторожны, так как в принципе соединение между сервером и клиентом PsExec не шифруется и данные можно перехватить сетевым сниффером.
Если вам понадобится запустить определенную команду на нескольких компьютерах одновременно (например, shutdown –f –r –t 0 ☺), то их имена или ip-адреса нужно перечислить через запятую, или же поместить в текстовый файл, который выбрать в качестве одного их параметров утилиты PsExec..

При использовании ключа “-c” указанная программа сначала скопируется с вашего ПК на удаленный, а потом выполнится. Ключ “-i” заставляет указанную команду запустится в интерактивном режиме. Если вы хотите, чтобы после запуска определенной команды PsExec не ждал ее окончания, а вывернул вам управление (командную строку), нужно указать параметр “-d”:

Эта команда запустит на удаленной системе процесс проверки диска, а администратор сможет продолжить введение команд.

Ссылка на основную публикацию
Статьи c упоминанием слов:

Adblock
detector