Confronto tra parser dello ShimCache: Mandiant, Zimmerman, Velociraptor e questo strumento

4 min di lettura

TL;DR. Usa AppCompatCacheParser di Eric Zimmerman per il casework — copertura SO più ampia, output CSV, ben collaudato. Usa Velociraptor per triage live su scala. Usa ShimCacheParser di Mandiant quando serve un riferimento Python semplice. Usa questo strumento se vuoi zero installazioni e zero upload — triage rapido nel browser. Incrocia i risultati in caso di disaccordo: il formato è abbastanza permaloso da far divergere a volte due parser.

I quattro parser che contano

StrumentoLinguaggioDistribuzioneIdeale per
Mandiant ShimCacheParserPythonSorgente su GitHubCapire il formato, scriptare analisi custom
Eric Zimmerman AppCompatCacheParserC# / .NETEseguibile unicoCasework — il più affidabile per i report
Velociraptor Windows.Registry.AppCompatCacheVQLServer VelociraptorRaccolta live su scala di flotta
Shimcache Parser (questo strumento)Rust → WebAssemblySolo browser, nessuna installazioneTriage rapido senza setup; nessun dato lascia la macchina

Quando usare quale

AppCompatCacheParser di Eric Zimmerman (lo standard per il casework)

Il parser C# di EZ è lo standard de facto per l'analisi offline. Copre tutte le versioni di Windows da XP a 11, riproduce automaticamente i log di transazione di SYSTEM e produce CSV che si incastra perfettamente in Timeline Explorer. Se l'output finisce in un report, è quello che i revisori si aspettano.

AppCompatCacheParser.exe -f SYSTEM --csv .

Limitazioni: solo binario Windows; serve .NET Framework / Core; poco adatto a triage rapido nel browser.

Velociraptor Windows.Registry.AppCompatCache (raccolta su scala)

Quando bisogna estrarre lo ShimCache da decine o migliaia di host, vince Velociraptor. L'artefatto legge la cache in memoria direttamente dagli endpoint attivi — la stessa vista che il SO avrebbe flushato allo spegnimento, ma senza aspettare. Vedi Estrarre lo ShimCache da un dump di memoria.

Limitazioni: richiede l'infrastruttura Velociraptor. Sovradimensionato per analisi puntuali.

ShimCacheParser di Mandiant (il riferimento del formato)

La proof-of-concept Python originale. Meno raffinato di EZ ma utile quando vuoi leggere il codice per capire come si decodifica il formato, o per scriptare analisi custom. Output testuale; da integrare in pipeline Python.

python ShimCacheParser.py -t -h /percorso/a/SYSTEM

Limitazioni: richiede Python 2.x (o un fork di compatibilità); CSV / JSON meno rifiniti di EZ.

Questo Shimcache Parser (zero installazioni, zero upload)

Questo strumento esiste per due casi che gli altri non coprono bene:

  1. Triage senza installazione: apri la pagina, trascina una hive, vedi le voci. Utile su host senza tooling DFIR installato, o per analisi su laptop / muletto.
  2. Analisi sensibile: la hive viene processata interamente nel tuo browser via WebAssembly. Il file non lascia la pagina, non tocca server, non compare in log. Conta quando la hive appartiene a un cliente / caso dove l'upload non è accettabile.

Compromessi: niente CLI, niente export CSV (per ora), niente hook di automazione. Per triage guidato da umani, non pipeline. Per le pipeline, EZ.

Cross-validation: quando due parser non sono d'accordo

Il formato binario non perdona — la referenza del formato Windows 10/11 mostra come un solo offset sbagliato possa rovinare il resto. In pratica i parser concordano, ma alcune hive reali sono leggermente fuori spec, e i parser divergono su:

  • Rilevamento del bitness su hive Win7 — l'header non dice esplicitamente «x86 vs x64»; i parser scelgono euristicamente. Due strumenti che danno percorsi diversi sulla stessa hive sono il segnale.
  • Normalizzazione dei percorsi — escaping dei backslash, maiuscole/minuscole dei drive, prefissi \??\. Ogni parser normalizza in modo diverso.
  • Voci vuote / placeholder — alcuni emettono righe vuote, altri le saltano.

Quando conta, lanciane due e fai diff. Combinazioni consigliate:

  • EZ + questo strumento per controllo rapido
  • EZ + Mandiant per «Python vs C#»
  • EZ + Velociraptor per «memoria vs disco»

Trappole comuni

  • Non dimenticare i log di transazione. SYSTEM.LOG1 / SYSTEM.LOG2 portano le scritture in attesa; senza di loro leggi una hive vecchia. EZ li riproduce automaticamente, altri no. Vedi Acquisire una hive SYSTEM.
  • Non confrontare direttamente ShimCache su disco e in memoria. Fonti di verità diverse — disco mostra solo l'ultimo arresto pulito, memoria mostra la sessione corrente. Complementari, non ridondanti.
  • Non dare l'esecuzione per scontata. Nessun parser risolve questo — la cache registra l'esame, non l'esecuzione.

Approfondimenti

Articoli correlati