TL;DR. O ShimCache vive em memória; a hive SYSTEM em disco só contém entradas gravadas no último desligamento limpo. Para recuperar entradas da sessão atual de um host em execução ou crashado, rode windows.shimcachemem do Volatility 3 (ou o artefato Windows.Registry.AppCompatCache do Velociraptor) contra uma imagem de memória.
O ShimCache vive em memória volátil enquanto o Windows está rodando, e só é gravado na hive SYSTEM em um desligamento limpo (mais sobre o timing). Isso significa que uma imagem de memória de um host em funcionamento é frequentemente o único lugar para encontrar entradas do ShimCache da última sessão — exatamente as entradas mais prováveis de serem relevantes para um incidente ativo.
Quando a cópia em memória importa mais que a do disco
Você quer o ShimCache em memória quando:
- O host não foi desligado de forma limpa desde o incidente. A maioria dos reinícios forçados, BSODs e cortes forçados deixam o ShimCache da hive SYSTEM defasado.
- Você suspeita de anti-forense. Um atacante que editou a hive em disco pode não ter tocado na cópia em memória (que é reconstruída a cada sessão). Veja detecção anti-forense.
- Você precisa de entradas que foram expulsas da hive em disco no último flush. O limite de 1.024 entradas rotaciona as antigas, mas elas ainda podem estar em memória sob certas condições.
Com Volatility 2
O plugin clássico é shimcachemem. Contra uma imagem de memória XP–Win10:
vol.py -f memory.raw --profile=Win10x64_19041 shimcachemem
Ele percorre as estruturas AppCompatCache dentro da representação em memória da hive SYSTEM e imprime linhas (mtime, caminho) como um parser offline faria. Código-fonte e notas de uso do plugin ficam no repo do Volatility 2.
Com Volatility 3
O Volatility 3 leva isso adiante como windows.shimcachemem:
vol -f memory.raw windows.shimcachemem
Sem mais seleção de perfil (Vol 3 detecta o SO automaticamente). A documentação do Volatility 3 documenta o plugin junto com o restante do conjunto de artefatos Windows.
Com Velociraptor
Se você coleta em escala em vez de analisar um único dump, o artefato Windows.Registry.AppCompatCache do Velociraptor lê o ShimCache em memória diretamente de um endpoint em funcionamento via visão de registro ao vivo. É o mesmo ShimCache que o SO teria gravado no desligamento — sem esperar pelo desligamento.
Combinando as duas visões
Na prática, você frequentemente terá:
- o ShimCache em memória de um plugin Volatility ou coleta Velociraptor,
- o ShimCache em disco da hive SYSTEM do mesmo host.
A cópia em memória é um superconjunto da cópia em disco enquanto não houve desligamento limpo — mas a cópia em disco pode incluir entradas já expulsas da memória após uptime longo. Puxe ambas, desduplique por (caminho, mtime), e alimente a união no seu fluxo de caça.
Próximos passos úteis
Uma vez que você tem as entradas:
- Use o Shimcache Parser para triagem offline rápida de uma hive extraída — roda no seu navegador, sem upload.
- Veja a referência do formato binário se você está decodificando o blob bruto por conta própria.
- Veja prova de execução antes de afirmar que uma entrada recuperada de memória significa que um programa rodou.
Leitura adicional
- Documentação do Volatility 3 — o framework moderno de forense de memória.
- Volatility Foundation no GitHub — código dos plugins, incluindo
shimcachemem. - Velociraptor
Windows.Registry.AppCompatCache— coleta em sistemas vivos.