
Pupy
Pupy es una herramienta de código abierto, multiplataforma (Windows, Linux, OSX, Android), RAT (Remote Administration Tool) multifunción y de post-explotación escrita principalmente en Python. Presenta una guía de ejecución todo-en-memoria y deja una huella muy baja. Pupy puede comunicarse mediante varios transportes, migrar a procesos (inyección reflectiva), cargar código Python remoto, paquetes Python y extensiones C de Python desde la memoria.
Los módulos de Pupy pueden acceder de forma transparente a objetos Python remotos usando rpyc para realizar diversas tareas interactivas.
Pupy puede generar payloads en múltiples formatos como ejecutables PE, DLL reflectivas, archivos Python puros, powershell, apk, ...
Cuando empaquetas un payload, puedes elegir un launcher (connect, bind, ...), un transporte (ssl, http, rsa, obfs3, scramblesuit, ...) y una serie de "scriptlets". Los scriptlets son scripts de Python pensados para incrustarse y realizar diversas tareas offline (sin requerir una sesión), como iniciar un script en segundo plano, añadir persistencia, iniciar un keylogger, detectar una 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
o Consulta la wiki
Features
- Multiplataforma (probado en windows xp, 7, 8, 10, kali linux, ubuntu, osx, android)
- En windows, el payload de Pupy puede compilarse como una DLL reflectiva y todo el intérprete de Python se carga desde la memoria. Pupy no toca el disco :)
- pupy también puede empaquetarse en un único archivo .py y ejecutarse sin más dependencias que la biblioteca estándar de Python en todos los SO
- pycrypto se reemplaza por implementaciones de aes && rsa en Python puro cuando no está disponible
- Pupy puede migrar reflectivamente a otros procesos
- Pupy puede importar remotamente, desde la memoria, paquetes Python puros (.py, .pyc) y extensiones C de Python compiladas (.pyd, .so). Los módulos Python importados no tocan el disco.
- Pupy es fácilmente extensible, los módulos son bastante simples de escribir, organizados por SO y categoría.
- ¡Ya hay implementados un montón de módulos increíbles!
- Pupy usa rpyc y un módulo puede acceder directamente a los objetos Python del cliente remoto
- También podemos acceder a objetos remotos de forma interactiva desde el shell de pupy e incluso obtienes autocompletado de los atributos remotos.
- Los transportes de comunicación son modulares, apilables e increíbles. Podrías exfiltrar datos usando HTTP sobre HTTP sobre AES sobre XOR. ¡O cualquier combinación de los transportes disponibles!
- Pupy puede comunicarse usando obfsproxy transportes conectables
- Todos los módulos no interactivos pueden enviarse a múltiples hosts con un solo comando
- Los comandos y scripts que se ejecutan en hosts remotos son interruptibles
- Autocompletado para comandos y argumentos
- Se puede definir configuración personalizada: alias de comandos, módulos que se ejecutan automáticamente al conectar, ...
- Se pueden abrir shells interactivas de Python con autocompletado sobre el intérprete remoto de Python todo-en-memoria
- Se pueden abrir shells interactivas (cmd.exe, /bin/bash, ...) de forma remota. Las shells remotas en clientes Unix y Windows tienen una tty real con todas las señales de teclado funcionando igual que una shell ssh
- Pupy puede ejecutar ejecutables PE de forma remota y desde memoria (cf. ej. con mimikatz)
- Pupy puede generar payloads en varios formatos: 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 puede desplegarse en memoria, desde una sola línea de comandos usando los one-liners de python o powershell de pupygen.py.
- Los "scriptlets" pueden incrustarse en los payloads generados para realizar algunas tareas "offline" sin necesidad de conectividad de red (ej: iniciar keylogger, añadir persistencia, ejecutar un script Python personalizado, check_vm ...)
- montones de otras características, echa un vistazo a los módulos implementados
Implemented Transports
Todos los transportes en pupy son apilables. Esto significa que creando una configuración de transporte personalizada (pupy/network/transport/<transport_name>/conf.py), puedes hacer que tu sesión de pupy parezca cualquier cosa. Por ejemplo, podrías apilar HTTP sobre HTTP sobre base64 sobre HTTP sobre AES sobre obfs3 :o)
- rsa
- Una capa con autenticación y cifrado usando RSA y AES256, a menudo apilada con otras capas
- aes
- capa que usa una clave AES256 estática
- ssl (el predeterminado)
- transporte TCP envuelto con SSL
- ssl_rsa
- igual que ssl pero apilado con una capa rsa
- http
- capa que hace que el tráfico parezca tráfico HTTP. HTTP está apilado con una capa rsa
- obfs3
- scramblesuit
- udp
- capa rsa pero sobre UDP (podría tener errores, todavía no maneja la pérdida de paquetes)
- other
- Las otras capas no tienen realmente interés y se proporcionan como ejemplos de código: (dummy, base64, XOR, ...)
Implemented Launchers (not up to date, cf. ./pupygen.py -h)
Los launchers permiten a pupy ejecutar acciones personalizadas antes de iniciar la conexión inversa
- connect
- Simplemente conectar de vuelta
- bind
- Vincular el payload en lugar de la conexión inversa
- auto_proxy
- Obtener una lista de posibles proxies SOCKS/HTTP y probar cada uno de ellos. Los métodos de obtención de proxy son: registro, peticiones WPAD, ajustes de gnome, variable de entorno HTTP_PROXY
Implemented Modules (not up to date)
- ejecución de comandos
- descarga
- subida
- shell interactiva de Python con autocompletado
- shell interactiva (cmd.exe, powershell.exe, /bin/sh, /bin/bash, ...)
- la asignación de tty está bien soportada tanto en windows como en *nix. Simplemente parece una shell ssh
- ejecución de shellcode
- persistencia
- proxy socks5
- redirección de puertos local y remota
- captura de pantalla
- keylogger
- ¡ejecuta desde la memoria la increíble herramienta de recopilación de credenciales LaZagne!
- herramientas de sniffing, netcreds
- migración de procesos (windows y linux, aún no osx)
- ...
- muchas otras herramientas (cliente upnp, varias herramientas de reconocimiento/pivot que usan impacket de forma remota, ...)
Windows specific :
- migrate
- la inyección entre arquitecturas de procesos también funciona (x86->x64 y x64->x86)
- ejecución en memoria de ejecutables PE tanto x86 como x64!
- captura de webcam
- grabadora de micrófono
- mouselogger:
- toma pequeñas capturas de pantalla alrededor del ratón en cada clic y las envía de vuelta al servidor
- manipulación de tokens
- getsystem
- creddump
- montones de scripts útiles de powershell
- ...
Android specific
- Texto a voz para Android para decir cosas en voz alta
- capturas de webcam (cámara frontal y trasera)
- ¡Rastreador GPS!
Documentation
Consulta la wiki
Algunas capturas de pantalla (no actualizadas)
Sección de capturas de pantalla en la wiki
FAQ
¿Funciona el servidor en windows?
El servidor de Pupy funciona mejor en linux. El servidor en windows no ha sido probado realmente y probablemente haya muchos bugs. Hago todo lo posible por codificar de forma portable, pero no siempre encuentro tiempo para arreglarlo todo. ¡Si encuentras el valor para parchear el código no portable, aceptaré encantado los pull requests! :)
No puedo instalarlo, ¿cómo funciona?
Echa un vistazo a la sección de Instalación en la wiki
Tengo el siguiente error al iniciar pupy.sh: ImportError: No module named creddump.win32.domcachedump
Sigue los pasos de Instalación en la wiki, te faltó la inicialización/actualización de los submódulos de git
Tengo el siguiente error al usar pupygen : IOError: [Errno 2] No such file or directory: '/full-path/pupy-master/pupy/payload_templates/pupyx86.exe'
Sigue los pasos de Instalación en la wiki, te faltó la inicialización/actualización de los submódulos de git
Tengo otro error en la instalación
Sigue los pasos de Instalación en la wiki (sí, lo sé)
¡Oye, me encanta pupy y me preguntaba si podría invitarte a una cerveza!
¡Claro! ¡gracias!
Vía pledgie :
Vía BTC: 12BKKN81RodiG9vxJn34Me9ky19ArqNQxC
oye, ¿puedes añadir un módulo DDOS porfa?
No.
por correo: [email protected]
en Twitter: Sígueme en twitter
Si alguno de vosotros quiere participar en el desarrollo de pupy, ¡no lo dudéis! Toda ayuda es muy apreciada y revisaré cada pull request.
Este proyecto es un desarrollo personal, por favor respeta su filosofía y ¡no lo uses con fines maliciosos!
Agradecimientos especiales
Un agradecimiento especial a todos los contribuyentes que me ayudan a mejorar pupy y a convertirlo en una herramienta aún mejor! :)