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
| ShimCache | Prefetch | |
|---|---|---|
| Localização | HKLM\SYSTEM\…\AppCompatCache | C:\Windows\Prefetch\*.pf |
| O que prova | O arquivo existiu / foi examinado | O arquivo foi executado |
| Contador de execuções | Não | Sim |
| Marcas de execução | Não (só o mtime do arquivo) | Sim — últimas 8 execuções |
| Arquivos referenciados | Não | Sim — DLLs, arquivos de dados carregados |
| Gravado quando | Só no desligamento limpo | Em ~10 s após a execução |
| Padrão em servidores | Sim | Frequentemente desativado |
| Capacidade | Até 1.024 entradas | 1.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
- Notas do formato Prefetch (libscca) — a referência do formato binário
.pf. - Mandiant: leveraging the ShimCache — define o papel forense do ShimCache.