ShimCache vs AmCache: que artefacto do Windows responde a que pergunta

4 min de leitura

TL;DR. A ShimCache prova que um ficheiro existiu em disco. A AmCache prova que foi executado e identifica-o por SHA-1. A ShimCache só descarrega num clean shutdown. A AmCache escreve continuamente. Recolha as duas. São coelhas-testemunhas, não substitutas.

Cada analista júnior que integrei fez a mesma pergunta na primeira semana: "Se a AmCache é melhor, porque é que ainda extraímos a ShimCache?" A resposta é que registam eventos diferentes, em momentos diferentes, com modos de falha diferentes. Trate-as como substitutas e escreverá relatórios que se desfazem na primeira revisão técnica.

Árvore de decisão ShimCache vs AmCache

Numa rápida vista de olhos

ShimCacheAmCache
Localização no registoHKLM\SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCacheC:\Windows\AppCompat\Programs\Amcache.hve
CapacidadeAté cerca de 1024 entradasMilhares de entradas, sem limite fixo
Dados por entradaCaminho, mtime do ficheiro, flag de execução (legado)Caminho, SHA-1, tamanho, publisher, data de instalação e muito mais
Quando é escritaApenas em clean shutdownContinuamente e em execuções da tarefa Appraiser
Sobrevive a reboot forçadoNão, perde entradas recentesSim, já está em disco
Melhor paraProvar que um ficheiro existiu em discoProvar que um ficheiro correu e identificá-lo por hash

Quando a ShimCache ganha

A cache dispara em exame, não em execução. Essa sensibilidade torna-a a melhor testemunha para ficheiros que um atacante largou brevemente e depois apagou. Um binário que aterrou em C:\Users\Public\ às 14:33 e foi eliminado às 14:35 pode ainda aparecer na ShimCache se o Windows lhe tiver tocado por qualquer razão nessa janela de dois minutos.

A cache transporta também o mtime $STANDARD_INFORMATION do ficheiro. Esse timestamp não é uma hora de execução. É uma propriedade do ficheiro, o que significa que sobrevive a renomeações e cópias que preservem metadata. Útil para agrupar builds relacionados entre hosts. Inútil para sequenciar eventos numa timeline, como detalhado em o que o timestamp da ShimCache realmente significa.

Quando a AmCache ganha

Pergunte à AmCache "este binário foi de facto executado, e qual binário exatamente?" e obterá uma resposta real. Cada entrada InventoryApplicationFile em Amcache.hve traz um hash SHA-1, tamanho do ficheiro, publisher, estado de assinatura, e um LastWrite por ficheiro que funciona como proxy de "quando o Appraiser deu por isto". Isto basta para pivotar para o VirusTotal, para threat intel, ou para outros hosts do parque mesmo quando o ficheiro em disco já desapareceu há muito.

O modelo de persistência também ganha. A AmCache é descarregada pelo compattelrunner.exe em agenda e em eventos de instalador. Reboots forçados e BSODs não destroem silenciosamente a atividade recente como fazem com a ShimCache. Extraia Amcache.hve mais Amcache.hve.LOG1 e Amcache.hve.LOG2 para reproduzir quaisquer transações pendentes.

Usando as duas em conjunto

Trate-as como coelhas-testemunhas com pontos cegos diferentes.

  • Ambas presentes, caminhos coincidem. Forte evidência de execução. Use a AmCache para identidade baseada em hash, a ShimCache para confirmar que o ficheiro viveu naquele caminho a dado momento.
  • Só ShimCache. O ficheiro existiu. Execução não está provada. Procure corroboração em Prefetch, EVTX, ou BAM/DAM.
  • Só AmCache. O host não teve um clean shutdown desde a atividade. A ShimCache nunca descarregou. Tire um dump de RAM se a máquina ainda estiver ligada; a ShimCache em memória está lá.
  • Nenhuma presente, mas suspeita de atividade. Verifique se a tarefa Appraiser correu. Um Compatibility Appraiser desativado produz hives AmCache aparentemente vazias.

Para os detalhes técnicos da disposição, veja o passo a passo do formato binário do Windows 10/11. Para analisar uma hive já sem instalar nada, largue-a no Shimcache Parser. Corre inteiramente no browser.

Leitura adicional

Artigos relacionados