ShimCache vs Prefetch: quale prova che un programma è stato eseguito?

3 min di lettura

TL;DR. Il Prefetch è una vera prova di esecuzione, con conteggio e orari di esecuzione. Lo ShimCache prova solo che un file è esistito ed è stato esaminato. Se ti serve «è stato eseguito, e quando?», usa prima il Prefetch; se il Prefetch è disattivato o cancellato, lo ShimCache diventa il testimone di riserva sull'esistenza.

ShimCache e Prefetch vengono continuamente confrontati perché entrambi fanno emergere «programmi su un host Windows». Ma non sono lo stesso tipo di prova, e trattarli come intercambiabili produce conclusioni errate. Ecco il confronto diretto.

Colpo d'occhio

ShimCachePrefetch
PosizioneHKLM\SYSTEM\…\AppCompatCacheC:\Windows\Prefetch\*.pf
Cosa provaIl file è esistito / è stato esaminatoIl file è stato eseguito
Conteggio esecuzioniNo
Marche di esecuzioneNo (solo il mtime del file)Sì — ultime 8 esecuzioni
File referenziatiNoSì — DLL, file di dati caricati
Scritto quandoSolo allo spegnimento pulitoEntro ~10 s dall'esecuzione
Predefinito sui serverSpesso disattivato
CapacitàFino a 1.024 voci1.024 file .pf (Win8+)

Dove vince il Prefetch

Il Prefetch è l'artefatto di esecuzione più forte, punto. Ogni file .pf fornisce l'ultimo orario di esecuzione (fino a otto su Windows 8+), un conteggio totale di esecuzioni e l'elenco dei file caricati dal processo. È sufficiente per affermare «questo binario è stato eseguito a questi orari» — cosa che lo ShimCache non può mai fare, perché la sua unica marca temporale è la data di ultima modifica del file, non un orario di esecuzione.

Dove vince lo ShimCache

Il Prefetch ha una debolezza critica: è frequentemente disattivato sui server, nelle immagini ottimizzate per SSD e dagli attaccanti (EnablePrefetcher = 0). Viene anche cancellato attivamente dagli strumenti di pulizia. Lo ShimCache, invece, è sempre attivo ed è abbastanza sensibile da registrare un binario rilasciato ed eliminato prima ancora di essere eseguito. Quando il Prefetch è vuoto, lo ShimCache spesso risponde ancora a «questo file ha mai toccato questo host?» — vedi Lo ShimCache prova che un programma è stato eseguito? per quanto spingere quell'inferenza.

Come usarli insieme

  • Entrambi presenti, percorsi concordanti: prova forte di esecuzione. Usa gli orari del Prefetch come linea temporale degli eventi; usa il mtime dello ShimCache solo per ancorare l'identità del file.
  • Solo Prefetch: l'esecuzione è provata; lo ShimCache potrebbe semplicemente non essere ancora stato flushato (scrive solo allo spegnimento — vedi dove è memorizzato lo ShimCache).
  • Solo ShimCache: il file è esistito ed è stato esaminato. Non affermare l'esecuzione senza conferme — recupera AmCache, BAM e log eventi (matrice completa qui).
  • Nessuno dei due, ma sospetti esecuzione: cerca l'anti-forense. Una cancellazione del Prefetch più un flush ShimCache mancante è di per sé un riscontro, trattato in Anti-forense dello ShimCache.

Per leggere il lato ShimCache senza installare nulla, trascina una hive SYSTEM nello Shimcache Parser — interamente nel browser.

Approfondimenti

Articoli correlati