Iniezione IFEO: Image File Execution Options Injection (T1546.012)
La tecnica T1546.012 sfrutta una funzionalità legittima di Windows pensata per gli sviluppatori: le Image File Execution Options (IFEO), chiavi di registro che permettono di allegare un debugger a un eseguibile. Quando il sistema avvia un processo il cui nome corrisponde a una sottochiave IFEO contenente un valore Debugger, il debugger viene lanciato al posto (o prima) del binario originale, ereditando il contesto di esecuzione richiesto — spesso SYSTEM nel caso di programmi di accessibilità o servizi.
L'abuso ricade su due tattiche MITRE ATT&CK: TA0003 (Persistence), perché la modifica del registro sopravvive a reboot e cambi di credenziali, e TA0004 (Privilege Escalation), sfruttando il contesto elevato in cui certi processi bersaglio vengono lanciati. La chiave interessata è HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options<executable>, con la variante SilentProcessExit che consente di eseguire codice quando un processo termina in modo anomalo.
L'impatto operativo è significativo: attaccanti come TEMP.Veles (campagna C0032) hanno mantenuto persistenza in ambienti IT industriali proprio tramite IFEO, mentre malware come SDBbot e SUNBURST hanno automatizzato l'impianto della chiave Debugger per innescare payload come Cobalt Strike. La tecnica è anche usata per Impair Defenses, registrando debugger fasulli che neutralizzano tool AV o EDR.
In laboratorio la tecnica si presta a esercitazioni di persistenza e privilege escalation su Windows 10/11 e Server 2019+. La procedura più didattica è la classica sticky keys backdoor: sostituire il debugger di utilman.exe o sethc.exe con cmd.exe, così da ottenere una shell SYSTEM dalla schermata di logon o via RDP.
Esempio di impianto diretto via reg.exe (richiede privilegi di amministratore locale):
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\utilman.exe" /v Debugger /t REG_SZ /d "C:\Windows\System32\cmd.exe" /f
Una volta alla schermata di lock, la combinazione Win+U invoca Utility Manager, ma il sistema lancia cmd.exe in contesto SYSTEM. La stessa logica funziona con osk.exe, magnify.exe e narrator.exe. Per la variante SilentProcessExit, si opera su due chiavi: sotto SilentProcessExit<target> si impostano ReportingMode (a 1) e MonitorProcess con il percorso del payload, mentre sotto IFEO si aggiunge GlobalFlag a 0x200. In questo modo la terminazione anomala del processo bersaglio (ad esempio notepad.exe) innesca il monitor.
Dal punto di vista offensivo, i framework di post-exploitation più comuni includono moduli dedicati. PowerSploit (open source, ora archiviato ma ancora funzionante come reference) contiene Get-RegistryAlwaysAutoElevate e utilità di persistenza registry. Empire e Covenant (entrambi open source) espongono task per la modifica di chiavi di persistenza. Metasploit Framework (open source) offre il modulo post/windows/manage/persistence_exe che può essere adattato per scrivere Debugger IFEO.
Per scenari di red team con esclusione temporanea di un EDR, è documentato l'uso di IFEO per puntare un debugger inesistente sull'agente di sicurezza (es. MsMpEng.exe): il servizio non parte più. Va eseguito solo in lab isolati.
Un piccolo playbook di esercizio:
- Preparare una VM Windows con Sysmon (open source) e configurazione SwiftOnSecurity attiva.
- Impiantare la chiave IFEO su utilman.exe.
- Verificare la persistenza dopo reboot triggerando Win+U in console RDP.
- Testare la variante SilentProcessExit con un processo utente.
- Osservare gli eventi generati per calibrare le regole di detection.
Strumenti utili per l'analisi del registro durante l'esercizio: Registry Explorer di Eric Zimmerman (gratuito), Autoruns di Sysinternals (gratuito) che elenca esplicitamente la sezione Image Hijacks, e Process Monitor (gratuito) per correlare in tempo reale accessi al registro e creazioni di processo.
Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?
Accedi alle lezioni gratuite e segui il percorso corretto fin dal primo passo