Skip to content

Análisis forense de ShellBags de Windows

ShellBags Parser

Cada carpeta que un usuario recorrió en el Explorador — local, USB, recursos de red, dentro de ZIP, incluso carpetas que ya no existen. Analizado en tu navegador con WebAssembly — no se sube nada.

  • NTUSER.DAT
  • UsrClass.dat
  • BagMRU
  • Rust → WebAssembly

Suelta aquí UsrClass.dat o NTUSER.DAT

Desde Windows 7 la mayoría de los ShellBags están en UsrClass.dat; añade también NTUSER.DAT. Se aceptan carpetas y colecciones ZIP (KAPE, Velociraptor) tal cual, con un par de colmenas por usuario.

Colmenas sintéticas de una intrusión ficticia — sin datos reales. Cómo recopilar ↓

100 % en el cliente: las colmenas se analizan con WebAssembly en tu navegador y nunca se suben.

Cómo obtener tus datos

UsrClass.dat + NTUSER.DAT

Necesitas las dos colmenas de cada usuario, idealmente con sus archivos .LOG1/.LOG2. Windows las bloquea mientras está en marcha, así que haz una copia en bruto: el primer método es un solo pegado.

  1. RecopilarCopia las dos colmenas de cada usuario, con sus registros.
  2. SoltarSuelta la carpeta C:\triage o el ZIP en el recuadro de arriba.
  3. Se queda en tu navegadorSe analiza localmente con WebAssembly. No se sube nada.

Recomendado · incluido en Windows

Windows 10/11 o Server 2016+. Pégalo en un PowerShell abierto con «Ejecutar como administrador». Copia las colmenas y los registros de cada perfil mediante una instantánea de volumen (esentutl /vss); no hay que instalar nada.

PowerShell · como administrador
$out = 'C:\triage'
Get-ChildItem C:\Users -Directory | ForEach-Object {
  foreach ($rel in 'NTUSER.DAT', 'NTUSER.DAT.LOG1', 'NTUSER.DAT.LOG2',
      'AppData\Local\Microsoft\Windows\UsrClass.dat',
      'AppData\Local\Microsoft\Windows\UsrClass.dat.LOG1',
      'AppData\Local\Microsoft\Windows\UsrClass.dat.LOG2') {
    $src = Join-Path $_.FullName $rel
    if (Test-Path -LiteralPath $src) {
      $dst = Join-Path "$out\Users\$($_.Name)" $rel
      New-Item -ItemType Directory -Force -Path (Split-Path $dst) | Out-Null
      esentutl.exe /y $src /vss /d $dst
    }
  }
}
attrib -h -s "$out\*" /s /d

Resultado: C:\triage\Users\<nombre>\… para cada cuenta. Suelta aquí la carpeta C:\triage, o comprímela y suelta el ZIP.

Trampas habituales

  • Una copia normal de una colmena en uso falla o produce un archivo lleno de ceros (la herramienta lo indica). Usa uno de los métodos de copia en bruto de arriba.
  • ¿Aviso de colmena sucia? Reproduce los .LOG1/.LOG2 con rla.exe de Eric Zimmerman o con Registry Explorer y suelta la colmena limpia.
  • Recopila todos los perfiles, incluidas las cuentas de servicio y de administración, y conserva las carpetas Users\<nombre>\: los archivos sueltos renombrados quizá solo se identifiquen por su SID.

¿Qué son los ShellBags?

Los ShellBags son claves del registro donde el Explorador de Windows recuerda cómo se mostraba cada carpeta — modo de vista, tamaño de iconos, posición de la ventana. Para ello guarda, por usuario, una entrada por cada carpeta abierta, en un árbol que refleja la jerarquía de carpetas.

Como Windows conserva estas entradas mucho después de que la carpeta desaparezca, los ShellBags prueban que un usuario navegó a una ubicación: una unidad USB desconectada, un recurso compartido, el interior de un ZIP o una carpeta eliminada después.

Dónde se almacenan los ShellBags

  • Windows 7 y posteriores: UsrClass.dat (C:\Users\<usuario>\AppData\Local\Microsoft\Windows\UsrClass.dat) bajo Local Settings\Software\Microsoft\Windows\Shell\BagMRU y Bags.
  • También NTUSER.DAT (C:\Users\<usuario>\NTUSER.DAT) bajo Software\Microsoft\Windows\Shell\BagMRU — sobre todo escritorio y red.
  • Windows XP: NTUSER.DAT, Software\Microsoft\Windows\ShellNoRoam\BagMRU.
  • Cada clave BagMRU contiene valores numerados — un elemento shell por subcarpeta — más MRUListEx (orden de uso reciente) y NodeSlot (enlace a la configuración de vista de Bags).

Por qué importa en una investigación

  • Muestra las carpetas que abrió un usuario concreto, incluso en medios extraíbles o recursos remotos que ya no están conectados.
  • Los elementos shell incluyen la entrada MFT y el número de secuencia de la carpeta, y sus fechas de creación, modificación y acceso en el momento de la navegación.
  • Navegar dentro de archivos ZIP y a recursos de red suele revelar preparación y exfiltración de datos.

Limitaciones

  • Las marcas de tiempo de las claves solo indican su último cambio; la «última interacción» solo puede deducirse para el hijo usado más recientemente de cada carpeta.
  • Las fechas de los elementos shell usan formato FAT: resolución de 2 segundos.
  • Un ShellBag prueba que la carpeta se recorrió en el Explorador, no que se abrieran sus archivos.
  • Las entradas eliminadas del registro (celdas no asignadas) aún no se recuperan.

Cómo obtener las colmenas

  • Ambas colmenas están bloqueadas mientras el usuario tiene sesión iniciada: recógelas con KAPE (objetivo RegistryHivesUser), Velociraptor, FTK Imager o desde una imagen de disco.
  • Conserva los archivos .LOG1 y .LOG2 junto a cada colmena: una colmena «dirty» puede carecer de escrituras recientes.
  • Nombra cada par por usuario (o conserva la estructura Users\<nombre>\) para que la herramienta distinga las cuentas.

Preguntas frecuentes

¿Se sube mi colmena a algún sitio?

No. El parser está escrito en Rust, compilado a WebAssembly y se ejecuta en un Web Worker de tu navegador. No hay ningún punto de subida; el sitio funciona sin conexión una vez cargado.

¿UsrClass.dat o NTUSER.DAT?

Ambos. Desde Windows 7 la mayoría de los ShellBags están en UsrClass.dat; NTUSER.DAT contiene un BagMRU más pequeño (escritorio, algunos elementos de red). Suéltalos juntos para verlo todo de un usuario.

¿Qué significa «última interacción»?

Cuando cambia el orden de las subcarpetas de una carpeta, Windows reescribe su clave. La subcarpeta en primer lugar de MRUListEx es la que se usó cuando se escribió por última vez la clave padre: esa fecha se muestra como su última interacción.

¿Pueden los ShellBags mostrar carpetas eliminadas?

Sí. Las entradas permanecen tras eliminar la carpeta, así que una carpeta que ya no existe en el disco puede seguir apareciendo aquí, con su entrada MFT y sus marcas de tiempo.

¿Es lo mismo que SBECmd / ShellBags Explorer?

Cubre los mismos campos esenciales (ruta absoluta, tipo shell, posición MRU, NodeSlot, referencia MFT, marcas de tiempo) y exporta a CSV, pero funciona en el navegador sin instalación.