Dirottamento COM: Component Object Model Hijacking (T1546.015)

Il Component Object Model (COM) è l'infrastruttura Windows che consente ai componenti software di dialogare tra loro attraverso interfacce standardizzate, con riferimenti conservati nel Registro di sistema sotto chiavi CLSID. Il COM Hijacking sfrutta questa architettura sostituendo il puntatore a un componente legittimo con un percorso controllato dall'attaccante, così che il codice malevolo venga caricato ogni volta che un processo istanzia quell'oggetto.

La tecnica è mappata alle tattiche TA0003 (Persistence) e TA0004 (Privilege Escalation): garantisce sopravvivenza ai riavvii e, quando l'oggetto dirottato viene invocato da un processo privilegiato, esecuzione in un contesto elevato. Nella kill chain occupa la fase post-exploitation immediatamente successiva all'accesso iniziale, spesso combinata con offuscamento e living-off-the-land.

Una variante recente coinvolge il dirottamento delle Type Libraries (TypeLib): modificando le chiavi TypeLib e sfruttando il moniker script:, l'attaccante può forzare il download di uno script remoto ogni volta che l'oggetto COM viene risolto, eliminando la necessità di piazzare DLL sul disco.

I dati MITRE ATT&CK documentano 1 gruppo APT (APT28) e 11 famiglie di malware o tool che adottano questa tecnica, tra cui JHUHUGIT, ADVSTORESHELL, ComRAT, BBSRAT, KONNI, WarzoneRAT e SILENTTRINITY. La ricorrenza di CLSID specifici — in particolare {42aedc87-2188-41fd-b9a3-0c966feabec1} associato a MruPidlList — è un pattern osservato in almeno tre famiglie distinte.

In un esercizio red team il COM hijacking è una delle tecniche di persistenza più discrete perché sfrutta chiavi utente (HKCU) che hanno precedenza su quelle di sistema (HKLM) durante la risoluzione degli oggetti COM, evitando così qualunque richiesta di privilegi elevati.

La prima fase è la ricerca di CLSID candidati: oggetti caricati frequentemente ma non critici. Lo strumento di riferimento è Process Monitor (gratuito, Sysinternals), che permette di filtrare per Operation = RegOpenKey e path contenente CLSID, evidenziando le chiavi che il sistema cerca in HKCU ma non trova — quelle chiavi mancanti sono candidate ideali al dirottamento perché non causeranno rotture funzionali. OleViewDotNet (open source, di James Forshaw) è invece il tool per esplorare interfacce, proxy stub e capability di ogni CLSID.

La scrittura della chiave malevola è banale una volta identificato il CLSID:

reg add "HKCU\Software\Classes\CLSID{CLSID}\InprocServer32" /ve /t REG_SZ /d "C:\Users\Public\payload.dll" /f

reg add "HKCU\Software\Classes\CLSID{CLSID}\InprocServer32" /v ThreadingModel /t REG_SZ /d Apartment /f

Per la variante TypeLib, la chiave da modificare risiede in HKCU\Software\Classes\TypeLib\{LIBID}\1.0\0\win32 (o win64), e il valore predefinito può puntare a uno script locale o remoto tramite moniker script:. Il trigger avviene automaticamente quando l'oggetto viene istanziato — ad esempio all'apertura di Explorer se si dirotta uno Shell Icon Overlay handler, come fanno JHUHUGIT e ADVSTORESHELL registrandosi sul CLSID {3543619C-D563-43f7-95EA-4DA7E1CC396A}.

Per automatizzare la scoperta, acCOMplice (open source, di enigma0x3) è uno script PowerShell che enumera i missing CLSID sfruttabili. In alternativa SharpCOM e i moduli di Empire o SILENTTRINITY (open source) implementano già la logica completa: SILENTTRINITY, in particolare, usa Registry.CurrentUser.CreateSubKey("Software\\Classes\\CLSID\\{...}\\InProcServer32") per l'installazione della persistenza.

In laboratorio conviene testare l'affidabilità del trigger con RunDll32 su una DLL benigna che scrive un timestamp, così da misurare quante volte al giorno il CLSID scelto viene effettivamente invocato. Un CLSID che scatta solo al logon offre persistenza ma non stealth continuo, mentre uno legato a Explorer o a servizi in background garantisce riesecuzione multipla. Ricorda di ripulire il registro al termine dell'ingaggio: reg delete sulla chiave InprocServer32 modificata è sufficiente a ripristinare la risoluzione COM standard.

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.