pwncat: практический гайд по post-exploitation shell-менеджеру

Практический гайд по pwncat: установка, PTY, перечисление, плагины и типовые post-exploitation сценарии для Linux и Windows.

2026-05-08 GIGATAP Team #pentest
#pentest#enumeration#implant-deployment#linux#persistance#privilege-escalation

Что такое pwncat#

pwncat — это Python-инструмент для работы с уже полученной shell-сессией на удаленной машине. По сути, он выступает как “умный” handler для reverse- и bind-shell: перехватывает сырую коммуникацию, нормализует окружение и помогает быстро перейти от голого shell к удобной интерактивной сессии с автоматизацией.

Инструмент особенно полезен для red team, pentest и практикующих специалистов по безопасности, которым важно не просто “зайти по shell”, а быстро провести перечисление хоста, подготовить рабочую среду, поднять PTY и использовать модули для persistence или privilege escalation. Важный момент: pwncat — это не стартовая точка атаки, а слой управления после первичного доступа.

С точки зрения платформы проект ориентирован на Linux-операторскую среду и требует Python 3.9+. Для целей под Linux он давно зрелый, а для Windows есть альфа-поддержка через отдельные .NET-плагины и C2-компоненты. Для практики это означает, что pwncat лучше всего использовать на Linux-рабочей станции, а Windows-таргеты обслуживать через встроенные плагины и предварительную подготовку.

Установка#

Наиболее безопасный и воспроизводимый вариант — изолировать установку в virtualenv. Так проще избежать конфликтов зависимостей и не засорять системный Python.

python3 -m venv pwncat-env
source pwncat-env/bin/activate
pip install pwncat-cs

Если вы предпочитаете ставить пакет напрямую из PyPI, имя дистрибутива — pwncat-cs, а не pwncat. Это важно из-за исторического конфликта имен.

pip install pwncat-cs

Для BlackArch установка еще проще:

pacman -Syu pwncat-caleb

Если нужен development-вариант из исходников, используйте Poetry:

git clone git@github.com:calebstewart/pwncat.git
cd pwncat
poetry install
poetry shell

Linux#

Официально это основная среда запуска. На Linux у pwncat меньше сюрпризов: корректнее работают PTY, raw-mode терминала и синхронизация размеров окна.

Windows и macOS#

Нативный операторский запуск не является целевым сценарием проекта. Если вы работаете с Windows или macOS как с рабочей станцией, практичнее использовать Linux VM, WSL2 или отдельный контейнер/VM с Linux. Для Windows-целей сам pwncat уже умеет работать через .NET-плагины, но операторская сторона все равно должна быть Linux-совместимой.

Если работаете с Windows-таргетом в среде без интернета, заранее скачайте плагины:

pwncat-cs --download-plugins

По умолчанию плагины сохраняются в ~/.local/share/pwncat. Для изолированных стендов или CI-образов это удобно перенаправлять в отдельный каталог и прокидывать его в конфигурации окружения вашей лаборатории.

Базовая настройка#

После подключения pwncat пытается сразу привести сессию в удобное состояние: отключает историю в remote shell, выравнивает prompt, ищет полезные бинарники через which и пытается поднять PTY. На практике это значит, что вы сразу получаете более предсказуемую интерактивность, чем в “сыром” shell.

Минимальный рабочий сценарий выглядит так: вы подключаетесь к уже полученной shell-сессии, затем проверяете доступные команды, и после этого переходите к модулям. Внутри интерфейса pwncat полезны команды:

help
search
info
use
run
load

Если хотите быстро привести терминал в рабочее состояние еще до подключения, заранее выставьте типичные параметры среды:

export TERM=xterm-256color
stty rows 48 columns 160

Для air-gapped или жестко контролируемых окружений заранее подготовьте плагины и положите их в каталог, который видит pwncat. Это особенно важно для Windows-целей, где без предварительной загрузки DLL/плагинов вы можете потерять время на ручную доставку.

Основные сценарии использования#

1. Быстрое превращение “голого” shell в удобную интерактивную сессию#

Самая частая задача — не “взломать”, а сделать уже полученный shell пригодным для работы. После подключения pwncat помогает получить PTY и синхронизировать параметры терминала, чтобы нормально работали vim, nano, less, интерактивные TUI и полноэкранные утилиты.

Типовой flow выглядит так:

pwncat> help
pwncat> search pty
pwncat> info
pwncat> run

Здесь идея в том, чтобы быстро найти подходящий модуль для PTY-эскалации, понять его параметры и выполнить его в текущей сессии. Это особенно полезно на хостах, где исходно доступен только урезанный /bin/sh.

2. Перечисление хоста после входа#

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

Практический шаблон:

pwncat> search enumeration
pwncat> info
pwncat> use <module-id>
pwncat> run

В реальной работе это удобно для первичного triage: посмотреть пользователя, группы, sudo-права, сетевые интерфейсы, переменные окружения, доступные бинарники и типовые векторы дальнейшего усиления. На хорошо настроенных системах такой подход экономит много времени по сравнению с ручной последовательностью команд.

3. Windows-таргеты и предварительная подготовка плагинов#

Для Windows pwncat работает через отдельный .NET-based C2 слой. Это альфа-функциональность, поэтому здесь особенно важно планировать заранее: подготовить плагины, убедиться, что целевой shell действительно cmd.exe или powershell.exe, и проверить доступность необходимых DLL.

На практике схема обычно такая:

pwncat-cs --download-plugins

Дальше вы переносите подготовленные плагины в каталог, указанный в plugin_path, и подключаетесь к сессии уже с готовой инфраструктурой. Такой подход сильно снижает ручную работу в изолированных сегментах сети, где у цели нет выхода в интернет.

Советы и нюансы#

  • Используйте pwncat на Linux-операторской машине: это минимизирует проблемы с PTY, raw-mode и поведением терминала.
  • Для повторяемых лабораторий держите отдельный каталог под плагины и артефакты; дефолтный путь ~/.local/share/pwncat удобен для личной работы, но в team-окружении лучше иметь централизованную структуру.
  • Если работаете с Windows-целями, заранее проверяйте, что у вас есть нужные плагины и что таргет действительно запускает поддерживаемый shell. Альфа-поддержка означает, что edge cases здесь встречаются чаще, чем на Linux.
  • На больших стендах полезно сразу фиксировать размеры терминала и TERM, иначе часть интерактивных приложений будет вести себя некорректно даже после успешного поднятия PTY.
  • Следите за версией: v0.5.4 включает исправление для команды load, поэтому для практики и документированных сценариев лучше использовать именно свежий релиз.
  • Не смешивайте pwncat с обычным netcat-подходом без необходимости: его ценность именно в модульной пост-эксплуатации, а не в простом проксировании shell.
  • Если подключение нестабильно, сначала проверьте, не ломается ли сессия на этапе нормализации prompt или PTY, а уже потом переходите к перечислению и модулям.

See Also#

Вывод#

pwncat — это сильный инструмент для продвинутой post-exploitation работы, когда вам нужен не просто shell, а управляемая среда с перечислением, PTY и модулями для дальнейших действий. Он особенно хорошо подходит технически грамотным пользователям, работающим в Linux-окружении и регулярно проводящим authorized security assessments.

Если ваша работа связана с red team, pentest и лабораторными стендами, pwncat стоит держать в основном наборе инструментов рядом с ssh, tmux и обычными сетевыми утилитами.