Lo ShimCache di Windows — noto anche come Application Compatibility Cache (AppCompatCache) — è uno degli artefatti più citati nella moderna incident response su Windows. È anche uno dei più fraintesi. Questa breve introduzione spiega cosa registra davvero, dove si trova e come gli investigatori dovrebbero (e non dovrebbero) interpretarlo.
Cosa registra lo ShimCache
Quando Windows esamina un eseguibile per decidere se applicare uno shim di compatibilità, registra tale esame nello ShimCache. Vengono conservate fino a 1.024 voci per sistema, ciascuna contenente almeno:
- il percorso completo dell'eseguibile,
- la marca temporale
$STANDARD_INFORMATIONdi ultima modifica del file, - e, nelle versioni più vecchie di Windows, flag che indicano se il file è stato eseguito.
La cache risiede in memoria volatile mentre il sistema è in esecuzione e viene scritta nel registro solo allo spegnimento. Questo dettaglio temporale è importante: un riavvio forzato o una VM spenta bruscamente può perdere completamente le voci recenti.
Dove si trova
Lo ShimCache si trova nella hive SYSTEM in:
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache\AppCompatCache
Il valore è un singolo blob binario la cui struttura varia per versione di Windows — XP, 7, 8, 8.1, 10 e 11 usano ciascuna un layout leggermente diverso. Analizzarlo offline significa estrarre il valore e decodificarlo secondo lo schema corretto. È esattamente ciò che fa questo strumento, interamente nel tuo browser, senza alcun upload.
Valore forense
Lo ShimCache è usato soprattutto per dimostrare l'esistenza di un programma: un determinato binario è stato, a un certo punto, presente sul disco di uno specifico host. È utile per:
- attribuire la presenza di malware anche dopo l'eliminazione del file,
- arricchire timeline di esecuzione costruite con Prefetch o AmCache,
- corroborare i ritrovamenti di EDR o di telemetria Sysmon.
Tre insidie che fanno male
- La marca temporale è il mtime del file, non il momento di esecuzione. Un binario copiato senza preservare i timestamp mostrerà il proprio mtime originale.
- Una voce non è prova di esecuzione. Su Windows 10 e 11 il flag di esecuzione nella cache è stato rimosso del tutto. Combina lo ShimCache con Prefetch, AmCache e log eventi prima di affermare che un programma sia stato eseguito.
- La cache si riempie, espelle le voci vecchie e viene svuotata allo spegnimento. Le voci recenti che non sono mai finite sul disco vanno semplicemente perse.
Usato con cura e corroborato da altri artefatti, lo ShimCache è un punto di pivot ad alto segnale. Tratta ogni voce come un'ipotesi da confermare, non come una conclusione.
Da dove proseguire
Per approfondire, il resto del blog è organizzato in due gruppi tematici.
Capire lo ShimCache
- ShimCache vs AmCache: quale artefatto di Windows risponde a quale domanda
- Lo ShimCache prova che un programma è stato eseguito?
- Dove è memorizzato lo ShimCache e quando viene scritto?
- Prefetch, AmCache, ShimCache: riferimento rapido per le prove di esecuzione
- Analizzare lo ShimCache: il formato binario Windows 10 e 11
Usarlo nelle indagini
- Come acquisire una hive SYSTEM di Windows per l'analisi offline dello ShimCache
- Cacciare malware con lo ShimCache: workflow passo dopo passo
- Usare lo ShimCache nelle indagini sui ransomware
- Estrarre lo ShimCache da un dump di memoria
- Gli attaccanti possono cancellare lo ShimCache? Anti-forense e rilevamento
- Costruire una timeline di esecuzione di programmi da una hive SYSTEM
- Confronto tra parser dello ShimCache: Mandiant, Zimmerman, Velociraptor e questo strumento