Application Shimming: Event Triggered Execution via Application Shims (T1546.011)
L'Application Compatibility Infrastructure di Windows nasce per garantire retrocompatibilità del software attraverso versioni successive del sistema operativo, permettendo agli sviluppatori di applicare correzioni runtime senza riscrivere il codice sorgente. Gli shim si interpongono tra l'Import Address Table del programma e il kernel Windows, intercettando chiamate API per adattarle al comportamento atteso dall'applicazione legacy.
Questo meccanismo, progettato per operare in user mode con vincolo di privilegi amministrativi per l'installazione, diventa un vettore di attacco quando un avversario registra un database shim (.sdb) malevolo. La tecnica T1546.011 copre due tattiche MITRE ATT&CK: TA0003 Persistence, perché lo shim viene invocato ogni volta che l'applicazione target viene eseguita, e TA0004 Privilege Escalation, perché specifici flag come RedirectEXE, InjectDLL, DisableNX e DisableSEH permettono bypass di UAC, iniezione di DLL arbitrarie e disabilitazione di protezioni memoria.
Nella kill chain la tecnica si colloca dopo l'accesso iniziale e l'ottenimento di privilegi amministrativi, come meccanismo silente di riesecuzione. Il registro degli shim installati risiede in %WINDIR%\AppPatch\sysmain.sdb e in HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\InstalledSDB, mentre i database custom sono referenziati in AppCompatFlags\Custom. I dati MITRE documentano 1 gruppo APT (FIN7) e 3 famiglie malware (ShimRat, SDBbot, Pillowmint) che hanno operativizzato questa tecnica in campagne di intrusione contro settori retail e ospitalità.
La simulazione di Application Shimming in un contesto red team richiede una macchina Windows di laboratorio (Windows 10 o Server 2019, con snapshot pre-esecuzione) e privilegi di amministratore locale. Il tool ufficiale Microsoft è il Application Compatibility Toolkit (gratuito, distribuito nel Windows ADK), che include Compatibility Administrator per la costruzione grafica dei database shim e sdbinst.exe per la registrazione.
Il flusso operativo tipico inizia aprendo Compatibility Administrator (versione a 32 o 64 bit a seconda del target), creando un nuovo database custom e aggiungendo una Application Fix che punta all'eseguibile bersaglio (per esempio services.exe o un binario applicativo firmato). Si seleziona il shim desiderato — InjectDll per caricare una DLL arbitraria nello spazio di indirizzamento del processo, RedirectEXE per deviare l'esecuzione verso un payload alternativo — e si salva il file .sdb nella cartella %WINDIR%\AppPatch\Custom.
La registrazione avviene con il comando:
sdbinst.exe C:\Windows\AppPatch\Custom\payload.sdb
Questo scrive le chiavi in HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Custom e in InstalledSDB, associando il GUID del database all'eseguibile target. Alla successiva esecuzione dell'applicazione, il subsystem di compatibilità caricherà il database e applicherà il fix.
Per la parte di DLL da iniettare tramite il flag InjectDll, un red teamer può compilare una DLL minimale in C con DllMain che esegue il payload al momento del DLL_PROCESS_ATTACH. Framework di post-exploitation come Metasploit (open source) e Cobalt Strike (a pagamento) supportano la generazione di reflective DLL utilizzabili come stager.
Per esercizi didattici, il progetto SDB-JSON e gli script PowerShell del repository atomic-red-team di Red Canary (open source) contengono test riproducibili per T1546.011 che automatizzano creazione, registrazione e cleanup dello shim. Il cleanup si esegue con:
sdbinst.exe -u C:\Windows\AppPatch\Custom\payload.sdb
oppure con il flag -g
Una variante utile per esercitare il team blu è la catena adottata storicamente da FIN7: shim contro processi di point-of-sale per persistenza silente. Documentare il tempo trascorso tra registrazione del database e primo alert SOC è una metrica preziosa per valutare la maturità del detection stack. Evitare di testare su ambienti di produzione: alcuni shim possono destabilizzare processi critici come services.exe.
Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?
Accedi alle lezioni gratuite e segui il percorso corretto fin dal primo passo