Registro de Windows en Memoria: hivelist, printkey y Extraccion de Artefactos
Analisis del registro de Windows desde volcados de memoria con Volatility 3. Uso de hivelist, printkey y hashdump para extraer claves de persistencia, hashes de contrasenas, historial USB, configuracion de servicios y evidencia de actividad maliciosa.
El registro como fuente de evidencia forense
El registro de Windows es una base de datos jerarquica que almacena configuracion del sistema operativo, aplicaciones, servicios, hardware y preferencias de usuario. Desde la perspectiva forense, es una de las fuentes mas ricas de evidencia porque el malware lo utiliza activamente para:
- Establecer persistencia (sobrevivir a reinicios).
- Almacenar configuracion (URLs C2, parametros de operacion).
- Desactivar defensas (modificar claves de Windows Defender, firewall).
- Escalar privilegios (abusar de servicios, modificar permisos).
El registro en memoria tiene una ventaja clave sobre el registro en disco: refleja el estado exacto del sistema en el momento de la captura, incluyendo cambios que aun no se habian escrito a disco y claves volatiles que nunca se persisten.
Plugin hivelist: inventario de hives
vol -f memory.raw windows.registry.hivelist
Muestra todos los hives cargados en memoria con sus rutas en disco y offsets en memoria:
Offset FileFullPath
0xfa8001200000 \SystemRoot\System32\Config\SYSTEM
0xfa8001300000 \SystemRoot\System32\Config\SOFTWARE
0xfa8001400000 \SystemRoot\System32\Config\SAM
0xfa8001500000 \SystemRoot\System32\Config\SECURITY
0xfa8001600000 \SystemRoot\System32\Config\DEFAULT
0xfa8001700000 \??\C:\Users\Admin\NTUSER.DAT
0xfa8001800000 \??\C:\Users\Admin\AppData\Local\Microsoft\Windows\UsrClass.dat
0xfa8001900000 [no name]
0xfa8001a00000 \REGISTRY\MACHINE\HARDWARE
Los hives clave para una investigacion forense:
SYSTEM. Configuracion del hardware, servicios del sistema, configuracion de red. Contiene ControlSet001/002 (conjuntos de control que definen que servicios y drivers se cargan al arranque).
SOFTWARE. Configuracion de aplicaciones instaladas, claves Run/RunOnce (persistencia), desinstaladores, Microsoft Office MRU (ficheros recientes).
SAM. Cuentas de usuario locales y sus hashes NTLM. Combinado con SYSTEM, permite extraer hashes para cracking offline.
SECURITY. Politicas de seguridad, LSA secrets, cached domain credentials.
NTUSER.DAT. Configuracion por usuario: claves Run del usuario, MRU (Most Recently Used) de aplicaciones, historial de busqueda, UserAssist (programas ejecutados por el usuario).
HARDWARE. Hive volatil. Solo existe en memoria. Describe el hardware detectado, incluyendo dispositivos USB conectados en el momento del dump.
Plugin printkey: explorar claves del registro
vol -f memory.raw windows.registry.printkey --key "Software\Microsoft\Windows\CurrentVersion\Run"
Muestra los valores de una clave especifica:
Key Software\Microsoft\Windows\CurrentVersion\Run
LastWrite 2026-06-01 14:22:20 UTC
REG_SZ SecurityHealthSystray : "C:\Windows\System32\SecurityHealthSystray.exe"
REG_SZ OneDrive : "C:\Users\Admin\AppData\Local\Microsoft\OneDrive\OneDrive.exe"
REG_SZ WindowsUpdate64 : "C:\ProgramData\Microsoft\msupdate64.exe -silent"
La tercera entrada (WindowsUpdate64) es sospechosa: ruta inusual, nombre que imita una actualizacion, parametro -silent. Es un mecanismo de persistencia malicioso.
Para explorar subclaves:
vol -f memory.raw windows.registry.printkey --key "Software\Microsoft\Windows\CurrentVersion"
Esto muestra las subclaves disponibles para profundizar en la investigacion.
Claves de persistencia comunes
HKLM y HKCU Run/RunOnce
Las claves mas clasicas de persistencia. Los programas listados se ejecutan al iniciar sesion:
# Run en HKLM (todos los usuarios)
vol -f memory.raw windows.registry.printkey --key "Software\Microsoft\Windows\CurrentVersion\Run"
# Run en HKCU (usuario actual)
vol -f memory.raw windows.registry.printkey --key "Software\Microsoft\Windows\CurrentVersion\Run" --hive-offset NTUSER_OFFSET
# RunOnce (se ejecuta una vez y se borra)
vol -f memory.raw windows.registry.printkey --key "Software\Microsoft\Windows\CurrentVersion\RunOnce"
Servicios (HKLM\SYSTEM)
Los servicios de Windows se configuran en el registro y pueden arrancar automaticamente:
vol -f memory.raw windows.registry.printkey --key "ControlSet001\Services"
Para ver un servicio especifico:
vol -f memory.raw windows.registry.printkey --key "ControlSet001\Services\SospechService"
Un servicio malicioso tendra:
- ImagePath: ruta al binario del servicio (verificar si es legitimo).
- Start: 2 (automatico) o 3 (manual). Un servicio malicioso suele ser Start=2.
- Type: 16 (Win32OwnProcess) o 32 (Win32ShareProcess).
Winlogon Shell y Userinit
vol -f memory.raw windows.registry.printkey --key "Software\Microsoft\Windows NT\CurrentVersion\Winlogon"
Valores clave:
- Shell: deberia ser
explorer.exe. Si es otro ejecutable, es hijacking del shell. - Userinit: deberia ser
C:\Windows\System32\userinit.exe,. Si tiene un binario adicional separado por coma, es persistencia.
AppInit_DLLs
vol -f memory.raw windows.registry.printkey --key "Software\Microsoft\Windows NT\CurrentVersion\Windows"
El valor AppInit_DLLs contiene DLLs que se cargan automaticamente en cada proceso que usa user32.dll (es decir, casi todos los procesos con interfaz grafica). Es un vector de persistencia clasico:
- Si AppInit_DLLs tiene una ruta: investigar esa DLL.
- Si LoadAppInit_DLLs es 1: la funcionalidad esta habilitada.
Image File Execution Options (IFEO)
vol -f memory.raw windows.registry.printkey --key "Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options"
IFEO permite configurar un debugger para cualquier ejecutable. El malware lo abusa para redirigir la ejecucion:
Key: Image File Execution Options\taskmgr.exe
REG_SZ Debugger : "C:\ProgramData\malware.exe"
Cuando el usuario intenta abrir taskmgr.exe (Administrador de Tareas), Windows ejecuta malware.exe como "debugger", que puede bloquear el Administrador de Tareas o ejecutar codigo malicioso.
Scheduled Tasks en registro
Las tareas programadas tambien dejan rastro en el registro:
vol -f memory.raw windows.registry.printkey --key "Software\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tasks"
Extraccion de hashes de contrasenas
Hashdump: hashes NTLM locales
vol -f memory.raw windows.hashdump
Salida:
User RID lmhash nthash
Administrator 500 aad3b435b51404eeaad3b435b51404ee 31d6cfe0d16ae931b73c59d7e0c089c0
Guest 501 aad3b435b51404eeaad3b435b51404ee 31d6cfe0d16ae931b73c59d7e0c089c0
Admin 1001 aad3b435b51404eeaad3b435b51404ee a87f1a2b34c5e6d789012345abcdef67
El hash LM es aad3b435... cuando esta deshabilitado (lo normal en Windows moderno). El hash NT es el hash NTLM de la contrasena.
Estos hashes pueden:
- Buscarse en bases de datos de hashes precomputados (rainbow tables).
- Crackearse con herramientas como hashcat o John the Ripper.
- Usarse directamente en ataques Pass-the-Hash (si la cuenta tiene privilegios).
LSA Secrets
vol -f memory.raw windows.lsadump
Los LSA secrets contienen contrasenas de cuentas de servicio, credenciales de autologon, y otros secretos almacenados por el sistema. Son especialmente valiosos en servidores.
Cached Domain Logons
vol -f memory.raw windows.cachedump
Windows cachea las ultimas credenciales de dominio para permitir login cuando el controlador de dominio no esta disponible. Estos hashes cacheados (MS-CACHEv2) son mas dificiles de crackear que los NTLM directos, pero no imposibles.
Evidencia de dispositivos USB
Los dispositivos USB conectados dejan rastro extenso en el registro:
# Dispositivos USB montados
vol -f memory.raw windows.registry.printkey --key "ControlSet001\Enum\USBSTOR"
Cada subclase contiene:
- Identificador del dispositivo (marca, modelo, revision).
- Numero de serie.
- Timestamps de primera y ultima conexion.
- Letra de unidad asignada.
# Mapeo de letras de unidad
vol -f memory.raw windows.registry.printkey --key "MountedDevices"
Para una investigacion de exfiltracion de datos, correlacionar:
- Dispositivos USB conectados (USBSTOR).
- Timestamps de conexion.
- Ficheros abiertos por procesos en esas horas (handles de tipo File).
- Actividad de copia (logs de aplicacion, shell MRU).
Configuracion de seguridad y defensas
Windows Defender
vol -f memory.raw windows.registry.printkey --key "Software\Microsoft\Windows Defender"
El malware frecuentemente desactiva Windows Defender modificando:
vol -f memory.raw windows.registry.printkey --key "Software\Policies\Microsoft\Windows Defender"
- DisableAntiSpyware = 1: Defender desactivado.
- DisableRealtimeMonitoring = 1: proteccion en tiempo real desactivada.
Firewall de Windows
vol -f memory.raw windows.registry.printkey --key "ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy"
UAC
vol -f memory.raw windows.registry.printkey --key "Software\Microsoft\Windows\CurrentVersion\Policies\System"
- EnableLUA = 0: UAC desactivado. Critico.
- ConsentPromptBehaviorAdmin = 0: el admin nunca recibe prompts de elevacion.
MRU (Most Recently Used) y UserAssist
RecentDocs
vol -f memory.raw windows.registry.printkey --key "Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs"
Muestra documentos abiertos recientemente por el usuario. Los valores estan codificados en formato binario con el nombre del fichero.
UserAssist
vol -f memory.raw windows.registry.printkey --key "Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist"
UserAssist registra los programas ejecutados por el usuario a traves del Explorer (doble clic, Start Menu). Los nombres estan codificados en ROT13, lo que es trivial de decodificar.
Cada entrada incluye:
- Nombre del programa (codificado ROT13).
- Numero de veces ejecutado.
- Timestamps de ultima ejecucion.
Caso practico: reconstruccion de persistencia
En un volcado de memoria de un sistema comprometido, ejecutamos una revision sistematica de las claves de persistencia:
# Run keys
vol -f memory.raw windows.registry.printkey --key "Software\Microsoft\Windows\CurrentVersion\Run"
# Hallazgo: WindowsUpdate64 apuntando a C:\ProgramData\Microsoft\msupdate64.exe
# Servicios
vol -f memory.raw windows.registry.printkey --key "ControlSet001\Services\WinDefUpdate"
# Hallazgo: servicio WinDefUpdate con ImagePath=C:\ProgramData\Microsoft\msupdate64.exe
# IFEO
vol -f memory.raw windows.registry.printkey --key "Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\taskmgr.exe"
# Hallazgo: Debugger apuntando al mismo binario
# Defender desactivado
vol -f memory.raw windows.registry.printkey --key "Software\Policies\Microsoft\Windows Defender"
# Hallazgo: DisableAntiSpyware = 1
El atacante establecio triple persistencia (Run key, servicio, IFEO), desactivo Windows Defender, y bloqueo el Administrador de Tareas. Todo apunta al mismo binario en C:\ProgramData.
Proximo paso
El siguiente articulo aborda la deteccion de rootkits en memoria: hooks en SSDT (System Service Descriptor Table), IDT, DKOM (Direct Kernel Object Manipulation) y callbacks del kernel.
Preguntas frecuentes
Libros recomendados
Artículos relacionados
Analisis de Procesos en Memoria Windows: pslist, pstree y Deteccion de Anomalias
Malfind y Deteccion de Code Injection en Memoria con Volatility 3
Deteccion de Rootkits en Memoria: SSDT, IDT, DKOM y Callbacks del Kernel
Persistencia en el Registro de Windows: Cómo el Malware Sobrevive al Reboot
Scheduled Tasks y COM Hijacking: Persistencia Avanzada en Windows
WMI como Vector de Ataque y Persistencia en Windows
Este contenido tiene fines exclusivamente educativos y de investigación en ciberseguridad defensiva. No se proporcionan binarios maliciosos ni payloads ejecutables. El uso indebido de esta información es responsabilidad exclusiva del usuario. Leer disclaimer completo.