AmcacheParser: la guía completa de la herramienta de Eric Zimmerman

AmcacheParser es la herramienta de código abierto de referencia para analizar el hive del registro de Windows Amcache.hve. Fue escrita por Eric Zimmerman, un veterano profesional de la investigación digital cuya suite de herramientas (MFTECmd, RECmd, PECmd, EvtxECmd, …) es la columna vertebral de los flujos de trabajo forenses modernos en Windows. Si alguna vez has triagiado un endpoint Windows, casi seguro que has usado AmcacheParser — directamente o a través de un wrapper como KAPE.

Esta guía es la referencia canónica sobre la herramienta: qué analiza, cómo instalarla, cómo leer su salida, dónde encaja en un flujo DFIR y cuándo puede convenir ejecutar la misma lógica de parsing en un navegador sin instalar nada (que es lo que hace este sitio).

Crédito donde corresponde. AmcacheParser es obra de Eric Zimmerman. El analizador en el navegador alojado en amcacheparser.com es un proyecto independiente que reimplementa el camino de lectura en Rust + WebAssembly para triage y formación. No está afiliado a Eric ni a su empleador.


¿Qué es AmcacheParser?#

AmcacheParser es un programa de línea de comandos (AmcacheParser.exe) que:

  1. Abre un hive Amcache.hve del registro de Windows (o una copia con sus journals de transacciones).
  2. Recorre las subclaves relevantes: Root\InventoryApplicationFile, Root\InventoryApplication, Root\InventoryDriverBinary, Root\InventoryDeviceContainer, Root\Programs, Root\File y las demás claves Inventory*.
  3. Decodifica los valores (FILETIMEs de Windows, FileIds SHA-1, cadenas de versión, GUIDs, ...) en campos legibles.
  4. Escribe un CSV por categoría, más una timeline combinada.

Es deliberadamente un analizador solo de lectura y de un único propósito: no interpreta, no puntúa, no alerta. Su salida está pensada para alimentar tu cuaderno de analista, tu SIEM, Timeline Explorer u otra herramienta de la suite Zimmerman.

Por qué a los analistas les interesa Amcache#

Amcache.hve es uno de los artefactos más ricos sobre un host Windows para presencia y ejecución de programas. A diferencia de Prefetch (que prueba que un binario realmente se ejecutó), Amcache registra a menudo binarios simplemente presentes en disco — incluyendo binarios eliminados antes de tu llegada. Para cada archivo registrado típicamente obtienes:

  • La ruta completa en el momento del inventario.
  • Un hash SHA-1 de los primeros ~31 MiB del archivo (el FileId).
  • La fecha de link PE y el tamaño del archivo.
  • El publisher, la versión y el nombre de producto de la sección de recursos PE.
  • Una marca de tiempo de cuándo se registró el inventario.

Esta combinación — ruta + hash + fecha de link + hora de inventario — es oro para la respuesta a incidentes. Permite pivotar en segundos de "un binario sospechoso corrió en un host vecino" a "¿existió este binario exacto alguna vez en este host, aunque fuera brevemente?".


¿Quién es Eric Zimmerman?#

Eric Zimmerman es exagente especial del FBI y actualmente Senior Director en Kroll, donde lidera el tooling de la práctica de respuesta a incidentes de la firma. Publica herramientas DFIR open source en ericzimmerman.github.io desde hace más de una década. AmcacheParser pertenece a la familia Get-ZimmermanTools junto a:

  • MFTECmd — analizador de $MFT, $LogFile, $J, $Boot, $SDS
  • RECmd — línea de comandos y procesador batch para hives del registro
  • RBCmd — analizador de Papelera de reciclaje
  • PECmd — analizador de Prefetch
  • EvtxECmd — analizador de registros de eventos de Windows
  • JLECmd — analizador de Jump List
  • LECmd — analizador de LNK
  • SBECmd — CLI de Shellbag Explorer

Si solo aprendes un toolset DFIR, la suite de Zimmerman es la que la mayoría de empleadores esperará que conozcas.


Cómo funciona AmcacheParser internamente#

Amcache.hve es un archivo de hive del registro de Windows estándar — el mismo formato binario que SYSTEM, SOFTWARE, SAM o NTUSER.DAT. AmcacheParser abre el archivo, recorre los bins y celdas del hive, sigue el árbol de claves/valores y decodifica valores tipados. Los campos que más interesan a los analistas están codificados de tres maneras ligeramente molestas:

  • FILETIMEs de Windows — valores de 64 bits que cuentan ticks de 100 ns desde 1601-01-01 UTC. AmcacheParser los convierte a ISO-8601 UTC.
  • Fechas de link PE — valores time_t de 32 bits del header PE IMAGE_FILE_HEADER.TimeDateStamp. No son tiempos del sistema de archivos; se fijan en compilación/enlazado y son un pivote útil.
  • FileId SHA-1 — cadena de 41 caracteres "0000" + sha1_hex. El 0000 inicial es una etiqueta de tipo histórica; los 40 caracteres hexadecimales restantes son el SHA-1 de los primeros 31 MiB del archivo tal como Amcache lo vio.

El hive en sí lo escribe la tarea programada Microsoft Compatibility Appraiser (\Microsoft\Windows\Application Experience\Microsoft Compatibility Appraiser). En builds modernos de Windows 10/11 se ejecuta aproximadamente una vez al día, por lo que Amcache.hve es uno de los mejores artefactos de "presencia a largo plazo" que tienes.

Los journals de transacciones importan#

Como cualquier hive del registro, Amcache.hve tiene journals compañeros .LOG1 / .LOG2. Si copias solo el hive sin sus journals, puedes perder las escrituras más recientes. AmcacheParser gestiona correctamente los journals si apuntas a un directorio o pasas los journals junto al hive — recógelos siempre juntos.


Instalar AmcacheParser#

Hay tres formas comunes de obtener la herramienta. Todas producen el mismo binario; elige la que se ajuste a tu entorno.

Opción 1 — Get-ZimmermanTools (recomendado)#

El instalador oficial es un pequeño script de PowerShell que descarga la suite completa en una carpeta destino y la mantiene actualizada.

# Crear una carpeta de herramientas y traer las últimas builds .NET 6
mkdir C:\Tools\ZTools
cd    C:\Tools\ZTools
Invoke-WebRequest `
  -Uri 'https://raw.githubusercontent.com/EricZimmerman/Get-ZimmermanTools/master/Get-ZimmermanTools.ps1' `
  -OutFile Get-ZimmermanTools.ps1
.\Get-ZimmermanTools.ps1 -Dest C:\Tools\ZTools -NetVersion 6

Una vez terminado, AmcacheParser.exe está en C:\Tools\ZTools\net6\AmcacheParser\. Volver a ejecutar el script más tarde actualiza cada herramienta en el sitio.

Opción 2 — Descarga directa desde ericzimmerman.github.io#

La página principal ericzimmerman.github.io ofrece un zip por cada herramienta. Es la vía correcta si el egress PowerShell está bloqueado en la estación del analista.

Opción 3 — Integrado en KAPE o Velociraptor#

Si usas KAPE o Velociraptor, AmcacheParser ya viene incorporado en sus catálogos de módulos / artefactos. Normalmente no lo instalas por separado — lo invocas a través de una definición de target / módulo que también recoge el hive por ti.

Para un desglose completo de mirrors, sumas de verificación y patrones de instalación en redes aisladas, ver la guía de descarga de AmcacheParser.


Inicio rápido: analizar un hive#

La invocación mínima son dos opciones:

AmcacheParser.exe `
  -f "C:\Triage\Windows\AppCompat\Programs\Amcache.hve" `
  --csv "C:\Triage\Output\Amcache"

Eso escribe un CSV por categoría Inventory* en la carpeta de salida. Para un incidente real casi siempre querrás algunas opciones más:

AmcacheParser.exe `
  -f "C:\Triage\Windows\AppCompat\Programs\Amcache.hve" `
  --csv "C:\Triage\Output\Amcache" `
  --csvf "HOSTNAME_amcache.csv" `
  -i `
  --mp
  • --csvf controla el nombre base para que el triage multi-host se mantenga navegable.
  • -i incluye entradas marcadas como IsOSComponent = true (desactivado por defecto porque inflan el ruido).
  • --mp ("multi-pasada") analiza entradas huérfanas / sin asociar que de otra forma se descartarían.

La matriz completa de opciones está en el cheatsheet CLI de AmcacheParser.

Cargar la salida en Timeline Explorer#

Los CSVs están pensados para Timeline Explorer de Eric. Arrastra cualquier *_UnassociatedFileEntries.csv o *_AssociatedFileEntries.csv a Timeline Explorer y obtienes columnas ordenables, filtrables y una vista instantánea de "toda la actividad en esta ventana".


Leer la salida CSV#

AmcacheParser escribe un esquema distinto por categoría. Los cuatro que tocarás en casi todos los casos:

Archivo Contenido
*_UnassociatedFileEntries.csv Archivos que Amcache vio en disco y que no están vinculados a una Inventory Application registrada. La tabla pivote más rica para binarios desconocidos.
*_AssociatedFileEntries.csv Archivos vinculados a una InventoryApplication (producto instalado).
*_DriverBinaries.csv Binarios de drivers cargados — crítico para investigaciones de rootkits de kernel.
*_DeviceContainers.csv Historia de dispositivos conectados (impresoras, monitores, controladores de medios extraíbles).

Las columnas sobre las que pivotarás más a menudo:

  • ApplicationName / Name — nombre de visualización resuelto por Windows.
  • FullPath — ruta completa en el momento del inventario.
  • FileExtension — práctico para filtrar .exe / .dll.
  • Hash (SHA-1) — el FileId sin el prefijo "0000".
  • LinkDate — hora de compilación PE.
  • FileVersionString, ProductName, Publisher, PublisherName.
  • Size — tamaño del archivo en bytes en el inventario.
  • IsPeFile, IsOsComponent — filtros rápidos.
  • KeyLastWriteTimestamp — last-write a nivel de registro de la clave contenedora. Trátalo como el pivote "hora de inventario".

Cada columna, incluidas las categorías Inventory menos comunes, está documentada en Las columnas de salida de AmcacheParser explicadas.

Ejemplos prácticos#

Algunas consultas que se ganan el sueldo en casos reales:

Encontrar archivos PE sin firmar en rutas escribibles por el usuario (post-procesamiento en PowerShell):

Import-Csv .\HOST_amcache_UnassociatedFileEntries.csv |
  Where-Object {
    $_.IsPeFile -eq 'True' -and
    -not $_.Publisher    -and
    $_.FullPath -match '\\Users\\|\\ProgramData\\|\\AppData\\'
  } |
  Select-Object KeyLastWriteTimestamp, FullPath, Hash, Size |
  Sort-Object KeyLastWriteTimestamp

Pivotar sobre un SHA-1 conocido como malicioso entre varios hosts:

Get-ChildItem -Recurse -Filter *_UnassociatedFileEntries.csv |
  ForEach-Object {
    Import-Csv $_.FullName |
      Where-Object { $_.Hash -eq 'da39a3ee5e6b4b0d3255bfef95601890afd80709' } |
      Select-Object @{n='Host';e={$_.PSChildName.Split('_')[0]}}, FullPath, KeyLastWriteTimestamp
  }

Dónde encaja AmcacheParser en un flujo DFIR#

La mayoría de investigadores recurre a Amcache después de Prefetch y los registros de eventos, porque responde a una pregunta distinta:

Artefacto Responde
Prefetch "¿Se ejecutó este binario en este host?"
Registro de eventos (4688 / Sysmon 1) "¿Corrió este proceso, con qué línea de comandos, desde qué padre?"
ShimCache (AppCompatCache) "¿Fue tocado este binario por el loader recientemente?"
Amcache "¿Ha estado presente alguna vez este binario en este host, con qué hash y en qué ruta?"

La característica estrella de Amcache es la recuperación de binarios eliminados: un wiper puede borrar el archivo del disco, pero el snapshot del inventario persiste en el hive hasta la siguiente pasada del appraiser — e incluso entonces, la corrida previa suele seguir en los journals de transacciones. Cubrimos en profundidad la distinción Amcache / Prefetch / ShimCache en Entender Amcache para análisis forense de Windows.

Patrones de pipeline#

Los dos patrones de producción más comunes:

  1. KAPE collect + KAPE parse. El target Amcache de KAPE recoge el hive + los journals; su módulo AmcacheParser ejecuta el analizador en una carpeta de salida por host. Un comando, listo para Timeline Explorer.

  2. Velociraptor Windows.Forensics.Amcache. El artefacto de Velociraptor extrae el hive, ejecuta AmcacheParser en el lado servidor y sube el CSV. Combínalo con un hunt para extenderlo a miles de endpoints.

Ambos patrones se cubren con comandos listos para copiar en el cheatsheet CLI.


La alternativa en el navegador#

La herramienta alojada en este sitio es una reimplementación del camino de lectura en Rust + WebAssembly. Existe porque hay situaciones en las que la CLI de Windows no es la herramienta correcta en ese momento:

  • Un analista no-Windows abre un .hve en su navegador sin instalar el runtime de .NET ni una build de Zimmerman.
  • Un estudiante quiere ver cómo es Amcache antes de pagar un laboratorio DFIR completo.
  • Triage en un host bloqueado donde desplegar nuevos binarios requiere un ticket de cambio.
  • Mostrar un hive a un stakeholder en una compartición de pantalla sin exponerlo a un servidor de terceros.

El archivo nunca sale de tu navegador. El parsing ocurre en el lado cliente en WebAssembly; sin subida, sin procesamiento en servidor, sin telemetría. Suelta un hive en la página de inicio para probarlo.

Para investigaciones completas en una estación de analista Windows, el AmcacheParser.exe oficial de Eric sigue siendo la herramienta correcta — maneja todos los casos límite, se integra con el resto de la suite y produce el formato CSV que esperan todas las herramientas downstream. La versión navegador es para triage, formación y los casos en los que instalar algo es la respuesta incorrecta.


Preguntas frecuentes#

¿AmcacheParser es gratuito?#

Sí. Está publicado bajo una licencia permisiva por Eric Zimmerman y es libre para cualquier uso, incluidos los engagements DFIR comerciales.

¿En qué sistemas operativos corre AmcacheParser?#

AmcacheParser.exe es una aplicación .NET 6 / .NET 9. Corre nativamente en Windows y en Linux / macOS a través del runtime .NET (dotnet AmcacheParser.dll en hosts no-Windows con la build framework-dependent).

¿AmcacheParser modifica el hive?#

No. Abre el hive en solo lectura y solo escribe la salida CSV en la ruta que especifiques con --csv.

¿Cuál es la diferencia entre AmcacheParser y el plugin amcache de RegRipper?#

Ambos analizan el mismo hive. El plugin de RegRipper emite un informe de texto legible; AmcacheParser emite CSV estructurado con una fila por entrada de inventario, mucho más fácil de cargar en una hoja de cálculo, un SIEM o Timeline Explorer. La mayoría de los playbooks modernos usan AmcacheParser; RegRipper sigue siendo popular para análisis interactivo puntual.

¿Amcache registra todos los binarios ejecutados?#

No. Amcache registra presencia y metadatos de inventario, no ejecución. Un binario puede aparecer en Amcache sin haberse ejecutado nunca, y un binario puede ejecutarse sin aparecer en Amcache si el appraiser no ha vuelto a pasar desde entonces. Combínalo con Prefetch y eventos de creación de proceso para probar ejecución.

¿Dónde se encuentra Amcache.hve en un sistema en vivo?#

C:\Windows\AppCompat\Programs\Amcache.hve, con los journals de transacciones Amcache.hve.LOG1 y Amcache.hve.LOG2 al lado. El target Amcache de KAPE recoge los tres.

¿Puedo usar AmcacheParser sobre una imagen de memoria?#

No directamente. AmcacheParser analiza el formato de hive en disco. Para analizar Amcache desde memoria, usa los plugins de registro de Volatility para extraer el hive y luego pásalo a AmcacheParser.


Lectura adicional#

¿Listo para mirar un hive ahora mismo? Suelta uno en la página de inicio del analizador — nunca sale de tu navegador.

Artículos relacionados

Volver a todos los artículos