Volatility y Amcache: extraer el hive de imágenes de memoria
AmcacheParser.exe lee el archivo Amcache.hve en disco. ¿Pero
qué pasa si solo tienes una imagen de memoria — un dump de
RAM compatible con Volatility de un host Windows, sin adquisición
de disco?
La respuesta es Volatility, con sus plugins de hive del registro, usado para extraer la copia en memoria viva del hive Amcache y volcarla a disco donde AmcacheParser pueda leerla. Esta página es la guía práctica.
Para la referencia más amplia de Amcache, ver la referencia completa de Amcache; para el lado del parser, ver la guía completa de AmcacheParser.
Cuándo necesitas esto#
El hive del lado del disco suele ser la fuente correcta para el análisis de Amcache. El flujo del lado de memoria es para los casos en los que no puedes obtener el disco:
- Adquisición solo de memoria. Una captura de live-response extrajo un dump de RAM y artefactos seleccionados de triage, pero no hay imagen completa de disco disponible.
- Protocolos de evidencia volátil primero. Algunos procedimientos de respuesta a incidentes dictan captura de RAM antes de disco, y la captura de disco se retrasa horas o días.
- El hive del lado del disco ha sido manipulado y sospechas que la copia en memoria tiene datos más frescos / diferentes.
- Disco cifrado, memoria descifrada. Escenarios de Bitlocker / cifrado de disco completo donde la imagen de disco aún no es descifrable pero el dump de RAM contiene contenidos del hive descifrados.
Para forenses ordinarios de host en vivo o post-incidente con disco, prefiere el flujo del lado del disco descrito en Dónde está Amcache.hve en disco.
Qué extrae Volatility#
Windows mantiene cada hive del registro cargado — SYSTEM,
SOFTWARE, SAM, NTUSER.DAT por usuario, y Amcache.hve si
está cargado — en memoria del kernel en una estructura llamada
la hive list. El appraiser típicamente carga Amcache.hve
durante las pasadas de inventario y lo mantiene cargado durante
algún tiempo después; una imagen de memoria capturada durante o
poco después de una pasada de inventario contiene el hive
completo en memoria.
Los plugins del registro de Volatility saben cómo recorrer la hive list y extraer hives individuales. Los plugins relevantes:
| Versión de Volatility | Plugin |
|---|---|
| Volatility 2 | hivelist, hivedump, printkey, dumpregistry |
| Volatility 3 | windows.registry.hivelist, windows.registry.printkey, windows.registry.hivedump, windows.registry.dumphive |
El flujo de trabajo básico es idéntico a través de versiones, con diferencias de sintaxis de comando.
Paso 1: enumerar los hives cargados#
Primero, ve qué hives están cargados en memoria. Volatility 3:
vol -f memory.dmp windows.registry.hivelistVolatility 2:
vol.py -f memory.dmp --profile=Win10x64_19041 hivelistDeberías ver una fila para cada hive cargado con una dirección virtual y la ruta del archivo del hive. Si Amcache estaba cargado, ves:
Offset (V) FileFullPath
0xfffff8a0... \??\C:\Windows\AppCompat\Programs\Amcache.hve
Si Amcache no está en la hive list, el appraiser no lo tenía abierto en el momento de la captura. Pasa a adquisición o recuperación del lado del disco; Amcache solo de memoria no está disponible para esta imagen.
Paso 2: volcar el hive a disco#
Una vez que tienes la dirección virtual, vuelca el hive:
# Volatility 3 — reemplaza 0xfffff8a0... con el offset real de hivelist
vol -f memory.dmp windows.registry.dumphive --offset 0xfffff8a0... > Amcache.hveVolatility 2:
vol.py -f memory.dmp --profile=Win10x64_19041 dumpregistry \
--offset 0xfffff8a0... --dump-dir ./dumpedLa salida es un blob binario que AmcacheParser puede leer. Nota:
- No hay journals de transacciones. La representación en
memoria del hive no lleva
.LOG1/.LOG2. AmcacheParser advertirá sobre logs faltantes; eso es esperado. - El hive es un snapshot punto-en-el-tiempo de lo que estaba en memoria en la adquisición. Refleja lo que el appraiser haya escrito a través de la estructura del hive en memoria.
Paso 3: parsear con AmcacheParser#
Entrega el hive volcado a AmcacheParser como de costumbre:
AmcacheParser.exe `
-f .\Amcache.hve `
--csv .\out `
--csvf MEMORY_amcache.csv `
--mpLa salida es el mismo conjunto de CSV por categoría que
obtendrías de un parseo del lado de disco —
AssociatedFileEntries.csv, UnassociatedFileEntries.csv, etc.
Haz triage y pivota como en el
playbook de investigación de malware.
Advertencias específicas de la recuperación del lado de memoria#
Algunas cosas a tener en cuenta cuando se trabaja desde un hive volcado de memoria:
Los datos del journal de transacciones se pierden#
La representación en memoria no incluye escrituras no
confirmadas que todavía estaban en los journals de transacciones
en el momento de la captura. Para un hive que estaba siendo
escrito activamente cuando se adquirió la memoria, puedes estar
perdiendo las entradas más recientes. La recuperación del lado
del disco de .LOG1 y .LOG2 las atraparía.
La cobertura depende de lo que estuviera cargado#
Algunos builds y configuraciones de Windows descargan Amcache tras cada pasada del appraiser; otros lo mantienen cargado. Si no encuentras Amcache en la hive list, no significa que Amcache esté ausente en el host — significa que no estaba cargado en el momento de la captura.
La interpretación del schema puede necesitar el perfil de Volatility correcto#
El perfil de Volatility 2 debe coincidir con el SO capturado para que el código de recorrido del registro funcione limpiamente. Si te equivocas de perfil el hive volcado puede estar incompleto o corrupto. Volatility 3 es mucho más perdonador aquí (auto-detecta), pero un volcado con perfil incorrecto sigue siendo posible.
El hive volcado puede parsear con advertencias#
AmcacheParser puede emitir advertencias sobre journals de transacciones faltantes, celdas truncadas o schema inesperado. Estas son esperadas cuando se vuelca desde memoria y no necesariamente significan que los datos sean malos — pero trata las anomalías con cuidado extra y cruza con disco si es posible.
Comparar hives de memoria y disco#
Si tienes ambos, un dump de memoria y una imagen de disco del mismo host (tomados en tiempos cercanos), parsea ambas copias de Amcache y haz diff:
$disk = Import-Csv .\HOST01_disk_amcache_UnassociatedFileEntries.csv |
Select-Object Hash, FullPath, KeyLastWriteTimestamp
$memory = Import-Csv .\HOST01_memory_amcache_UnassociatedFileEntries.csv |
Select-Object Hash, FullPath, KeyLastWriteTimestamp
# Filas en memoria pero no en disco
$memory | Where-Object { $h = $_.Hash; -not ($disk | Where-Object { $_.Hash -eq $h }) }
# Filas en disco pero no en memoria
$disk | Where-Object { $h = $_.Hash; -not ($memory | Where-Object { $_.Hash -eq $h }) }Qué significa cada delta:
- Solo en memoria: el appraiser lo escribió al hive en memoria pero el cambio no se había volcado a disco aún (y se habría volcado en un apagado limpio). A menudo la señal más fresca que tienes.
- Solo en disco: la entrada estaba en el hive de disco pero el hive en memoria la tenía descargada / caducada en el momento de la captura. Menos interesante — el disco es autoritativo para estas.
Si el hive de disco ha sido manipulado, el hive de memoria a menudo preserva las entradas originales — haciendo el flujo del lado de memoria también útil como contramedida anti-forense.
Cuándo este es el flujo equivocado#
Tres casos en los que no deberías molestarte con la recuperación de Amcache del lado de memoria:
Tienes el disco#
El flujo del lado del disco te da el hive más los journals de transacciones más las Volume Shadow Copies. El lado de memoria te da un único snapshot. Prefiere siempre disco si está disponible.
La adquisición fue hace demasiado tiempo#
Si el dump de memoria tiene días y vas tras el estado actual, el hive en disco (que ha sido actualizado desde el dump) es más útil. Los dumps de memoria son punto-en-el-tiempo.
El hive no estaba cargado en la captura#
Si hivelist no muestra Amcache, ningún plugin lo hará aparecer
mágicamente. Pasa al disco o a la recuperación por entrada
desde la memoria de proceso del appraiser (raro, avanzado).
Ver también#
- Referencia completa de Amcache — el artefacto al completo.
- Guía completa de AmcacheParser — qué hacer una vez que tienes el hive volcado.
- Dónde está Amcache.hve en disco — el flujo del lado del disco que normalmente deberías preferir.
- Plugin amcache de RegRipper — otro parser que acepta el hive volcado.
- Recuperar evidencia de binarios borrados desde Amcache — encuadre útil para escenarios de recuperación del lado de memoria.
Si tienes un hive (volcado de memoria o de otro modo) y solo quieres una mirada rápida, suéltalo en la página de inicio del parser — corre enteramente en tu navegador.
Artículos relacionados
- 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.
- Las columnas de salida de AmcacheParser explicadas: cada campo CSV decodificado
Referencia campo por campo para la salida CSV de AmcacheParser — FileId, PathHash, ProgramId, LinkDate, BinFileVersion, IsPeFile y cualquier otra columna, con los pivotes que importan en DFIR.
- Guía de descarga de AmcacheParser: fuentes oficiales, mirrors y verificación
Todas las formas de descargar AmcacheParser de Eric Zimmerman — Get-ZimmermanTools, descarga directa, KAPE, Velociraptor — con verificación por suma de control y patrones de instalación en redes aisladas.
- AmcacheParser: la guía completa de la herramienta de Eric Zimmerman
Una guía definitiva sobre AmcacheParser — qué hace, cómo instalar y ejecutar la CLI de Eric Zimmerman, cómo leer su salida CSV y cuándo elegir la alternativa en el navegador.