Abuso di InstallUtil: System Binary Proxy Execution via InstallUtil (T1218.004)
InstallUtil.exe è un'utility a riga di comando firmata Microsoft, distribuita con il .NET Framework, il cui scopo legittimo è installare e disinstallare risorse gestite invocando componenti installer specifici all'interno di assembly .NET. Gli avversari sfruttano questa utility come proxy di esecuzione: eseguendo codice arbitrario tramite un binario firmato e presente di default sul sistema, aggirano controlli di application whitelisting e riducono la superficie di detection basata su reputazione.
La tecnica è catalogata sotto TA0005 (Defense Evasion) e rientra nella famiglia dei cosiddetti LOLBin (Living Off the Land Binaries). Il binario risiede in percorsi noti come C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe e nella controparte a 64 bit. Sfruttando l'attributo [System.ComponentModel.RunInstaller(true)] nel codice .NET, un attaccante può inserire logica malevola nel metodo Uninstall o Install che viene eseguita quando InstallUtil elabora l'assembly.
L'impatto documentato è significativo: due gruppi APT (menuPass e Mustang Panda) e quattro famiglie di malware (Chaes, WhisperGate, Saint Bot e il framework offensivo Covenant) usano questa tecnica per scaricare payload, disabilitare Windows Defender, avviare stager Cobalt Strike Beacon e installare listener Grunt. La popolarità deriva dalla combinazione di firma digitale Microsoft, presenza garantita sui sistemi Windows moderni e capacità di eseguire codice .NET arbitrario senza compilazione a runtime esplicita.
La catena d'attacco tipica prevede la creazione di un assembly .NET contenente una classe decorata con [System.ComponentModel.RunInstaller(true)], che eredita da System.Configuration.Install.Installer e implementa la logica malevola in override dei metodi Install o Uninstall.
La compilazione può avvenire con il compilatore C# incluso nel framework:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /target:library /out:payload.dll payload.cs
L'esecuzione avviene poi con il flag di logfile nullo e senza output verboso:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe /logfile= /LogToConsole=false /U payload.dll
Il parametro /U (uninstall) è particolarmente sfruttato perché innesca il metodo Uninstall dell'assembly, spesso usato per caricare shellcode o payload secondari. Il flag /logfile= sopprime la scrittura del log su disco, riducendo artefatti.
Per un red team engagement, i framework offensivi più usati sono:
- Covenant (open source) — il framework C2 .NET nativo genera launcher InstallUtil tramite XML, producendo direttamente un assembly pronto all'uso per l'installazione di listener Grunt.
- Cobalt Strike (a pagamento) — supporta la generazione di stager compatibili con InstallUtil tramite Artifact Kit e Aggressor Script personalizzati.
- Metasploit Framework (open source) — il modulo windows/smb/smb_delivery combinato con payload .NET può essere adattato.
- Nps_Payload (open source) — genera specificamente payload progettati per esecuzione via MSBuild/InstallUtil con shellcode incorporato.
- GreatSCT (open source, non più mantenuto ma ancora funzionante in laboratorio) — nasce come fork di Veil per generare payload LOLBin, inclusa la variante InstallUtil.
Una variante interessante per bypass di application control consiste nell'usare InstallUtil per invocare un assembly che a sua volta esegue shellcode tramite VirtualAlloc, CreateThread e API P/Invoke, evitando la creazione di processi figli sospetti come cmd.exe o powershell.exe. Questa tecnica riduce drasticamente le firme comportamentali standard.
Per la fase di sviluppo in laboratorio è utile testare il payload prima con AMSI bypass noti, verificare l'assenza di stringhe rilevate da Windows Defender tramite AmsiScanBuffer e validare la persistenza dell'esecuzione tramite log di Sysmon configurato con configurazione SwiftOnSecurity o Olaf Hartong. Un test end-to-end su una VM Windows 10/11 con Defender aggiornato mostra rapidamente quali artefatti restano visibili.
Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?
Accedi alle lezioni gratuite e segui il percorso corretto fin dal primo passo