Estructura del registro Amcache: cada clave explicada
Amcache.hve es un hive del registro de Windows con una clave raíz
(Root) y un árbol de sub-claves bajo ella. Cada sub-clave contiene
una categoría de inventario diferente: archivos PE, aplicaciones
instaladas, drivers, dispositivos, accesos directos. Esta página
recorre cada clave notable, qué registra y qué valores usas
realmente en DFIR.
Para el contexto de alto nivel, ver la referencia completa de Amcache. Para la referencia a nivel de columna CSV producida por AmcacheParser, ver Columnas de salida de AmcacheParser explicadas.
Layout de nivel superior#
En un hive moderno de Windows 11, Root contiene aproximadamente:
Root\
├── InventoryApplication
├── InventoryApplicationDriver
├── InventoryApplicationFile
├── InventoryApplicationFramework
├── InventoryApplicationShortcut
├── InventoryDeviceContainer
├── InventoryDeviceInterface
├── InventoryDeviceMediaClass
├── InventoryDevicePnp
├── InventoryDriverBinary
├── InventoryDriverPackage
├── InventoryMiscellaneousUUPInfo
├── File (legacy, puede estar vacía)
└── Programs (legacy, a menudo escasa)
El schema moderno es Inventory*. El schema legacy son las
claves planas File y Programs, presentes desde Windows 8 en
adelante. Windows 10 (build 1709 y posterior) y Windows 11 ambos
escriben el schema moderno; pueden seguir apareciendo algunas
entradas legacy según el build.
Root\InventoryApplicationFile — la clave estrella#
Esta es la clave en la que pasas la mayor parte de tu tiempo. Una
sub-clave por archivo que el appraiser inventarió, nombrada según
el LongPathHash del archivo (un identificador interno de Amcache)
sufijado con un breve discriminador. Cada sub-clave contiene
valores para ese archivo.
Valores notables#
| Nombre del valor | Tipo | Significado |
|---|---|---|
Name |
REG_SZ |
Solo el nombre del archivo (p. ej. mimikatz.exe). |
LowerCaseLongPath |
REG_SZ |
Ruta completa, en minúsculas. |
LongPathHash |
REG_SZ |
Hash interno de dedup de rutas de Amcache. |
FileId |
REG_SZ |
"0000" + sha1_hex — el hash de contenido del archivo. Ver Amcache FileId explicado. |
Size |
REG_QWORD |
Tamaño del archivo en bytes. |
IsPeFile |
REG_DWORD |
1 si el archivo es un PE. |
IsOsComponent |
REG_DWORD |
1 si el archivo forma parte de Windows. |
Publisher |
REG_SZ |
Cadena de publisher de la firma / recurso PE. |
Version |
REG_SZ |
VS_FIXEDFILEINFO.dwFileVersion. |
BinFileVersion |
REG_SZ |
Versión binaria de archivo. |
BinProductVersion |
REG_SZ |
Versión binaria de producto. |
ProductName |
REG_SZ |
ProductName del recurso PE. |
ProductVersion |
REG_SZ |
ProductVersion del recurso PE. |
LinkDate |
REG_SZ |
PE IMAGE_FILE_HEADER.TimeDateStamp (hora de compilación/enlazado). |
Language |
REG_DWORD |
ID de idioma del recurso PE. |
Usn |
REG_QWORD |
Entrada del journal USN vinculada a este inventario. |
ProgramId |
REG_SZ |
Hash de identidad de aplicación de 44 caracteres — empareja con InventoryApplication. Ver Amcache ProgramId explicado. |
El LastWriteTimestamp propio de la clave (no un valor, sino
los metadatos a nivel del registro) es lo que AmcacheParser expone
como KeyLastWriteTimestamp. Es la marca de tiempo más útil para
"¿cuándo registró Amcache esta entrada?". Cobertura completa:
Marcas de tiempo de Amcache explicadas.
Asociadas vs no asociadas#
Cuando AmcacheParser lee esta clave, divide las entradas en dos CSVs:
*_AssociatedFileEntries.csv— entradas cuyoProgramIdcoincide con una entrada enInventoryApplication. El archivo está asociado a un producto instalado.*_UnassociatedFileEntries.csv— entradas cuyoProgramIdno coincide con ningún registro de aplicación instalada. Típicamente son binarios ad-hoc, herramientas descargadas, scripts y — relevante para DFIR — herramientas del atacante.
El archivo Unassociated es donde aparecen la mayoría de los binarios maliciosos en un host comprometido.
Root\InventoryApplication — aplicaciones instaladas#
Una sub-clave por aplicación instalada, indexada por ProgramId.
Valores notables:
| Nombre del valor | Significado |
|---|---|
ProgramId |
La identidad de 44 caracteres, también usada como nombre de la sub-clave. |
Name |
Nombre de visualización de la aplicación. |
Version |
Versión de la aplicación. |
Publisher |
Cadena del publisher. |
RootDirPath |
Directorio de instalación. |
Source |
Cómo el appraiser supo de la app: MSI, AddRemoveProgram, Win32WindowsUpdate, Inbox, ... |
Type |
Tipo de aplicación (Application, Driver, ...). |
Language |
LCID. |
MsiPackageCode |
GUID del MSI, si proviene de un MSI. |
MsiProductCode |
Código de producto del MSI, si proviene de un MSI. |
InstallDate |
Fecha de instalación de la aplicación (FILETIME). |
Patrón de pivote: toma un ProgramId de un archivo sospechoso en
InventoryApplicationFile, encuentra la aplicación correspondiente
aquí, y tienes el contexto completo del producto instalado
(publisher, versión, fecha de instalación) para ese archivo.
Root\InventoryDriverBinary — binarios de driver en modo kernel#
Una sub-clave por binario de driver que el sistema cargó. Valores notables:
| Nombre del valor | Significado |
|---|---|
DriverName |
Nombre del archivo del driver. |
Inf |
El .inf que lo instaló. |
DriverVersion |
Cadena de versión del driver. |
Product |
ProductName del recurso PE. |
ProductVersion |
ProductVersion del recurso PE. |
WdfVersion |
Versión del Windows Driver Framework. |
DriverCompany |
Cadena de empresa del PE. |
DriverPackageStrongName |
Strong name. |
Service |
Nombre del servicio asociado. |
DriverSigned |
Si el driver reclamó una firma válida. |
DriverIsKernelMode |
1 para drivers en modo kernel. |
DriverTimeStamp |
Fecha de link PE del driver. |
ImageSize |
Tamaño de la imagen en bytes. |
Hash |
SHA-1 del driver. |
Para investigaciones BYOVD (bring-your-own-vulnerable-driver),
ordena por DriverTimeStamp ascendente y busca drivers
antiguos-pero-firmados que aparecieron recientemente en el host. Un
driver compilado en 2014 que aparece por primera vez en tu Amcache
hoy es sospechoso por construcción.
Root\InventoryDeviceContainer — dispositivos conectados#
Una sub-clave por "contenedor de dispositivo" que Windows rastrea (impresoras, pantallas, controladores de medios extraíbles, dispositivos Bluetooth, almacenamiento en red, ...). Valores notables:
| Nombre del valor | Significado |
|---|---|
FriendlyName |
"Brother HL-L2350DW", "Logitech BRIO", ... |
Manufacturer |
Cadena del fabricante. |
ModelName / ModelNumber |
Identificadores de modelo. |
Categories |
Categorías del dispositivo. |
DiscoveryMethod |
Cómo Windows enumeró el dispositivo. |
IsConnected |
1 si está conectado en el último inventario. |
IsPaired |
1 si está emparejado (Bluetooth, etc.). |
Icon |
Ruta al recurso de icono del dispositivo. |
Esta suele ser la respuesta más limpia a "¿se conectó alguna vez este periférico a este host?". Para la historia específica de USB-mass-storage, ver Historia de USB y dispositivos en Amcache.
Root\InventoryDevicePnp — registros de enumeración PnP#
Una sub-clave por interfaz de dispositivo. Valores notables:
| Nombre del valor | Significado |
|---|---|
BusReportedDescription |
Lo que el dispositivo le dijo a Windows que era. |
DeviceClass |
GUID de la clase del driver. |
DeviceId / InstanceId |
Identificador de instancia PnP. |
Manufacturer |
Cadena del fabricante. |
Model |
Cadena del modelo. |
Service |
Servicio del driver. |
DriverName |
Archivo de driver que respalda el dispositivo. |
DevicePnp es la vista técnica; DeviceContainer es la vista de
cara al usuario. Empareja los dos por InstanceId para la imagen
completa.
Root\InventoryApplicationShortcut — accesos directos del menú Inicio / anclados#
Una sub-clave por acceso directo que Windows rastrea. Cada entrada
incluye la ruta de destino del acceso directo y un ProgramId que
enlaza con la aplicación padre. Menos usada en respuesta a
incidentes, pero útil para preguntas tipo "qué tenía el usuario
anclado en $FECHA".
Root\InventoryApplicationDriver y InventoryApplicationFramework#
Estos son catálogos más pequeños vinculados a la vista moderna
InventoryApplication. Driver lista drivers en modo usuario
asociados a aplicaciones instaladas; Framework lista dependencias
de framework. Ambos surgen con poca frecuencia en DFIR; son más
útiles para auditorías de inventario de aplicaciones que para
respuesta a incidentes.
Root\InventoryMiscellaneousUUPInfo#
Registra información sobre paquetes Unified Update Platform. Raramente relevante para investigaciones de seguridad, salvo que estés trazando cómo se entregó una actualización específica de Windows.
Root\Programs (legacy)#
El catálogo más antiguo de aplicaciones instaladas, anterior a
InventoryApplication. Metadatos más escasos, pero en algunos
builds antiguos esta es la única lista de aplicaciones
poblada. AmcacheParser lo expone como *_ProgramEntries.csv.
Valores notables:
| Nombre del valor | Significado |
|---|---|
Name |
Nombre de visualización del programa. |
Version |
Versión del programa. |
Publisher |
Cadena del publisher. |
InstallDate |
Fecha de instalación (FILETIME). |
LanguageCode |
LCID. |
InstallSource |
Ruta de origen (CD, recurso compartido en red, carpeta de descargas, URL). |
UninstallString |
Línea de comandos de desinstalación. |
RootDirPath |
Directorio de instalación. |
Source |
MSI, AddRemoveProgram, etc. |
Type |
Application, Driver, etc. |
ProgramInstanceId |
Identificador por instalación. |
InstallSource es el valor al que hay que prestar atención. A
veces registra la URL de descarga o el recurso compartido de red
del que vino un instalador, lo cual es invaluable cuando se
investigan intrusiones de cadena de suministro o ingeniería
social.
Root\File (legacy)#
El catálogo por archivo más antiguo. En hives modernos esta clave
suele estar vacía o contener un pequeño subconjunto de lo que
registra InventoryApplicationFile. Vale la pena comprobarlo,
pero rara vez es la fuente primaria en un host Windows 10+.
Cómo se codifican los valores#
Algunas peculiaridades de codificación que vale la pena conocer:
- Las marcas de tiempo se almacenan principalmente como valores
FILETIMEde Windows de 64 bits (ticks de 100 ns desde 1601-01-01 UTC). AmcacheParser las convierte a ISO-8601 UTC. - Las fechas de link PE se almacenan como valores
time_tde 32 bits (segundos desde 1970-01-01 UTC). AmcacheParser también las convierte. - Los hashes se almacenan como cadenas de 41 caracteres con un
prefijo de tipo
"0000". - Los booleanos son
REG_DWORD0o1. - Las cadenas de ruta se almacenan en minúsculas en
LowerCaseLongPath. El case original no se preserva.
Ver también#
- Referencia completa de Amcache — la visión general de alto nivel.
- Amcache FileId explicado — el
identificador
"0000" + sha1en detalle. - Amcache ProgramId explicado — la identidad de aplicación de 44 caracteres.
- Marcas de tiempo de Amcache explicadas
—
KeyLastWriteTimestampvsLinkDatey compañía. - Columnas de salida de AmcacheParser explicadas — cada campo CSV, mapeado de vuelta a estos valores del registro.
Para explorar la estructura en un hive que controles, suelta un archivo en la página de inicio del parser — cada clave y valor es navegable en la UI.
Artículos relacionados
- Amcache: la referencia forense completa del hive Windows .hve
Amcache es el hive del registro de Windows donde el appraiser inventaría cada binario PE, con SHA-1, ruta, publisher y marca de tiempo. Referencia completa.
- ¿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.