
Pupy
Pupy — это открытый, кроссплатформенный (Windows, Linux, OSX, Android), многофункциональный RAT (Remote Administration Tool — средство удалённого администрирования) и инструмент пост-эксплуатации, написанный в основном на python. Он отличается выполнением всего кода из памяти и оставляет очень малый след. Pupy может обмениваться данными через различные транспорты, внедряться в процессы (рефлексивная инъекция), загружать удалённый python-код, python-пакеты и C-расширения python из памяти.
Модули Pupy могут прозрачно обращаться к удалённым объектам python через rpyc для выполнения различных интерактивных задач.
Pupy может генерировать полезные нагрузки в различных форматах: PE-исполняемые файлы, reflective DLL, чистые python-файлы, powershell, apk, ...
При упаковке полезной нагрузки вы можете выбрать лаунчер (connect, bind, ...), транспорт (ssl, http, rsa, obfs3, scramblesuit, ...) и несколько «scriptlets». Скриптлеты — это python-скрипты, предназначенные для встраивания и выполнения различных задач в офлайн-режиме (без необходимости в сессии), например запуск фонового скрипта, добавление персистентности, запуск кейлоггера, обнаружение песочницы, ...
Установка
git clone https://github.com/n1nj4sec/pupy.git pupy
cd pupy
git submodule init
git submodule update
pip install -r pupy/requirements.txt
или Обратитесь к вики
Возможности
- Мультиплатформенность (проверено на windows xp, 7, 8, 10, kali linux, ubuntu, osx, android)
- В Windows полезная нагрузка Pupy может быть скомпилирована как reflective DLL, и весь интерпретатор python загружается из памяти. Pupy не касается диска :)
- pupy также может быть упакован в один .py файл и запущен без каких-либо зависимостей, кроме стандартной библиотеки python, на всех ОС
- pycrypto заменяется чистыми реализациями aes и rsa на python, когда они недоступны
- Pupy может рефлексивно мигрировать в другие процессы
- Pupy может удалённо импортировать из памяти чистые python-пакеты (.py, .pyc) и скомпилированные C-расширения python (.pyd, .so). Импортированные python-модули не касаются диска.
- Pupy легко расширяется, модули довольно просты в написании и отсортированы по ОС и категориям.
- Уже реализовано множество отличных модулей!
- Pupy использует rpyc, и модуль может напрямую обращаться к объектам python на удалённом клиенте
- Мы также можем интерактивно обращаться к удалённым объектам из оболочки pupy, и вы даже получаете автодополнение удалённых атрибутов!
- Транспорты связи модульны, комбинируемы и потрясающие. Вы можете экфильтровать данные, используя HTTP поверх HTTP поверх AES поверх XOR. Или любую комбинацию доступных транспортов!
- Pupy может обмениваться данными через obfsproxy подключаемые транспорты
- Все неинтерактивные модули могут быть отправлены на несколько хостов одной командой
- Команды и скрипты, выполняемые на удалённых хостах, можно прерывать
- Автодополнение для команд и аргументов
- Можно задать пользовательскую конфигурацию: псевдонимы команд, модули, автоматически запускаемые при подключении, ...
- Можно открывать интерактивные python-оболочки с автодополнением в полностью загружаемом в память удалённом python-интерпретаторе
- Интерактивные оболочки (cmd.exe, /bin/bash, ...) можно открывать удалённо. Удалённые оболочки на клиентах Unix и Windows имеют настоящий tty, и все клавиатурные сигналы работают отлично, как в ssh-оболочке
- Pupy может выполнять PE-exe удалённо и из памяти (см., напр., с mimikatz)
- Pupy может генерировать полезные нагрузки в различных форматах : apk,lin_x86,lin_x64,so_x86,so_x64,exe_x86,exe_x64,dll_x86,dll_x64,py,pyinst,py_oneliner,ps1,ps1_oneliner,rubber_ducky
- Pupy может быть развёрнут в памяти одной командной строкой с помощью однострочников python или powershell от pupygen.py
- «scriptlets» могут быть встроены в генерируемые полезные нагрузки для выполнения некоторых задач «офлайн» без необходимости сетевого подключения (например: запустить кейлоггер, добавить персистентность, выполнить пользовательский python-скрипт, check_vm ...)
Реализованные транспорты
Все транспорты в pupy можно комбинировать (stackable). Это означает, что, создав пользовательскую конфигурацию транспорта (pupy/network/transport/<transport_name>/conf.py), вы можете сделать сессию pupy похожей на что угодно. Например, можно выстроить стек HTTP поверх HTTP поверх base64 поверх HTTP поверх AES поверх obfs3 :o)
- rsa
- Слой с аутентификацией и шифрованием на основе RSA и AES256, часто комбинируется с другими слоями
- aes
- слой, использующий статический ключ AES256
- ssl (по умолчанию)
- TCP-транспорт, обёрнутый в SSL
- ssl_rsa
- то же, что ssl, но со слоем rsa
- http
- слой, делающий трафик похожим на HTTP-трафик. HTTP комбинируется со слоем rsa
- obfs3
- scramblesuit
- udp
- слой rsa, но поверх UDP (может содержать ошибки, пока не обрабатывает потерю пакетов)
- other
- Остальные слои не представляют особого интереса и приведены в качестве примеров кода: (dummy, base64, XOR, ...)
Реализованные лаунчеры (не актуально, см. ./pupygen.py -h)
Лаунчеры позволяют pupy выполнять пользовательские действия до установки обратного соединения
- connect
- Просто подключается обратно
- bind
- Привязывает полезную нагрузку вместо обратного соединения
- auto_proxy
- Получает список возможных SOCKS/HTTP-прокси и пробует каждый из них. Методы получения прокси: реестр, WPAD-запросы, настройки gnome, переменная окружения HTTP_PROXY
Реализованные модули (не актуально)
Все платформы:
- выполнение команд
- скачивание
- загрузка
- интерактивная python-оболочка с автодополнением
- интерактивная оболочка (cmd.exe, powershell.exe, /bin/sh, /bin/bash, ...)
- выделение tty хорошо поддерживается как в Windows, так и в *nix. Выглядит как ssh-оболочка
- выполнение shellcode
- персистентность
- SOCKS5-прокси
- локальный и удалённый проброс портов
- снимок экрана
- кейлоггер
- запуск отличного инструмента для сбора учётных данных LaZagne из памяти!
- инструменты сниффинга, netcreds
- миграция процессов (windows и linux, osx пока нет)
- ...
- множество других инструментов (upnp-клиент, различные инструменты разведки/перемещения (pivot) с удалённым использованием impacket, ...)
Специфично для Windows:
- миграция
- межпроцессная инъекция с изменением архитектуры также работает (x86->x64 и x64->x86)
- выполнение PE-exe из памяти как для x86, так и для x64!
- снимок с веб-камеры
- запись с микрофона
- mouselogger:
- делает небольшие снимки экрана вокруг курсора при каждом клике и отправляет их на сервер
- манипуляция токенами
- getsystem
- creddump
- множество полезных powershell-скриптов
- ...
Специфично для Android
- синтез речи (Text to Speech) для Android, чтобы произносить текст вслух
- снимки с веб-камеры (передняя и задняя камеры)
- GPS-трекер!
Документация
Обратитесь к вики
Некоторые скриншоты (не актуально)
Раздел со скриншотами в вики
FAQ
Работает ли сервер на Windows?
Сервер Pupy лучше всего работает на Linux. На Windows сервер толком не тестировался, и там наверняка много багов. Я стараюсь писать переносимый код, но не всегда нахожу время всё исправить. Если у вас хватит смелости пропатчить непереносимый код, я с радостью приму pull request! :)
Я не могу установить его, как это работает?
Посмотрите раздел «Установка» в вики.
При запуске pupy.sh у меня возникает следующая ошибка: ImportError: No module named creddump.win32.domcachedump
Следуйте шагам установки в вики: вы пропустили инициализацию/обновление git-подмодулей.
При использовании pupygen : IOError: [Errno 2] No such file or directory: '/full-path/pupy-master/pupy/payload_templates/pupyx86.exe'
Следуйте шагам установки в вики: вы пропустили инициализацию/обновление git-подмодулей.
У меня возникла другая ошибка при установке
Следуйте шагам установки в вики (да, я знаю).
Эй, я люблю pupy и хотел бы угостить тебя пивом!
Конечно! Спасибо!
Через pledgie :
Через BTC: 12BKKN81RodiG9vxJn34Me9ky19ArqNQxC
Эй, можно добавить DDOS-модуль, плз?
Нет.
Контакты
по электронной почте: [email protected]
в Twitter: Подпишитесь на меня в Twitter
Если кто-то из вас хочет участвовать в разработке pupy, не стесняйтесь! Любая помощь очень ценится, и я рассмотрю каждый pull request.
Этот проект — личное развитие, пожалуйста, уважайте его философию и не используйте его в злых целях!
Особая благодарность
Особая благодарность всем контрибьюторам, которые помогают мне улучшать pupy и делать его ещё более лучшим инструментом! :)