TL;DR. Construa uma timeline fundida de ShimCache + AmCache + Prefetch + BAM/DAM + Security/Sysmon. Use o ShimCache para definir o elenco (caminhos), depois enriqueça cada linha com timestamps de outras fontes. Etiquete cada timestamp com sua semântica de origem — nunca colapse «mtime do arquivo» e «início do processo» na mesma coluna.
Uma timeline de execução de programas é o artefato singular mais útil que um investigador IR de Windows produz. Bem feita, conta uma história cronológica através de várias fontes. Mal feita, exagera as evidências e é contestada. Este post mostra como construir uma com o ShimCache como espinha dorsal.
Por que o ShimCache é uma boa espinha dorsal
O ShimCache raramente é a fonte mais precisa para qualquer campo individual, mas tem vantagens únicas como âncora temporal:
- Carrega o caminho do arquivo explicitamente (alguns artefatos só têm hashes ou caminhos parciais).
- Captura executáveis que o Windows apenas examinou — portanto inclui binários que rodaram brevemente e foram apagados, que Prefetch e BAM podem perder.
- Sobrevive a muitas tentativas anti-forenses que apagam outros artefatos (com ressalvas importantes).
Use o ShimCache para definir o elenco da sua timeline, depois enriqueça cada linha com artefatos corroborantes para atribuir horários confiáveis.
As fontes a fundir
Uma timeline completa de execução puxa de pelo menos estas cinco:
| Fonte | O que adiciona à linha |
|---|---|
| ShimCache | Caminho + mtime do arquivo |
| AmCache | SHA-1, tamanho, editor, data de instalação, data da primeira execução |
| Prefetch | Horários de início de processo (até os 8 últimos), arquivos carregados |
| BAM/DAM | Timestamp «última execução» por usuário no Win10/11 |
| Security/Sysmon | Eventos de criação de processo com linha de comando, parent, usuário |
Para o detalhe de cada uma, veja a referência de artefatos de execução.
Um fluxo reprodutível
- Colete os artefatos. Hive SYSTEM (com logs de transação),
Amcache.hve,C:\Windows\Prefetch\*.pf, log Security exportado, log Sysmon se disponível. - Parseie cada um em uma tabela normalizada. Use a suíte Eric Zimmerman (
AppCompatCacheParser,AmcacheParser,PECmd) ou o Shimcache Parser para a parte ShimCache no seu navegador. - Funda em (caminho, SHA-1 opcional). A chave de junção é o caminho, com SHA-1 como sinal secundário quando AmCache fornece. Cuidado: o ShimCache pode ter o caminho ligeiramente diferente (maiúsculas, normalização).
- Rotule cada timestamp com sua semântica de fonte. Não funda «data de instalação AmCache» e «horário de execução Prefetch» em uma única coluna — respondem a perguntas diferentes. Mantenha-as adjacentes mas distintas.
- Renderize com uma ferramenta que lide com atribuição por linha. O Timeline Explorer (TLE) de Eric Zimmerman e o Plaso / log2timeline fazem isso bem. CSV em planilha funciona para casos menores.
Como uma linha «boa» se parece
Uma linha defensável em uma timeline final se parece com:
2026-04-12 09:14:33 UTC C:\Users\alice\AppData\Local\Temp\setup.exe
ShimCache mtime : 2026-04-12 09:14:30 UTC
AmCache : SHA-1 a3b8c9…, signatário «Acme Updates», install 2026-04-12 09:14:33
Prefetch : última execução 2026-04-12 09:15:01 UTC (1 execução)
Security 4688 : 2026-04-12 09:15:01 UTC, PID 4521, PID pai 1234 (svchost.exe)
Cada timestamp é fonteado e a linha aguenta contestação. O oposto — «o ShimCache mostra que setup.exe rodou às 09:14:33» — confunde mtime do arquivo com horário de execução e é o tipo de afirmação que faz um relatório ser rejeitado. Veja prova de execução.
Quando as fontes discordam
Conflitos são dados úteis:
- mtime ShimCache ≠ primeira execução Prefetch. Normal — eles medem coisas diferentes. Anote ambos, não escolha um.
- AmCache diz executado, ShimCache está vazio para esse arquivo. Possíveis razões: apagamento anti-forense (padrões de detecção), entrada expulsa do teto de 1.024, binário que rodou depois do último desligamento limpo.
- Prefetch ausente. SKUs de servidor e hosts pesados em SSD frequentemente têm Prefetch desabilitado — caia para AmCache + BAM.
Parar no ponto certo
Uma timeline não precisa ser completa para ser valiosa. Uma janela focada — «o que rodou no host X entre 14:00 e 18:00 do dia 2026-04-11?» — construída rigorosamente bate uma sprawling com atribuição fraca. O fluxo de caça a malware te ajuda a escolher essa janela.
Leitura adicional
- Plaso / log2timeline — motor de timeline open-source que consome ShimCache, AmCache, Prefetch e dezenas de outros artefatos Windows.
- Ferramentas Eric Zimmerman — parsers de referência + Timeline Explorer.
- Velociraptor
Windows.Registry.AppCompatCache— coleta em escala.