Skip to content

Análisis forense de ShellBags: la guía completa

Qué son los ShellBags, dónde los guarda Windows, qué prueban BagMRU y los shell items, cómo leer sus fechas y dónde engaña el artefacto al analista.

Publicado el 9 min de lectura

TL;DR. Los ShellBags son claves del registro en las que el Explorador recuerda cómo se mostraba cada carpeta. Para ello mantiene, por usuario, un árbol (BagMRU) con una entrada por cada carpeta visitada: carpetas locales, unidades USB, recursos compartidos de red, el interior de archivos ZIP, carpetas que ya no existen. Cada entrada es un shell item binario que puede incluir el nombre de la carpeta, su número de entrada MFT y de secuencia, y sus fechas de creación, modificación y acceso. Los ShellBags prueban navegación, no acceso a archivos. Sus marcas de tiempo exigen cuidado. En Windows 7 y posteriores, analice UsrClass.dat y NTUSER.DAT juntos.

Los ShellBags son el artefacto al que recurro cuando la pregunta es «¿esta persona llegó a mirar esa carpeta?». Responden a ella para un soporte extraíble que nunca se incautó, para un recurso compartido que el sospechoso jura no haber visitado y para un directorio de preparación que el atacante borró antes de irse. También son uno de los artefactos más fáciles de sobreinterpretar. Esta guía cubre ambas caras.

Qué son los ShellBags y por qué Windows los conserva

El Explorador de Windows recuerda preferencias de visualización por carpeta: tamaño de iconos, columna de ordenación, vista de detalles o de lista, posición de la ventana. Microsoft nunca documentó públicamente el formato, pero el mecanismo se ha estudiado a fondo, empezando por el artículo de Chad Tilbury en SANS sobre los ShellBags de Windows 7 (2011) y el white paper de SANS de Vincent Lo, «Windows ShellBag Forensics in Depth» (2014).

Para asociar ajustes a una carpeta, el Explorador tiene que identificarla. Lo hace con una lista de identificadores de shell items, la estructura que el shell usa en todas partes para direccionar objetos (véase la documentación de Microsoft sobre ITEMIDLIST y SHITEMID). El efecto secundario es lo que da valor al artefacto: una carpeta visitada obtiene una entrada en el registro del usuario, y esa entrada permanece cuando la carpeta, la unidad o el recurso compartido ya no están.

Dos estructuras trabajan juntas:

EstructuraQué contieneUso forense
BagMRUUn árbol de claves que refleja la jerarquía de carpetas. Cada clave tiene valores binarios numerados (un shell item por subcarpeta), un orden MRUListEx y un NodeSlot.Reconstruye las rutas visitadas, el orden de uso reciente y marcas de tiempo.
BagsClaves numeradas, una por NodeSlot, con los ajustes de vista (subclaves Shell / ComDlg).Muestra que una carpeta guardó estado de vista; rara vez hace falta para reconstruir rutas.

Dónde están

En Windows 7, 10 y 11, el grueso de los datos está en el UsrClass.dat del usuario, con un segundo árbol, más pequeño, en NTUSER.DAT:

HiveArchivo en discoClave
UsrClass.datC:\Users\<user>\AppData\Local\Microsoft\Windows\UsrClass.datLocal Settings\Software\Microsoft\Windows\Shell\BagMRU y ...\Shell\Bags
NTUSER.DATC:\Users\<user>\NTUSER.DATSoftware\Microsoft\Windows\Shell\BagMRU y ...\Shell\Bags
NTUSER.DAT (Windows XP)C:\Documents and Settings\<user>\NTUSER.DATSoftware\Microsoft\Windows\ShellNoRoam\BagMRU (y Shell\BagMRU)

El desglose completo por versión, incluida la variante Wow6432Node y cómo adquirir hives bloqueados, está en dónde se guardan los ShellBags y cómo recopilarlos.

Cómo se reconstruye una ruta

La clave BagMRU es la raíz. Sus valores 0, 1, 2... son shell items de objetos de primer nivel del espacio de nombres: normalmente Mi PC, Red, la carpeta del perfil, la Papelera de reciclaje. Cada valor numerado tiene una subclave con el mismo número que describe sus hijos, de forma recursiva. Al unir los nombres de los items a lo largo de una rama se obtiene la ruta absoluta. Ejemplo de la muestra sintética del sitio (datos ficticios):

BagMRU\0          -> My Computer          (root folder item, GUID 20D04FE0-...)
BagMRU\0\1        -> E:                   (volume item)
BagMRU\0\1\0      -> exfil                (file entry item, directory)
BagMRU\0\1\0\0    -> finance_2026         (file entry item, directory)
                  => My Computer\E:\exfil\finance_2026
Diagrama: claves BagMRU anidadas con los shell items My Computer, E:, exfil y finance_2026, unidos en una ruta completa

El tipo de item importa. Un item raíz se identifica por un GUID de carpeta conocida, un item de volumen lleva una letra de unidad, un item «file entry» lleva el nombre 8.3, el nombre largo y, normalmente, una referencia de archivo MFT. Un item de red lleva una cadena UNC como \\FILESRV01\Finance. La estructura byte a byte se explica en el formato de los shell items.

Qué le dice una entrada de ShellBags

Para cada carpeta, un buen parser le da:

  • La ruta absoluta en el momento de la navegación, con letra de unidad o ruta UNC.
  • El tipo de shell item: volumen, directorio, ubicación de red, elemento del Panel de control, carpeta conocida, contenido de archivo comprimido.
  • Metadatos del sistema de archivos de la entrada de directorio (el bloque de extensión 0xBEEF0004): fechas de creación, modificación y acceso como marcas de tiempo FAT con resolución de 2 segundos y, en NTFS, el número de entrada MFT y de secuencia.
  • Metadatos del registro: el LastWrite de la clave, la posición de la entrada en el MRUListEx del padre, el NodeSlot y el número de subcarpetas.

Las fechas incrustadas describen la propia carpeta, capturada cuando se creó el shell item. Según las pruebas de 4n6k, no se actualizan en visitas posteriores. Las fechas del registro describen cuándo cambiaron las claves BagMRU. Confundir unas con otras es el error más común en los informes sobre ShellBags. El artículo sobre las marcas de tiempo de los ShellBags desarrolla la lógica con un ejemplo concreto.

Qué crea un ShellBag

La navegación por carpetas a través del shell de Windows. Eso incluye las ventanas del Explorador y, según las pruebas que resume 4n6k, los cuadros de diálogo Abrir/Guardar habituales. La misma fuente señala que en Windows 7 puede bastar con seleccionar una carpeta; no siempre hay que entrar en ella. Cada carpeta padre de una ruta visitada obtiene también su propia entrada, porque el árbol tiene que contenerla.

Lo que no crea ninguno: cd y dir en un símbolo del sistema, Get-ChildItem en PowerShell, los scripts, la mayoría de gestores de archivos de terceros y las herramientas remotas que enumeran archivos mediante API en lugar del shell. Un atacante que prepara los datos desde una consola no deja ShellBags. Un atacante que abre el Explorador sobre un recurso compartido, sí.

Valor en una investigación

Estas son las preguntas que los ShellBags responden bien:

  1. Soportes extraíbles. Una carpeta bajo E:\ o F:\ prueba la navegación en un volumen que quizá desapareció hace tiempo. Cruce la letra de unidad con el historial de dispositivos USB del hive SYSTEM y los registros de eventos (el parser EVTX y el parser de registro los cubren).
  2. Recursos compartidos de red. Los items de ubicación de red conservan nombres \\servidor\recurso. Que una cuenta de servicio navegue por \\FILESRV01\Finance\Payroll es un hallazgo en sí mismo.
  3. Archivos comprimidos. El Explorador recorre los ZIP como si fueran carpetas, y navegar dentro de uno deja entradas bajo el item del propio archivo. Windows 11 también abre de forma nativa RAR, 7z y variantes de tar desde la actualización de octubre de 2023 KB5031455; el rastro que dejan está menos documentado, así que pruébelo en su build de destino. Véase ShellBags y archivos ZIP.
  4. Carpetas borradas. La entrada sobrevive al directorio. El número de entrada MFT y de secuencia permite comprobar si el registro se reutilizó. Véase carpetas borradas y ShellBags.
  5. Conocimiento. En casos internos, los ShellBags pueden mostrar que un usuario navegó hasta la carpeta donde estaban los archivos en disputa, algo relevante cuando alguien afirma que desconocía la existencia de esa carpeta.

Dónde engañan los ShellBags

  • Navegar no es acceder a un archivo. Un ShellBag prueba que la carpeta se visitó o seleccionó, no que se abriera payroll.xlsx dentro de ella. Para aperturas de archivos, mire los archivos LNK, las Jump Lists y RecentDocs. La comparación está en ShellBags frente a archivos LNK, Jump Lists y RecentDocs.
  • El LastWrite de una clave no es «última apertura». Cambia cuando cambian sus hijos. Solo el hijo en primera posición del MRUListEx del padre puede vincularse al LastWrite del padre.
  • Las fechas incrustadas no son fechas de acceso del usuario. Son las fechas de la carpeta en el sistema de archivos tal como estaban cuando se registró el item por primera vez.
  • La ausencia es una prueba débil. La actividad por consola, las herramientas de limpieza, los restablecimientos de perfil y los hives copiados sin sus registros de transacciones eliminan u ocultan entradas. Véase limitaciones y antiforense de los ShellBags.

Un flujo de trabajo mínimo

  1. Recopile NTUSER.DAT y UsrClass.dat de cada usuario con sus .LOG1/.LOG2, mediante copia en bruto (KAPE, Velociraptor, FTK Imager o una imagen de disco).
  2. Reproduzca los registros de transacciones si el hive está sucio (dirty).
  3. Analice ambos hives y conserve la atribución a la cuenta (SID de la clave raíz de UsrClass, nombre de usuario de NTUSER).
  4. Criba: otras letras de unidad, rutas UNC, rutas de archivos comprimidos, carpetas de preparación escribibles por el usuario (ProgramData, AppData, Temp, Users\Public).
  5. Construya una línea de tiempo con las horas de «última interacción» derivadas del MRU y contrástela con el diario USN, los LNK y los registros de eventos antes de afirmar nada en un informe.

Los pasos 3 y 4 se pueden hacer en el navegador con ShellBags Parser: suelte los hives, una carpeta o un ZIP de KAPE, y reconstruye el árbol, señala otras unidades, ubicaciones de red, archivos comprimidos y carpetas escribibles por el usuario, y exporta a CSV o JSON. No se sube nada. La guía paso a paso recorre una sesión con la muestra integrada.

Más lecturas

Preguntas frecuentes

¿Qué prueban los ShellBags?

Que una cuenta de usuario concreta navegó hasta una carpeta, o la seleccionó, en el Explorador o en un cuadro de diálogo Abrir/Guardar. No prueban que se abriera ningún archivo de esa carpeta.

¿Sobreviven los ShellBags al borrado de la carpeta o a la retirada del USB?

Sí. La entrada BagMRU permanece en el hive del usuario hasta que Windows o una herramienta de limpieza la elimina, así que siguen visibles las carpetas de unidades desconectadas, recursos compartidos desconectados y directorios borrados.

¿Qué hive hay que analizar, NTUSER.DAT o UsrClass.dat?

Los dos. Desde Windows Vista y 7 la mayoría de las entradas están en UsrClass.dat, pero NTUSER.DAT conserva su propio árbol BagMRU, más pequeño. Analice la pareja junta para cada usuario.

Artículos relacionados

Artículos relacionados