Memoria y datos volátiles · Lección 4 de 4
Archivos de hibernación, paginación y volcado
13 min de lectura
Las lecciones 5.1 a 5.3 partían de una captura de memoria en vivo. A menudo no se dispone de ninguna: el equipo estaba apagado, o solo se cuenta con una imagen de disco o una recopilación de triaje. La memoria sigue llegando al disco a través de la hibernación, los archivos de paginación, los volcados de memoria y sus equivalentes en Linux. Esta lección explica cuándo se escribe cada archivo, cuánta estructura se conserva y cómo determinar la fecha de lo que se encuentra. Las recopilaciones de triaje suelen excluir pagefile.sys y hiberfil.sys por su gran tamaño, mientras que los informes de errores pequeños suelen recopilarse.
Por qué la memoria termina en el disco
Los sistemas escriben la RAM en el disco para liberar RAM (paginación), para apagarse sin perder el estado (hibernación) y para registrar un fallo (volcados de memoria). Cuanta más estructura se conserve, mayor será la parte del flujo de trabajo de Volatility de las lecciones 5.2 y 5.3 que podrá aplicarse.
El archivo de hibernación
C:\hiberfil.sys es un archivo de sistema oculto en la raíz del volumen del sistema. Cuando el usuario elige Hibernar, Windows escribe en él el contenido de la RAM, comprimido, y se apaga; en el siguiente inicio, el cargador de arranque restaura la memoria a partir de él. El valor del Registro HibernateEnabled, en SYSTEM\<ControlSet>\Control\Power, indica si la hibernación está activada. En un subárbol del Registro sin conexión, lea Select\Current para encontrar el ControlSet00x correcto (lección 2.1).
Inicio rápido
El Inicio rápido (también llamado apagado híbrido) utiliza el mismo archivo. Cuando el usuario hace clic en Apagar, Windows cierra todas las sesiones de usuario y después hiberna únicamente la sesión del kernel: el kernel, los controladores y los procesos y servicios del sistema de la sesión 0. El siguiente inicio en frío reanuda esa imagen en lugar de arrancar desde cero. El Inicio rápido está activado de forma predeterminada en muchas instalaciones cliente de Windows 10 y 11 que admiten hibernación, pero debe comprobarlo en lugar de darlo por hecho: el valor HiberbootEnabled, en SYSTEM\<ControlSet>\Control\Session Manager\Power, es 1 cuando está activado. Un Reinicio no utiliza el Inicio rápido; realiza un apagado completo. En el siguiente arranque, el evento 27 de Kernel-Boot en el registro Sistema indica el tipo de arranque: 0x0 para un arranque completo, 0x1 para un arranque con Inicio rápido (híbrido) y 0x2 para una reanudación desde la hibernación.
Por tanto, un equipo incautado mientras estaba apagado suele conservar una instantánea de su sesión del kernel en el último apagado: procesos del sistema, servicios, controladores y estructuras de red del kernel, pero no aplicaciones de usuario como explorer.exe, porque las sesiones de usuario se cerraron primero. Una hibernación propiamente dicha también conserva las sesiones de usuario.
Conversión y determinación de la fecha
El archivo no es una imagen de memoria en bruto. Tiene una cabecera y conjuntos de páginas comprimidas (compresión Microsoft Xpress; la variante depende de la versión de Windows), por lo que debe descomprimirse antes de que la mayoría de las herramientas puedan utilizarlo. Las versiones oficiales de Volatility 3 no leen directamente los archivos de hibernación, así que convierta primero el archivo con una herramienta como Hibr2Bin, que genera una imagen en bruto. Después de la conversión, los complementos de las lecciones 5.2 y 5.3 funcionan como de costumbre.
La cabecera comienza con una firma como HIBR (hibr en minúsculas en versiones anteriores) cuando la imagen es válida. La firma de la cabecera cambia después de una reanudación: Windows sobrescribe o borra la cabecera, por lo que se observan valores como WAKE, RSTR o ceros, y es posible que un archivo obsoleto no se convierta correctamente. Las páginas comprimidas de esa imagen anterior pueden permanecer y merece la pena realizar una búsqueda de cadenas o con YARA.
Sobre todo, determine la fecha de la instantánea: describe el momento en que se escribió el archivo, posiblemente días antes de la incautación. Utilice la hora del sistema almacenada en la cabecera de hibernación si su herramienta la interpreta, y la hora de modificación de $STANDARD_INFORMATION del archivo en la $MFT; después corrobore ambas con los eventos de apagado y arranque del registro Sistema (lección 2.7).
Archivos de paginación e intercambio
C:\pagefile.sys contiene páginas que el administrador de memoria trasladó fuera de la RAM. Su ubicación y tamaño se establecen en el valor PagingFiles, en SYSTEM\<ControlSet>\Control\Session Manager\Memory Management, así que compruebe también si hay archivos de paginación en otros volúmenes. C:\swapfile.sys (Windows 8 y posteriores) es un archivo complementario más pequeño que se utiliza para trasladar al disco aplicaciones modernas (de la Tienda) completas.
Un archivo de paginación es una colección de páginas de 4 KiB escritas a lo largo del tiempo sin un mapa: las tablas de páginas que indican a qué proceso y dirección virtual pertenecía una página están en la RAM, no en el archivo. No se pueden reconstruir procesos únicamente a partir de un archivo de paginación. Algunos entornos de análisis de memoria pueden combinar un archivo de paginación con una captura de RAM tomada en el mismo momento para resolver direcciones cuyas páginas se trasladaron al disco, pero, en un caso en el que solo se dispone del disco, el archivo de paginación es una fuente de cadenas: URL, fragmentos de correos electrónicos y chats, comandos introducidos, rutas de archivos y, a veces, credenciales. De forma predeterminada, Windows reutiliza el archivo entre arranques sin borrarlo, por lo que una página puede proceder de una sesión anterior.
Dos factores reducen lo que se encuentra:
- Compresión de memoria (Windows 10 y posteriores): las páginas pueden comprimirse en el almacén de compresión de memoria de la RAM antes de trasladarse al disco, por lo que el contenido del archivo de paginación puede estar comprimido y no ser visible en una búsqueda de cadenas simple. Existen herramientas de investigación para descomprimir el almacén, pero las herramientas estándar no detectan ese contenido.
- ClearPageFileAtShutdown: cuando este DWORD, en
Memory Management, es 1, Windows sobrescribe el archivo de paginación con ceros al apagarse. Un archivo de paginación compuesto íntegramente por ceros, con este valor establecido, es lo esperado, no una señal de borrado por parte del usuario.
Analice con strings tanto en ASCII como en UTF-16LE (strings -el), bulk_extractor (sus archivos de características enumeran cada coincidencia con su desplazamiento en bytes y el contexto circundante) y reglas YARA. Registre el desplazamiento de cada coincidencia; es su único localizador.
Volcados de memoria e informes de errores
Cuando Windows se detiene con una comprobación de errores (una «pantalla azul»), escribe la memoria en el archivo de paginación y, en el siguiente arranque, la guarda como archivo de volcado y registra el evento 1001 de Sistema, con origen BugCheck. El tipo se establece mediante CrashDumpEnabled, en SYSTEM\<ControlSet>\Control\CrashControl:
| Valor | Tipo de volcado | Contenido |
|---|---|---|
| 0 | Ninguno | No se escribe nada |
| 1 | Volcado de memoria completo | Toda la memoria física |
| 2 | Volcado de memoria del kernel | Solo memoria del kernel, sin memoria de procesos en modo usuario |
| 3 | Volcado de memoria pequeño | Minivolcado: código de detención, pila, lista de controladores cargados |
| 7 | Volcado de memoria automático | Volcado del kernel con dimensionamiento automático del archivo de paginación |
Los volcados completos y del kernel se guardan en C:\Windows\MEMORY.DMP (el valor DumpFile; de forma predeterminada, cada fallo sobrescribe el anterior), y los volcados pequeños, en C:\Windows\Minidump\*.dmp. Volatility 3 solo lee volcados de memoria completos (los formatos completo y de mapa de bits, DumpType 1 y 5), no volcados del kernel ni pequeños, por lo que un volcado completo se comporta como una captura de RAM; analice los volcados del kernel con WinDbg. Un volcado del kernel enumera procesos y controladores, pero no incluye nada de lo que se encuentra en la memoria de usuario, como las líneas de comandos almacenadas en el entorno del proceso. En WinDbg, !analyze -v explica el fallo, lm enumera los módulos y !process 0 0 enumera los procesos.
Los fallos de aplicaciones son gestionados por Informe de errores de Windows (WER). Los informes se almacenan en C:\ProgramData\Microsoft\Windows\WER\ReportArchive (enviados o procesados) y ReportQueue (en espera), con copias por usuario en %LOCALAPPDATA%\Microsoft\Windows\WER. Los nombres de las carpetas comienzan con el tipo de informe y el nombre del ejecutable, como AppCrash_xfer.exe_…. Cada una contiene un archivo de texto UTF-16 Report.wer con líneas clave=valor, por ejemplo EventType=APPCRASH, un EventTime escrito como FILETIME decimal, y el nombre de la aplicación y, en versiones más recientes, su ruta completa. Un informe de fallo demuestra que el programa se ejecutó, por lo que es un artefacto de ejecución que perdura tras la eliminación del programa (la lección 2.3 trata los demás). Los eventos 1000 (Application Error) y 1001 (Windows Error Reporting) del registro Aplicación lo corroboran.
Los volcados completos en modo usuario de un proceso que falla solo se escriben si LocalDumps está configurado en SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps: DumpFolder (valor predeterminado %LOCALAPPDATA%\CrashDumps), DumpType (1 mini, 2 completo) y DumpCount (valor predeterminado 10). Un volcado completo de un navegador puede contener contenido descifrado.
Linux: espacio de intercambio y volcados de núcleo
Linux traslada páginas a una partición de intercambio o a un archivo de intercambio como /swapfile; /etc/fstab los identifica. Un área de intercambio lleva la firma SWAPSPACE2 en los últimos 10 bytes de su primera página (desplazamiento 4.086 con páginas de 4 KiB). Al igual que un archivo de paginación, el espacio de intercambio es una fuente de cadenas. La hibernación (suspensión en disco) en Linux escribe la imagen de memoria en el espacio de intercambio, y la implementación del propio kernel sustituye la firma por S1SUSPEND hasta la reanudación. El espacio de intercambio suele estar cifrado junto con el disco, y zram mantiene el intercambio comprimido únicamente en la RAM.
Los fallos de procesos en distribuciones con systemd se capturan mediante systemd-coredump: archivos de volcado de núcleo comprimidos en /var/lib/systemd/coredump/, cuyos nombres incluyen el nombre del programa, el ID de usuario, el ID de arranque, el ID de proceso y la hora del fallo, además de una entrada del diario que coredumpctl list muestra incluso después de que se haya eliminado el archivo de volcado de núcleo.
Tabla de resumen
| Archivo | Ruta | Cuándo se escribe | Qué contiene | Cómo analizarlo |
|---|---|---|---|---|
| Archivo de hibernación | C:\hiberfil.sys | Hibernación; apagado con Inicio rápido | Instantánea de RAM comprimida; Inicio rápido: solo la sesión del kernel | Convertir a formato en bruto (p. ej., Hibr2Bin), después Volatility 3; determinar la fecha de la instantánea |
| Archivo de paginación | C:\pagefile.sys (o PagingFiles) | Continuamente, página por página | Páginas individuales de 4 KiB, sin mapa | strings (ASCII + UTF-16LE), bulk_extractor, YARA |
| Archivo de intercambio | C:\swapfile.sys | Intercambio de aplicaciones modernas | Páginas de aplicaciones de la Tienda | Como el archivo de paginación |
| Volcado completo o del kernel | C:\Windows\MEMORY.DMP | Comprobación de errores, guardado en el siguiente arranque | Toda la memoria o solo la del kernel | Volatility 3 (solo volcados completos), WinDbg !analyze -v |
| Volcado pequeño | C:\Windows\Minidump\*.dmp | Comprobación de errores | Código de detención, pila, lista de controladores | WinDbg |
| Informe WER | …\WER\ReportArchive, ReportQueue | Fallo o bloqueo de una aplicación | Texto de Report.wer: aplicación, hora | Visor de texto; artefacto de ejecución |
| Volcado en modo usuario | LocalDumps DumpFolder | Fallo de una aplicación, si está configurado | Memoria de un proceso | WinDbg, strings |
| Espacio de intercambio de Linux | Partición de intercambio o /swapfile | Paginación; imagen de hibernación | Páginas; imagen completa después de hibernar | strings, bulk_extractor |
| Volcado de núcleo | /var/lib/systemd/coredump/ | Fallo de un proceso | Memoria de un proceso | coredumpctl, gdb, strings |
Ejemplo resuelto
Archivo de hibernación. Se encontró apagado un equipo de escritorio y se incautó el 2026-03-16T09:30:00Z. La imagen contiene hiberfil.sys con una hora de modificación en la $MFT de 2026-03-13T22:47:10Z. En ControlSet001\Control\Session Manager\Power, HiberbootEnabled = 1. La imagen convertida muestra lsass.exe, services.exe, muchas instancias de svchost.exe y un servicio desconocido, pero ni explorer.exe ni ningún navegador.
Interpretación: se trata de una imagen de Inicio rápido del último apagado, no del momento de la incautación. El intervalo va de 2026-03-13T22:47:10Z a 2026-03-16T09:30:00Z: 2 días (hasta 2026-03-15T22:47:10Z) más 10 h 42 min 50 s, por lo que son 2 d 10 h 42 min 50 s. Indique en el informe que el servicio desconocido estaba «en ejecución a las 2026-03-13T22:47:10Z, la hora del último apagado con Inicio rápido», y corrobore la hora con los eventos de apagado del registro Sistema. La ausencia de procesos de usuario no significa que nadie hubiera iniciado sesión.
Archivo de paginación. bulk_extractor informa de la cadena UTF-16LE transfer.example.com/upload en el desplazamiento de bytes 1.234.567.890 de pagefile.sys, y cerca de ella, de un fragmento de correo electrónico rcos.vidal@exampl. 1.234.567.890 = 0x499602D2. Con páginas de 4 KiB: 1.234.567.890 ÷ 4.096 = 301.408 con resto 722, por lo que corresponde a la página 301.408 (0x49960), byte 722 (0x2D2) dentro de ella. Incluya en el informe:
- la cadena exacta, la codificación, el desplazamiento en decimal y hexadecimal, y el hash del archivo
pagefile.sysexportado; - el fragmento exactamente como se encontró, sin completar la dirección;
- que el archivo de paginación no proporciona ninguna hora ni identifica el proceso propietario, y que la página puede ser anterior al último arranque;
- corroboración a partir de fuentes con referencias temporales: historial del navegador y descargas (módulo 4), uso de red de SRUM (lección 2.8) o registros de proxy y firewall.
Tratamiento del contenido sensible
Estos archivos contienen todo lo que estaba en la memoria: contraseñas, mensajes de terceros, datos sanitarios o financieros y comunicaciones protegidas por el secreto profesional. Mantenga las búsquedas dentro de su autorización, informe solo de las coincidencias pertinentes y proteja las cadenas y los volcados exportados como la propia evidencia.
Enfoque del examen: Espere preguntas sobre qué contiene cada archivo y cuándo se escribe, especialmente sobre el hecho de que unhiberfil.sysde Inicio rápido solo contiene la sesión del kernel del último apagado y debe determinarse su fecha. Conozca los valores deCrashDumpEnabled, las rutas predeterminadas de los volcados, las carpetas WER como evidencia de ejecución y los valores del RegistroHiberbootEnabledyClearPageFileAtShutdown. Las coincidencias del archivo de paginación se notifican por su desplazamiento, sin una hora.
Puntos clave
hiberfil.syses una instantánea de RAM comprimida de la última hibernación o del último apagado con Inicio rápido; conviértala y determine su fecha antes de interpretarla.- El Inicio rápido guarda únicamente la sesión del kernel, por lo que las aplicaciones de usuario están ausentes por diseño.
pagefile.sys,swapfile.sysy el espacio de intercambio de Linux contienen páginas sin estructura: busque cadenas, indique los desplazamientos y nunca deduzca una hora a partir de ellas.CrashDumpEnabledestablece el tipo de volcado (1 completo, 2 kernel, 3 pequeño, 7 automático); un volcado del kernel carece de memoria en modo usuario.- Los archivos
Report.werde WER y las entradas de systemd-coredump demuestran que un programa se ejecutó, incluso después de haber sido eliminado. - Estos archivos contienen datos de terceros y datos sensibles; manténgase dentro del alcance autorizado.