TL;DR. Prefetch è una vera prova di esecuzione con conteggi e tempi di esecuzione. Lo ShimCache dimostra solo che un file è esistito ed è stato esaminato. Se ti serve "è stato eseguito, e quando?", parti da Prefetch. Se Prefetch è disabilitato o ripulito, lo ShimCache diventa il tuo testimone di esistenza di ripiego.
I due vengono costantemente confrontati perché entrambi fanno emergere "programmi su un host Windows". Non sono lo stesso tipo di prova. Trattali come intercambiabili e produci conclusioni sbagliate. Ecco il confronto.
A colpo d'occhio
| ShimCache | Prefetch | |
|---|---|---|
| Posizione | HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache | C:\Windows\Prefetch\*.pf |
| Cosa dimostra | Il file è esistito ed è stato esaminato | Il file è stato eseguito |
| Conteggio esecuzioni | No | Sì |
| Timestamp di esecuzione | No (solo mtime file) | Sì, ultime 8 run time |
| File riferiti | No | Sì, DLL e file dati caricati |
| Quando viene scritto | Solo a shutdown pulito | Entro ~10 s dall'esecuzione |
| Default su SKU workstation | Sì | Sì |
| Default su SKU server | Sì | Spesso disabilitato |
| Capacità | Fino a ~1.024 voci | 1.024 file .pf su Win8+ |
Dove vince Prefetch
Prefetch è l'artefatto di esecuzione più forte, punto. Ogni file .pf ti dà l'ultima run time (fino a otto su Windows 8+), un conteggio totale di esecuzioni, e la lista di file che il processo ha caricato. Abbastanza per affermare "questo binario è stato eseguito in questi momenti", cosa che lo ShimCache non può mai fare perché il suo unico timestamp è l'ora di ultima modifica del file, non un tempo di esecuzione.
La lista dei moduli caricati è anche oro per il triage: un .pf che mostra un processo Word che ha caricato WINWORD.EXE più MSO.DLL più una DLL sospetta da \AppData\ è una lettura rapida di caricamento di add-in dannoso. PECmd di Eric Zimmerman è il parser standard. Il parser Prefetch copre il formato se vuoi farti il tuo.
Dove vince lo ShimCache
Prefetch ha una debolezza critica: è frequentemente disabilitato sui server, sulle immagini ottimizzate per SSD e dagli attaccanti (EnablePrefetcher = 0). Viene anche cancellato attivamente da strumenti di pulizia. Lo ShimCache, al contrario, è sempre attivo ed è abbastanza sensibile da registrare un binario che è stato rilasciato e cancellato prima ancora di essere eseguito.
Quando Prefetch è vuoto, lo ShimCache spesso risponde ancora a "questo file ha mai toccato questo host?". L'inferenza completa è in lo ShimCache dimostra che un programma è stato eseguito?.
La cache cattura anche file che Prefetch non vede mai:
- Binari che sono crashati prima di completare l'inizializzazione del processo.
- File che Windows ha esaminato per compatibilità ma che l'utente non ha effettivamente lanciato.
- Eseguibili che sono girati da share di rete prima che Prefetch decidesse di scrivere un
.pf.
Come usarli insieme
- Entrambi presenti, percorsi coincidono. Prova di esecuzione forte. Usa i run time di Prefetch come timeline di eventi. Usa la mtime dello ShimCache solo per ancorare l'identità del file.
- Solo Prefetch. L'esecuzione è provata. Lo ShimCache potrebbe semplicemente non essere stato ancora scaricato (scrive solo allo shutdown, vedi dove è memorizzato lo ShimCache).
- Solo ShimCache. Il file è esistito ed è stato esaminato. Non rivendicare l'esecuzione senza conferma. Tira AmCache, BAM, e EVTX. La matrice completa è in la referenza degli artefatti.
- Nessuno dei due, ma sospetti esecuzione. Cerca anti-forense. Cancellazione di Prefetch più ShimCache non flushato è di per sé un finding, trattato in anti-forense dello ShimCache.
Per leggere il lato ShimCache senza installare nulla, trascina un hive SYSTEM nello Shimcache Parser. Interamente nel browser.
Letture aggiuntive
- Note sul formato Windows Prefetch (PF) di libyal. referenza per il layout binario
.pf. - Caching Out the Val di Mandiant. definisce il ruolo forense dello ShimCache.