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
| ShimCache | Prefetch | |
|---|---|---|
| Posizione | HKLM\SYSTEM\…\AppCompatCache | C:\Windows\Prefetch\*.pf |
| Cosa prova | Il file è esistito / è stato esaminato | Il file è stato eseguito |
| Conteggio esecuzioni | No | Sì |
| Marche di esecuzione | No (solo il mtime del file) | Sì — ultime 8 esecuzioni |
| File referenziati | No | Sì — DLL, file di dati caricati |
| Scritto quando | Solo allo spegnimento pulito | Entro ~10 s dall'esecuzione |
| Predefinito sui server | Sì | Spesso disattivato |
| Capacità | Fino a 1.024 voci | 1.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
- Note sul formato Prefetch (libscca) — il riferimento per il formato binario
.pf. - Mandiant: leveraging the ShimCache — definisce il ruolo forense dello ShimCache.