Component Object Model: Sfruttare COM per Eseguire Codice (T1559.001)

Il Component Object Model rappresenta una delle architetture fondamentali di Windows che gli attaccanti sfruttano per eseguire codice malevolo. Questa tecnologia Microsoft permette la comunicazione tra componenti software attraverso interfacce standardizzate, rendendo possibile l'interazione tra oggetti binari come DLL ed EXE.

La tecnica si inserisce nella tattica TA0002 (Execution), rappresentando un metodo sofisticato per far girare payload malevoli sui sistemi compromessi. Gli attaccanti possono abusare delle interfacce COM esposte per invocare esecuzione arbitraria attraverso linguaggi come C++, Java e Visual Basic, oppure utilizzare oggetti COM specifici per creare task schedulati o effettuare download fileless.

L'impatto di questa tecnica è significativo: 3 gruppi APT la utilizzano attivamente, supportati da 17 famiglie di malware documentate. La versatilità di COM permette agli attaccanti di bypassare controlli di sicurezza, mantenere persistenza e muoversi lateralmente attraverso DCOM per l'esecuzione remota.

Per comprendere come gli attaccanti sfruttano COM, iniziamo con l'abuso più comune: l'utilizzo di oggetti COM per bypassare UAC. Il malware Gelsemium usa l'interfaccia IARPUinstallerStringLauncher per questo scopo.

Puoi replicare un bypass UAC base usando PowerShell:

$comObject = New-Object -ComObject "Shell.Application"
$comObject.ShellExecute("cmd.exe", "/c calc.exe", "", "runas", 0)

Un approccio più sofisticato coinvolge la creazione di task schedulati attraverso COM, tecnica utilizzata da InvisiMole e Milan. L'interfaccia ITaskService permette di creare task senza utilizzare schtasks.exe:

$TaskService = New-Object -ComObject Schedule.Service
$TaskService.Connect()
$RootFolder = $TaskService.GetFolder("\")
$TaskDefinition = $TaskService.NewTask(0)
$TaskDefinition.RegistrationInfo.Description = "Test COM Persistence"
$TaskDefinition.Settings.Enabled = $true
$TaskDefinition.Settings.AllowDemandStart = $true

Per simulare l'esecuzione remota tramite DCOM come fa HermeticWizard, puoi utilizzare WMI attraverso COM. Questo approccio permette l'esecuzione su macchine remote:

$remoteComputer = "192.168.1.100"
$wmis = [System.Runtime.InteropServices.Marshal]::GetActiveObject("winmgmts:\\$remoteComputer\root\cimv2")
$process = $wmis.Get("Win32_Process")
$result = $process.Create("calc.exe")

Gli attaccanti più sofisticati come Gamaredon Group manipolano documenti Office attraverso COM. Per testare questa tecnica in laboratorio:

$excel = New-Object -ComObject Excel.Application
$excel.Visible = $false
$workbook = $excel.Workbooks.Add()
$worksheet = $workbook.Worksheets.Item(1)
# Inserimento di macro malevola simulata

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.