Estrarre lo ShimCache da un dump di memoria

3 min di lettura

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:

Approfondimenti

Articoli correlati