Analisando Artefatos Amcache do Windows
Quando Usar
- Determinar quais programas existiram ou foram executados em um sistema Windows durante a resposta a incidentes
- Correlacionar hashes SHA-1 do Amcache com bancos de dados de malware conhecidos (VirusTotal, CIRCL, MISP)
- Construir uma linha do tempo de instalação e execução de aplicativos para investigações forenses
- Identificar executáveis excluídos que deixam vestígios no Amcache mesmo após a remoção do arquivo
- Investigar ameaças internas documentando quais aplicativos portáteis ou não autorizados estavam presentes
- Analisar o histórico de carregamento de drivers para detectar rootkits ou módulos de kernel maliciosos
Não use como prova única de execução de programa. O Amcache comprova a existência do arquivo e o registro de metadados, mas o ShimCache (AppCompatCache) e o Prefetch fornecem evidências de execução mais fortes. Use todos os três artefatos juntos para uma análise conclusiva.
Pré-requisitos
- Uma imagem forense ou cópia de triagem ao vivo de
C:\Windows\appcompat\Programs\Amcache.hve(e os logs de transação associados.LOG1,.LOG2) - AmcacheParser de Eric Zimmerman (
AmcacheParser.exe) baixado de https://ericzimmerman.github.io/ - Timeline Explorer de Eric Zimmerman para visualizar a saída CSV analisada
- Opcionalmente: Registry Explorer para inspeção manual do hive
- Uma lista de permissões SHA-1 de executáveis conhecidos como seguros (ex.: conjunto de hashes NSRL) para filtragem
- Runtime .NET 6+ instalado (exigido pelas ferramentas EZ atuais)
- Acesso de gravação a um diretório de saída para resultados CSV
Fluxo de Trabalho
Passo 1: Adquirir o Arquivo Amcache.hve
Extraia o hive Amcache de uma imagem forense ou sistema ao vivo:
# De um sistema ao vivo (requer privilégios elevados e ferramenta de cópia bruta)
# Amcache.hve está bloqueado pelo sistema; use uma ferramenta de cópia de disco bruto
# Opção A: FTK Imager - monte a imagem e navegue para:
# C:\Windows\appcompat\Programs\Amcache.hve
# Colete também: Amcache.hve.LOG1, Amcache.hve.LOG2
# Opção B: Usando KAPE para coleta automatizada de triagem
kape.exe --tsource C: --tdest D:\Evidence\%m --target Amcache
# Opção C: De uma imagem forense montada (E: = imagem montada)
copy "E:\Windows\appcompat\Programs\Amcache.hve" D:\Evidence\
copy "E:\Windows\appcompat\Programs\Amcache.hve.LOG1" D:\Evidence\
copy "E:\Windows\appcompat\Programs\Amcache.hve.LOG2" D:\Evidence\
Sempre colete os arquivos de log de transação (.LOG1, .LOG2) junto com o hive. O AmcacheParser reproduz transações não confirmadas desses logs para recuperar os dados mais completos.
Passo 2: Analisar o Amcache com AmcacheParser
Execute o AmcacheParser contra o hive adquirido:
# Análise básica com saída CSV
AmcacheParser.exe -f "D:\Evidence\Amcache.hve" --csv "D:\Evidence\Output"
# Análise com uma lista de permissões SHA-1 para excluir entradas conhecidas como seguras (NSRL)
AmcacheParser.exe -f "D:\Evidence\Amcache.hve" -w "D:\Whitelists\nsrl_sha1.txt" --csv "D:\Evidence\Output"
# Análise com uma lista de inclusão SHA-1 (mostra apenas correspondências com hashes conhecidos como ruins)
AmcacheParser.exe -f "D:\Evidence\Amcache.hve" -b "D:\IOCs\malware_sha1.txt" --csv "D:\Evidence\Output"
# Incluir entradas excluídas com carimbos de data/hora de alta precisão
AmcacheParser.exe -f "D:\Evidence\Amcache.hve" --csv "D:\Evidence\Output" -i --mp
O AmcacheParser produz vários arquivos CSV no diretório de saída:
| Arquivo de Saída | Conteúdo |
|---|---|
Amcache_AssociatedFileEntries.csv | Entradas de arquivo com hashes SHA-1, caminhos, tamanhos e carimbos de data/hora |
Amcache_UnassociatedFileEntries.csv | Entradas de arquivo órfãs de formato Amcache mais antigo |
Amcache_ProgramEntries.csv | Metadados de programas instalados (nome, editor, versão, data de instalação) |
Amcache_DeviceContainers.csv | Histórico de conexão de USB e dispositivos |
Amcache_DevicePnps.csv | Informações de drivers de dispositivos Plug-and-Play |
Amcache_DriverBinaries.csv | Binários de drivers carregados com caminhos e hashes |
Passo 3: Analisar Entradas de Arquivo para Programas Suspeitos
Abra o AssociatedFileEntries.csv no Timeline Explorer e examine as colunas principais:
Colunas principais a serem revisadas:
- ProgramId : Vincula o arquivo à sua entrada de programa pai
- SHA1 : Hash para consultas de inteligência de ameaças
- FullPath : Localização original do arquivo no disco
- FileSize : Tamanho do executável
- FileKeyLastWriteTimestamp : Quando a entrada Amcache foi atualizada pela última vez
- Name : Nome do arquivo
- Publisher : Editor da assinatura de código (em branco = não assinado)
- BinProductVersion : String de versão do cabeçalho PE
- LinkDate : Carimbo de data/hora de compilação do PE (útil para detectar timestomping)
Filtre por indicadores suspeitos:
# No Timeline Explorer, aplique estes filtros:
# 1. Encontrar executáveis não assinados (potencialmente maliciosos)
Coluna Publisher = (vazio)
# 2. Encontrar executáveis de caminhos suspeitos
FullPath contém: \temp\, \appdata\, \downloads\, \public\, \programdata\
# 3. Encontrar executáveis com carimbos de data/hora recentes durante a janela de incidente
FileKeyLastWriteTimestamp entre: 2026-03-15 00:00:00 e 2026-03-16 00:00:00
# 4. Encontrar executáveis com datas de compilação suspeitas (timestomping)
LinkDate ano < 2015 AND FileKeyLastWriteTimestamp ano = 2026
Passo 4: Correlacionar Hashes SHA-1 com Inteligência de Ameaças
Extraia hashes SHA-1 e verifique contra bancos de dados de malware:
# Extrair hashes SHA-1 únicos da saída analisada
# Usando PowerShell para extrair a coluna SHA1
Import-Csv "D:\Evidence\Output\Amcache_AssociatedFileEntries.csv" |
Select-Object -ExpandProperty SHA1 -Unique |
Where-Object { $_ -ne "" } |
Out-File "D:\Evidence\Output\extracted_hashes.txt"
# Verificar hashes contra VirusTotal usando vt-cli
foreach ($hash in Get-Content "D:\Evidence\Output\extracted_hashes.txt") {
vt file $hash --format json | Select-Object -Property meaningful_name, last_analysis_stats
}
# Verificar hashes contra CIRCL hashlookup
foreach ($hash in Get-Content "D:\Evidence\Output\extracted_hashes.txt") {
Invoke-RestMethod -Uri "https://hashlookup.circl.lu/lookup/sha1/$hash"
}
# Cruzar referência com NSRL para identificar conhecido-bom vs. desconhecido
# Hashes desconhecidos que não estão no NSRL merecem investigação mais aprofundada
Passo 5: Analisar Entradas de Programa para Instalações Não Autorizadas
Revise o ProgramEntries.csv para software que o atacante possa ter instalado:
Colunas principais em ProgramEntries:
- ProgramName : Nome de exibição do aplicativo instalado
- ProgramVersion : String de versão
- Publisher : Editor do software
- InstallDate : Quando o programa foi instalado
- Source : Fonte de instalação (msi, exe, etc.)
- UninstallKey : Caminho de desinstalação do registro
- PathsList : Diretórios de instalação
Procure por:
- Ferramentas de acesso remoto (AnyDesk, TeamViewer, ngrok, Chisel)
- Ferramentas de hacking (Mimikatz, PsExec, Cobalt Strike)
- Utilitários de tunelamento (plink, socat, WireGuard)
- Programas instalados durante a janela de incidente
- Programas instalados em locais não padrão
Passo 6: Analisar Binários de Driver para Evidências de Rootkit
Revise o DriverBinaries.csv para drivers carregados suspeitos:
Colunas principais em DriverBinaries:
- DriverName : Nome do driver
- DriverInBox : Se veio com o Windows (falso = terceiros)
- DriverSigned : Se o driver tem uma assinatura válida
- DriverTimeStamp : Carimbo de data/hora de compilação
- Product : Produto associado ao driver
- ProductVersion : Versão do driver
- SHA1 : Hash do binário do driver
Filtre por DriverInBox = false e DriverSigned = false para encontrar drivers de terceiros não assinados que podem ser rootkits ou drivers vulneráveis usados em ataques BYOVD (Bring Your Own Vulnerable Driver).
Passo 7: Construir uma Linha do Tempo a partir dos Dados Amcache
Combine os dados Amcache com outros artefatos para uma linha do tempo abrangente:
# Mesclar CSV Amcache com saída de outras ferramentas EZ usando Timeline Explorer
# Carregue os seguintes CSVs no Timeline Explorer:
# - Amcache_AssociatedFileEntries.csv (evidência de arquivo)
# - Amcache_ProgramEntries.csv (evidência de instalação)
# - Saída do Prefetch do PECmd.exe (evidência de execução)
# - Saída do ShimCache do AppCompatCacheParser.exe (evidência de execução)
# Classificar todas as entradas por carimbo de data/hora para reconstruir a sequência do ataque
# Timeline Explorer suporta carregamento de múltiplos arquivos e classificação por coluna
# Exportar a linha do tempo combinada
# File > Save to CSV > combined_timeline.csv
Conceitos Principais
| Termo | Definição |
|---|---|
| Amcache.hve | Um hive de registro do Windows em C:\Windows\appcompat\Programs\Amcache.hve que armazena metadados sobre aplicativos, arquivos e drivers para fins de compatibilidade de aplicativos |
| Entrada de Arquivo Associada | Um registro Amcache vinculado a uma instalação de programa específica, contendo caminho do arquivo, tamanho, hash e carimbos de data/hora |
| Entrada de Arquivo Não Associada | Um registro Amcache órfão de um formato mais antigo que não está vinculado a uma entrada de programa; comum em sistemas Windows 7/8 |
| Entrada de Programa | Registro Amcache contendo metadados de instalação: nome do programa, versão, editor, data de instalação e chave de desinstalação |
| Hash SHA-1 | Hash criptográfico armazenado no Amcache para cada arquivo registrado, permitindo identificação de malware através de consultas de inteligência de ameaças |
| LinkDate | O carimbo de data/hora de compilação PE embutido no cabeçalho do executável; discrepância com os carimbos de data/hora do sistema de arquivos pode indicar timestomping |
| Logs de Transação | Arquivos .LOG1 e .LOG2 contendo transações de registro não confirmadas que o AmcacheParser reproduz para recuperação completa de dados |
| NSRL (National Software Reference Library) | Banco de dados mantido pelo NIST de hashes SHA-1 para software comercial conhecido, usado como lista de permissões para filtrar entradas benignas |
Verificação
- Amcache.hve e logs de transação (LOG1, LOG2) foram coletados da imagem forense
- AmcacheParser produziu todos os arquivos CSV de saída esperados sem erros
- Hashes SHA-1 foram extraídos e verificados contra VirusTotal ou CIRCL hashlookup
- Executáveis não assinados em caminhos suspeitos foram sinalizados para análise posterior
- Entradas de programa mostram todas as instalações de software dentro da janela de incidente
- Binários de driver foram verificados para entradas não assinadas ou fora do padrão
- Comparação de LinkDate vs. FileKeyLastWriteTimestamp foi realizada para detectar timestomping
- Descobertas Amcache são correlacionadas com Prefetch e ShimCache para confirmação de execução
- Linha do tempo final integra dados Amcache com outros artefatos forenses