A ShimCache prova que um programa foi executado?

4 min de leitura

TL;DR. Não. Uma entrada na ShimCache prova que o Windows examinou o ficheiro, geralmente mas nem sempre para execução. O Windows 10/11 removeu por completo a flag de execução em cache. Confirme execução com Prefetch, AmCache, ou eventos de criação de processo (Security 4688 / Sysmon 1).

"A ShimCache mostra que correu" é a única frase mais cara em resposta a incidentes do Windows. Entra em relatórios. É contestada pela parte contrária. Põe o analista no banco a explicar porque é que um mtime não é o início de um processo, enquanto toda a sala aprende sobre a Application Compatibility Cache mais do que alguma vez quis. Não seja esse analista.

O que a ShimCache regista de facto

A cache, formalmente a Application Compatibility Cache armazenada em HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache\AppCompatCache, captura executáveis que o Windows examinou para decidir se um shim de compatibilidade precisa de ser aplicado. Examinar não é executar. O Windows examina um binário quando:

  • Um utilizador lhe faz duplo clique.
  • O Explorer enumera uma pasta e inspeciona um header PE em busca dos dados do ícone.
  • Um scanner de AV, indexador ou EDR percorre o sistema de ficheiros.
  • Um "Propriedades" no botão direito puxa o recurso de versão.
  • Uma chamada de sistema resolve um caminho terminado em .exe.

A maioria destes acontece em conjunto com a execução. Alguns não. Um binário que um atacante largou, renomeou e apagou sem nunca o lançar pode ainda assim aparecer na cache porque o Defender o examinou enquanto chegava.

A flag que o Windows 10 levou

Builds mais antigas (XP até Windows 8.1) incorporavam uma flag Executed em cada entrada. Muitos analistas aprenderam a fazer grep por "yes" e dar por encerrado o assunto. O Windows 10 removeu essa flag. O Windows 11 não a repôs. A cache moderna transporta o caminho, um mtime e metadata estrutural. Não há marcador em cache que diga "isto correu".

Se foi treinado em hives antigas e está agora a ler um SYSTEM Windows 10/11, recalibre. A coluna "Executed" que recorda desapareceu. Cada parser que vale a pena usar (Eric Zimmerman AppCompatCacheParser, Mandiant Shim Cache Parser, esta ferramenta) reflete essa ausência honestamente. Se vir uma ferramenta a reportar uma flag de execução numa hive moderna, essa ferramenta está a inventar.

Para o layout ao nível dos campos, veja o passo a passo do formato binário do Windows 10/11.

O que confirma execução

Trate a ocorrência na ShimCache como uma hipótese. Depois vá procurar evidências que efetivamente registem criação de processos.

  • Prefetch. Os ficheiros C:\Windows\Prefetch\*.pf são escritos cerca de 10 segundos após cada início de processo em SKUs de estação de trabalho. Contagem de execuções, últimas oito horas, módulos carregados. Se o ficheiro existir, o binário correu. O Prefetch parser explica o formato e os casos de desativação.
  • AmCache. O Amcache.hve transporta hashes SHA-1 e timestamps explícitos de primeira execução, escritos continuamente. O AmCache parser tem o guia de campos.
  • EVTX / Sysmon. Security 4688 (com auditoria de linha de comandos ativa) e Sysmon Event ID 1 são os registos de maior fidelidade que vai conseguir. O EVTX parser cobre o workflow de triagem.
  • BAM / DAM. Tempos de última execução por utilizador em HKLM\SYSTEM\CurrentControlSet\Services\bam\State. Baratos de ler, criminosamente subutilizados.
  • UserAssist. Apenas lançamentos interativos via Explorer, nomes codificados em ROT13. Útil para "o utilizador fez duplo clique nisto?", não para "o binário alguma vez correu?".

Os padrões de referência cruzada estão na referência de artefactos de execução de programas.

Como formular num relatório

Mau: "A ShimCache mostra que mimikatz.exe foi executado às 14:33:21 UTC em 2026-04-11."

Melhor: "A ShimCache regista o ficheiro C:\Users\Public\mimikatz.exe com mtime $STANDARD_INFORMATION 2026-04-11 14:33:21 UTC. A entrada Prefetch MIMIKATZ.EXE-A1B2C3D4.pf mostra uma execução às 14:34:02 UTC. O SHA-1 da AmCache coincide com o build conhecido mimikatz 2.2.0."

A segunda frase resiste a contra-interrogatório. A primeira não.

Analise uma hive sem sair do browser

Largue a sua hive SYSTEM no Shimcache Parser. Tudo corre do lado do cliente. Sem upload, o que importa quando a hive vem de um ambiente regulado ou de um trabalho para um cliente.

Leitura adicional

Artigos relacionados