
Pupy is an opensource, cross-platform (Windows, Linux, OSX, Android) C2 and post-exploitation framework written in python and C
pip3 install pipx
pipx ensurepath
pipx install git+https://github.com/n1nj4sec/pupy@nextgen
pupysh
Si vous souhaitez des informations plus détaillées Reportez-vous au wiki
git clone https://github.com/n1nj4sec/pupy
cd pupy
git checkout nextgen
git submodule init
git submodule update
pip install venv
python3 -m venv pupyvenv
source pupyvenv/bin/activate
pip install -r requirements.txt
exécutez pupysh à partir de l'installation de développement :
source pupyenv/bin/activate
python3 -m pupy.cli
Pupy est un outil C2 et de post-exploitation multi-fonctions et multiplateforme principalement écrit en Python. Il suit un principe d'exécution entièrement en mémoire et laisse une très faible empreinte. Pupy peut communiquer via de multiples transports, migrer dans des processus par injection réflective, et charger du code Python distant, des paquets Python et des extensions C Python depuis la mémoire.
La charge utile Windows peut charger l'intégralité de l'interpréteur Python depuis la mémoire à l'aide d'une DLL réflective.
Peut être empaqueté en un seul fichier .py et exécuté sans aucune dépendance autre que la bibliothèque standard Python sur tous les systèmes d'exploitation.
Migrer par réflexion dans d'autres processus.
Importer à distance des paquets Python purs (.py, .pyc) et des extensions C Python compilées (.pyd, .so) depuis la mémoire.
Facilement extensible, les modules sont simples à écrire et sont triés par système d'exploitation et catégorie.
Les modules peuvent accéder directement aux objets Python sur le client distant en utilisant rpyc.
Accéder de manière interactive aux objets distants depuis le shell pupy et bénéficier de l'auto-complétion des attributs distants.
Les transports de communication sont modulaires et empilables. Exfiltrer des données en utilisant HTTP sur HTTP sur AES sur XOR, ou toute combinaison des transports disponibles.
Communiquer en utilisant les transports enfichables d'obfsproxy.
Exécuter des commandes non interactives sur plusieurs hôtes à la fois.
Les commandes et scripts exécutés sur les hôtes distants sont interruptibles.
Auto-complétion pour les commandes et les arguments.
Une configuration personnalisée peut être définie : alias de commandes, modules à exécuter automatiquement à la connexion, etc.
Ouvrir des shells Python interactifs avec auto-complétion sur l'interpréteur Python distant entièrement en mémoire.
Des shells interactifs (cmd.exe, /bin/bash, etc.) peuvent être ouverts à distance.
Exécuter un exécutable PE à distance et depuis la mémoire.
Générer des charges utiles dans divers formats :
Déployer en mémoire à partir d'une seule ligne de commande en utilisant des one-liners Python ou PowerShell.
Intégrer des "scriptlets" dans les charges utiles générées pour effectuer certaines tâches "hors ligne" sans nécessiter de connectivité réseau (ex : démarrer un keylogger, ajouter une persistance, exécuter un script Python personnalisé, check_vm, etc.)
Plusieurs plateformes cibles :
Toute la documentation se trouve sur le wiki.
Le serveur fonctionne-t-il sous Windows ?
Pupy n'a pas été testé sous Windows. Théoriquement, il devrait fonctionner sur toute plateforme prenant en charge Docker et Docker Compose. Cependant, vous devrez adapter les instructions d'installation de Docker Compose pour la plateforme Windows.
Je n'arrive pas à installer Pupy. L'installation échoue.
Si vous ne suivez pas ces étapes, votre issue sera fermée.
Les charges utiles et modules Android et/ou Mac OSX ne fonctionnent pas.
Pupy offre un support limité pour Android et OSX. Ces plateformes peuvent ne pas être bien maintenues et peuvent se casser par intermittence. Certains modules (par exemple, le keylogger) peuvent manquer pour ces plateformes.
Si certains d'entre vous souhaitent participer au développement de pupy, n'hésitez pas ! Toute aide est grandement appréciée et toutes les pull requests seront examinées.
Il existe également une petite note sur le développement. Veuillez exécuter flake8 avant de faire des commits. Le fichier de configuration est ici.
| Plateforme | Coordonnées |
|---|---|
| [email protected] | |
| https://twitter.com/n1nj4sec |
Ce projet est un développement personnel, veuillez respecter sa philosophie et ne pas l'utiliser à des fins malveillantes !
Un grand merci à tous les contributeurs et supporters qui aident à améliorer pupy et à en faire un meilleur outil ! :)
| Format | Architecture | Nom court |
|---|
| ~~ Paquet Android ~~ | x86 & ARMv7 | apk |
| Binaire Linux | x86 | lin_x86 |
| Binaire Linux | x64 | lin_x64 |
| Objet partagé Linux | x86 | so_x86 |
| Objet partagé Linux | x64 | so_x64 |
| Exécutable Windows PE | x86 | exe_x86 |
| Exécutable Windows PE | x64 | exe_x64 |
| DLL Windows | x86 | dll_x86 |
| DLL Windows | x64 | dll_x64 |
| Script Python | x86 & x64 | py |
| One-liner Python | x86 & x64 | py_oneliner |
| PowerShell | x86 & x64 | ps1 |
| One-liner PowerShell | x86 & x64 | ps1_oneliner |
| Plateforme | Statut de support |
|---|
| Windows XP | ~~ Supporté ~~ fin du support Python |
| Windows 7 | ~~ Supporté ~~ fin du support Python |
| Windows 8 | Supporté |
| Windows 10 | Supporté |
| Linux | Supporté |
| Mac OSX | Support limité |
| Android | Support limité |