Iscriviti al webinar gratuito del 12 Maggio per diventare Forensic Analyst! Scopri di più
Corso Ethical Hacker: accedi alla promozione fino al 30 Arile! Scopri di più
Il Component Object Model (COM) è un pilastro dell'architettura Windows: un meccanismo di comunicazione inter-processo che consente a un oggetto client di invocare metodi su oggetti server, tipicamente implementati in DLL o EXE. Quando un avversario ne abusa, COM diventa un vettore di esecuzione codice estremamente versatile e spesso invisibile ai controlli tradizionali.
La tecnica T1559.001 si colloca nella tattica Execution (TA0002) — la fase in cui l'attaccante mira a far girare codice malevolo su un sistema locale o remoto. L'esecuzione via COM non richiede di scrivere un payload su disco: è possibile istanziare oggetti che creano scheduled task, scaricano file, manipolano il registro o lanciano shell, il tutto attraverso interfacce legittime del sistema operativo.
I numeri restituiscono un quadro concreto: 3 gruppi APT documentati, 17 software che implementano questa tecnica e 2 mitigazioni ufficiali. L'assenza di campagne isolate non deve ingannare — COM è una tecnica trasversale, integrata in catene d'attacco più ampie piuttosto che protagonista di operazioni standalone. L'abuso spazia dalla creazione di task persistenti tramite ITaskService al bypass UAC con CMLuaUtil, fino all'esecuzione remota via DCOM, rendendo questa tecnica un coltellino svizzero a disposizione di attori con competenze molto diverse tra loro.
L'abuso di COM in un ingaggio red team consente di dimostrare quanto sia semplice ottenere esecuzione codice, persistenza e persino bypass UAC senza mai toccare un eseguibile su disco. La superficie d'attacco è enorme: Windows espone migliaia di CLSID, e molte interfacce hanno capacità che vanno ben oltre il loro scopo originario.
Il primo passo è l'enumerazione. OleViewDotNet (open source) di James Forshaw è lo strumento di riferimento per ispezionare gli oggetti COM registrati, le interfacce esposte e i permessi associati. Da PowerShell, puoi anche elencare i CLSID registrati interrogando direttamente il registry:
Get-ChildItem -Path "HKLM:\SOFTWARE\Classes\CLSID" | Select-Object PSChildName | Measure-Object
Questo ti dà un'idea della superficie d'attacco: su un'installazione tipica di Windows troverai decine di migliaia di oggetti.
Per replicare la creazione di scheduled task via COM — uno dei pattern più documentati, usato da TrickBot, CLAIMLOADER, InvisiMole, Milan, Latrodectus e Ramsay — puoi usare PowerShell nativo:
$service = New-Object -ComObject "Schedule.Service" $service.Connect() $folder = $service.GetFolder("") $taskDef = $service.NewTask(0) $taskDef.RegistrationInfo.Description = "Test COM Task" $action = $taskDef.Actions.Create(0) $action.Path = "calc.exe" $folder.RegisterTaskDefinition("COMTestTask", $taskDef, 6, $null, $null, 3)
Questo script istanzia l'interfaccia ITaskService senza invocare schtasks.exe, evitando le detection basate sulla command-line del processo figlio.
Per simulare il bypass UAC alla maniera di Raspberry Robin e Medusa Group, il vettore è l'oggetto CMLuaUtil (CLSID {3E5FC7F9-9A51-4367-9063-A120244FBEC7}). Il tool UACME (open source) implementa questa tecnica e molte altre varianti di elevation via COM. In laboratorio, puoi compilare la variante specifica dal repository e osservare come dllhost.exe esegue codice con integrità elevata senza prompt UAC.
Per l'esecuzione remota via DCOM — il pattern usato da HermeticWizard e POWERSTATS — Impacket (open source) offre lo script dcomexec.py:
python3 dcomexec.py domain/user:password@
Questa catena istanzia un oggetto COM remoto (tipicamente MMC20.Application, ShellWindows o ShellBrowserWindow) e invoca il metodo ExecuteShellCommand. Puoi sperimentare con diversi oggetti per valutare quali vengono intercettati dal SOC del cliente.
Infine, per replicare il pattern di Gamaredon Group e SILENTTRINITY — iniezione di macro via Microsoft.Office.Interop — puoi scrivere un breve script C# o PowerShell che istanzia l'applicazione Office e manipola il contenuto del documento. Questo approccio è particolarmente insidioso perché il processo padre risulta essere l'applicazione Office stessa, non uno script.
Scarica la guida gratuita e segui il percorso corretto fin dal primo passo