Hijack via Profiler .NET: COR_PROFILER (T1574.012)

La tecnica T1574.012 sfrutta una funzionalità legittima del .NET Framework — la variabile d'ambiente COR_PROFILER — per dirottare il flusso di esecuzione di qualsiasi processo che carichi il Common Language Runtime (CLR). Nata per consentire agli sviluppatori di agganciare DLL non gestite di profiling a fini di debugging e telemetria, questa capability diventa un vettore d'abuso di grande versatilità nelle mani di un attaccante.

Il meccanismo copre tre tattiche MITRE contemporaneamente. In Persistence (TA0003) garantisce esecuzione ricorrente della DLL malevola ogni volta che un processo .NET viene istanziato. In Privilege Escalation (TA0004) consente di ereditare privilegi elevati quando la vittima è un processo che gira con token amministrativo o SYSTEM, aprendo la strada anche al bypass di UAC. In Defense Evasion (TA0005) permette di hookare API interne al runtime gestito per silenziare EDR scritti in .NET o alterare la telemetria applicativa.

A partire dal .NET Framework 4 la DLL non richiede nemmeno la registrazione COM: basta valorizzare COR_PROFILER_PATH con il percorso del binario. Lo scope può essere di sistema o utente (persistente in Registry sotto HKLM o HKCU) oppure di processo (solo in memoria, invisibile a scansioni statiche del Registry). Il gruppo Blue Mockingbird ha industrializzato questo pattern per il deployment di miner XMRig su server IIS compromessi, mentre il malware DarkTortilla utilizza la variabile COR_ENABLE_PROFILING come tecnica anti-analisi per rilevare la presenza di profiler difensivi.

Sul piano offensivo, la simulazione di T1574.012 in laboratorio richiede la costruzione di una DLL profiler che implementi almeno l'interfaccia COM ICorProfilerCallback. Il progetto di riferimento è ThunderFox/RunasCs e soprattutto la PoC COR_PROFILER hijack di Casey Smith (open source), disponibile come repository dimostrativo con codice C++ e C# per generare la DLL con CLSID registrato correttamente.

Il workflow tipico in ambiente Windows si articola in tre passi. Prima si genera la DLL malevola (che espone DllGetClassObject e implementa il callback di inizializzazione del profiler), poi si registra il CLSID via Registry, infine si imposta la variabile d'ambiente. Un esempio operativo a scope utente:

reg add "HKCU\Environment" /v COR_ENABLE_PROFILING /t REG_SZ /d 1 /f

reg add "HKCU\Environment" /v COR_PROFILER /t REG_SZ /d "{CLSID-CUSTOM}" /f

reg add "HKCU\Environment" /v COR_PROFILER_PATH /t REG_SZ /d "C:\Users\Public\evil.dll" /f

A questo punto qualsiasi processo .NET lanciato dall'utente caricherà la DLL. Per il trigger si può forzare l'esecuzione di un binario gestito comune come powershell.exe (che è .NET-based nel caso di PowerShell Core) oppure un piccolo eseguibile C# compilato ad-hoc.

Per scope di sistema, che richiede privilegi elevati, il percorso in Registry cambia in HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment. È esattamente il vettore osservato in Blue Mockingbird, dove wmic.exe è stato usato come proxy di modifica per aggirare monitoring locale:

wmic ENVIRONMENT create name="COR_PROFILER",username="",VariableValue="{CLSID}"

La variante process-scope, particolarmente insidiosa perché non tocca il Registry, si realizza con l'API SetEnvironmentVariable prima di lanciare un processo figlio, oppure via PowerShell:

$env:COR_PROFILER="{CLSID}"; $env:COR_PROFILER_PATH="C:\temp\evil.dll"; $env:COR_ENABLE_PROFILING="1"; Start-Process powershell.exe

Per la fase di weaponization, framework come Covenant (open source, ora archiviato ma funzionale) e Sliver (open source) supportano payload .NET ideali come target di iniezione. In alternativa, per red team più maturi, Cobalt Strike (a pagamento) offre BOF per manipolare direttamente l'environment block di processi figli.

In scenari di privilege escalation, target ideali sono processi che si auto-elevano come dotnet.exe invocato da servizi SYSTEM, oppure task pianificati che eseguono utility .NET Microsoft-signed.

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.