Skip to content

¿Dónde se guardan los ShellBags? Ubicación y adquisición

Ubicación de los ShellBags en UsrClass.dat y NTUSER.DAT de Windows XP a 11, y cómo adquirir los hives bloqueados con sus registros de transacciones.

Publicado el 6 min de lectura

TL;DR. En Windows 7, 10 y 11 los ShellBags están sobre todo en UsrClass.dat, bajo Local Settings\Software\Microsoft\Windows\Shell\BagMRU (y Bags), con un segundo árbol más pequeño en NTUSER.DAT bajo Software\Microsoft\Windows\Shell\BagMRU. Windows XP solo usaba NTUSER.DAT, incluido ShellNoRoam. Ambos hives están bloqueados mientras el usuario tiene la sesión iniciada: adquiéralos en bruto, con sus .LOG1 y .LOG2, una pareja por usuario.

«¿Dónde se guardan los ShellBags?» parece una pregunta de una línea. En la práctica, la mayoría de ShellBags perdidos que he visto en revisiones venían de recoger el hive equivocado, uno solo de los dos, o un hive sin sus registros de transacciones. Este artículo es la lista de comprobación.

Ubicaciones en el registro por versión de Windows

Versión de WindowsHiveRuta de la clave dentro del hiveVista en vivo (regedit)
XP / Server 2003NTUSER.DATSoftware\Microsoft\Windows\ShellNoRoam\BagMRU y \BagsHKCU\Software\Microsoft\Windows\ShellNoRoam
XP / Server 2003NTUSER.DATSoftware\Microsoft\Windows\Shell\BagMRU y \BagsHKCU\Software\Microsoft\Windows\Shell
Vista, 7, 8, 8.1, 10, 11UsrClass.datLocal Settings\Software\Microsoft\Windows\Shell\BagMRU y \BagsHKCU\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell
Vista, 7, 8, 8.1, 10, 11NTUSER.DATSoftware\Microsoft\Windows\Shell\BagMRU y \BagsHKCU\Software\Microsoft\Windows\Shell

Fuentes: el resumen de ShellBags de Magnet Forensics para la división entre XP y Vista+, el artículo de Chad Tilbury en SANS para Windows 7, y el artefacto de Velociraptor Windows.Forensics.Shellbags, que busca exactamente las dos rutas modernas anteriores.

Dos notas prácticas:

  • El volumen está en UsrClass.dat. En sistemas modernos el árbol de NTUSER.DAT suele ser pequeño (elementos del escritorio, algunas entradas de red). No concluya «no hay ShellBags» solo a partir de NTUSER.DAT.
  • Wow6432Node. Algunos parsers, incluido ShellBags Parser, revisan también Wow6432Node\Local Settings\Software\Microsoft\Windows\Shell\BagMRU dentro de UsrClass.dat, donde pueden escribir componentes de shell de 32 bits en Windows de 64 bits. Suele estar vacío; comprobarlo no cuesta nada.

Los archivos de hive en disco

HiveRuta (Vista y posteriores)Se monta en
UsrClass.datC:\Users\<user>\AppData\Local\Microsoft\Windows\UsrClass.datHKEY_USERS\<SID>_Classes, fusionado en HKCU\Software\Classes
NTUSER.DATC:\Users\<user>\NTUSER.DATHKEY_USERS\<SID>, visto como HKCU

Cada hive tiene sus registros de transacciones en la misma carpeta: UsrClass.dat.LOG1, UsrClass.dat.LOG2, NTUSER.DAT.LOG1, NTUSER.DAT.LOG2. Microsoft describe la relación entre hive y archivo en Registry Hives. AppData está oculta; UsrClass.dat y NTUSER.DAT son archivos de sistema ocultos.

La clave raíz de UsrClass lleva el SID del usuario con el sufijo _Classes (S-1-5-21-...-1104_Classes). Así un parser atribuye un UsrClass.dat suelto a una cuenta aunque el archivo se haya renombrado. NTUSER.DAT no lleva el SID en el nombre de su raíz, pero sus valores Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders apuntan al perfil (C:\Users\<nombre>\Desktop), lo que da el nombre de usuario.

Dentro de las claves

...\Shell\BagMRU                 values: 0, 1, 2 (shell items), MRUListEx, NodeSlot, NodeSlots
...\Shell\BagMRU\0               children of item 0, same layout, recursively
...\Shell\Bags\<NodeSlot>\Shell  view settings for the folder whose NodeSlot = <n>
...\Shell\Bags\<NodeSlot>\ComDlg view settings saved from Open/Save dialogs
  • Los valores REG_BINARY numerados contienen cada uno un shell item.
  • MRUListEx es una lista de números de ranura de 32 bits, del más reciente al más antiguo, terminada en 0xFFFFFFFF.
  • NodeSlot vincula una clave BagMRU con su clave de ajustes Bags\<n>.

Los artículos sobre el formato de los shell items y sobre las marcas de tiempo profundizan más.

Adquirir los hives

Windows abre ambos hives en exclusiva mientras el perfil está cargado. copy falla; algunas herramientas ingenuas producen un archivo del tamaño correcto lleno de ceros. Métodos que funcionan:

MétodoCuándoNotas
KAPE con el target RegistryHivesUserTriaje en vivoLectura en bruto; recoge NTUSER.DAT, UsrClass.dat y sus registros para cada perfil, conservando la estructura Users\<nombre>\.
VelociraptorEn vivo, a escalaRecoja los archivos, o ejecute Windows.Forensics.Shellbags en el servidor y conserve igualmente los hives en bruto.
FTK Imager («Obtain Protected Files» o exportación de archivos)Un solo equipoFunciona en sistemas en vivo y en imágenes.
Instantánea de volumen (VSS)En vivo, estado anteriorLe da una segunda copia, más antigua, para comparar.
Imagen de discoEn fríoExporte desde la imagen montada (parser de imágenes de disco para un primer vistazo).

Lista de comprobación:

  1. Todos los perfiles. Recorra C:\Users\*, incluidas cuentas de servicio y de administración. En intrusiones, los ShellBags interesantes suelen pertenecer a una cuenta con la que nadie inicia sesión de forma interactiva.
  2. Los dos hives por usuario. NTUSER.DAT y UsrClass.dat.
  3. Los registros junto a cada hive. .LOG1 y .LOG2. Si los números de secuencia del bloque base difieren, el hive está sucio (dirty) y las escrituras más recientes pueden estar solo en los registros. La especificación del formato de archivo del registro de Maxim Suhanov documenta el mecanismo.
  4. Conserve la estructura de carpetas (Users\<nombre>\...) o renombre por usuario, para que la herramienta de análisis distinga las cuentas.
  5. Calcule el hash de lo recopilado.

Hives sucios y reproducción de registros

Un hive copiado de un sistema en vivo suele estar sucio. Reproduzca los registros antes de un análisis definitivo, por ejemplo con rla.exe de Eric Zimmerman (sus herramientas) o cargando el hive en Registry Explorer y guardando una copia limpia. SBECmd reproduce los registros por defecto.

ShellBags Parser detecta los hives sucios y le avisa, pero todavía no reproduce los registros. Si le indica que un hive está sucio, reprodúzcalo con una de las herramientas anteriores y suelte el hive limpio. También le indica cuando un archivo soltado es un registro de transacciones, otro hive, o está lleno de ceros (la señal habitual de una copia de un archivo bloqueado).

Referencia rápida

  • Windows moderno: UsrClass.dat → Local Settings\Software\Microsoft\Windows\Shell\BagMRU, más NTUSER.DAT → Software\Microsoft\Windows\Shell\BagMRU.
  • XP: NTUSER.DAT → Software\Microsoft\Windows\ShellNoRoam\BagMRU y Shell\BagMRU.
  • Adquisición en bruto, con .LOG1 / .LOG2, todos los perfiles, ambos hives.

Preguntas frecuentes

¿Se puede copiar UsrClass.dat en un sistema en ejecución?

No con una copia normal de archivos: el hive está bloqueado mientras el perfil del usuario está cargado. Use una herramienta de copia en bruto como KAPE, Velociraptor o FTK Imager, una instantánea de volumen o una imagen de disco.

¿Necesito los archivos .LOG1 y .LOG2?

Sí. Si el hive está sucio, las escrituras recientes siguen en los registros de transacciones. Recójalos junto al hive y reprodúzcalos antes de fiarse de los ShellBags más recientes.

Artículos relacionados

Artículos relacionados