ShimCache vs AmCache: quale artefatto Windows risponde a quale domanda

4 min di lettura

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.

Albero decisionale ShimCache vs AmCache

A colpo d'occhio

ShimCacheAmCache
Posizione registroHKLM\SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCacheC:\Windows\AppCompat\Programs\Amcache.hve
CapacitàFino a ~1.024 vociMigliaia di voci, nessun tetto fisso
Dati per vocePercorso, mtime file, flag di esecuzione (legacy)Percorso, SHA-1, dimensione, editore, data installazione, molto altro
Quando viene scrittoSolo a uno shutdown pulitoIn modo continuo e alle esecuzioni del task Appraiser
Sopravvive al reboot duroNo, le voci recenti vanno perseSì, già su disco
Migliore perProvare che un file è esistito su discoProvare 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

Articoli correlati