Abuso COM: Component Object Model (T1559.001)
Il Component Object Model è un'infrastruttura di comunicazione inter-processo nativa di Windows che permette a oggetti software di esporre interfacce binarie richiamabili da altri processi. Un client COM invoca metodi implementati da server COM, che sono tipicamente DLL o EXE registrate nel sistema. Quando la comunicazione avviene tra host diversi entra in gioco DCOM (Distributed COM), pilastro dei Remote Services di Windows.
Dal punto di vista offensivo, T1559.001 rientra nella tattica TA0002 (Execution) e viene sfruttata perché molte interfacce COM espongono funzionalità estremamente potenti: creazione di scheduled task tramite ITaskService, esecuzione di shell command via WScript.Shell, download di payload attraverso Windows COM Installer Object, bypass UAC tramite oggetti elevati come CMLuaUtil o IARPUinstallerStringLauncher. La tecnica si posiziona tipicamente nelle fasi di execution, privilege escalation e persistence della kill chain.
I numeri parlano chiaro: 17 famiglie di malware e 3 gruppi APT documentati fanno uso attivo di COM, da loader commodity come Bumblebee, TrickBot e Latrodectus fino a impianti sofisticati come InvisiMole, Gelsemium e HermeticWizard. L'impatto è amplificato dal fatto che l'attività COM legittima è pervasiva nell'ecosistema Windows, rendendo la detection comportamentale particolarmente sfidante e favorendo tecniche di living-off-the-land.
L'abuso di COM in un ingaggio red team parte dall'enumerazione delle interfacce disponibili sul target. Il registro Windows sotto HKCR\CLSID espone migliaia di ProgID; strumenti come OleViewDotNet (open source) di James Forshaw permettono di ispezionare interfacce, metodi e permessi DCOM in modo strutturato, individuando oggetti utili per lateral movement o privilege escalation.
Per l'esecuzione locale, PowerShell offre l'accesso più diretto tramite [activator]::CreateInstance([type]::GetTypeFromProgID("WScript.Shell")), che consente di richiamare il metodo Run per eseguire comandi arbitrari senza spawnare direttamente cmd.exe. Un pattern classico osservato in famiglie come DarkTortilla è la creazione di shortcut di persistenza:
$s = New-Object -ComObject WScript.Shell $lnk = $s.CreateShortcut("$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Startup\update.lnk")
Per la creazione di scheduled task via COM — pattern usato da TrickBot, Ramsay, Milan, Latrodectus e CLAIMLOADER — si istanzia Schedule.Service e si lavora sulle interfacce ITaskService, ITaskDefinition, ITaskSettings, evitando così di invocare schtasks.exe che è pesantemente monitorato.
Sul fronte lateral movement, DCOM rimane un vettore prezioso. Oggetti come MMC20.Application, ShellWindows e ShellBrowserWindow permettono esecuzione remota autenticata:
$com = [activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application","target.lab")) $com.Document.ActiveView.ExecuteShellCommand("cmd.exe",$null,"/c calc","7")
Questo approccio è stato codificato in Impacket (open source) nel modulo dcomexec.py, che offre wrapper per i vari oggetti COM sfruttabili. CrackMapExec e il successore NetExec (open source) integrano moduli DCOM per operazioni su larga scala.
Per bypass UAC — pattern di Medusa Group, Gelsemium e Raspberry Robin — si sfruttano oggetti elevati auto-approvati come CMSTPLUA (CLSID 3E5FC7F9-9A51-4367-9063-A120244FBEC7) o ICMLuaUtil. Il framework UACME (open source) di hfiref0x cataloga decine di tecniche riutilizzabili in lab.
Infine, per iniezione di macro Office — pattern di Gamaredon e SILENTTRINITY (open source) — l'automazione COM tramite Microsoft.Office.Interop consente di manipolare documenti e iniettare shellcode in EXCEL.EXE. Tutti i test vanno condotti in ambiente segregato con snapshot ripristinabili.
Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?
Accedi alle lezioni gratuite e segui il percorso corretto fin dal primo passo