Amcache¶
Qué es Amcache¶
Amcache es un inventario de compatibilidad de aplicaciones de Windows almacenado en un hive del Registro. Los sistemas modernos
registran los archivos ejecutables en InventoryApplicationFile y los dispositivos Plug and Play en
InventoryDevicePnp; las versiones anteriores de Windows utilizan una estructura heredada Root\File.
En la investigación de ejecutables, Amcache es valioso porque puede conservar la ruta completa, el SHA-1, el tamaño del archivo, los metadatos PE, la información de versión, el texto del editor, la fecha de vinculación y las marcas de tiempo del Registro después de que el archivo original haya desaparecido. Los registros de dispositivos pueden identificar el hardware conectado, los controladores, las fechas de instalación y los identificadores.
Mejor conclusión: Windows inventarió el archivo o dispositivo registrado. Un registro de ejecutable es evidencia de presencia, no prueba de ejecución.
Ubicación y recopilación¶
Recopile el hive y los archivos adyacentes Amcache.hve.LOG, .LOG1 y .LOG2. Si el hive está sucio, parse-registry amcache reproduce automáticamente en memoria los registros de transacciones utilizables antes del análisis, sin modificar la evidencia. Los detalles aparecen en el registro del parser o en la terminal; al transmitir registros a stdout, los diagnósticos van a stderr. Los registros ausentes o inutilizables pueden dejar datos incompletos o impedir leer un hive inconsistente.
Precauciones para el analista¶
- Una entrada de ejecutable de Amcache no demuestra que un usuario iniciara el archivo.
Publisherson metadatos PE o del recurso de versión registrados por Windows. No demuestra que el archivo tuviera una firma Authenticode válida en el momento de la recopilación.- Los hashes pueden estar ausentes, y los esquemas heredado y moderno no exponen valores idénticos.
LinkDateprocede del encabezado PE y puede falsificarse, copiarse o generarse mediante compilaciones reproducibles.- La hora de última escritura de una clave describe la actualización del registro del Registro, no necesariamente la descarga, la creación, la primera ejecución ni la última ejecución.
- Las rutas pueden hacer referencia a volúmenes extraíbles o que ya no están presentes.
Análisis con Juntei¶
Usage: juntei parse-registry amcache <INPUT> [OPTIONS]
Input:
-d, --directory <DIR> Recursively find Amcache hives
-f, --file <FILE> Parse one Amcache.hve
Records:
--files Include every inventoried executable
--devices Include every inventoried PnP device
-a, --all Include both (default for saved structured output)
Output:
-o, --output <PATH> Save text/JSON/JSONL or a directory of CSV tables
-t, --output-type <TYPE> csv, json, jsonl, or text
# Inspect the summary and findings
juntei parse-registry amcache -f Amcache.hve
# Save all record types as CSV tables
juntei parse-registry amcache -f Amcache.hve -a -o amcache-output
# Hunt for one SHA-1 in JSONL
juntei parse-registry amcache -f Amcache.hve -t jsonl \
| jq 'select(.RecordType == "file" and .SHA1 == "0123456789abcdef0123456789abcdef01234567")'
La salida CSV contiene las tablas de resumen, hallazgos, archivos y dispositivos. Con auto-parse, son
Registry-Amcache-Summary.csv, Registry-Amcache-Findings.csv, Registry-Amcache-Files.csv y
Registry-Amcache-Devices.csv, directamente en el directorio FileExistence/ de cada equipo, con
Registry-Amcache-logs.txt junto a las tablas. Si hay varios hives, se añade -Source1, -Source2, etc.
antes de la extensión; OutputFiles en los manifiestos indica las rutas exactas. Las exportaciones CSV
independientes conservan sus nombres de tabla nativos y la ubicación de salida solicitada. Los registros JSONL utilizan
los valores de RecordType summary, finding, file y device.
Campos de salida de archivos¶
| Campo | Cómo debe utilizarlo el analista |
|---|---|
KeyName, SourceKeyPath |
Identifican el registro exacto de origen en el Registro y la rama del esquema. Consérvelos para la reproducibilidad. |
KeyLastWrittenUTC, KeyLastWrittenFiletime |
Hora de actualización del registro en el Registro, en formato legible y sin procesar. No la etiquete como hora de ejecución. |
SourceVolumeKeyLastWrittenUTC, SourceVolumeKeyLastWrittenFiletime |
Hora de la clave de volumen principal en los esquemas heredados; contextual, no una hora de acción sobre el archivo. |
FileID |
Identificador de archivo registrado por Amcache. Se conserva exactamente; no suponga que siempre es un SHA-1. |
SHA1, SHA256 |
Pivotes sólidos hacia Defender, la inteligencia de amenazas, el EDR y los repositorios de archivos. Nulo significa que no se registró. |
Name, OriginalFileName, Description |
Nombres PE o del recurso de versión registrados. Compárelos con la ruta real para detectar suplantaciones; el atacante controla los metadatos. |
FullPath |
El pivote de ubicación más útil. Normalice las mayúsculas y minúsculas con cuidado, pero conserve la cadena de evidencia original. |
LongPathHash |
Identificador de Windows relacionado con la ruta; útil para emparejar registros, no es un hash del contenido. |
ProgramID |
Vincula el archivo con un registro de inventario de aplicaciones cuando está disponible. |
Publisher |
Texto del editor registrado. Trátelo como metadatos, no como validación de firma. |
Version, BinFileVersion, ProductName, ProductVersion, BinProductVersion |
Contexto del recurso de versión. Las diferencias o los valores inverosímiles pueden respaldar el análisis de suplantaciones. |
BinaryType |
Contexto de arquitectura o tipo registrado; compárelo con el análisis PE cuando se recupere el archivo. |
LinkDate |
Marca de tiempo de compilación o vinculación PE tal como se registró. Útil solo con escepticismo y corroboración. |
Size |
Tamaño registrado; compárelo con $MFT, el contenido de Defender o un archivo recuperado. |
Language |
Identificador de idioma PE; una pista contextual débil, no una atribución. |
IsPE-File, IsOS-Component |
Indicadores de clasificación registrados por Windows. Un valor falso no demuestra que el archivo sea inofensivo. |
USN |
Valor de secuencia de actualización de NTFS registrado por Amcache; puede ayudar a pivotar hacia registros USN que sigan existiendo. |
APPX-PackageFullName, APPX-PackageRelativeID |
Asocian aplicaciones o componentes empaquetados con el archivo. |
RegistryValues |
Todos los valores originales del Registro con su tipo, valor decodificado y hexadecimal sin procesar. Utilícelo cuando falte un campo tipado o para campos futuros o heredados. |
Campos de salida de dispositivos¶
| Grupo de campos | Campos e interpretación |
|---|---|
| Origen | KeyName, SourceKeyPath, KeyLastWrittenUTC, KeyLastWrittenFiletime: registro exacto del dispositivo y hora de actualización en el Registro. |
| Identidad | Description, BusDescription, Manufacturer, Model: descripciones del dispositivo legibles para las personas; las cadenas del fabricante pueden ser genéricas. |
| Identificadores de hardware | HWID, CompID, Class, ClassGUID, ContainerID, DeviceInterfaceClasses: los pivotes más sólidos de familia e instancia del dispositivo. |
| Estado | DeviceState, ProblemCode, ParentID, MatchingID, Enumerator: contexto de enumeración y de relaciones de Windows. |
| Controlador | DriverID, DriverName, DriverPackageStrongName, DriverVerDate, DriverVerVersion, Provider, Service, INF: asociaciones con el paquete de controladores y el servicio; correlaciónelas con los archivos y servicios instalados. |
| Instalación | InstallDate, FirstInstallDate, InstallState, ExtendedInfs: ciclo de vida de instalación registrado. La ausencia de una fecha no demuestra que el dispositivo nunca se conectara. |
| Filtros y pila | LowerClassFilters, UpperClassFilters, LowerFilters, UpperFilters, StackID, LocationPaths: contexto avanzado de la pila de controladores; los controladores de filtro inesperados merecen revisión. |
| Conservación sin procesar | RegistryValues: valores de origen completos, tipados y sin procesar, para la validación y los campos no admitidos. |
Las columnas de matrices y de valores sin procesar en CSV utilizan el sufijo JSON (por ejemplo, HWID-JSON y
RegistryValuesJSON); sus celdas contienen JSON, mientras que JSON/JSONL conserva las matrices nativas.
Estrategia de investigación¶
- Pivote sobre
FullPath,SHA1,NameyUSN. - Busque un Prefetch coincidente que respalde la ejecución.
- Utilice
$MFTy el Diario USN para establecer la creación, el cambio de nombre, la eliminación y el tamaño del archivo. - Compare los metadatos del editor y la versión con un PE recuperado de forma independiente y con la validación de la firma.
- Revise la cuarentena de Defender y los registros de eventos en busca de detecciones o eliminaciones.