Intermediomemory forensicsregistroWindowshivelistpersistenciaVolatility

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.

MalwareIntel Research··7 min lectura
Serie: Memory Forensics — Parte 8

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:

  1. Dispositivos USB conectados (USBSTOR).
  2. Timestamps de conexion.
  3. Ficheros abiertos por procesos en esas horas (handles de tipo File).
  4. 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

Artículos relacionados

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.