Application Shimming: Event Triggered Execution — Application Shimming (T1546.011)

L'Application Shimming sfrutta un meccanismo legittimo di Windows — il framework Application Compatibility Infrastructure — per intercettare e deviare le chiamate di un eseguibile verso il sistema operativo. In origine progettato per garantire la retrocompatibilità delle applicazioni legacy, questo framework permette di inserire un livello di "shim" tra la Import Address Table di un programma e le API del kernel, alterandone il comportamento senza modificarne il codice sorgente.

La tecnica rientra in due tattiche distinte della kill chain: Persistence (TA0003), perché uno shim database installato viene invocato automaticamente ogni volta che il programma bersaglio viene eseguito, e Privilege Escalation (TA0004), perché shim specifici come RedirectEXE, InjectDLL, DisableNX e DisableSEH consentono di iniettare codice, disabilitare protezioni di memoria e aggirare il User Account Control.

L'installazione di uno shim database richiede privilegi amministrativi e passa attraverso l'utility nativa sdbinst.exe, che registra il file .sdb nel percorso %WINDIR%\AppPatch\custom e nelle chiavi di registro sotto AppCompatFlags. Tuttavia, una volta installato, lo shim viene applicato in user mode a ogni esecuzione del processo target — un meccanismo silenzioso che rende questa tecnica particolarmente insidiosa. Dalla telemetria disponibile risultano 1 gruppo APT, 3 famiglie malware e 2 mitigazioni mappate, con assenza di campagne formalmente documentate.


L'obiettivo di un red teamer è dimostrare come un attaccante con privilegi amministrativi locali possa installare uno shim database malevolo e ottenere persistenza o escalation. Il flusso di lavoro si articola in tre fasi: creazione del database, installazione e validazione.

Creazione del database .sdb. Lo strumento nativo per compilare shim database è il Compatibility Administrator, parte del Windows Assessment and Deployment Kit (a pagamento come parte di Windows ADK, ma scaricabile gratuitamente dal sito Microsoft). Dopo aver aperto l'applicazione, si crea un "New Application Fix" specificando il binario target — ad esempio notepad.exe — e applicando uno shim come InjectDLL per caricare una DLL arbitraria o RedirectEXE per redirigere l'esecuzione verso un payload. Il database viene salvato come file .sdb.

Per scenari automatizzati in laboratorio, il tool sdb-explorer (open source) consente di analizzare e manipolare file .sdb da riga di comando, utile per ispezionare database esistenti e comprenderne la struttura interna.

L'installazione avviene tramite l'utility nativa di Windows:

sdbinst.exe C:\temp\payload.sdb

Questo comando registra il database nel sistema. Per verificare l'avvenuta installazione, interroga il registro:

reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\InstalledSDB"

reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Custom"

Entrambe le chiavi dovranno mostrare l'entry corrispondente al file .sdb appena installato. Come ulteriore verifica, controlla la presenza fisica del file nella directory:

dir %WINDIR%\AppPatch\Custom*.sdb

Per una simulazione con framework offensivi, Metasploit (open source) include il modulo post/windows/manage/install_shim che automatizza la creazione e l'installazione dello shim database su una sessione Meterpreter con privilegi elevati. In alternativa, il progetto ShimRatReporter (open source, disponibile su GitHub) fornisce un approccio didattico all'analisi degli shim presenti su un sistema.

Al termine del test, la rimozione è obbligatoria:

sdbinst.exe -u C:\temp\payload.sdb

Una nota operativa: testa sempre in un ambiente isolato. Shim come DisableNX rimuovono la Data Execution Prevention dal processo target, creando condizioni favorevoli anche per exploit accidentali. Documenta ogni .sdb installato con hash SHA-256 nel report finale.


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.