Как установить Pupy
Pupy — это инструмент с открытым исходным кодом для кроссплатформенного удалённого администрирования (в качестве «клиентов» поддерживаются Windows, Linux, OSX, Android) и последующей эксплуатации (post-exploitation). Написан в основном на Python.
Говоря проще, эта программа, которая может создавать бэкдоры для разных систем, выполнять действия для закрепления на удалённых системах, выполнять эксплойты для сбора данных, повышения привилегий скачивания и закачивания файлов, захвата экрана, захвата нажатий клавиш и т. д. При этом Pupy, как и другие аналогичные инструменты, также прекрасно подходит для легитимного удалённого администрирования систем.
Потенциальные сферы использования Pupy:
- Исследования безопасности
- Образование
- Тестирование на проникновение
- Системной администрирование
- Сфокусированные на приватности проекты на python, требующие минимального взаимодействия с постоянным хранилищем (чтобы не оставлять следов на жёстком диске)
- И другое…
Более подробную информацию о Pupy вы найдёте на справочной страницы программы: https://kali.tools/?p=4611
Это одна из нескольких статей о Pupy в которой пошагово рассказывается об установке. В следующих статьях будут рассмотрены принципы работы программы, основные понятия, практические примеры использования.
Интересующимся данной темой также рекомендуется материал «Скрытое управление компьютером на Windows (используя Metasploit)» посвящённый аналогичным инструментам в Metasploit.
Как установить Pupy в Kali Linux
Автор программы предлагает два варианта установки: непосредственно в систему и с использованием Docker.
У данной программы есть баг (о нём будет чуть ниже) из-за несовместимости с последней версией одного из модулей Python. Этот баг приводит к тому, что Pupy, фактически, не работает в режиме прослушивания (не может принимать подключения). При использовании Docker, ошибки не выводятся на экран и трудно понять, в чём проблема. Но намного хуже то, что непонятно, как в этом контейнере исправить проблему с библиотекой.
Поэтому далее я рассмотрю два варианта установки — прямо в систему и с помощью Docker, — но использовать рекомендую вариант установки непосредственно в систему.
Установка Pupy в Kali Linux без Docker
Выполните следующие команды:
sudo apt install git libssl1.0-dev libffi-dev python-dev python-pip build-essential swig tcpdump python-virtualenv git clone --recursive https://github.com/n1nj4sec/pupy cd pupy python create-workspace.py -DG pupyw
Накатите фикс для исправления ошибки:
sudo pip2 install rpyc==3.4.4
Для запуска:
export PATH=$PATH:~/.local/bin; pupysh pupyws/bin/pupysh
Установка Pupy в Kali Linux с использованием Docker
Для установки и запуска в Docker выполните команды:
git clone https://github.com/alxchk/pupy cd pupy
Откройте файл install.sh и замените там строку:
if [ "$EUID" == 0 ]
на
if [ "$EUID" == 100500 ]
Затем выполните команды:
./install.sh sudo pip uninstall backports.ssl-match-hostname sudo apt-get install python-backports.ssl-match-hostname
Для запуска программы:
./start-compose.sh
Установка в BlackArch
Установка в BlackArch выполняется следующим образом:
sudo pacman -S pupy
Для исправления бага нужно удалить новую версию одного из пакетов Python, при том так, чтобы система не удалила сам Pupy, для которого этот файл является обязательной зависимостью:
sudo pacman -Rdd python2-rpyc
И установить версию, не вызывающую проблем:
sudo pip2 install rpyc==3.4.4
Правда, сгенерированные в BlackArch файлы у меня отказываются подключаться к контролирующему компьютеру…
Решение проблемы с ошибкой «Cannot read wireshark manuf database»
При запуске Pupy посмотрите присутствует ли там строка:
Cannot read wireshark manuf database
Если присутствует, то значит имеет место серьёзная ошибка. Подробности об этом баге здесь: https://github.com/n1nj4sec/pupy/issues/622
Суть проблемы в том, что когда компьютер «Жертвы» пытается подключиться к компьютеру «Атакующего», то появляется следующая ошибка:
Exception AttributeError: AttributeError("'PupyConnection' object has no attribute '_closed'",) in <object repr() failed> ignored Exception in thread Authentication Thread (192.168.1.117:49824): Traceback (most recent call last): File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner self.run() File "/usr/lib/python2.7/threading.py", line 754, in run self.__target(*self.__args, **self.__kwargs) File "/usr/share/pupy/network/lib/servers.py", line 135, in _setup_connection config=config File "/usr/share/pupy/network/lib/connection.py", line 269, in __init__ Connection.__init__(self, *args, **kwargs) TypeError: __init__() got an unexpected keyword argument '_lazy' Exception AttributeError: AttributeError("'PupyConnection' object has no attribute '_closed'",) in <object repr() failed> ignored
То есть режим прослушивания для обратного шелла в Pupy фактически не работает.
Проблема решается понижением версии пакета rpyc до 3.4.4:
sudo pip2 install rpyc==3.4.4
Продолжение смотрите в статье «Инструкция по Pupy: как создать бэкдор».
Связанные статьи:
- Инструкция по Pupy: как создать бэкдор (97.7%)
- Как удалённо управлять компьютерами через бэкдор (97.7%)
- Скрытое управление компьютером на Windows (используя Metasploit) (76.5%)
- Как пользоваться netcat (nc), ncat (43.3%)
- Инструкция по использованию Weevely: инструмента веб-мастера и пентестера (42.1%)
- Как пользоваться Kali Linux в WSL (подсистеме Windows для Linux): подборка лучших программ (ч. 2) (RANDOM - 0.6%)
Подскажите пожалуйста, команда python create-workspace.py -DG pupyw
выдает:
usage: create-workspace.py [-h] [-G PUPY_GIT_FOLDER]
[-NC | -C COMPILE_TEMPLATES]
[-E {virtualenv,docker,podman}] [-N NETWORK] [-P]
[-S] [-R IMAGES_REPO] [-T IMAGE_TAG] [-B BIN_PATH]
workdir
create-workspace.py: error: unrecognized arguments: -DG
Как это исправить?
Приветствую, эта программа написана на Python 2, а он скоро вовсе будет удалён из Kali Linux. Поэтому там бесполезно пытаться заставить работать эту программу.
Есть ветка с поддержкой Python 3: https://github.com/n1nj4sec/pupy/tree/futurize
Здесь автор говорит, что работает только функция по созданию полезной нагрузки на чистом Python. Но смысла в этом нет, так как эта полезная нагрузка требует полноценной установленной среды Python.
В общем, я бы поискал альтернативу — учитывая сколько времени прошло с окончания поддержки Python 2 и скорости разработки новой версии, полноценная поддержка Python 3 в pupy будет добавлена примерно никогда.