PWNCAT-это платформа после эксплуатации для целей Linux Полем Это началось как обертка вокруг основных связей и обратных раковин и вырос оттуда. Он оптимизирует общие операции Red Team во время постановки кода от вашей машины злоумышленника, а не цели.
PWNCAT использовал только для поддержки Linux, но недавно было много работы по поддержке нескольких платформ. В настоящее время существует альфа -поддержка для целей Windows. Пожалуйста, смотрите последнюю документацию для получения подробной информации о том, как использовать PWNCAT с целью Windows.
PWNCAT перехватывает необработанную связь с удаленной оболочкой и позволяет пользователю выполнять автоматические действия на удаленном хосте, включая перечисление, установку имплантата и даже эскалацию привилегий.
После получения соединения PWNCAT настроит некоторые общие конфигурации для работы с удаленными оболочками.
which ) pwncat знает, как породить PTY с несколькими различными методами и будет перекрестно ссылаться на методы с помощью ранее перечисленных исполняемых файлов. После появления PTY он установит управляющий терминал в необработанном режиме, так что вы можете взаимодействовать аналогичным образом с ssh .
pwncat также синхронизирует удаленные настройки PTY (например, строки, столбцы, переменная среды TERM ) с вашими локальными настройками, чтобы гарантировать, что оболочка ведет себя правильно с интерактивными приложениями, такими как vim или nano .
Джон Хаммонд и я представили pwncat в Гримконе. Наша презентация, которую можно найти на YouTube здесь. Это видео демонстрирует раннюю версию API и интерфейса. Пожалуйста, обратитесь к документации для современного использования и документации API!
Документация PWNCAT строится на чтении документов. Отправляйтесь туда, чтобы получить последнюю документацию по использованию и разработке!
Pwncat требует Python 3.9+ на Linux
pwncat зависит только от рабочей среды разработки Python, работающей на Linux. Чтобы установить некоторые пакеты, необходимые для pip , вам, вероятно, понадобится пакет вашего распределения "Development". В системах на основе Debian это python-dev . Для Arch файлы разработки поставляются с основным репозиторием Python. Для Enterprise Linux пакет называется python-devel .
pwncat подталкивается к PYPI под названием pwncat-cs и может быть установлен с помощью pip , как SO:
pip install pwncat-csТем не менее, рекомендуется установить PWNCAT из виртуальной среды.
python3 -m venv pwncat-env
source pwncat-env/bin/activate
pip install pwncat-cs Для среды разработки, pwncat Использование поэзии Python. Вы можете клонировать хранилище локально и использовать поэзию для настройки среды разработки.
# Setup pwncat inside a poetry-managed virtual environment
git clone [email protected]:calebstewart/pwncat.git
cd pwncat
poetry install
# Enter the virtual environment
poetry shell Из-за конфликта именования с PWNCAT Cytopia я решил переименовать пакет в pwncat-cs . Это включает в себя переименование точки входа, чтобы не было прямых конфликтов с проектом Cytopia. Если вы обновляете с v0.4.* , Имя команды теперь изменилось, а pcat и pc Varianst были удалены. Смотрите самые последние заметки о выпуске для более подробной информации.
Дополнительным преимуществом этого шага является то, что проект теперь отправляется в PYPI для более легкой установки/обновления в будущем.
pwncat теперь поддерживает подключения от целей Windows, начиная с v0.4.0a1 . Платформа Windows использует библиотеку C2 на основе .NET, которая загружается автоматически. Целевые показатели 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 см. Документацию.
Недавно архитектура структуры PWNCAT была перепроектирована, чтобы включить общую структуру «модуля». Вся функциональность теперь реализована в виде модулей. Это включает в себя перечисление, настойчивость и эскалацию привилегий. Взаимодействие с модулями аналогично большинству других пост-эксплуатационных платформ. Вы можете использовать знакомые команды run , search и info и ввести контексты модулей с помощью команды use . Обратитесь к документации для получения дополнительной информации.
Установка на Blackarch так же проста, как:
pacman -Syu pwncat-calebПараметры командной строки для PWNCAT пытаются быть гибкими и принять различные общие синтаксисы соединения. В частности, он попытается принять общий Netcat и SSH, подобный синтаксису. Ниже все действительны:
# Connect to a bind shell
pwncat-cs connect://10.10.10.10:4444
pwncat-cs 10.10.10.10:4444
pwncat-cs 10.10.10.10 4444
# Listen for reverse shell
pwncat-cs bind://0.0.0.0:4444
pwncat-cs 0.0.0.0:4444
pwncat-cs :4444
pwncat-cs -lp 4444
# Connect via ssh
pwncat-cs ssh://user:[email protected]
pwncat-cs [email protected]
pwncat-cs user:[email protected]
pwncat-cs -i id_rsa [email protected]
# SSH w/ non-standard port
pwncat-cs -p 2222 [email protected]
pwncat-cs [email protected]:2222
# Reconnect utilizing installed persistence
# If reconnection fails and no protocol is specified,
# SSH is used as a fallback.
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 . Чтобы подключиться к обратной оболочке Windows или привязке, вы должны передать аргумент --platform/-m :
pwncat-cs -m windows 10.10.10.10 4444
pwncat-cs -m windows -lp 4444 Для получения дополнительной информации о обращении с синтаксисом и аргументами см. Информацию о справке с pwncat-cs --help или посетите документацию.
Рекомендуемый метод установки представляет собой виртуальную среду Python. Это обеспечивает самое простое повседневное использование pwncat . Тем не менее, был заинтересован в использовании pwncat с изображения Docker, поэтому я предоставил DockerFile, которая обеспечивает рабочую установку pwncat . Чтобы построить использование изображения:
docker build -t pwncat . Это построит изображение Docker pwncat с тегом «Pwncat». Рабочий каталог в контейнере - /work . Точка входа для контейнера - это двоичный файл pwncat . Это можно использовать так:
# Connect to a bind shell at 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 также предлагает возможность автоматически вернуть эти удаленные "Tampers"Основная структура для взаимодействия с удаленным хостом направлена на то, чтобы как можно больше абстрагировать основополагающий метод оболочки и соединения, позволяя командам и плагинам беспрепятственно взаимодействовать с удаленным хостом.
Вы можете узнать больше о взаимодействии с pwncat и о базовой структуре в документации. Если у вас есть идея для нового метода эскалации привилегий или метода настойчивости, пожалуйста, посмотрите на документацию API конкретно. Приглашаются запросы на вытягивание!
PWNCAT хотел бы приехать красный командный швейцарский армейский нож. Надеюсь, скоро будет добавлено больше функций.
Поскольку pwncat пытается абстрактно взаимодействовать с любой оболочкой с минимальными зависимостями дистанционной системы, мы обнаружили, что есть некоторые краевые случаи. Где мы их находим, мы делаем все возможное, чтобы учесть их и скрывать их от пользователя. Тем не менее, некоторые проскользнули сквозь трещины и наблюдались в дикой природе. Когда это произойдет, pwncat сделает все возможное, чтобы сохранить ваш терминал, но вас можно встретить с некоторыми особыми результатами или неудачами команд.
В то время как BSD является ядром на основе UNIX, на практике его инструменты пользователя заметно отличаются от их аналогов Linux. В связи с этим, многие из автоматизированных функций pwncat не будут работать или отключиться при работе с целью BSD на основе BSD. Я попытался поймать все ошибки или кромки, однако, вероятно, есть некоторые сборы, которые не были полностью проверены против BSD. В любом случае, стабилизированная оболочка должна функционировать в среде BSD, но я не предоставляю никаких гарантий.
Если я найду некоторое время спустя в будущем, я могу попытаться стабилизировать pwncat на BSD, но сейчас мое внимание уделяется распределениям на основе Linux. Если вы хотите внести свой вклад в то, чтобы сделать pwncat веду себя лучше на BSD, вы больше, чем добро пожаловать, чтобы протянуть руку или просто разветвлять репо. Как всегда, запросы на вытягивание приветствуются!