
Pupy
Pupy ist ein Open-Source, plattformübergreifendes (Windows, Linux, OSX, Android) Multi-Funktions-RAT (Remote Administration Tool) und Post-Exploitation-Tool, hauptsächlich in Python geschrieben. Es zeichnet sich durch eine vollständig im Arbeitsspeicher ablaufende Ausführungsrichtlinie aus und hinterlässt eine sehr geringe Spur. Pupy kann verschiedene Transports nutzen, in Prozesse migrieren (reflektives Injecten), entfernten Python-Code, Python-Pakete und Python-C-Erweiterungen aus dem Arbeitsspeicher laden.
Pupy-Module können mithilfe von rpyc transparent auf entfernte Python-Objekte zugreifen, um verschiedene interaktive Aufgaben auszuführen.
Pupy kann Payloads in mehreren Formaten generieren, wie PE-Executables, reflektive DLLs, reine Python-Dateien, PowerShell, APK usw.
Beim Packen eines Payloads können Sie einen Launcher (verbinden, binden, ...), einen Transport (ssl, http, rsa, obfs3, scramblesuit, ...) und mehrere „Scriptlets“ auswählen. Scriptlets sind Python-Skripte, die eingebettet werden, um verschiedene Aufgaben offline (ohne Session) auszuführen, z. B. Starten eines Hintergrundskripts, Hinzufügen von Persistenz, Starten eines Keyloggers, Erkennen einer Sandbox, ...
Installation
git clone https://github.com/n1nj4sec/pupy.git pupy
cd pupy
git submodule init
git submodule update
pip install -r pupy/requirements.txt
oder Siehe Wiki
Funktionen
- Multi-Plattform (getestet auf Windows XP, 7, 8, 10, Kali Linux, Ubuntu, OSX, Android)
- Unter Windows kann der Pupy-Payload als reflektive DLL kompiliert werden und der gesamte Python-Interpreter wird aus dem Arbeitsspeicher geladen. Pupy berührt niemals die Festplatte :)
- Pupy kann auch in eine einzelne .py-Datei gepackt werden und ohne Abhängigkeiten außer der Python-Standardbibliothek auf allen Betriebssystemen ausgeführt werden
- pycrypto wird durch reine Python-AES- und RSA-Implementierungen ersetzt, wenn nicht verfügbar
- Pupy kann reflektiv in andere Prozesse migrieren
- Pupy kann aus dem Arbeitsspeicher reine Python-Pakete (.py, .pyc) und kompilierte Python-C-Erweiterungen (.pyd, .so) remote importieren. Die importierten Python-Module berühren die Festplatte nicht.
- Pupy ist einfach erweiterbar, Module sind recht einfach zu schreiben, sortiert nach Betriebssystem und Kategorie.
- Viele großartige Module sind bereits implementiert!
- Pupy verwendet rpyc und ein Modul kann direkt auf Python-Objekte auf dem entfernten Client zugreifen
- Wir können auch interaktiv von der Pupy-Shell aus auf entfernte Objekte zugreifen und erhalten sogar automatische Vervollständigung entfernter Attribute!
- Kommunikationstransporte sind modular, stapelbar und fantastisch. Sie könnten Daten mit HTTP über HTTP über AES über XOR exfiltrieren. Oder jede beliebige Kombination der verfügbaren Transporte!
- Pupy kann mit obfsproxy pluggable transports kommunizieren.
- Alle nicht interaktiven Module können mit einem Befehl an mehrere Hosts verteilt werden
- Befehle und Skripte, die auf entfernten Hosts ausgeführt werden, sind unterbrechbar
- Automatische Vervollständigung für Befehle und Argumente
- Benutzerdefinierte Konfiguration kann definiert werden: Befehlsaliase, Module, die automatisch bei Verbindung gestartet werden, ...
- Interaktive Python-Shells mit automatischer Vervollständigung im vollständig im Arbeitsspeicher befindlichen entfernten Python-Interpreter können geöffnet werden
- Interaktive Shells (cmd.exe, /bin/bash, ...) können remote geöffnet werden. Entfernte Shells unter Unix & Windows Clients haben ein echtes TTY mit allen Tastatursignalen, die wie bei einer SSH-Shell funktionieren.
- Pupy kann PE-Exe remote und aus dem Arbeitsspeicher ausführen (siehe z. B. mit mimikatz)
- Pupy kann Payloads in verschiedenen Formaten generieren: 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 kann aus dem Arbeitsspeicher mit einem einzigen Befehlszeilenbefehl (Python- oder PowerShell-One-Liner von pupygen.py) bereitgestellt werden.
Implementierte Transporte
Alle Transporte in Pupy sind stapelbar. Das bedeutet, dass Sie durch Erstellen einer benutzerdefinierten Transportkonfiguration (pupy/network/transport/<transport_name>/conf.py) Ihre Pupy-Sitzung wie alles Mögliche aussehen lassen können. Sie könnten zum Beispiel HTTP über HTTP über base64 über HTTP über AES über obfs3 stapeln :o)
- rsa
- Eine Schicht mit Authentifizierung und Verschlüsselung mittels RSA und AES256, oft mit anderen Schichten gestapelt
- aes
- Schicht mit einem statischen AES256-Schlüssel
- ssl (der Standard)
- TCP-Transport mit SSL ummantelt
- ssl_rsa
- wie ssl, jedoch mit einer rsa-Schicht gestapelt
- http
- Schicht, die den Datenverkehr wie HTTP aussehen lässt. HTTP ist mit einer rsa-Schicht gestapelt
- obfs3
- scramblesuit
- udp
- rsa-Schicht, jedoch über UDP (kann fehlerhaft sein, behandelt noch keine Paketverluste)
- andere
- Andere Schichten haben eigentlich keinen Nutzen und dienen als Codebeispiele: (dummy, base64, XOR, ...)
Implementierte Launcher (nicht aktuell, siehe ./pupygen.py -h)
Launcher ermöglichen es Pupy, benutzerdefinierte Aktionen auszuführen, bevor die Reverse-Verbindung gestartet wird
- connect
- bind
- Payload binden anstatt Reverse
- auto_proxy
- Eine Liste möglicher SOCKS/HTTP-Proxys abrufen und jeden ausprobieren. Methoden zum Abrufen von Proxys sind: Registry, WPAD-Anfragen, Gnome-Einstellungen, HTTP_PROXY-Umgebungsvariable
Implementierte Module (nicht aktuell)
- Befehlsausführung
- herunterladen
- hochladen
- interaktive Python-Shell mit automatischer Vervollständigung
- interaktive Shell (cmd.exe, powershell.exe, /bin/sh, /bin/bash, ...)
- TTY-Zuweisung wird sowohl unter Windows als auch *nix gut unterstützt. Fühlt sich an wie eine SSH-Shell
- Shellcode-Ausführung
- Persistenz
- SOCKS5-Proxy
- lokales und entferntes Port-Forwarding
- Bildschirmfoto
- Keylogger
- Das großartige Tool zur Sammlung von Anmeldeinformationen LaZagne aus dem Arbeitsspeicher ausführen!
- Sniff-Tools, netcreds
- Prozessmigration (Windows und Linux, noch nicht OSX)
- ...
- viele andere Tools (UPnP-Client, verschiedene Recon/Pivot-Tools mit impacket remote, ...)
Windows-spezifisch:
- migrieren
- Architekturübergreifende Prozessinjektion funktioniert ebenfalls (x86->x64 und x64->x86)
- In-Memory-Ausführung von PE-Exe, sowohl x86 als auch x64!
- Webcam-Schnappschuss
- Mikrofon-Rekorder
- Mauslogger:
- macht kleine Screenshots um die Maus bei jedem Klick und sendet sie zurück an den Server
- Token-Manipulation
- getsystem
- creddump
- tonnenweise nützliche PowerShell-Skripte
- ...
Android-spezifisch
- Text-to-Speech für Android, um Dinge laut auszusprechen
- Webcam-Schnappschüsse (Frontkamera und Rückkamera)
- GPS-Tracker!
Dokumentation
Siehe Wiki
Einige Screenshots (nicht aktuell)
Screenshot-Abschnitt im Wiki
FAQ
Funktioniert der Server unter Windows?
Der Pupy-Server funktioniert am besten unter Linux. Der Server unter Windows wurde nicht wirklich getestet und enthält vermutlich viele Fehler. Ich bemühe mich, portablen Code zu schreiben, aber ich finde nicht immer die Zeit, alles zu beheben. Wenn Sie den Mut haben, nicht portablen Code zu patchen, nehme ich Pull-Requests gerne an! :)
Ich kann es nicht installieren, wie funktioniert das?
Schauen Sie sich den Abschnitt Installation im Wiki an.
Ich erhalte den folgenden Fehler beim Starten von pupy.sh: ImportError: No module named creddump.win32.domcachedump
Befolgen Sie die Installationsschritte im Wiki; Sie haben die Initialisierung/Aktualisierung der Git-Submodule verpasst.
Ich erhalte den folgenden Fehler bei Verwendung von pupygen: IOError: [Errno 2] No such file or directory: '/full-path/pupy-master/pupy/payload_templates/pupyx86.exe'
Befolgen Sie die Installationsschritte im Wiki; Sie haben die Initialisierung/Aktualisierung der Git-Submodule verpasst.
Ich habe einen anderen Fehler bei der Installation
Befolgen Sie die Installationsschritte im Wiki (ja, ich weiß)
Hey, ich liebe Pupy und habe mich gefragt, ob ich Ihnen ein Bier ausgeben kann!
Klar, gerne!
Via pledgie :
Via BTC: 12BKKN81RodiG9vxJn34Me9ky19ArqNQxC
Hey, kannst du ein DDOS-Modul hinzufügen, plz?
Nein.
Kontakt
per E-Mail: [email protected]
auf Twitter: Folge mir auf Twitter
Wenn einige von Ihnen an der Entwicklung von Pupy teilnehmen möchten, zögern Sie nicht! Jede Hilfe wird sehr geschätzt und ich werde jeden Pull-Request überprüfen.
Dieses Projekt ist eine persönliche Entwicklung, bitte respektieren Sie seine Philosophie und nutzen Sie es nicht für böse Zwecke!
Besonderer Dank
Besonderer Dank an alle Mitwirkenden, die mir helfen, Pupy zu verbessern und zu einem noch besseren Tool zu machen! :)