Application Shimming: Sfruttare la Compatibilità per Persistere nel Sistema (T1546.011)
L'Application Shimming rappresenta una tecnica di persistenza sofisticata che sfrutta l'infrastruttura di compatibilità applicativa di Windows per mantenere l'accesso ai sistemi compromessi. Questa metodologia si basa sull'abuso del framework Microsoft Application Compatibility Infrastructure, originariamente progettato per garantire il funzionamento di software legacy su versioni moderne di Windows.
La tecnica opera nelle fasi di Persistence (TA0003) e Privilege Escalation (TA0004) della kill chain. Gli attaccanti installano database shim personalizzati che intercettano e modificano il comportamento delle applicazioni, permettendo l'esecuzione di codice malevolo ad ogni avvio del programma target. Il meccanismo consente di bypassare UAC, iniettare DLL, disabilitare protezioni come DEP e SEH.
FIN7 ha dimostrato l'efficacia operativa di questa tecnica, mentre malware come ShimRat, SDBbot e Pillowmint la implementano come meccanismo primario di persistenza. L'impatto è significativo: una volta installato, lo shim persiste attraverso riavvii e aggiornamenti, mantenendo l'accesso anche dopo la rimozione del payload iniziale.
La creazione di uno shim malevolo richiede prima la generazione di un database SDB personalizzato. Il processo inizia con l'identificazione dell'applicazione target e la definizione delle modifiche da apportare.
Per generare un database shim che inietta una DLL, utilizza il Compatibility Administrator Tool: sdb-explorer.exe create -target notepad.exe -dll C:\malicious.dll -output custom.sdb
L'installazione avviene tramite sdbinst.exe con privilegi amministrativi: sdbinst.exe -q C:\temp\custom.sdb
Il database viene registrato nel sistema e i file vengono copiati in %WINDIR%\AppPatch\Custom. Per verificare l'installazione, controlla il registro: reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Custom"
Un approccio più sofisticato prevede l'uso di shim che disabilitano le protezioni di sicurezza. Il flag DisableNX permette l'esecuzione di codice in aree di memoria normalmente protette, mentre InjectDLL carica librerie arbitrarie nel processo target.
Per testare la persistenza, crea uno shim che si attiva ad ogni esecuzione di un processo comune come explorer.exe. Questo garantisce l'esecuzione del payload anche dopo riavvii o logout dell'utente. La rimozione richiede: sdbinst.exe -u C:\temp\custom.sdb
L'automazione del processo può essere implementata tramite PowerShell, creando script che generano e installano shim dinamicamente basandosi sull'ambiente target.
Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?
Scarica la guida gratuita e segui il percorso corretto fin dal primo passo