Как установить Pupy
Life-Hack [Жизнь-Взлом]/ХакингPupy — это инструмент с открытым исходным кодом для кроссплатформенного удалённого администрирования (в качестве «клиентов» поддерживаются Windows, Linux, OSX, Android) и последующей эксплуатации (post-exploitation). Написан в основном на Python.
Говоря проще, эта программа, которая может создавать бэкдоры для разных систем, выполнять действия для закрепления на удалённых системах, выполнять эксплойты для сбора данных, повышения привилегий скачивания и закачивания файлов, захвата экрана, захвата нажатий клавиш и т. д. При этом Pupy, как и другие аналогичные инструменты, также прекрасно подходит для легитимного удалённого администрирования систем.
Потенциальные сферы использования Pupy:
- Исследования безопасности
- Образование
- Тестирование на проникновение
- Системной администрирование
- Сфокусированные на приватности проекты на python, требующие минимального взаимодействия с постоянным хранилищем (чтобы не оставлять следов на жёстком диске)
- И другое…
Более подробную информацию о Pupy вы найдёте на справочной странице программы: https://kali.tools/?p=4611
Это одна из нескольких статей о Pupy в которой пошагово рассказывается об установке. В следующих статьях будут рассмотрены принципы работы программы, основные понятия, практические примеры использования.
Как установить 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