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
| Ferramenta | Linguagem | Distribuição | Melhor para |
|---|---|---|---|
| Mandiant ShimCacheParser | Python | Código no GitHub | Ler o formato, script de análise custom |
| Eric Zimmerman AppCompatCacheParser | C# / .NET | Binário único | Trabalho de caso — mais confiável para relatórios |
Velociraptor Windows.Registry.AppCompatCache | VQL | Servidor Velociraptor | Coleta ao vivo em escala de frota |
| Shimcache Parser (esta ferramenta) | Rust → WebAssembly | Apenas navegador, sem instalação | Triagem 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:
- 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.
- 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.LOG2carregam 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
- AppCompatCacheParser do Eric Zimmerman — parser de referência.
- ShimCacheParser da Mandiant — implementação Python original.
- Velociraptor
Windows.Registry.AppCompatCache— artefato VQL. - Windows 10/11 AppCompatCache deep dive (Ø Security) — explica por que os parsers ocasionalmente divergem.