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

La variabile d'ambiente COR_PROFILER è una funzionalità legittima del .NET Framework pensata per consentire agli sviluppatori di agganciare una DLL di profiling non gestita a ogni processo che carica il Common Language Runtime (CLR). Gli avversari abusano di questo meccanismo per dirottare il flusso di esecuzione dei programmi .NET, ottenendo tre vantaggi tattici simultanei: persistenza (TA0003), perché la DLL malevola viene caricata automaticamente ogni volta che un processo .NET si avvia; privilege escalation (TA0004), se il processo vittima gira con privilegi elevati — ad esempio bypassando lo User Account Control; e defense evasion (TA0005), perché il codice si inietta nel contesto di processi trusted, potendo disabilitare o alterare difese basate su .NET.

Il meccanismo può essere configurato a tre livelli di scope — sistema, utente o singolo processo — tramite chiavi di Registry o direttamente in memoria. A partire da .NET Framework 4, la DLL di profiling non richiede neppure registrazione COM: è sufficiente specificarne il percorso tramite COR_PROFILER_PATH. Questa flessibilità rende la tecnica particolarmente insidiosa, perché riduce le tracce nel Registry e abbassa la soglia di complessità per l'attaccante. I dati MITRE documentano 1 gruppo APT, 1 software e 3 mitigazioni associate, confermando un utilizzo mirato ma efficace in contesti reali.


Il cuore di questa tecnica sta nell'impostare tre variabili d'ambiente — COR_ENABLE_PROFILING, COR_PROFILER e COR_PROFILER_PATH — in modo che ogni processo .NET che si avvia carichi una DLL controllata dall'attaccante. La simulazione in laboratorio è relativamente semplice e non richiede tool complessi.

Il primo passo è preparare una DLL di test. Un approccio classico consiste nel compilare una DLL con un payload benigno (un semplice pop-up o un log su file) che implementi l'interfaccia ICorProfilerCallback. Per un test rapido si può usare una DLL generata con msfvenom (open source, parte di Metasploit Framework):

msfvenom -p windows/x64/messagebox TEXT="COR_PROFILER test" -f dll -o profiler_test.dll

Per impostare la persistenza a livello utente via Registry, si utilizzano comandi Windows nativi:

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-GUID-personalizzato} /f

reg add "HKCU\Environment" /v COR_PROFILER_PATH /t REG_SZ /d C:\Test\profiler_test.dll /f

Dopo un logoff/logon, qualsiasi processo .NET dell'utente caricherà la DLL specificata. Per testare immediatamente senza riavvio, è possibile impostare le variabili a livello di processo e lanciare un binario .NET:

set COR_ENABLE_PROFILING=1 set COR_PROFILER={CLSID-GUID-personalizzato} set COR_PROFILER_PATH=C:\Test\profiler_test.dll powershell.exe -Command "Write-Host test"

PowerShell, essendo un processo .NET, caricherà la DLL di profiling. A livello sistema — scenario più aggressivo — la scrittura va fatta sotto HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment, operazione che richiede privilegi amministrativi e impatta tutti gli utenti.

Per lo scenario di privilege escalation, il test consiste nell'impostare le variabili d'ambiente e attendere che un processo .NET con privilegi elevati (ad esempio un servizio Windows basato su .NET) carichi la DLL. Il tool Process Monitor (gratuito, parte di Sysinternals) è ideale per verificare in tempo reale quale processo carica la DLL e con quali privilegi.

Il cleanup è fondamentale: rimuovere le tre chiavi Registry e la DLL dal disco al termine del test. Per la reportistica, documentare il CLSID utilizzato, i processi .NET che hanno caricato la DLL e il livello di privilegio ottenuto.


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.