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 cuyo ProgramId coincide con una entrada en InventoryApplication. El archivo está asociado a un producto instalado.
  • *_UnassociatedFileEntries.csv — entradas cuyo ProgramId no 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 FILETIME de 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_t de 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_DWORD 0 o 1.
  • Las cadenas de ruta se almacenan en minúsculas en LowerCaseLongPath. El case original no se preserva.

Ver también#

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

Volver a todos los artículos