
Pupy
Pupy è un RAT (Remote Administration Tool) open-source, multipiattaforma (Windows, Linux, OSX, Android) e uno strumento di post-sfruttamento scritto principalmente in Python. Presenta una linea guida di esecuzione completamente in memoria e lascia un'impronta molto bassa. Pupy può comunicare utilizzando vari trasporti, migrare in processi (iniezione riflessiva), caricare codice Python remoto, pacchetti Python ed estensioni C Python dalla memoria.
I moduli di Pupy possono accedere in modo trasparente agli oggetti Python remoti usando rpyc per eseguire varie attività interattive.
Pupy può generare payload in vari formati come eseguibili PE, DLL riflessive, file Python puri, PowerShell, APK, ...
Quando pacchettizzi un payload, puoi scegliere un launcher (connect, bind, ...), un trasporto (ssl, http, rsa, obfs3, scramblesuit, ...) e un certo numero di "scriptlet". Gli scriptlet sono script Python pensati per essere incorporati per eseguire varie attività offline (senza necessità di una sessione), come avviare uno script in background, aggiungere persistenza, avviare un keylogger, rilevare una sandbox, ...
Installazione
git clone https://github.com/n1nj4sec/pupy.git pupy
cd pupy
git submodule init
git submodule update
pip install -r pupy/requirements.txt
oppure Consulta il wiki
Caratteristiche
- Multipiattaforma (testato su Windows XP, 7, 8, 10, Kali Linux, Ubuntu, OSX, Android)
- Su Windows, il payload di Pupy può essere compilato come DLL riflessiva e l'intero interprete Python viene caricato dalla memoria. Pupy non tocca il disco :)
- Pupy può essere impacchettato anche in un singolo file .py ed eseguito senza dipendenze diverse dalla libreria standard Python su tutti i sistemi operativi
- pycrypto viene sostituito con implementazioni pure Python di AES e RSA quando non disponibile
- Pupy può migrare riflessivamente in altri processi
- Pupy può importare remotamente, dalla memoria, pacchetti Python puri (.py, .pyc) ed estensioni C Python compilate (.pyd, .so). I moduli Python importati non toccano il disco.
- Pupy è facilmente estensibile, i moduli sono abbastanza semplici da scrivere, ordinati per sistema operativo e categoria.
- Molti moduli fantastici sono già implementati!
- Pupy usa rpyc e un modulo può accedere direttamente agli oggetti Python sul client remoto
- Possiamo anche accedere in modo interattivo agli oggetti remoti dalla shell di Pupy e si ottiene persino l'autocompletamento degli attributi remoti!
- I trasporti di comunicazione sono modulari, impilabili e fantastici. Potresti esfiltrare dati usando HTTP su HTTP su AES su XOR. O qualsiasi combinazione dei trasporti disponibili!
- Pupy può comunicare usando i trasporti pluggable di obfsproxy
- Tutti i moduli non interattivi possono essere inviati a più host con un solo comando
- I comandi e gli script in esecuzione su host remoti sono interrompibili
- Autocompletamento per comandi e argomenti
- È possibile definire una configurazione personalizzata: alias di comandi, moduli eseguiti automaticamente alla connessione, ...
- Si possono aprire shell Python interattive con autocompletamento sull'interprete Python remoto in memoria
- Si possono aprire shell interattive (cmd.exe, /bin/bash, ...) in remoto. Le shell remote su client Unix e Windows hanno un vero tty con tutti i segnali della tastiera funzionanti proprio come una shell SSH
- Pupy può eseguire PE exe in remoto e dalla memoria (cfr. es. con mimikatz)
- Pupy può generare payload in vari formati: 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 può essere distribuito in memoria, da una singola riga di comando utilizzando gli one-liner Python o PowerShell di pupygen.py.
- Gli "scriptlet" possono essere incorporati nei payload generati per eseguire alcune attività "offline" senza necessità di connettività di rete (es. avviare keylogger, aggiungere persistenza, eseguire script Python personalizzato, check_vm ...)
Trasporti Implementati
Tutti i trasporti in Pupy sono impilabili. Ciò significa che creando una configurazione di trasporto personalizzata (pupy/network/transport/<nome_trasporto>/conf.py), puoi far sì che la tua sessione Pupy assomigli a qualsiasi cosa. Ad esempio potresti impilare HTTP su HTTP su base64 su HTTP su AES su obfs3 :o)
- rsa
- Un livello con autenticazione e crittografia usando RSA e AES256, spesso impilato con altri livelli
- aes
- livello che utilizza una chiave AES256 statica
- ssl (quello predefinito)
- Trasporto TCP avvolto con SSL
- ssl_rsa
- come ssl ma impilato con un livello rsa
- http
- livello che fa sì che il traffico assomigli a traffico HTTP. HTTP è impilato con un livello rsa
- obfs3
- scramblesuit
- udp
- livello rsa ma su UDP (potrebbe essere buggato, non gestisce ancora la perdita di pacchetti)
- altri
- Altri livelli non hanno alcun vero interesse e sono forniti come esempi di codice: (dummy, base64, XOR, ...)
Launcher Implementati (non aggiornati, cfr. ./pupygen.py -h)
I launcher permettono a Pupy di eseguire azioni personalizzate prima di avviare la connessione inversa
- connect
- Si connette semplicemente
- bind
- Payload in ascolto invece di inverso
- auto_proxy
- Recupera un elenco di possibili proxy SOCKS/HTTP e tenta ciascuno di essi. I metodi di recupero dei proxy sono: registro, richieste WPAD, impostazioni Gnome, variabile d'ambiente HTTP_PROXY
Moduli Implementati (non aggiornati)
- esecuzione di comandi
- download
- upload
- shell Python interattiva con autocompletamento
- shell interattiva (cmd.exe, powershell.exe, /bin/sh, /bin/bash, ...)
- l'allocazione del tty è ben supportata sia su Windows che su *nix. Sembra proprio una shell SSH
- esecuzione di shellcode
- persistenza
- proxy SOCKS5
- inoltro di porte locale e remoto
- screenshot
- keylogger
- esecuzione dalla memoria del fantastico strumento di raccolta credenziali LaZagne
- strumenti di sniffing, netcreds
- migrazione di processi (Windows e Linux, non ancora OSX)
- ...
- molti altri strumenti (client UPnP, vari strumenti di ricon/pivot che utilizzano impacket in remoto, ...)
Specifici per Windows:
- migrate
- funziona anche l'iniezione tra architetture di processo (x86->x64 e x64->x86)
- esecuzione in memoria di PE exe sia x86 che x64!
- snapshot webcam
- registratore microfono
- mouselogger:
- cattura piccoli screenshot intorno al mouse ad ogni clic e li invia al server
- manipolazione dei token
- getsystem
- creddump
- tonnellate di script PowerShell utili
- ...
Specifici per Android
- Text to speech per Android per pronunciare cose ad alta voce
- snapshot webcam (fotocamera anteriore e posteriore)
- Tracker GPS!
Documentazione
Consulta il wiki
Alcuni screenshot (non aggiornati)
Sezione screenshot sul wiki
FAQ
Il server funziona su Windows?
Il server Pupy funziona meglio su Linux. Il server su Windows non è stato testato seriamente e probabilmente ci sono molti bug. Faccio del mio meglio per scrivere codice portabile ma non sempre trovo il tempo per sistemare tutto. Se hai il coraggio di correggere codice non portabile, accetterò volentieri pull request! :)
Non riesco a installarlo, come funziona?
Dai un'occhiata alla sezione Installazione nel wiki
Ottengo il seguente errore all'avvio di pupy.sh: ImportError: No module named creddump.win32.domcachedump
Segui i passaggi di Installazione nel wiki, hai saltato l'inizializzazione/aggiornamento dei sottomoduli git
Ottengo il seguente errore usando pupygen : IOError: [Errno 2] No such file or directory: '/full-path/pupy-master/pupy/payload_templates/pupyx86.exe'
Segui i passaggi di Installazione nel wiki, hai saltato l'inizializzazione/aggiornamento dei sottomoduli git
Ho un altro errore durante l'installazione
Segui i passaggi di Installazione nel wiki (sì, lo so)
Ehi, adoro Pupy e mi chiedevo se potessi offrirti una birra!
Certo! Grazie!
Via pledgie :
Via BTC: 12BKKN81RodiG9vxJn34Me9ky19ArqNQxC
hey c4n y0u aggiungere un modulo DDOS plzz?
No.
Contatti
via email: [email protected]
su Twitter: Seguimi su Twitter
Se qualcuno di voi vuole partecipare allo sviluppo di Pupy, non esitate! Ogni aiuto è molto apprezzato e revisionerò ogni pull request.
Questo progetto è uno sviluppo personale, per favore rispettatene la filosofia e non usatelo per scopi malvagi!
Ringraziamenti speciali
Un ringraziamento speciale a tutti i collaboratori che mi aiutano a migliorare Pupy e a renderlo uno strumento ancora migliore! :)