ShimCache vs AmCache: quale artefatto di Windows risponde a quale domanda

3 min di lettura

TL;DR. Lo ShimCache prova che un file è esistito su disco; AmCache prova che è stato eseguito e lo identifica per SHA-1. Lo ShimCache viene flushato solo allo spegnimento pulito — AmCache scrive di continuo. Prendili entrambi; sono co-testimoni, non sostituti.

ShimCache e AmCache sono i due artefatti registry-based più citati nelle indagini di esecuzione di programmi su Windows. Sembrano intercambiabili. Non lo sono. Questa è una guida rapida per decidere quale utilizzare in base alla domanda a cui stai cercando di rispondere.

Albero decisionale ShimCache vs AmCache

Colpo d'occhio

ShimCacheAmCache
PosizioneHKLM\SYSTEM\…\AppCompatCacheC:\Windows\AppCompat\Programs\Amcache.hve
CapacitàFino a 1.024 vociMigliaia di voci, nessun limite fisso
Dati per vocePercorso, mtime, (legacy) flag di esecuzionePercorso, SHA-1, dimensione, editore, data installazione, molto altro
Scritto quandoSolo allo spegnimentoContinuamente (e a intervalli pianificati)
Sopravvive a un crashNo — le voci recenti vanno perseSì — già su disco
Ideale perProvare che un file esisteva su discoProvare che un file è stato eseguito + identificarlo per hash

Quando vince lo ShimCache

Lo ShimCache mantiene una voce per ogni eseguibile che Windows ha semplicemente esaminato per ragioni di compatibilità. Questo lo rende sensibile: un binario rilasciato e immediatamente eliminato da un attaccante può comunque lasciare una traccia nello ShimCache. Se la tua domanda è «questo file è mai esistito su questo host?» — lo ShimCache è il tuo alleato.

È anche l'unico dei due a catturare il mtime $STANDARD_INFORMATION del file. Quella marca temporale non è l'ora di esecuzione (un equivoco comune trattato in un altro articolo), ma ancora l'identità del file nel tempo.

Quando vince AmCache

AmCache è ciò che serve quando la domanda è «questo file è stato effettivamente eseguito, e quale file esattamente?». Ogni voce AmCache porta un hash SHA-1, la dimensione del file, l'editore, la data di installazione — abbastanza per identificare un binario senza ambiguità, anche se il file su disco è stato sostituito o cancellato.

AmCache persiste anche. Poiché Windows lo scrive continuamente invece che solo allo spegnimento, l'attività recente su un sistema crashato o riavviato forzatamente è più probabile che si trovi in AmCache rispetto allo ShimCache.

Come usarli insieme

In pratica, trattali come co-testimoni:

  • Una voce in entrambi, ShimCache e AmCache, con percorsi corrispondenti e una marca AmCache recente, è una prova forte di esecuzione.
  • Una voce solo nello ShimCache dice che il file era almeno su disco a un certo punto. Cerca prove corroboranti (Prefetch, AmCache, log eventi) prima di affermare l'esecuzione.
  • Una voce solo in AmCache senza Prefetch e senza ShimCache di solito significa che l'host non è stato spento in modo pulito dall'attività — lo ShimCache non è mai stato scritto su disco.

Per i dettagli tecnici del layout binario dello ShimCache, vedi Analizzare lo ShimCache: il formato binario Windows 10 e 11. Per analizzare una hive subito senza installare nulla, usa lo Shimcache Parser — tutto avviene nel tuo browser.

Approfondimenti

Articoli correlati