TL;DR. Leggi in ordine di priorità: Prefetch (il più forte, quando attivo) → BAM/DAM (ultima esecuzione per utente su Win10+, criminalmente sottoutilizzato) → AmCache (identificazione SHA-1) → ShimCache (esistenza del file) → UserAssist (lanci via Explorer soltanto, codificato ROT13). Triangola; nessun artefatto chiude un caso da solo.
Non esiste un singolo artefatto Windows che risponda perfettamente a «questo programma è stato eseguito, quando e da chi?». Gli investigatori triangolano tra più artefatti. Ecco la short list pratica, con cosa dice ciascuno e cosa non dice.
La short list
| Artefatto | Posizione | Registra | Affidabilità per l'esecuzione |
|---|---|---|---|
| Prefetch | C:\Windows\Prefetch\*.pf | Percorso, contatore esecuzioni, ultime 8 esecuzioni, file caricati | Molto alta — scritto solo all'avvio del processo |
| AmCache | C:\Windows\AppCompat\Programs\Amcache.hve | Percorso, SHA-1, dimensione, editore, install + 1ª esecuzione | Alta — timestamp di esecuzione espliciti |
| ShimCache | Hive SYSTEM …\AppCompatCache | Percorso, mtime del file | Media — prova esistenza, spesso (non sempre) implica esecuzione |
| UserAssist | NTUSER.DAT …\UserAssist | Lanci GUI per utente via Explorer | Alta — ma solo iniziati dall'utente, nomi codificati ROT13 |
| BAM / DAM | Hive SYSTEM …\bam\State | Ultima esecuzione per utente per ogni binario | Molto alta — Win10+, facile da analizzare, spesso dimenticato |
Leggere in ordine di priorità
1. Prefetch per primo. Un file .pf è la cosa più simile a una ricevuta «è stato eseguito» che Windows offre. Memorizza fino a otto ultime esecuzioni e Windows moderno tiene Prefetch abilitato di default sulle workstation. PECmd di Eric Zimmerman è il parser standard.
2. BAM / DAM secondo. Background e Desktop Activity Moderator sono servizi che limitano le app in background. Mantengono un timestamp «ultima esecuzione» per utente e per binario nella hive SYSTEM sotto …\bam\State e …\dam\State. Presenti in Windows 10/11, a basso rumore, facili da leggere con qualsiasi strumento di registro.
3. AmCache terzo. AmCache rimpiazza Prefetch quando questo è disabilitato (server!) e fornisce hash SHA-1 per identificazione univoca dei file. Vedi ShimCache vs AmCache per il dettaglio.
4. ShimCache quarto. Trattalo come ancoraggio «il file esisteva», non come affermazione di esecuzione. Il post sulla prova di esecuzione spiega esattamente perché.
5. UserAssist per ultimo. Prova forte di lancio interattivo (iniziato da Explorer), ma cieca a tutto ciò che viene lanciato da shell, task pianificato o servizio. Utile per «l'utente ha cliccato questo?», non per «questo binario è mai stato eseguito?».
Insidie comuni
- Prefetch può essere disabilitato su SSD o per policy. Non assumere che la sua assenza significhi che non è stato eseguito nulla.
- AmCache ruota e invecchia. Le voci vecchie vengono purgate. Raccogli l'artefatto presto nel triage.
- I timestamp dello ShimCache sono il mtime del file, non il momento di esecuzione. Molti investigatori l'hanno imparato a proprie spese.
- I nomi UserAssist sono codificati ROT13. Banale da decodificare ma confonde il lettore occasionale.
- BAM è criminalmente sottoutilizzato. È uno dei segnali più puliti di «questo binario è stato eseguito per questo utente?» su Windows moderno.
Strumenti
Per parsing offline ad alta fedeltà, la suite di strumenti Eric Zimmerman è lo standard de facto — AppCompatCacheParser, AmcacheParser, PECmd, RBCmd e compagnia. La libreria di artefatti Velociraptor gestisce il triage live. E per lo ShimCache in particolare, puoi usare lo Shimcache Parser direttamente nel tuo browser senza installare nulla.
Approfondimenti
- AppCompatCacheParser (Zimmerman) — parser ShimCache di riferimento.
- Artefatto ShimCache di Velociraptor — logica di raccolta live.
- ShimCache & AmCache forensic analysis (Mehrnoush) — walkthrough esteso basato su casi.