¿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.
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 Windows | Hive | Ruta de la clave dentro del hive | Vista en vivo (regedit) |
|---|---|---|---|
| XP / Server 2003 | NTUSER.DAT | Software\Microsoft\Windows\ShellNoRoam\BagMRU y \Bags | HKCU\Software\Microsoft\Windows\ShellNoRoam |
| XP / Server 2003 | NTUSER.DAT | Software\Microsoft\Windows\Shell\BagMRU y \Bags | HKCU\Software\Microsoft\Windows\Shell |
| Vista, 7, 8, 8.1, 10, 11 | UsrClass.dat | Local Settings\Software\Microsoft\Windows\Shell\BagMRU y \Bags | HKCU\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell |
| Vista, 7, 8, 8.1, 10, 11 | NTUSER.DAT | Software\Microsoft\Windows\Shell\BagMRU y \Bags | HKCU\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énWow6432Node\Local Settings\Software\Microsoft\Windows\Shell\BagMRUdentro 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
| Hive | Ruta (Vista y posteriores) | Se monta en |
|---|---|---|
| UsrClass.dat | C:\Users\<user>\AppData\Local\Microsoft\Windows\UsrClass.dat | HKEY_USERS\<SID>_Classes, fusionado en HKCU\Software\Classes |
| NTUSER.DAT | C:\Users\<user>\NTUSER.DAT | HKEY_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_BINARYnumerados contienen cada uno un shell item. MRUListExes una lista de números de ranura de 32 bits, del más reciente al más antiguo, terminada en0xFFFFFFFF.NodeSlotvincula una clave BagMRU con su clave de ajustesBags\<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étodo | Cuándo | Notas |
|---|---|---|
KAPE con el target RegistryHivesUser | Triaje en vivo | Lectura en bruto; recoge NTUSER.DAT, UsrClass.dat y sus registros para cada perfil, conservando la estructura Users\<nombre>\. |
| Velociraptor | En vivo, a escala | Recoja 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 equipo | Funciona en sistemas en vivo y en imágenes. |
| Instantánea de volumen (VSS) | En vivo, estado anterior | Le da una segunda copia, más antigua, para comparar. |
| Imagen de disco | En frío | Exporte desde la imagen montada (parser de imágenes de disco para un primer vistazo). |
Lista de comprobación:
- 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. - Los dos hives por usuario. NTUSER.DAT y UsrClass.dat.
- Los registros junto a cada hive.
.LOG1y.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. - Conserve la estructura de carpetas (
Users\<nombre>\...) o renombre por usuario, para que la herramienta de análisis distinga las cuentas. - 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ásNTUSER.DAT→Software\Microsoft\Windows\Shell\BagMRU. - XP:
NTUSER.DAT→Software\Microsoft\Windows\ShellNoRoam\BagMRUyShell\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.