Costruire una timeline di esecuzione di programmi da una hive SYSTEM

4 min di lettura

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:

FonteCosa aggiunge alla riga
ShimCachePercorso + mtime del file
AmCacheSHA-1, dimensione, editore, data di installazione, data di prima esecuzione
PrefetchTempi di avvio processi (fino agli ultimi 8), file caricati
BAM/DAMTimestamp «ultima esecuzione» per utente su Win10/11
Security/SysmonEventi di creazione processo con riga di comando, parent, utente

Per il dettaglio di ciascuno, vedi la referenza degli artefatti di esecuzione.

Un workflow riproducibile

  1. Raccogli gli artefatti. Hive SYSTEM (con log di transazione), Amcache.hve, C:\Windows\Prefetch\*.pf, log Security esportato, log Sysmon se disponibile.
  2. Parsea ciascuno in una tabella normalizzata. Usa la suite Eric Zimmerman (AppCompatCacheParser, AmcacheParser, PECmd) o lo Shimcache Parser per la parte ShimCache nel browser.
  3. 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).
  4. 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.
  5. 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

Articoli correlati