# T1547.012 - Print Processors ## Técnica Pai Esta é uma sub-técnica de [[t1547-boot-logon-autostart-execution|T1547 - Execução na Inicialização]]. ## Descrição Adversários podem abusar do mecanismo de **Print Processors** do Windows para executar DLLs maliciosas durante a inicialização do sistema, obtendo tanto persistência quanto escalada de privilégios. Print Processors são DLLs carregadas pelo serviço de spooler de impressão (`spoolsv.exe`) durante o boot - e como o `spoolsv.exe` roda com permissões de `SYSTEM`, qualquer DLL carregada por ele herda esses mesmos privilégios. Um print processor pode ser instalado de duas formas: 1. **Via API `AddPrintProcessor`** - requer que a conta do atacante possua o privilégio `SeLoadDriverPrivilege` 2. **Via chave de registro** - adicionando a entrada diretamente em: `HKLM\SYSTEM\[CurrentControlSet]\Control\Print\Environments\[arquitetura]\Print Processors\[nome]\Driver` Para que a DLL maliciosa sejá corretamente carregada, ela deve estar localizada no diretório dedicado de print processors do sistema - obtido via `GetPrintProcessorDirectory` - ou referênciada por um caminho relativo a partir desse diretório. Após a instalação, o serviço de spooler (`spoolsv.exe`) precisa ser reiniciado para que o print processor sejá executado; isso ocorre automaticamente no próximo boot do sistema. ### Relevância para Brasil e LATAM O grupo [[g1006-earth-lusca|Earth Lusca]] - ameaça persistente avançada de origem chinesa - utilizou os malwares [[gelsemium|Gelsemium]] e [[s0501-pipemon|PipeMon]] em operações de espionagem que empregaram print processors como mecanismo de persistência contra governos e organizações de pesquisa na Ásia e em países em desenvolvimento. A técnica é particularmente insidiosa em ambientes corporativos da região porque servidores de impressão são frequentemente negligenciados em auditorias de segurança - muitos ainda rodam versões legadas do Windows Server sem monitoramento adequado do registro ou do spooler. No Brasil, o [[_sectors|governo]] e o [[_sectors|financeiro]] operam extensas infraestruturas de impressão corporativa, muitas vezes integradas a domínios Active Directory, tornando servidores de impressão alvos de alto valor para movimentação lateral e escalada de privilégios silenciosa. A vulnerabilidade **PrintNightmare** (CVE-2021-1675 / CVE-2021-34527) demonstrou o impacto sistêmico quando o mecanismo de spooler é explorado, e print processors seguem como vetor de persistência complementar mesmo em sistemas patcheados. ## Attack Flow ```mermaid graph TB A["🎯 Acesso Inicial<br/>Comprometimento de conta com privilégio admin<br/>ou SeLoadDriverPrivilege"] --> B["📂 Criação da DLL maliciosa<br/>Depositada no diretório de Print Processors<br/>GetPrintProcessorDirectory API"] B --> C{"Método de Registro"} C -->|API| D["AddPrintProcessor API<br/>Requer SeLoadDriverPrivilege"] C -->|Registro| E["HKLM\\SYSTEM\\CurrentControlSet\\Control<br/>\\Print\\Environments\\Win64\\Print Processors<br/>\\MaliciousName\\Driver = evil.dll"] D --> F["⏸️ Aguardar Reinicialização<br/>ou reiniciar spoolsv.exe manualmente"] E --> F F --> G["🔄 spoolsv.exe carrega DLL<br/>no boot - contexto SYSTEM"] G --> H["🔒 Persistência SYSTEM<br/>Execução privilegiada a cada inicialização"] H --> I["📡 Payload / C2<br/>Backdoor, exfiltração, pivô lateral"] ``` ## Como Funciona **Passo 1 - Preparação e depósito da DLL no diretório correto** O adversário precisa primeiro determinar o diretório de print processors do sistema alvo e depositar a DLL maliciosa nele. O diretório típico em sistemas x64 é `C:\Windows\System32\spool\prtprocs\x64\`. A DLL deve exportar a função `OpenPrintProcessor` para ser aceita como print processor válido pelo spooler - frameworks como o [[s0501-pipemon|PipeMon]] implementam exatamente essa interface, mascarando o payload atrás de uma estrutura de DLL legítima. **Passo 2 - Registro do print processor malicioso** Com a DLL no lugar, o adversário registra o novo processor. O método via registro não requer privilégios tão elevados quanto a API, tornando-o preferível em cenários de pós-comprometimento onde o atacante opera como administrador local mas não possui `SeLoadDriverPrivilege`: ```powershell # Verificar diretório de Print Processors (informação legítima usada pelo adversário) $spoolerPath = (Get-ItemProperty ` "HKLM:\SYSTEM\CurrentControlSet\Control\Print\Environments\Windows x64\Drivers").InfPath # Registro do print processor malicioso via chave de registro $regPath = "HKLM:\SYSTEM\CurrentControlSet\Control\Print\Environments\Windows x64\Print Processors\WinSpool32" New-Item -Path $regPath -Force New-ItemProperty -Path $regPath -Name "Driver" -Value "evil.dll" -PropertyType String -Force # Reiniciar o spooler para ativar sem reboot (requer privilégio) Stop-Service -Name Spooler -Force Start-Service -Name Spooler ``` **Passo 3 - Execução persistente como SYSTEM** A partir da próxima inicialização do serviço `spoolsv.exe` - sejá por reinicialização do sistema ou restart manual do serviço - o print processor malicioso é carregado automaticamente. Por herdar o contexto de `spoolsv.exe` (que roda como `NT AUTHORITY\SYSTEM`), a DLL obtém o nível mais alto de privilégio disponível no Windows sem precisar de nenhuma interação adicional do usuário. O [[gelsemium|Gelsemium]] - implante do [[g1006-earth-lusca|Earth Lusca]] - usa essa técnica para manter persistência de longa duração em redes comprometidas, com C2 camuflado em tráfego de rede legítimo. ## Detecção ```yaml title: Print Processor Malicioso Registrado no Windows id: c7e2d4b1-9a33-4f1c-bc55-8e4a7d6f0b12 status: production description: > Detecta o registro de print processors não padrão nas chaves de registro do Windows Spooler, padrão consistente com T1547.012. Foco em entradas em Print Processors que referenciam DLLs fora do diretório padrão do sistema ou com nomes incomuns. references: - https://attack.mitre.org/techniques/T1547/012/ author: RunkIntel daté: 2026-03-25 tags: - attack.persistence - attack.privilege_escalation - attack.t1547.012 logsource: category: registry_set product: windows detection: selection_print_processor: TargetObject|contains: - '\Control\Print\Environments\' TargetObject|contains: - '\Print Processors\' TargetObject|endswith: '\Driver' filter_known_processors: Details|contains: - 'winprint.dll' - 'localspl.dll' - 'hpbmmon.dll' - 'mxdwdrv.dll' selection_spooler_child: ParentImage|endswith: '\spoolsv.exe' Image|not_endswith: - '\conhost.exe' - '\splwow64.exe' condition: (selection_print_processor and not filter_known_processors) or selection_spooler_child falsepositives: - Instalação legítima de drivers de impressora de terceiros (HP, Canon, Xerox) - Software de gestão de impressão empresarial (PaperCut, PrinterLogic) level: high ``` ## Mitigação | ID | Mitigação | Descrição | |---|-----------|-----------| | M1018 | [[m1018-user-account-management\|M1018 - User Account Management]] | Restringir permissões de escrita nas chaves de registro do Print Spooler a administradores de sistema. Auditar regularmente os print processors registrados e remover entradas desconhecidas. Monitorar o uso do privilégio `SeLoadDriverPrivilege` em contas que não sejam de serviço dedicadas. | > **Nota adicional de mitigação:** Desabilitar o serviço Print Spooler (`spoolsv.exe`) em servidores e estações que não necessitam de funcionalidade de impressão é a mitigação mais eficaz. Esta foi a recomendação emergêncial da Microsoft durante a crise PrintNightmare. Em servidores de impressão legítimos, considerar Windows Defender Credential Guard e monitoramento contínuo do diretório `%SystemRoot%\System32\spool\prtprocs\`. ## Software Associado - [[gelsemium|Gelsemium]] - malware do [[g1006-earth-lusca|Earth Lusca]] com persistência via print processor - [[s0501-pipemon|PipeMon]] - backdoor modular que implementa interface de print processor legítima para camuflagem ## Referências *Fonte: [MITRE ATT&CK - T1547.012](https://attack.mitre.org/techniques/T1547/012)*