Las columnas de salida de AmcacheParser explicadas: cada campo CSV decodificado

AmcacheParser escribe un CSV distinto por categoría Inventory*. La mayoría de analistas pasa el 90 % de su tiempo en dos de esos archivos — *_UnassociatedFileEntries.csv y *_AssociatedFileEntries.csv — pero cada columna de cada archivo es potencialmente útil. Esta es la referencia sobre qué significa cada una.

Para el contexto más amplio sobre la herramienta, ver la guía completa de AmcacheParser.


Los siete archivos CSV#

Tras una ejecución típica con --csv .\out, verás:

Archivo Clave fuente Volumen típico
*_AssociatedFileEntries.csv Root\InventoryApplicationFile vinculado a una InventoryApplication cientos a miles
*_UnassociatedFileEntries.csv Root\InventoryApplicationFile sin aplicación padre cientos a miles
*_ProgramEntries.csv Root\Programs (lista antigua de software instalado) cientos bajos
*_ShortcutEntries.csv Root\InventoryApplicationShortcut decenas
*_DriverBinaries.csv Root\InventoryDriverBinary cientos
*_DevicePnps.csv Root\InventoryDevicePnp cientos
*_DeviceContainers.csv Root\InventoryDeviceContainer decenas

El archivo Unassociated es el que la mayoría de analistas pivota primero: ahí aterrizan típicamente los binarios descargados sobre la marcha, el tooling de atacantes y los scripts puntuales, porque nunca se instalaron a través de un producto registrado.


Columnas de entradas de archivo (Associated / Unassociated)#

Los dos CSVs de entradas de archivo comparten el mismo esquema. Columnas que usarás en casi todos los casos:

Identidad y ruta#

Columna Significado Notas
ApplicationName Nombre de visualización resuelto por Windows A menudo vacío en entradas sin asociar.
ProgramId Hash de identidad de programa Windows de 44 caracteres Pivota a Root\InventoryApplication para encontrar el registro del producto instalado.
FileId "0000" + SHA-1 hex de los primeros 31 MiB del archivo Quita el prefijo 0000 para obtener un SHA-1 que puedes enviar a VirusTotal / feeds TI.
Hash Copia conveniente del SHA-1 sin prefijo Usa esta columna, no FileId, para joinear con feeds de hashes externos.
Name Solo nombre de archivo kernel32.dll, mimikatz.exe, etc.
FullPath Ruta completa en el momento del inventario Si la ruta contiene \Users\ o \AppData\ y Publisher está vacío, mira con detenimiento.
Publisher Cadena editor desde la firma PE / recursos Vacío para binarios sin firmar.
PublisherName Nombre de editor más amigable A veces poblado cuando Publisher es el CN X.509.
BinaryType Arquitectura / tipo (pe32, pe64, pe32_arm, ...) Útil para filtrar PE nativo vs managed.

Marcas de tiempo#

Amcache es una mina de marcas de tiempo, pero significan cosas distintas. Haz bien esta distinción o datarás mal tus hallazgos.

Columna Qué es No confundir con
KeyLastWriteTimestamp Last-write de registro de la clave contenedora "Cuándo se inventarió el archivo." Lo más parecido a una "hora Amcache" real.
LinkDate TimeDateStamp del header PE, fijado en compilación/enlazado "Cuándo se creó el archivo" — lo fija el compilador, lo controla el atacante y suele falsificarse.
BinFileVersion / ProductVersion Cadenas de versión desde el recurso PE No son marcas de tiempo.
LastModified Algunos esquemas Amcache exponen un FILETIME de última modificación No presente en todas las versiones de esquema; tratar como best-effort.

El pivote "cuándo" correcto para Amcache es KeyLastWriteTimestamp. LinkDate es fantástico para agrupar binarios (todos los compilados el mismo día por el atacante se agrupan) pero no es una señal de "este binario se colocó en este host a esta hora".

Versión / metadatos#

Columna Significado
BinFileVersion PE VS_FIXEDFILEINFO.dwFileVersion
BinProductVersion PE VS_FIXEDFILEINFO.dwProductVersion
ProductName Recurso PE ProductName
ProductVersion Recurso PE ProductVersion (forma cadena)
FileVersionString Recurso PE FileVersion
Language ID de idioma del recurso PE
Size Tamaño del archivo en bytes

Banderas#

Columna Significado Filtro por defecto
IsPeFile True si Amcache clasificó el archivo como PE Filtra a True para cazar artefactos ejecutables.
IsOsComponent True si el archivo pertenece a Windows Filtra a False salvo que se pasara -i; los componentes OS son ruidosos.

Ciclo de vida / metadatos de inventario#

Columna Significado
Usn Entrada del journal USN asociada al archivo en el inventario
Description Descripción libre, a menudo del recurso PE
LongPathHash Hash que Amcache usa internamente para deduplicación de rutas
MsiInstallDate Cuándo se instaló el MSI padre (si lo hay)
MsiPackageCode GUID del paquete MSI

ProgramEntries.csv (clave antigua Programs)#

La clave antigua Root\Programs precede al esquema Inventory* y es más escasa. Columnas más usadas:

Columna Significado
ProgramId Misma identidad de 44 caracteres usada en los CSVs de entradas de archivo
LastWriteTimestamp Last-write de registro de la entrada
Name Nombre de visualización del programa
Version Versión del programa
Publisher Cadena editor
InstallDate Fecha de instalación (FILETIME → ISO-8601)
LanguageCode LCID
InstallSource Ruta origen (CD, compartición de red, carpeta de descargas)
UninstallString Línea de comandos que desinstalaría el programa
RootDirPath Directorio de instalación
Source MSI, AddRemoveProgram, etc.

InstallSource es el arma secreta aquí: a veces registra la compartición de red o URL de descarga desde donde se obtuvo el instalador, lo que es invaluable cuando investigas intrusiones por cadena de suministro o ingeniería social.


DriverBinaries.csv#

Para artefactos en modo kernel. Columnas:

Columna Significado
KeyLastWriteTimestamp Hora de inventario
DriverName Nombre del archivo de driver
Inf .inf fuente
DriverVersion Cadena de versión del driver
Product Nombre de producto desde el recurso PE del driver
ProductVersion Versión del producto
WdfVersion Versión de Windows Driver Framework, si aplica
DriverCompany Cadena de compañía
DriverPackageStrongName Strong name
Service Nombre de servicio asociado
DriverSigned Si el driver decía estar firmado
DriverIsKernelMode True para drivers en modo kernel
DriverType legacy, pnp, service, ...
DriverTimeStamp Fecha de link PE del driver
Hash SHA-1 del binario del driver

Para investigaciones BYOVD (bring-your-own-vulnerable-driver), ordena por DriverTimeStamp y busca drivers antiguos-pero-firmados que aparecieron recientemente en el host.


DeviceContainers.csv#

Historia de dispositivos conectados. Columnas más relevantes:

Columna Significado
KeyLastWriteTimestamp Cuándo se tocó por última vez el registro del dispositivo
Categories Categorías del dispositivo (impresora, pantalla, red, ...)
DiscoveryMethod Cómo Windows enumeró el dispositivo
FriendlyName "Brother HL-L2350DW", "Logitech BRIO", ...
Manufacturer Cadena del fabricante
ModelName / ModelNumber Identificadores de modelo
IsConnected Bandera de conectado en el inventario
IsPaired Emparejado (Bluetooth, etc.)
Icon Ruta al recurso de icono del dispositivo

Este archivo suele responder a "¿se conectó alguna vez este periférico X a este host?" sin tener que vadear los logs de Setup.


DevicePnps.csv#

Registros de enumeración PnP — una fila por interfaz de dispositivo. Columnas más útiles en DFIR:

Columna Significado
KeyLastWriteTimestamp Cuándo se tocó por última vez el registro PnP
BusReportedDescription Lo que el dispositivo le dijo a Windows que era
DeviceClass GUID de clase del driver
DeviceId / InstanceId Identificador de instancia PnP
Manufacturer Cadena del fabricante
Service Servicio del driver
DriverName Archivo de driver detrás del dispositivo

Junta el InstanceId aquí con la fila correspondiente en DeviceContainers.csv para obtener tanto el nombre orientado al usuario como los IDs técnicos.


ShortcutEntries.csv#

Cada acceso directo del menú Inicio / anclado que Windows conoce, con el ProgramId correspondiente y la marca de tiempo del inventario. Menos usado para respuesta a incidentes, pero útil para "¿qué tenía anclado el usuario el $FECHA?".


Pivotes que se ganan el sueldo#

Algunos patrones inter-columna que aparecen una y otra vez:

  1. Hash en todas partes. Toma Hash de *_UnassociatedFileEntries.csv y búscalo en *_AssociatedFileEntries.csv, el CSV de Prefetch del host y los eventos Sysmon 1/7. Un binario que aparece en Amcache pero nunca en Prefetch es "presente pero nunca ejecutado" — un hallazgo muy distinto de "ejecutado".

  2. Publisher vacío + ruta bajo \Users\. Es el filtro de triage más productivo en una investigación típica de malware commodity.

  3. Agrupamiento por LinkDate. Ordena todas las entradas PE sin asociar por LinkDate y busca grupos apretados de 3 a 10 binarios con el mismo día de compilación. Suele ser un único drop de herramientas de atacante.

  4. URLs InstallSource en ProgramEntries. Cuando veas un programa sospechoso, mira su InstallSource — a menudo apunta directamente al vector de entrega.

  5. Join por ventana KeyLastWriteTimestamp. Junta todos los CSVs en una ventana de una hora alrededor de la hora de acceso inicial sospechada y obtienes la imagen completa de lo que Windows inventarió durante la intrusión.


Ver también#

¿Quieres ver estas columnas en tu propio hive sin instalar nada? Suelta el archivo en la página de inicio del analizador — se analiza completamente en tu navegador.

Artículos relacionados

Volver a todos los artículos