TL;DR. Lo ShimCache vive in memoria; la hive SYSTEM su disco contiene solo le voci flushate all'ultimo arresto pulito. Per recuperare le voci della sessione corrente da un host in esecuzione o crashato, esegui windows.shimcachemem di Volatility 3 (o l'artefatto Windows.Registry.AppCompatCache di Velociraptor) contro un'immagine di memoria.
Lo ShimCache vive in memoria volatile mentre Windows è in esecuzione e viene scritto nella hive SYSTEM solo a uno spegnimento pulito (più dettagli sul timing). Significa che un'immagine di memoria di un host in funzione è spesso l'unico posto per trovare le voci ShimCache dell'ultima sessione — esattamente le voci più probabilmente rilevanti per un incidente attivo.
Quando la copia in memoria conta più di quella su disco
Vuoi lo ShimCache in memoria quando:
- L'host non è stato spento in modo pulito dall'incidente. La maggior parte dei riavvii forzati, BSOD e power-off forzati lasciano stantio lo ShimCache nella hive SYSTEM.
- Sospetti anti-forense. Un attaccante che ha modificato la hive su disco potrebbe non aver toccato la copia in memoria (ricostruita ogni sessione). Vedi rilevamento anti-forense.
- Servono voci che sono state espulse dalla hive su disco all'ultimo flush. Il tetto di 1.024 voci ruota le vecchie, ma possono ancora essere in memoria in certe condizioni.
Con Volatility 2
Il plugin classico è shimcachemem. Contro un'immagine di memoria XP–Win10:
vol.py -f memory.raw --profile=Win10x64_19041 shimcachemem
Cammina le strutture AppCompatCache nella rappresentazione in memoria della hive SYSTEM e stampa righe (mtime, percorso) come farebbe un parser offline. Sorgenti e note d'uso del plugin sono nel repo Volatility 2.
Con Volatility 3
Volatility 3 lo porta avanti come windows.shimcachemem:
vol -f memory.raw windows.shimcachemem
Niente più selezione profilo (Vol 3 rileva il SO automaticamente). La documentazione Volatility 3 documenta il plugin insieme al resto del set di artefatti Windows.
Con Velociraptor
Se raccogli su scala invece di analizzare un singolo dump, l'artefatto Windows.Registry.AppCompatCache di Velociraptor legge lo ShimCache in memoria direttamente da un endpoint attivo tramite la vista live del registro. È lo stesso ShimCache che il SO avrebbe flushato allo spegnimento — senza aspettare lo spegnimento.
Combinare le due viste
In pratica avrai spesso:
- lo ShimCache in memoria da un plugin Volatility o una raccolta Velociraptor,
- lo ShimCache su disco dalla hive SYSTEM dello stesso host.
La copia in memoria è un sovrainsieme di quella su disco in ogni momento in cui non è avvenuto uno spegnimento pulito — ma la copia su disco può includere voci già espulse dalla memoria dopo lunghi uptime. Estrai entrambe, deduplica per (percorso, mtime), e alimenta l'unione al tuo workflow di caccia.
Passi utili successivi
Una volta ottenute le voci:
- Usa lo Shimcache Parser per un triage offline rapido di una hive estratta — gira nel browser, senza upload.
- Vedi il riferimento del formato binario se decodifichi il blob grezzo tu stesso.
- Vedi prova di esecuzione prima di affermare che una voce recuperata dalla memoria significhi che un programma è stato eseguito.
Approfondimenti
- Documentazione Volatility 3 — il framework moderno di forense della memoria.
- Volatility Foundation su GitHub — sorgenti dei plugin, incluso
shimcachemem. - Velociraptor
Windows.Registry.AppCompatCache— raccolta su sistemi vivi.