TL;DR. Costruisci una timeline fusa di ShimCache + AmCache + Prefetch + BAM/DAM + Security/Sysmon. Usa lo ShimCache per definire il cast (percorsi), poi arricchisci ogni riga con i timestamp da altre fonti. Etichetta ogni timestamp con la sua semantica di origine — non collassare mai «mtime del file» e «avvio del processo» nella stessa colonna.
Una timeline di esecuzione di programmi è l'artefatto singolo più utile che un investigatore IR Windows produce. Ben fatta, racconta una storia cronologica attraverso più fonti. Mal fatta, esagera le prove e viene contestata. Questo post mostra come costruirne una con lo ShimCache come spina dorsale.
Perché lo ShimCache è una buona spina dorsale
Lo ShimCache è raramente la fonte più precisa su un singolo campo, ma ha vantaggi unici come ancoraggio temporale:
- Porta esplicito il percorso del file (alcuni artefatti hanno solo hash o percorsi parziali).
- Cattura eseguibili che Windows ha solamente esaminato — quindi include binari che hanno girato brevemente e sono stati cancellati, che Prefetch e BAM possono perdere.
- Sopravvive a molti tentativi anti-forensi che cancellano altri artefatti (con importanti precauzioni).
Usa lo ShimCache per definire il cast della timeline, e poi arricchisci ogni riga con artefatti corroboranti per assegnare tempi affidabili.
Le fonti da fondere
Una timeline completa di esecuzione attinge ad almeno queste cinque:
| Fonte | Cosa aggiunge alla riga |
|---|---|
| ShimCache | Percorso + mtime del file |
| AmCache | SHA-1, dimensione, editore, data di installazione, data di prima esecuzione |
| Prefetch | Tempi di avvio processi (fino agli ultimi 8), file caricati |
| BAM/DAM | Timestamp «ultima esecuzione» per utente su Win10/11 |
| Security/Sysmon | Eventi di creazione processo con riga di comando, parent, utente |
Per il dettaglio di ciascuno, vedi la referenza degli artefatti di esecuzione.
Un workflow riproducibile
- Raccogli gli artefatti. Hive SYSTEM (con log di transazione),
Amcache.hve,C:\Windows\Prefetch\*.pf, log Security esportato, log Sysmon se disponibile. - Parsea ciascuno in una tabella normalizzata. Usa la suite Eric Zimmerman (
AppCompatCacheParser,AmcacheParser,PECmd) o lo Shimcache Parser per la parte ShimCache nel browser. - Unisci su (percorso, SHA-1 opzionale). La chiave di join è il percorso, con SHA-1 come segnale secondario quando AmCache lo fornisce. Attenzione: lo ShimCache può avere il percorso leggermente diverso (maiuscole, normalizzazione).
- Etichetta ogni timestamp con la semantica della fonte. Non fondere «data di installazione AmCache» e «orario di esecuzione Prefetch» in una sola colonna — rispondono a domande diverse. Tienile adiacenti ma distinte.
- Renderizza con uno strumento che gestisca attribuzione per riga. Timeline Explorer (TLE) di Eric Zimmerman e Plaso / log2timeline lo fanno entrambi bene. CSV in foglio di calcolo va bene per casi più piccoli.
Come si presenta una riga «buona»
Una riga difendibile nella timeline finale appare così:
2026-04-12 09:14:33 UTC C:\Users\alice\AppData\Local\Temp\setup.exe
ShimCache mtime : 2026-04-12 09:14:30 UTC
AmCache : SHA-1 a3b8c9…, firmatario «Acme Updates», installazione 2026-04-12 09:14:33
Prefetch : ultima esecuzione 2026-04-12 09:15:01 UTC (1 esecuzione)
Security 4688 : 2026-04-12 09:15:01 UTC, PID 4521, PID padre 1234 (svchost.exe)
Ogni timestamp è sorgentizzato e la riga regge alla contestazione. Il contrario — «lo ShimCache mostra che setup.exe è stato eseguito alle 09:14:33» — confonde l'mtime del file con l'orario di esecuzione, ed è il tipo di affermazione che fa rigettare un report. Vedi prova di esecuzione.
Quando le fonti non concordano
I conflitti sono dati utili:
- mtime ShimCache ≠ prima esecuzione Prefetch. Normale — misurano cose diverse. Annota entrambe, non scegliere.
- AmCache dice eseguito, ShimCache è vuoto per quel file. Cause possibili: cancellazione anti-forense (pattern di rilevamento), voce espulsa dal tetto 1.024, binario eseguito dopo l'ultimo arresto pulito.
- Prefetch assente. Le SKU server e gli host pesanti su SSD spesso hanno Prefetch disabilitato — ripiegare su AmCache + BAM.
Fermarsi al punto giusto
Una timeline non deve essere completa per essere preziosa. Una finestra focalizzata — «cosa ha girato sull'host X tra le 14:00 e le 18:00 del 2026-04-11?» — costruita rigorosamente batte una sprawling con attribuzione debole. Il workflow di caccia ai malware aiuta a scegliere quella finestra.
Approfondimenti
- Plaso / log2timeline — motore di timeline open-source che consuma ShimCache, AmCache, Prefetch e decine di altri artefatti Windows.
- Strumenti Eric Zimmerman — parser di riferimento + Timeline Explorer.
- Velociraptor
Windows.Registry.AppCompatCache— raccolta su scala.