ShimCache vs Prefetch: qual prova que um programa rodou?

3 min de leitura

TL;DR. O Prefetch é prova real de execução, com contagem e horas de execução. O ShimCache só prova que um arquivo existiu e foi examinado. Se você precisa de «rodou, e quando?», recorra primeiro ao Prefetch; se o Prefetch estiver desativado ou apagado, o ShimCache vira sua testemunha de reserva sobre a existência.

ShimCache e Prefetch são comparados o tempo todo porque ambos trazem à tona «programas num host Windows». Mas não são o mesmo tipo de evidência, e tratá-los como intercambiáveis produz conclusões erradas. Aqui está a comparação direta.

Visão geral

ShimCachePrefetch
LocalizaçãoHKLM\SYSTEM\…\AppCompatCacheC:\Windows\Prefetch\*.pf
O que provaO arquivo existiu / foi examinadoO arquivo foi executado
Contador de execuçõesNãoSim
Marcas de execuçãoNão (só o mtime do arquivo)Sim — últimas 8 execuções
Arquivos referenciadosNãoSim — DLLs, arquivos de dados carregados
Gravado quandoSó no desligamento limpoEm ~10 s após a execução
Padrão em servidoresSimFrequentemente desativado
CapacidadeAté 1.024 entradas1.024 arquivos .pf (Win8+)

Onde o Prefetch vence

O Prefetch é o artefato de execução mais forte, ponto. Cada arquivo .pf dá a última hora de execução (até oito no Windows 8+), uma contagem total de execuções e a lista de arquivos que o processo carregou. Isso basta para afirmar «este binário foi executado nestes horários» — algo que o ShimCache nunca consegue fazer, porque sua única marca de tempo é a data de última modificação do arquivo, não uma hora de execução.

Onde o ShimCache vence

O Prefetch tem uma fraqueza crítica: ele é frequentemente desativado em servidores, em imagens otimizadas para SSD e pelos atacantes (EnablePrefetcher = 0). Também é apagado ativamente por ferramentas de limpeza. O ShimCache, em contraste, está sempre ativo e é sensível o bastante para registrar um binário que foi solto e apagado antes mesmo de rodar. Quando o Prefetch está vazio, o ShimCache ainda costuma responder a «este arquivo alguma vez tocou este host?» — veja O ShimCache prova que um programa foi executado? para até onde levar essa inferência.

Como usá-los juntos

  • Ambos presentes, caminhos coincidentes: prova forte de execução. Use as horas do Prefetch como linha do tempo de eventos; use o mtime do ShimCache só para ancorar a identidade do arquivo.
  • Só Prefetch: a execução está provada; o ShimCache pode simplesmente ainda não ter sido descarregado (só grava no desligamento — veja onde o ShimCache é armazenado).
  • Só ShimCache: o arquivo existiu e foi examinado. Não afirme execução sem corroboração — puxe AmCache, BAM e logs de eventos (matriz completa aqui).
  • Nenhum dos dois, mas suspeita de execução: procure antiforense. Apagamento do Prefetch mais um descarregamento de ShimCache ausente é por si só um achado, tratado em Antiforense do ShimCache.

Para ler o lado ShimCache sem instalar nada, solte uma colmeia SYSTEM no Shimcache Parser — inteiramente no navegador.

Leitura adicional

Artigos relacionados