Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
pwncat — Постэксплуатационная платформа, автоматизирующая разведку, повышение привилегий, закрепление и операции C2 через reverse/bind shells с кроссплатформенной поддержкой Linux и Windows. | Kitploit
Инструменты/GitHubGitHub/calebstewart/pwncat
Повышение привилегийМеханизмы персистентностиПост-эксплуатацияТестирование на ПроникновениеКомандование и УправлениеRed Teaming
GitHubcalebstewart/pwncat

pwncat

Постэксплуатационная платформа, автоматизирующая разведку, повышение привилегий, закрепление и операции C2 через reverse/bind shells с кроссплатформенной поддержкой Linux и Windows.

Репозиторий
2.9k2924 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Сайт

pwncat

asciicast

pwncat — это платформа для пост-эксплуатации для целей Linux. Изначально это была оболочка для простых bind и reverse shell, и с тех пор она развилась. Она упрощает типичные операции red team, подготавливая код с вашей атакующей машины, а не с целевой.

Ранее pwncat поддерживал только Linux, но недавно была проделана большая работа по поддержке нескольких платформ. В настоящее время есть альфа-поддержка для целей Windows. Пожалуйста, обратитесь к последней documentation для получения подробной информации об использовании pwncat с целевой системой Windows.

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

После получения соединения pwncat настроит некоторые общие параметры для работы с удаленными оболочками.

  • Отключить историю в удаленной оболочке
  • Нормализовать приглашение оболочки
  • Найти полезные бинарные файлы (используя which)
  • Попытаться создать псевдотерминал (pty) для полноценной интерактивной сессии

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 так:

root@kitploit:~
pip install pwncat-cs

Однако рекомендуется устанавливать pwncat из виртуального окружения.

root@kitploit:~
python3 -m venv pwncat-env
source pwncat-env/bin/activate
pip install pwncat-cs

Для среды разработки pwncat использует Python Poetry. Вы можете клонировать репозиторий локально и использовать poetry для настройки окружения разработчика.

root@kitploit:~
# Настройка 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, что упрощает установку/обновление в будущем.

Поддержка Windows

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

Packaging status

Установка на BlackArch проста:

root@kitploit:~
pacman -Syu pwncat-caleb

Подключение к жертве

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

root@kitploit:~
# Подключение к 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:

root@kitploit:~
pwncat-cs -m windows 10.10.10.10 4444
pwncat-cs -m windows -lp 4444

Для получения дополнительной информации о синтаксисе и обработке аргументов смотрите справку с помощью pwncat-cs --help или посетите documentation.

Docker образ

Рекомендуемый метод установки — виртуальное окружение Python. Это обеспечивает наиболее удобное повседневное использование pwncat. Однако был интерес к использованию pwncat из Docker-образа, поэтому я предоставил Dockerfile, который создает рабочую установку pwncat. Чтобы собрать образ, используйте:

root@kitploit:~
docker build -t pwncat .

Это создаст образ Docker pwncat с тегом "pwncat". Рабочий каталог внутри контейнера — /work. Точкой входа для контейнера является бинарный файл pwncat. Его можно использовать так:

root@kitploit:~
# Подключение к bind shell на 10.0.0.1:4444
docker run -v "/some/directory":/work -t pwncat 10.0.0.1 4444

В этом примере контейнеру доступны только файлы из /some/directory. Очевидно, для загрузки/выгрузки контейнер сможет видеть только файлы, доступные через смонтированные каталоги.

Возможности и функциональность

pwncat предоставляет две основные функции. По своей сути его цель — автоматически настроить удаленный псевдотерминал (pty), который позволяет взаимодействовать с удаленным хостом почти как с полноценной SSH-сессией. При работе в pty вы можете использовать обычные возможности вашей удаленной оболочки, такие как история, редактирование строки и графические терминальные приложения.

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

  • Загрузка и выгрузка файлов
  • Автоматизированное перечисление привилегий
  • Автоматизированное выполнение повышения привилегий
  • Автоматизированная установка/удаление постоянного доступа
  • Автоматизированное отслеживание измененных/созданных файлов
    • pwncat также предлагает возможность автоматически откатывать эти удаленные "изменения"

Базовый фреймворк для взаимодействия с удаленным хостом стремится максимально абстрагироваться от лежащей в основе оболочки и метода подключения, позволяя командам и плагинам беспрепятственно взаимодействовать с удаленным хостом.

Вы можете узнать больше о взаимодействии с pwncat и о базовом фреймворке в documentation. Если у вас есть идея нового метода повышения привилегий или метода сохранения состояния, пожалуйста, ознакомьтесь с документацией API. Pull request'ы приветствуются!

Запланированные возможности

pwncat стремится стать швейцарским армейским ножом red team. Надеюсь, скоро будет добавлено больше функций.

  • Больше методов повышения привилегий (sudo -u#-1 CVE, контейнеры LXD и т.д.)
  • Методы сохранения состояния (bind shell, cronjobs, доступ по SSH, злоупотребление PAM и т.д.)
  • Агрессивные методы (спам случайностями в терминалы, сброс брандмауэра и т.д.)
  • Мемные методы (terminal-parrot, cowsay, wall и т.д.)
  • Сетевые методы (переадресация портов, доступ в интернет через хост и т.д.)

Известные проблемы

Поскольку pwncat пытается абстрактно взаимодействовать с любой оболочкой с минимальными зависимостями от удаленной системы, мы обнаружили некоторые пограничные случаи. Там, где мы их находим, мы делаем все возможное, чтобы учесть их и скрыть от пользователя. Однако некоторые из них просочились сквозь щели и были замечены в дикой природе. Когда это происходит, pwncat сделает все возможное, чтобы сохранить ваш терминал, но вы можете столкнуться с некоторым необычным выводом или сбоями команд.

Поддержка BSD

Хотя BSD — это ядро, основанное на Unix, на практике его пользовательские инструменты заметно отличаются от аналогов Linux. Из-за этого многие автоматизированные функции pwncat не будут работать или полностью завершатся ошибкой при работе с целью на базе BSD. Я старался перехватывать все ошибки или пограничные случаи, однако, вероятно, есть некоторые неполадки, которые не были полностью протестированы на BSD. В любом случае, стабилизированная оболочка должна функционировать в среде BSD, но я не даю никаких гарантий.

Если позже у меня появится время, я, возможно, попытаюсь стабилизировать pwncat на BSD, но сейчас мое внимание сосредоточено на дистрибутивах на основе Linux. Если вы хотите внести свой вклад в улучшение поведения pwncat на BSD, вы более чем приветствуете связаться со мной или просто форкнуть репозиторий. Как всегда, pull request'ы приветствуются!

Скачать инструмент