O ShimCache do Windows — também chamado de Application Compatibility Cache (AppCompatCache) — é um dos artefatos mais citados na resposta a incidentes moderna em Windows. Também é um dos mais mal compreendidos. Esta breve introdução explica o que ele realmente registra, onde reside e como os investigadores devem (e não devem) interpretá-lo.
O que o ShimCache registra
Quando o Windows examina um executável para decidir se um shim de compatibilidade precisa ser aplicado, ele registra esse exame no ShimCache. São mantidas até 1.024 entradas por sistema, cada uma contendo no mínimo:
- o caminho completo do executável,
- o carimbo de tempo
$STANDARD_INFORMATIONda última modificação do arquivo, - e, em versões mais antigas do Windows, sinalizadores indicando se o arquivo foi executado.
O cache reside em memória volátil enquanto o sistema está em execução e só é gravado no registro no desligamento. Esse detalhe de temporização importa: um reinício forçado ou uma VM desligada bruscamente pode perder completamente as entradas recentes.
Onde fica
O ShimCache fica na hive SYSTEM em:
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache\AppCompatCache
O valor é um único blob binário cuja estrutura varia conforme a versão do Windows — XP, 7, 8, 8.1, 10 e 11 usam cada uma um layout ligeiramente diferente. Analisá-lo offline significa extrair o valor e decodificá-lo conforme o esquema correto. É exatamente o que esta ferramenta faz, inteiramente no seu navegador, sem nenhum upload.
Valor forense
O ShimCache é usado principalmente para demonstrar a existência de um programa: um determinado binário esteve, em algum momento, presente no disco de um host específico. Isso é útil para:
- atribuir a presença de malware mesmo após a exclusão do arquivo,
- enriquecer linhas do tempo de execução construídas a partir de Prefetch ou AmCache,
- corroborar achados de EDR ou telemetria do Sysmon.
Três armadilhas que mordem
- O carimbo de tempo é o mtime do arquivo, não o momento de execução. Um binário copiado sem preservar os timestamps mostrará seu mtime original.
- Uma entrada não é prova de execução. No Windows 10 e 11, o sinalizador de execução no cache foi removido por completo. Combine o ShimCache com Prefetch, AmCache e logs de eventos antes de afirmar que um programa foi executado.
- O cache enche, expulsa entradas antigas e é apagado no desligamento. Entradas recentes que nunca chegaram ao disco simplesmente se perdem.
Usado com cuidado e corroborado com outros artefatos, o ShimCache é um ponto de pivô de alto sinal. Trate cada entrada como uma hipótese a confirmar, não como uma conclusão.
Por onde continuar
Para aprofundar, o resto do blog está organizado em dois grupos temáticos.
Entender o ShimCache
- ShimCache vs AmCache: qual artefato do Windows responde a qual pergunta
- O ShimCache prova que um programa foi executado?
- Onde o ShimCache fica armazenado e quando é escrito?
- Prefetch, AmCache, ShimCache: referência rápida de artefatos de execução
- Analisando o ShimCache: o formato binário do Windows 10 e 11
Usá-lo em investigações
- Como adquirir uma hive SYSTEM do Windows para análise offline do ShimCache
- Caçando malware com o ShimCache: um fluxo passo a passo
- Usando o ShimCache em investigações de ransomware
- Extraindo o ShimCache de um dump de memória
- Atacantes podem apagar o ShimCache? Anti-forense e detecção
- Construindo uma timeline de execução de programas a partir de uma hive SYSTEM
- Comparando parsers de ShimCache: Mandiant, Zimmerman, Velociraptor e esta ferramenta