Amcache: la referencia forense completa del hive Windows .hve
TL;DR — Amcache en un párrafo. Amcache es un hive del registro de Windows (
Amcache.hve) mantenido por el Microsoft Compatibility Appraiser. Registra cada binario PE que el appraiser ha inventariado en el host, con hash SHA-1, ruta completa, publisher, fecha de link PE y marca de tiempo de inventario. Los analistas lo usan para probar que un binario estuvo presente (no necesariamente que se ejecutó), pivotar por hash entre hosts y recuperar evidencia de herramientas de atacantes eliminadas.
Amcache.hve es el hive del registro de Windows que registra qué
programas han estado presentes o se han ejecutado en una máquina,
con metadatos ricos: ruta completa, hash SHA-1, fecha de link PE,
publisher, versión y la hora de inventario. Para el análisis forense
digital y la respuesta a incidentes, es uno de los cuatro artefactos
que todo analista de Windows aprende primero — junto con Prefetch,
ShimCache y el registro de eventos de seguridad.
Esta página es la referencia canónica sobre el artefacto en sí: qué es, dónde vive, cómo lo produce Windows, qué contiene cada clave de nivel superior, cómo usarlo en una investigación y cómo se relaciona con las fuentes vecinas de evidencia de ejecución. Para cobertura de las herramientas de parsing, ver la guía completa de AmcacheParser; para la introducción breve original, ver Entender Amcache para análisis forense de Windows.
Amcache de un vistazo frente a los artefactos vecinos#
La pregunta más frecuente de los nuevos analistas de Amcache es «¿en qué se diferencia de ShimCache / Prefetch / SRUM?». Referencia rápida:
| Artefacto | Lo que prueba | ¿Hash? | ¿Ruta? | Capacidad | Fuente |
|---|---|---|---|---|---|
| Amcache.hve | Binario estuvo presente en el host | ✅ SHA-1 (primeros 31 MiB) | ✅ Completa | Miles de entradas | Compatibility Appraiser |
| ShimCache (AppCompatCache) | Binario visto por el loader | ❌ | ✅ Completa | ~1 024 entradas (LRU) | Loader Application Compatibility |
| Prefetch | Binario ejecutado | ❌ | ✅ Completa | ~1 024 archivos .pf |
Prefetcher de Windows (servicio Pf) |
| SRUM | Binario consumió recursos durante 30+ días | ❌ | ✅ Completa | Agregados por app | System Resource Usage Monitor |
| Security 4688 | Proceso creado (tiempo real) | ❌ | ✅ Completa | Acotado por rotación del log | Subsistema de auditoría |
Regla de pivote: Amcache para presencia y hash; ShimCache para la lista vista por el loader; Prefetch para ejecución; SRUM para uso a lo largo del tiempo; 4688 para el evento en tiempo real. Detalle de cada emparejamiento: Amcache vs ShimCache, Amcache vs Prefetch, Amcache vs SRUM, Amcache vs AppCompatCache.
Qué es Amcache realmente#
Amcache es un hive del registro — el mismo formato binario que
SYSTEM, SOFTWARE, SAM, SECURITY y NTUSER.DAT. No es un
archivo de log, no es una base de datos, no es una lista plana. Es
un árbol clave/valor con valores tipados, y esa estructura es lo que
lo hace a la vez rico y ligeramente molesto de leer a mano.
El hive lo puebla el Microsoft Compatibility Appraiser, una tarea
programada que viene con Windows en
\Microsoft\Windows\Application Experience\Microsoft Compatibility Appraiser.
El appraiser escanea el sistema en busca de software instalado y
presente, recopila metadatos del header PE de cada archivo y escribe
registros de inventario estructurados en el hive. En builds modernos
de Windows 10 y 11, el appraiser se ejecuta aproximadamente una vez
al día; en builds de Windows Server la cadencia varía pero suele ser
varias veces por semana.
El appraiser formaba parte originalmente de la infraestructura del Customer Experience Improvement Program (CEIP) — el mecanismo de Microsoft para enviar telemetría de compatibilidad a sus servidores antes de las grandes actualizaciones de Windows. El valor forense de Amcache es, en cierto sentido, un accidente de ese pipeline de telemetría: el appraiser tenía que mantener un inventario local para saber qué enviar, y ese inventario local es sobre lo que ahora pivotan los analistas.
Por qué importa a los analistas#
Amcache responde a una pregunta que ningún otro artefacto de Windows responde con tanta claridad:
"¿Ha estado este ejecutable alguna vez presente en este host, y si es así, con qué SHA-1, en qué ruta y aproximadamente cuándo?"
Tres cosas hacen que esa pregunta sea de alto valor en DFIR:
- Sobrevive al borrado. Un wiper puede eliminar el binario del disco; el snapshot del inventario en el hive persiste hasta la siguiente pasada del appraiser — e incluso entonces, la corrida previa suele seguir en los journals de transacciones.
- Pre-hashea el binario. Amcache almacena el SHA-1 de los primeros ~31 MiB del archivo en el momento del inventario. Aunque ya no tengas el binario, puedes enviar ese hash a VirusTotal, feeds de threat intel o tu base de datos interna de allowlist.
- Registra la ruta. Dónde vivía el binario en disco suele ser
la historia completa —
\Users\<name>\AppData\Local\Temp\svchost.exees su propia acusación.
Dónde vive Amcache#
En un sistema Windows en vivo:
C:\Windows\AppCompat\Programs\Amcache.hve
C:\Windows\AppCompat\Programs\Amcache.hve.LOG1
C:\Windows\AppCompat\Programs\Amcache.hve.LOG2
Los archivos .LOG1 y .LOG2 son los journals de transacciones
del hive — el mismo mecanismo de log write-ahead que usa cualquier
hive del registro. Recoge siempre los tres juntos. Si tomas solo
Amcache.hve, puedes perder silenciosamente las escrituras más
recientes, porque los cambios más recientes pueden seguir en los
logs esperando ser volcados.
Para el conjunto completo de preguntas relacionadas con la ubicación (rutas en Windows más antiguos, dónde se encuentra en una imagen forense, cómo lo recogen KAPE / Velociraptor), ver Dónde está Amcache.hve en disco.
Historia a través de versiones de Windows#
El hive tiene una historia pequeña pero desordenada:
- Windows 7 / Server 2008 R2 introdujo el artefacto como
RecentFileCache.bcf— un archivo binario plano, no un hive, y con muchos menos metadatos. No es directamente comparable al Amcache moderno. - Windows 8 / 8.1 introdujo
Amcache.hveen su forma de hive con las clavesRoot\FileyRoot\Programs(el schema "legacy"). - Windows 10 build 1709 (Fall Creators Update) añadió las
claves
Root\InventoryApplicationFiley demásInventory*— el schema moderno. Las claves legacy permanecieron por compatibilidad en algunos builds pero se volvieron más escasas con el tiempo. - Windows 11 continúa el schema de Windows 10 con adiciones menores, notablemente registros más granulares de drivers y contenedores de dispositivos.
Cuando parseas un hive, normalmente trabajas con el schema moderno
Inventory*. Las claves legacy Root\Programs y Root\File
siguen mereciendo una revisión en sistemas antiguos y en builds donde
el appraiser ha sido desactivado — a veces capturan datos que las
claves modernas omiten. Cubrimos los aspectos específicos de cada
versión de Windows en
Amcache en Windows 11 y 10 y
Amcache en Windows Server.
La estructura del hive#
En el nivel superior, el hive tiene una única clave Root con estas
sub-claves notables (en un sistema Windows 11 moderno):
Root\
├── InventoryApplication
├── InventoryApplicationDriver
├── InventoryApplicationFile
├── InventoryApplicationFramework
├── InventoryApplicationShortcut
├── InventoryDeviceContainer
├── InventoryDeviceInterface
├── InventoryDevicePnp
├── InventoryDriverBinary
├── InventoryDriverPackage
├── InventoryMiscellaneousUUPInfo
├── File (legacy)
└── Programs (legacy)
Las cinco que los analistas DFIR tocan en esencialmente cada caso:
| Clave | Registra |
|---|---|
InventoryApplicationFile |
Cada archivo PE que el appraiser inventarió, con ruta completa, SHA-1, fecha de link, publisher, versión. La fuente individual más rica. |
InventoryApplication |
Aplicaciones instaladas (entradas MSI / Agregar o quitar programas). Padres de los registros de archivo vía ProgramId. |
InventoryDriverBinary |
Cada binario de driver que cargó el sistema, con flags signed/kernel-mode. Crítico para investigaciones BYOVD. |
InventoryDeviceContainer |
Registros de dispositivos con nombres amigables: impresoras, pantallas, controladores de medios extraíbles. |
InventoryDevicePnp |
Registros de enumeración PnP, uno por interfaz de dispositivo. Se empareja con InventoryDeviceContainer vía InstanceId. |
Para un desglose clave por clave — cada sub-clave, cada valor notable y qué significa — ver Estructura del registro Amcache y sus claves.
Versionado del schema#
El schema de Amcache ha cambiado varias veces a lo largo de la vida de Windows 10. Aparecen nuevos nombres de valor; los viejos desaparecen o cambian de tipo. Por eso un visor genérico del registro es una mala herramienta para Amcache — los valores que muestra son correctos pero sin etiquetar, y pasas más tiempo correlacionando con posts de blog que analizando. Usa un parser de propósito específico (AmcacheParser, el parser en el navegador de este sitio, o el plugin amcache de RegRipper) y deja que la herramienta siga el schema por ti.
Los campos que los analistas realmente usan#
Un puñado de valores por entrada de inventario carga con el 90% del peso investigativo:
FileId#
La cadena de 41 caracteres "0000" + sha1_hex que identifica de
forma única un archivo por contenido. 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. Quita el prefijo y
tienes un hash que puedes enviar a VirusTotal, feeds IOC o tu base
de datos de allowlist de hashes directamente.
Algunas trampas:
- El hash cubre solo los primeros 31 MiB, no el archivo completo. Para instaladores y binarios grandes sigue siendo distintivo, pero técnicamente es un hash de prefijo, no un hash de contenido completo.
- Los archivos de menos de 31 MiB se hashean por completo, por lo que el resultado coincide con un SHA-1 estándar.
Cobertura completa: Amcache FileId explicado.
ProgramId#
Un hash de identidad de 44 caracteres que Windows asigna a una
aplicación lógica — una combinación de nombre, publisher, versión e
idioma. El mismo ProgramId vincula un archivo en
InventoryApplicationFile con el registro de aplicación padre en
InventoryApplication. También es estable entre hosts: dos
máquinas con la misma aplicación instalada normalmente comparten el
mismo ProgramId para ella, lo que la convierte en un pivote útil
para hunts entre hosts.
Cobertura completa: Amcache ProgramId explicado.
Marcas de tiempo#
Amcache expone múltiples marcas de tiempo diferentes, y confundirlas es el error nº 1 que cometen los nuevos analistas de Amcache:
| Campo | Qué representa |
|---|---|
KeyLastWriteTimestamp |
Última escritura del registro de la clave que contiene esta entrada. Lo más cercano a "cuándo registró Amcache este archivo". |
LinkDate |
TimeDateStamp del header PE — cuándo se compiló / enlazó el binario. Controlable por el atacante; no lo trates como evidencia de hora de presencia. |
LastModified (cuando está presente) |
Marcador de last-modified del lado del inventario; no presente en todas las versiones del schema. |
MsiInstallDate |
Cuándo se instaló el MSI padre (si el archivo procedía de uno). |
El pivote correcto para "¿cuándo apareció este binario en este host?"
es KeyLastWriteTimestamp. Cobertura completa:
Marcas de tiempo de Amcache explicadas.
Path, publisher, IsPeFile#
El filtro de triage "¿esto es sospechoso?" en el que la mayoría de los analistas se estandarizan:
IsPeFile = TrueANDPublisherestá vacío ANDFullPathestá bajo\Users\,\AppData\,\ProgramData\o\Temp\.
Ese único filtro, aplicado a InventoryApplicationFile, saca a la
luz la inmensa mayoría de los artefactos de malware comodín en un
host típico infectado. También genera muchos falsos positivos —
software pirata, scripts personalizados de desarrolladores, apps
portables — por lo que es un filtro de triage, no una regla de
detección.
Qué no es Amcache#
Vale la pena corregir de antemano tres conceptos erróneos persistentes, porque rutinariamente producen hallazgos incorrectos:
Amcache no es "prueba de ejecución"#
Que un binario aparezca en Amcache significa que el appraiser vio el archivo en disco en el momento del inventario. El appraiser inventaría archivos en función de dónde viven (Program Files, ProgramData, el menú Inicio, rutas tocadas recientemente) — no en función de si se ejecutaron. Un binario puede aparecer en Amcache sin haberse ejecutado nunca.
Para ejecución necesitas Prefetch (la señal más fuerte), eventos de creación de proceso (4688 / Sysmon 1), ShimCache como señal corroborativa, o SRUM para correlación en ventanas más largas. Ver Amcache vs Prefetch y Amcache vs ShimCache para las distinciones canónicas, y Amcache vs SRUM para el emparejamiento en ventanas más largas.
Amcache no es completo#
El appraiser se pierde cosas:
- Archivos fuera de las rutas que escanea.
- Archivos que aparecieron y desaparecieron entre corridas del appraiser.
- Archivos en un host donde el appraiser ha sido desactivado (algunos endpoints hardenizados).
- En builds antiguos de Windows, archivos fuera del alcance legacy
Programs/File.
La ausencia de Amcache no es evidencia de que un binario nunca estuvo presente. Es evidencia solo de que el appraiser no lo vio.
Amcache no es a prueba de manipulación#
El hive vive en disco en una ubicación conocida. Un atacante con privilegios de admin puede modificarlo, borrarlo o — más sutilmente — modificar la programación del appraiser para que deje de registrar. Nada de esto es común en intrusiones de commodity (el valor de limpiar Amcache rara vez compensa el ruido que genera), pero es posible, y deberías tratar Amcache como una señal entre muchas, no como verdad fundamental.
Usar Amcache en una investigación#
El bucle investigativo estándar en una intrusión solo en Windows:
- Recoger. Toma
Amcache.hve+Amcache.hve.LOG1+Amcache.hve.LOG2. El targetAmcachede KAPE hace esto en un solo comando; el artefactoWindows.Forensics.Amcachede Velociraptor lo hace remotamente. - Parsear. Ejecuta AmcacheParser
con
--mppara recuperar entradas huérfanas. Obtendrás un CSV por categoría. - Filtro de triage. Aplica el filtro "PE sin firmar en ruta
escribible por el usuario" a
*_UnassociatedFileEntries.csv. Esto produce una lista manejable — típicamente decenas de filas en un host típico infectado. - Pivotar. Para cada fila superviviente, toma el hash SHA-1 y
compáralo con VirusTotal, tu feed de TI y tus detecciones
históricas. Para cada fila, también comprueba el
FullPathcontra tu timeline del sistema de archivos y el CSV de Prefetch — ¿muestra Prefetch que el mismo binario se ejecutó? ¿El archivo sigue existiendo en disco? - Corroborar la ejecución. Cruza las coincidencias con
Prefetch (ejecución definitiva), Sysmon
1/7(proceso e image-load) y Security 4688 (creación de proceso) si está habilitado. - Acotar en el tiempo. Toma
KeyLastWriteTimestampde las filas sospechosas y construye una ventana de tiempo ajustada alrededor. Extrae todos los eventos, cambios del sistema de archivos y escrituras del registro de esa ventana para tener la imagen completa.
Para escenarios específicos, los posts de casos de uso cubren el playbook en detalle:
- Recuperar evidencia de binarios borrados desde Amcache
- Caza de malware comodín con Amcache
- Historia de dispositivos USB y medios extraíbles desde Amcache
- Pivote de movimiento lateral con
ProgramIdde Amcache
Panorama de herramientas#
Tienes varias opciones razonables para parsear realmente el hive:
| Herramienta | Mejor para |
|---|---|
| AmcacheParser de Eric Zimmerman | DFIR de producción en una estación de analista Windows. La implementación canónica. |
| Parser en navegador (este sitio) | Triage, educación, analistas no-Windows, hosts bloqueados. Corre en WebAssembly, el archivo nunca sale del navegador. |
| Plugin amcache de RegRipper | Análisis interactivo rápido como parte de un sweep más amplio de RegRipper. |
| Plugins de Volatility | Extraer el hive de una imagen de memoria, luego pasarlo a AmcacheParser. |
Para la pregunta práctica "¿cuál debería usar ahora?", la
respuesta es casi siempre: AmcacheParser.exe de Eric para la
investigación, el parser en navegador de este sitio para triage o
una mirada rápida sin instalar nada. Los caminos de RegRipper y
Volatility existen para contextos específicos — sweeps interactivos
de RegRipper y adquisiciones solo de memoria, respectivamente.
Preguntas frecuentes#
¿Qué tamaño suele tener Amcache.hve?#
En una estación de trabajo típica de Windows 11, Amcache.hve va
de 2 MB a 25 MB. Estaciones de desarrollador muy usadas y servidores
con muchos binarios efímeros pueden superar los 50 MB. Los journals
de transacciones son pequeños (normalmente <1 MB cada uno).
¿Hasta cuándo se remonta Amcache?#
El hive no está limitado por tiempo sino por el propio
comportamiento de retención de Windows. En una estación de trabajo
de larga vida puedes ver entradas de inventario de meses o años,
especialmente para registros Inventory* donde el binario todavía
está presente en disco. Una vez que un binario se elimina y el
appraiser ha tenido varias pasadas para notarlo, la entrada
correspondiente típicamente (pero no siempre) caduca.
¿Registra Amcache DLLs?#
Sí, en los schemas modernos. InventoryApplicationFile registra
tanto EXEs como DLLs (filtrados a archivos PE en general). Hives
anteriores a Windows 10 1709 pueden no hacerlo, según el build.
¿Registra Amcache scripts?#
Generalmente no para .ps1, .bat, .vbs, .js, etc. — Amcache
se centra en binarios PE. La evidencia de ejecución de scripts
viene de los logs operacionales de PowerShell, AMSI, Sysmon o
Prefetch (para las invocaciones de cscript.exe / wscript.exe
en sí).
¿Cuál es la relación entre Amcache y ShimCache?#
Son artefactos diferentes a pesar de que ambos implican
compatibilidad de aplicaciones. ShimCache (AppCompatCache en el
hive SYSTEM) lo mantiene el loader con fines de compatibilidad
de aplicaciones y registra hasta 1024 entradas por host con
metadatos limitados. Amcache lo mantiene el appraiser con fines de
telemetría de compatibilidad y registra miles de entradas con
metadatos ricos. Ver
Amcache vs ShimCache para la
comparación completa.
¿Puedo leer Amcache.hve en Linux o macOS?#
Sí. Usa dotnet AmcacheParser.dll en un host con el runtime de
.NET, o usa el parser en navegador de este sitio que corre en
WebAssembly y funciona en cualquier navegador moderno
independientemente del SO host. El formato del hive es portable.
¿Es la evidencia de Amcache admisible en juicio?#
Eso depende de la jurisdicción y de cómo se recogió la evidencia. Amcache en sí está bien documentado y es ampliamente usado en DFIR, lo que ayuda. Aplican las reglas habituales: preserva el hive (y sus journals de transacciones) con cadena de custodia documentada, hashealo antes y después, y usa un parser documentado cuyo comportamiento puedas defender.
A dónde ir ahora#
Si llegaste aquí buscando...
- "¿Qué es este hive?" — estás en el lugar correcto. Continúa con Estructura del registro Amcache y sus claves para el siguiente nivel de detalle.
- "¿Cómo lo parseo?" — ver la guía completa de AmcacheParser.
- "Necesito investigar un escenario específico" — empieza con los posts de casos de uso: archivos borrados, malware, historia USB / de dispositivos, movimiento lateral.
- "¿Cómo se compara esto con Prefetch / ShimCache / SRUM?" — los tres posts de comparación: vs Prefetch, vs ShimCache, vs SRUM.
- "Quiero mirar un hive ahora mismo" — suelta el archivo en la página de inicio del parser. Corre enteramente en tu navegador.
Artículos relacionados
- Estructura del registro Amcache: cada clave explicada
Un recorrido clave por clave del hive del registro Amcache.hve — Root\\InventoryApplicationFile, InventoryApplication, InventoryDriverBinary, las claves legacy Programs y File, y qué significa cada valor notable.
- ¿Dónde está la clave del registro de Amcache?
Amcache es su propio archivo de hive en C:\Windows\AppCompat\Programs\Amcache.hve — no una clave bajo HKLM. Cuando es cargado por herramientas o por el propio Windows se monta como HKLM\Amcache.
- Volatility y Amcache: extraer el hive de imágenes de memoria
Una guía práctica para recuperar Amcache de una imagen de memoria de Windows usando Volatility — cuándo la recuperación del lado de memoria es la única opción, qué plugins usar y cómo entregar a AmcacheParser.
- Plugin amcache de RegRipper: qué hace y cuándo usarlo
Una guía práctica del plugin amcache de RegRipper — qué parsea, en qué se diferencia su salida de texto del CSV de AmcacheParser y cuándo recurrir a él en lugar de (o junto con) la herramienta de Zimmerman.