Comparando parsers de ShimCache: Mandiant, Zimmerman, Velociraptor e esta ferramenta

4 min de leitura

TL;DR. Use o AppCompatCacheParser do Eric Zimmerman para casework — maior cobertura de SO, saída CSV, bem testado. Use o Velociraptor para triagem ao vivo em escala. Use o ShimCacheParser da Mandiant quando uma referência simples em Python ajudar. Use esta ferramenta quando quiser zero instalação e zero upload — triagem rápida no navegador. Cruze resultados quando houver discordância: o formato é exigente o bastante para que dois parsers vejam coisas diferentes ocasionalmente.

Os quatro parsers que importam

FerramentaLinguagemDistribuiçãoMelhor para
Mandiant ShimCacheParserPythonCódigo no GitHubLer o formato, script de análise custom
Eric Zimmerman AppCompatCacheParserC# / .NETBinário únicoTrabalho de caso — mais confiável para relatórios
Velociraptor Windows.Registry.AppCompatCacheVQLServidor VelociraptorColeta ao vivo em escala de frota
Shimcache Parser (esta ferramenta)Rust → WebAssemblyApenas navegador, sem instalaçãoTriagem rápida sem setup; nenhum dado deixa a máquina

Quando usar qual

AppCompatCacheParser do Eric Zimmerman (padrão para casework)

O parser em C# do EZ é o padrão de fato para análise offline. Cobre todas as versões do Windows do XP ao 11, reproduz automaticamente os logs de transação do SYSTEM e produz CSV que cai bem no Timeline Explorer. Se a saída vai para um relatório final, é o que os revisores esperam.

AppCompatCacheParser.exe -f SYSTEM --csv .

Limitações: binário apenas Windows; precisa de .NET Framework / Core; pouco adequado para triagem ad-hoc no navegador.

Velociraptor Windows.Registry.AppCompatCache (coleta em escala)

Quando você precisa puxar o ShimCache de dezenas ou milhares de hosts, vence o Velociraptor. O artefato lê o cache em memória direto dos endpoints em execução — a mesma visão que o SO teria gravado no shutdown, mas sem esperar. Veja Extraindo o ShimCache de um dump de memória.

Limitações: exige infraestrutura Velociraptor. Exagerado para análises pontuais.

ShimCacheParser da Mandiant (a referência do formato)

A prova de conceito original em Python. Menos polido que o EZ, mas útil quando você quer ler o código para entender como o formato é decodificado, ou para scriptear análises custom. Saída em texto simples; integre em pipelines Python.

python ShimCacheParser.py -t -h /caminho/para/SYSTEM

Limitações: precisa de Python 2.x (ou fork de compatibilidade); CSV / JSON menos polidos que o EZ.

Este Shimcache Parser (sem instalação, sem upload)

Esta ferramenta existe para dois casos que as outras não cobrem bem:

  1. Triagem sem instalação: abra a página, solte uma hive, veja as entradas. Útil em hosts sem ferramentas DFIR instaladas, ou ao analisar em laptop / emprestado.
  2. Análise sensível: a hive é processada por inteiro no seu navegador via WebAssembly. O arquivo nunca sai da página, nunca toca um servidor, nunca aparece em logs. Importa quando a hive pertence a um cliente / caso em que upload é inaceitável.

Trade-offs: sem CLI, sem exportação CSV (ainda), sem hooks de automação. Para triagem guiada por humano, não pipelines. Para pipelines, EZ.

Cross-validation: quando dois parsers discordam

O formato binário é implacável — a referência do formato Windows 10/11 mostra como um único offset errado pode cascatear. Na prática, os parsers concordam, mas hives reais às vezes saem ligeiramente fora de especificação, e os parsers divergem em:

  • Detecção de bitness em hives Win7 — o cabeçalho não diz explicitamente «x86 vs x64»; os parsers escolhem heuristicamente. Duas ferramentas dando caminhos diferentes na mesma hive são o seu sinal.
  • Normalização de caminhos — escapamento de barras invertidas, maiúsculas/minúsculas dos drives, prefixos \??\. Cada parser normaliza diferente.
  • Entradas vazias / placeholders — uns emitem linhas em branco, outros pulam.

Quando importa, rode dois parsers e diff. Combinações que recomendo:

  • EZ + esta ferramenta para checagem rápida
  • EZ + Mandiant para sanity «Python vs C#»
  • EZ + Velociraptor para «memória vs disco»

Armadilhas comuns

  • Não esqueça os logs de transação. SYSTEM.LOG1 / SYSTEM.LOG2 carregam escritas pendentes; sem eles você lê uma hive desatualizada. O EZ reproduz automaticamente, outros não. Veja Adquirindo uma hive SYSTEM.
  • Não compare ShimCache em disco e em memória diretamente. Fontes de verdade diferentes — disco mostra só o último desligamento limpo; memória mostra a sessão atual. Complementares, não redundantes.
  • Não assuma execução. Nenhum parser conserta isso — o cache registra exame, não execução.

Leitura adicional

Artigos relacionados