Abuso di Verclsid: Verclsid (T1218.012)

Verclsid.exe, noto come Extension CLSID Verification Host, è un binario nativo di Windows il cui compito legittimo è verificare le estensioni della shell prima che vengano caricate da Windows Explorer. Proprio perché firmato Microsoft e presente su ogni installazione, gli avversari lo trasformano in un LOLBin (Living-Off-the-Land Binary) per aggirare le soluzioni di application control che non ne prevedono l'abuso.

La tecnica T1218.012 rientra nella tattica Defense Evasion (TA0005) ed è una variante specifica del System Binary Proxy Execution. L'invocazione tipica avviene tramite la sintassi verclsid.exe /S /C {CLSID}, dove il Class ID punta a un oggetto COM controllato dall'attaccante. Quell'oggetto può caricare scriptlet COM (SCT) ospitati su server remoti, con effetti simili all'abuso di regsvr32: esecuzione di codice arbitrario da locazioni remote, senza scrittura di eseguibili tradizionali su disco.

Dal punto di vista della kill chain, l'abuso si colloca tipicamente dopo l'Initial Access — spesso via documento Office malevolo — e serve a proxy-eseguire payload durante le fasi di Execution e Defense Evasion. Il caso documentato più rilevante è quello del malware Hancitor (S0499), che ha usato verclsid.exe per scaricare ed eseguire uno script malevolo, confermando come questa tecnica sia adottata soprattutto da loader e downloader nelle prime fasi della compromissione.

Per un red team, la simulazione di T1218.012 in ambiente di laboratorio è utile per validare la copertura di AppLocker, WDAC e delle regole EDR contro l'esecuzione COM proxata. Il presupposto è avere un endpoint Windows di test isolato e la possibilità di ospitare un scriptlet su un web server interno.

La catena classica parte dalla registrazione di un CLSID nell'hive utente, che non richiede privilegi amministrativi. Si crea una chiave sotto HKCU\Software\Classes\CLSID{GUID}\InprocServer32 oppure una sottochiave ScriptletURL che punta a un file .sct raggiungibile via HTTP. Lo scriptlet contiene codice VBScript o JScript che istanzia WScript.Shell per lanciare il payload successivo — tipicamente un beacon Cobalt Strike (a pagamento) o Sliver (open source) in memoria.

L'invocazione avviene con:

verclsid.exe /S /C {CLSID-registrato}

Il flag /S forza modalità silent, /C specifica il ClassID da verificare. Poiché verclsid.exe è firmato Microsoft e categorizzato come componente di sistema, molte policy di application control lo consentono per default.

Per costruire lo scriptlet e testare la catena, strumenti utili sono Koadic (open source), che include stager basati su scriptlet COM, e Nishang (open source) per generare payload PowerShell da concatenare. La generazione manuale dello scriptlet richiede un file XML con tag e che dichiara ProgID e CLSID; la documentazione ufficiale Microsoft su Windows Script Components descrive la struttura.

Varianti interessanti da provare in lab:

  • Parent process spoofing: lanciare verclsid.exe da un processo Office simulato (winword.exe) per replicare il pattern osservato in-the-wild con Hancitor.
  • Living off trusted paths: hostare lo scriptlet su un servizio SMB interno per valutare se le regole di egress filtering intercettano solo HTTP/HTTPS.
  • Chaining con altri LOLBin: verclsid come primo stadio che lancia mshta.exe o rundll32.exe, per testare la detection di catene multi-binary.

Su Linux e macOS la tecnica non è applicabile: verclsid è un binario esclusivo Windows. Per esercizi cross-platform su proxy execution, si guardi ad altre sotto-tecniche di T1218. Al termine del test, è essenziale rimuovere le chiavi di registro create e documentare i CLSID usati, perché rimangono in NTUSER.DAT e possono generare falsi positivi in indagini successive.

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

Accedi alle lezioni gratuite e segui il percorso corretto fin dal primo passo

TEST GRATUITO
2 minuti · 7 domande Che professionista cyber sei? Scopri il profilo più vicino al tuo modo di pensare e inizia dal percorso giusto.