
Постэксплуатационная платформа, автоматизирующая разведку, повышение привилегий, закрепление и операции C2 через reverse/bind shells с кроссплатформенной поддержкой Linux и Windows.
pwncat — это платформа для пост-эксплуатации для целей Linux. Изначально это была оболочка для простых bind и reverse shell, и с тех пор она развилась. Она упрощает типичные операции red team, подготавливая код с вашей атакующей машины, а не с целевой.
Ранее pwncat поддерживал только Linux, но недавно была проделана большая работа по поддержке нескольких платформ. В настоящее время есть альфа-поддержка для целей Windows. Пожалуйста, обратитесь к последней [documentation] для получения подробной информации об использовании pwncat с целевой системой Windows.
pwncat перехватывает сырую коммуникацию с удаленной оболочкой и позволяет пользователю выполнять автоматизированные действия на удаленном хосте, включая перечисление, установку имплантов и даже повышение привилегий.
После получения соединения pwncat настроит некоторые общие параметры для работы с удаленными оболочками.
which)pwncat умеет создавать pty несколькими различными способами и будет перекрестно сверять эти способы с ранее перечисленными исполняемыми файлами. После создания pty он настроит управляющий терминал в сыром режиме, чтобы вы могли взаимодействовать подобно ssh.
pwncat также синхронизирует настройки удаленного pty (такие как строки, столбцы, переменная окружения TERM) с вашими локальными настройками, чтобы оболочка вела себя корректно с интерактивными приложениями, такими как vim или nano.
Джон Хаммонд и я представили pwncat на GRIMMCon. Наша презентация, которую можно найти на YouTube here. Это видео демонстрирует раннюю версию API и интерфейса. Пожалуйста, обратитесь к документации для получения актуальной информации по использованию и API!
pwncat [documentation] разрабатывается на Read the Docs. Загляните туда за последней документацией по использованию и разработке!
pwncat требует Python 3.9+ на Linux
pwncat зависит только от работающего окружения разработки Python на Linux. Для установки некоторых пакетов, требуемых pip, вам, вероятно, понадобится пакет "Python Development" вашего дистрибутива. В системах на базе Debian это python-dev. Для Arch файлы для разработки поставляются вместе с основным репозиторием Python. Для Enterprise Linux пакет называется python-devel.
pwncat публикуется на PyPI под именем pwncat-cs и может быть установлен с помощью pip так:
pip install pwncat-cs
Однако рекомендуется устанавливать pwncat из виртуального окружения.
python3 -m venv pwncat-env
source pwncat-env/bin/activate
pip install pwncat-cs
Для среды разработки pwncat использует Python Poetry. Вы можете клонировать репозиторий локально и использовать poetry для настройки окружения разработчика.
# Настройка pwncat внутри виртуального окружения, управляемого poetry
git clone [email protected]:calebstewart/pwncat.git
cd pwncat
poetry install
# Вход в виртуальное окружение
poetry shell
Из-за конфликта имен с Cytopia's pwncat, я решил переименовать пакет в pwncat-cs. Это включает переименование точки входа, чтобы не было прямых конфликтов с проектом Cytopia. Если вы обновляетесь с версии v0.4.*, имя команды теперь изменится, а варианты pcat и pc были удалены. Подробнее см. последние примечания к релизу.
Дополнительным преимуществом этого шага является то, что теперь проект публикуется на PyPI, что упрощает установку/обновление в будущем.
pwncat теперь поддерживает соединения с целей Windows, начиная с v0.4.0a1. Платформа Windows использует .Net-библиотеку C2, которая загружается автоматически. Цели Windows должны подключаться с оболочкой cmd.exe или powershell.exe, а pwncat позаботится об остальном.
Библиотеки, реализующие C2, находятся в [pwncat-windows-c2]. DLL для C2 будут автоматически загружены из соответствующего релиза для вас. Если у вашей целевой машины нет подключения к интернету, вы можете указать pwncat предварительно загрузить DLL с помощью аргумента --download-plugins. Если вы используете релизную версию pwncat, вы также можете загрузить tarball всех встроенных плагинов со страницы релизов.
Плагины по умолчанию хранятся в ~/.local/share/pwncat, однако это настраивается с помощью параметра plugin_path. Если вы загрузили набор плагинов со страницы релизов, извлеките его в путь, указанный в plugin_path.
Помимо основных DLL C2, могут быть доступны и другие плагины. В настоящее время единственными предоставляемыми плагинами по умолчанию являются C2 и реализация [BadPotato]. pwncat может рефлексивно загружать .Net-бинарные файлы для использования в качестве плагинов для C2. Для получения дополнительной информации о плагинах Windows C2, пожалуйста, обратитесь к [documentation].
Недавно архитектура фреймворка pwncat была переработана для включения общей "модульной" структуры. Теперь все функциональные возможности реализованы в виде модулей. Это включает перечисление, сохранение состояния и повышение привилегий. Взаимодействие с модулями аналогично большинству других платформ пост-эксплуатации. Вы можете использовать знакомые команды run, search и info и входить в контексты модулей с помощью команды use. Обратитесь к документации для получения дополнительной информации.
Установка на BlackArch проста:
pacman -Syu pwncat-caleb
Параметры командной строки pwncat стараются быть гибкими и принимать различные распространенные синтаксисы подключения. В частности, он будет пытаться принимать синтаксис, похожий на netcat и ssh. Ниже приведены все допустимые варианты:
# Подключение к bind shell
pwncat-cs connect://10.10.10.10:4444
pwncat-cs 10.10.10.10:4444
pwncat-cs 10.10.10.10 4444
# Прослушивание reverse shell
pwncat-cs bind://0.0.0.0:4444
pwncat-cs 0.0.0.0:4444
pwncat-cs :4444
pwncat-cs -lp 4444
# Подключение через ssh
pwncat-cs ssh://user:[email protected]
pwncat-cs [email protected]
pwncat-cs user:[email protected]
pwncat-cs -i id_rsa [email protected]
# SSH с нестандартным портом
pwncat-cs -p 2222 [email protected]
pwncat-cs [email protected]:2222
# Повторное подключение с использованием установленного постоянного доступа
# Если повторное подключение не удается и протокол не указан,
# в качестве запасного варианта используется SSH.
pwncat-cs reconnect://[email protected]
pwncat-cs reconnect://user@c228fc49e515628a0c13bdc4759a12bf
pwncat-cs [email protected]
pwncat-cs c228fc49e515628a0c13bdc4759a12bf
pwncat-cs 10.10.10.10
По умолчанию pwncat предполагает, что целевая платформа — Linux. Чтобы подключиться к реверсу или bind shell на Windows, вы должны передать аргумент --platform/-m:
pwncat-cs -m windows 10.10.10.10 4444
pwncat-cs -m windows -lp 4444
Для получения дополнительной информации о синтаксисе и обработке аргументов смотрите справку с помощью pwncat-cs --help или посетите [documentation].
Рекомендуемый метод установки — виртуальное окружение Python. Это обеспечивает наиболее удобное повседневное использование pwncat. Однако был интерес к использованию pwncat из Docker-образа, поэтому я предоставил Dockerfile, который создает рабочую установку pwncat. Чтобы собрать образ, используйте:
docker build -t pwncat .
Это создаст образ Docker pwncat с тегом "pwncat". Рабочий каталог внутри контейнера — /work. Точкой входа для контейнера является бинарный файл pwncat. Его можно использовать так: