Prefetch, AmCache, ShimCache: una rapida referenza per le prove di esecuzione

4 min di lettura

TL;DR. Ordine di priorità che uso davvero in triage: Prefetch (il più forte quando attivo), BAM/DAM (ultima esecuzione per utente su Win10+, criminalmente sottoutilizzato), AmCache (identificazione SHA-1), ShimCache (ancora di esistenza), UserAssist (solo lanci avviati da Explorer). Nessun artefatto da solo chiude un caso. Triangola o smetti di rivendicare esecuzione.

Non c'è un singolo artefatto Windows che risponda perfettamente a "questo programma è stato eseguito, quando e da chi?". Chiunque ti dica il contrario o non ha lavorato abbastanza casi o ti sta vendendo qualcosa. Ciò che funziona è una breve lista di artefatti che coprono ciascuno un pezzo della domanda e l'abitudine di incrociarli.

La lista breve

ArtefattoPosizioneRegistraAffidabilità per l'esecuzione
PrefetchC:\Windows\Prefetch\*.pfPercorso, conteggio esecuzioni, ultime 8 run time, file caricatiMolto alta. Scritto solo all'avvio del processo.
AmCacheC:\Windows\AppCompat\Programs\Amcache.hvePercorso, SHA-1, dimensione, editore, install + prima esecuzioneAlta. Timestamp di esecuzione espliciti.
ShimCacheHive SYSTEM …\Session Manager\AppCompatCachePercorso, mtime fileMedia. Prova esistenza; spesso (non sempre) implica esecuzione.
UserAssistNTUSER.DAT …\UserAssist (registry)Lanci GUI per utente via ExplorerAlta, ma solo avviati dall'utente, nomi codificati in ROT13.
BAM / DAMHive SYSTEM …\bam\State e …\dam\StateTempo di ultima esecuzione per utente di ogni binarioMolto alta. Win10+, facile da parsare, spesso saltato.

Leggerli in ordine di priorità

1. Prefetch per primo. Un file .pf è la cosa più vicina a una "ricevuta di esecuzione" che Windows abbia. Fino a otto run time, conteggio totale, lista dei moduli caricati. Le SKU workstation lasciano Prefetch attivo di default. PECmd di Eric Zimmerman è il parser canonico. Il parser Prefetch copre il formato se vuoi farti il tuo.

2. BAM / DAM al secondo. Background e Desktop Activity Moderator strozzano le app in background e tengono timestamp "ultima esecuzione" per utente e per binario nell'hive SYSTEM sotto …\Services\bam\State e …\Services\dam\State. Presenti su Windows 10 e 11, poco rumorosi, facili da leggere. Ho chiuso casi su righe BAM che nessuno nel team IR originale si era preso la briga di tirar fuori.

3. AmCache al terzo. Copre Prefetch sui server (dove Prefetch è spesso disabilitato) e sugli host dove l'attaccante ha ripulito la cartella Prefetch. Gli hash SHA-1 sono la killer feature: quando il file è cancellato, l'hash è il tuo unico appiglio per VirusTotal e threat intel. Vedi ShimCache vs AmCache.

4. ShimCache al quarto. Ancora di esistenza, non rivendicazione di esecuzione. Il post sulla prova di esecuzione copre il ragionamento.

5. UserAssist per ultimo. Forte indicazione di lancio interattivo via Explorer. Cieco a tutto ciò che viene lanciato da una shell, da un'attività pianificata o da un servizio. Utile quando la domanda è "l'utente ha cliccato qui?". Leggilo con qualunque strumento di registro che gestisca ROT13; il registry parser lo decodifica inline.

Cose che mordono

  • Prefetch può essere spento. SSD, SKU server e GPO lo disattivano tutti. Un Prefetch vuoto non è prova di assenza.
  • AmCache ruota. Le voci vecchie scadono. Tira l'hive presto in triage.
  • I timestamp dello ShimCache sono la mtime del file. Non il tempo di esecuzione. Non il tempo di flush. La mtime del file. Rileggilo finché non resta.
  • UserAssist è ROT13. Banale da decodificare ma trae in inganno i lettori occasionali.
  • BAM è sottoutilizzato. Forse il segnale "questo binario è stato eseguito per questo utente?" più pulito su Windows moderno.

Altri artefatti da conoscere a seconda del caso: RecentFileCache (legacy Win7), SRUM per uso rete e processi su 30 giorni, jump list e file LNK per l'attività shell, la MFT e il journal USN per timeline a livello di filesystem.

Tooling

Per parsing offline a piena fedeltà, la suite di strumenti di Eric Zimmerman è lo standard de facto. AppCompatCacheParser, AmcacheParser, PECmd, RBCmd, tutti affidabili. Velociraptor gestisce il triage live su scala flotta. Specificamente per lo ShimCache, lo Shimcache Parser legge un hive direttamente nel browser senza installare nulla.

Letture aggiuntive

Articoli correlati