TL;DR. Lo ShimCache dimostra che un file è esistito su disco. AmCache dimostra che è stato eseguito e lo identifica tramite SHA-1. Lo ShimCache si svuota solo a uno shutdown pulito. AmCache scrive in modo continuo. Tirali fuori entrambi. Sono co-testimoni, non sostituti.
Ogni analista junior che ho fatto crescere ha fatto la stessa domanda nella prima settimana: "Se AmCache è meglio, perché prendiamo ancora lo ShimCache?" La risposta è che registrano eventi diversi, in tempi diversi, con modalità di guasto diverse. Trattali come sostituti e scriverai report che crollano alla prima revisione tecnica.
A colpo d'occhio
| ShimCache | AmCache | |
|---|---|---|
| Posizione registro | HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache | C:\Windows\AppCompat\Programs\Amcache.hve |
| Capacità | Fino a ~1.024 voci | Migliaia di voci, nessun tetto fisso |
| Dati per voce | Percorso, mtime file, flag di esecuzione (legacy) | Percorso, SHA-1, dimensione, editore, data installazione, molto altro |
| Quando viene scritto | Solo a uno shutdown pulito | In modo continuo e alle esecuzioni del task Appraiser |
| Sopravvive al reboot duro | No, le voci recenti vanno perse | Sì, già su disco |
| Migliore per | Provare che un file è esistito su disco | Provare che un file è stato eseguito e identificarlo tramite hash |
Quando vince lo ShimCache
La cache scatta sull'esame, non sull'esecuzione. Questa sensibilità lo rende il testimone migliore per file che un attaccante ha rilasciato brevemente e poi cancellato. Un binario atterrato in C:\Users\Public\ alle 14:33 e cancellato alle 14:35 può comunque comparire nello ShimCache se Windows lo ha toccato per qualsiasi motivo in quella finestra di due minuti.
La cache porta anche la mtime $STANDARD_INFORMATION del file. Quel timestamp non è un tempo di esecuzione. È una proprietà del file, il che significa che sopravvive a rinomine e copie che preservano i metadati. Utile per raggruppare build correlate su più host. Inutile per sequenziare eventi su una timeline, come trattato in cosa significa davvero il timestamp dello ShimCache.
Quando vince AmCache
Chiedi ad AmCache "questo binario è stato davvero eseguito, e quale binario esattamente?" e ottieni una risposta vera. Ogni voce InventoryApplicationFile sotto Amcache.hve porta un hash SHA-1, dimensione del file, editore, stato di firma e un LastWrite per file che funge da proxy di "quando Appraiser se ne è accorto". Basta per pivotare su VirusTotal, sul threat intel o su altri host del parco anche quando il file su disco è sparito da tempo.
Vince anche il modello di persistenza. AmCache viene svuotato da compattelrunner.exe a intervalli pianificati e su eventi di installer. I reboot duri e i BSOD non distruggono silenziosamente l'attività recente come fanno con lo ShimCache. Tira Amcache.hve più Amcache.hve.LOG1 e Amcache.hve.LOG2 per rigiocare qualsiasi transazione in corso.
Usarli insieme
Trattali come co-testimoni con punti ciechi diversi.
- Entrambi presenti, percorsi coincidono. Forte indicazione di esecuzione. Usa AmCache per l'identità tramite hash, lo ShimCache per confermare che il file è stato in quel percorso a un certo momento.
- Solo ShimCache. Il file è esistito. L'esecuzione non è provata. Cerca conferma in Prefetch, EVTX o BAM/DAM.
- Solo AmCache. L'host non è stato spento in modo pulito dall'attività. Lo ShimCache non è mai stato svuotato. Tira un dump RAM se la macchina è ancora accesa; lo ShimCache in memoria è lì.
- Nessuno presente, ma sospetti attività. Verifica che il task Appraiser sia girato. Un Compatibility Appraiser disabilitato produce hive AmCache che sembrano vuoti.
Per i dettagli tecnici del layout, vedi la guida al formato binario di Windows 10/11. Per parsare un hive subito senza installare nulla, trascinalo nello Shimcache Parser. Gira interamente nel browser.
Letture aggiuntive
- AppCompatCacheParser di Eric Zimmerman. implementazione C# di riferimento.
- Artefatto
Windows.Registry.AppCompatCachedi Velociraptor. logica di raccolta su sistema vivo. - ShimCache & AmCache forensic analysis di Mehrnoush. percorso basato su casi reali.