Skip to content

Cómo analizar ShellBags online con un parser en el navegador

Paso a paso: analizar UsrClass.dat y NTUSER.DAT en el navegador, leer el árbol y la cronología, cribar carpetas señaladas y exportar a CSV o JSON.

Publicado el 6 min de lectura

TL;DR. Abra ShellBags Parser, suelte UsrClass.dat y NTUSER.DAT (o un ZIP completo de KAPE/Velociraptor) y obtendrá cada carpeta visitada en un árbol por cuenta y en una cronología, con señales de criba para otras unidades, recursos compartidos de red, archivos comprimidos y carpetas escribibles por el usuario, además de exportación a CSV/JSON. El parser está escrito en Rust, compilado a WebAssembly y se ejecuta en un Web Worker: los hives nunca salen de su equipo. Todavía no reproduce los registros de transacciones, así que reproduzca antes los hives sucios.

La gente busca «ShellBags Explorer online» porque las herramientas de referencia son programas de Windows, y buena parte del primer triaje se hace en un Mac, en una estación de análisis Linux o en un portátil corporativo bloqueado donde instalar herramientas .NET exige abrir un ticket. Esta guía recorre una sesión completa con la muestra sintética integrada en el sitio, para seguirla sin datos reales.

Antes de empezar: recopilar los archivos correctos

Necesita, por usuario:

ArchivoDóndePor qué
UsrClass.datC:\Users\<user>\AppData\Local\Microsoft\Windows\Árbol principal de ShellBags desde Vista
NTUSER.DATC:\Users\<user>\Segundo árbol BagMRU y el nombre de usuario
.LOG1 / .LOG2 de cada unoJunto a cada hiveEscrituras pendientes de un hive sucio

Ambos hives están bloqueados mientras el usuario tiene sesión iniciada. Use el target RegistryHivesUser de KAPE, Velociraptor, FTK Imager o una imagen de disco. Detalles y trampas en dónde se guardan los ShellBags y cómo recopilarlos.

Si un hive está sucio (dirty), reproduzca primero sus registros con rla.exe o Registry Explorer (herramientas de Eric Zimmerman). El parser detecta los hives sucios y lo indica, pero lee el archivo principal tal cual.

Paso 1: cargar los hives

Abra la página de inicio. Puede:

  • soltar archivos sueltos (UsrClass.dat, NTUSER.DAT; las copias renombradas funcionan),
  • elegir una carpeta (por ejemplo, un directorio de salida de KAPE),
  • soltar una colección de triaje en ZIP de KAPE o Velociraptor.

O haga clic en Probar un ejemplo para cargar dos hives sintéticos de una intrusión ficticia: la cuenta svc_backup descomprime un kit de herramientas, recorre un recurso compartido de finanzas y copia datos a una unidad USB.

El análisis se ejecuta en un Web Worker. No existe ningún punto de subida; una vez cargada la página, funciona sin conexión.

Paso 2: revisar el informe de ingesta

Antes de leer los resultados, compruebe lo que no se analizó. La herramienta lista cada archivo omitido con un motivo:

  • Todo ceros: el hive estaba bloqueado al copiarlo y la herramienta de copia generó una imagen vacía. Vuelva a recopilarlo con copia en bruto.
  • Registro de transacciones: guárdelo junto al hive y reprodúzcalo; no se analiza por separado.
  • Otro hive (SYSTEM, SOFTWARE, Amcache...): los ShellBags solo están en NTUSER.DAT y UsrClass.dat. Para los demás hives, use el parser de registro o el parser de Amcache.
  • No es un hive de registro: se muestran los primeros bytes.

Las advertencias del parser (valores ilegibles, hive sucio) aparecen en su propio panel. Una advertencia de hive sucio significa que pueden faltar ShellBags recientes.

Paso 3: identificar las cuentas

Cada hive se atribuye a una cuenta: el SID de la clave raíz de UsrClass (S-1-5-21-..._Classes), el nombre de usuario de los valores Shell Folders de NTUSER, o la carpeta Users\<nombre>\ de la ruta soltada. Con una colección de triaje completa, obtiene un grupo por usuario. En la muestra, ambos hives pertenecen a svc_backup.

Paso 4: recorrer el árbol

La vista Árbol sigue la jerarquía BagMRU, agrupada por cuenta y por hive. Columnas: carpeta, tipo de elemento shell, última interacción, última escritura de la clave, creación, acceso, MFT, señales.

Haga clic en cualquier fila para abrir el panel de detalles:

CampoSignificado
Nombre / Nombre 8.3Nombre largo del bloque de extensión, nombre corto de la cabecera del item
Tipo de elemento shellRaíz, volumen, directorio, red, delegado, panel de control, URI, variable
Clave BagMRUPor ejemplo BagMRU\0\1\0\0, para encontrarla en Registry Explorer
Posición MRUPosición en el MRUListEx del padre (0 = la más reciente)
NodeSlotVínculo con la clave de ajustes Bags
SubcarpetasNúmero de subclaves
Modificación (elemento shell)Fecha de modificación FAT de la cabecera del item
Versión del bloque de extensión3, 7, 8 o 9: indica la versión de Windows que lo escribió
GUIDPara items raíz y carpetas conocidas
Elemento shell sin procesarHexadecimal, para todo lo que el parser no decodifica

En la muestra, despliegue My Computer\E: para encontrar exfil\finance_2026, y Network para encontrar \\FILESRV01\Finance con Payroll y Board.

Paso 5: cribar con señales y filtros

Marque Solo señaladas. Las señales son heurísticas sencillas y documentadas:

  • Otra unidad (¿USB?): una letra de unidad distinta de C: bajo Mi PC.
  • Ubicación de red: una ruta UNC o un item de red.
  • Dentro de un archivo comprimido: una ruta que pasa por .zip, .7z, .rar, .cab, .iso, .tar, .gz, .vhd(x) y similares.
  • Carpeta escribible por el usuario: AppData, Users\Public, ProgramData, Windows\Temp, $Recycle.Bin, PerfLogs, Temp.

Orientan; no prueban. Una unidad D: puede ser un segundo disco interno, una subcarpeta de ProgramData puede ser un directorio legítimo de un fabricante. El cuadro de filtro admite rutas, fechas y números de entrada MFT: así se pivota desde una entrada MFT vista en el diario USN hasta la carpeta.

Paso 6: pasar a la cronología

La vista Cronología ordena por la mejor fecha disponible: «Última interacción» cuando la entrada era la primera del MRUListEx de su padre y, si no, «Última escritura de la clave». Sepa cuál está mirando: la columna lo indica. La lógica está en las marcas de tiempo de los ShellBags explicadas. Cambie entre UTC y hora local con el selector; redacte los informes en UTC.

Para la muestra, la historia se lee así: tools.zip\x64 recorrido hacia las 10:07, ProgramData\Intel a las 10:09, \\FILESRV01\Finance desde las 10:31, Board a las 10:36, E:\exfil\finance_2026 a las 10:45 y la Papelera a las 10:50 (todo el 2026-09-14 en UTC, ficticio). El caso de investigación lo interpreta.

Paso 7: exportar y corroborar

Exporte a CSV o JSON. Las exportaciones contienen las filas que se muestran en ese momento, así que filtre antes si quiere una tabla centrada. Las celdas CSV que empiezan como una fórmula de hoja de cálculo se neutralizan, porque los nombres de carpeta los controla el atacante.

Después, corrobore: archivos LNK y Jump Lists para archivos abiertos en esas carpetas, registros de eventos (parser EVTX) para inicios de sesión y conexiones USB, y el diario USN para la creación y el borrado de archivos.

Lo que la herramienta (todavía) no hace

  • Reproducir los registros de transacciones .LOG1/.LOG2.
  • Recuperar claves BagMRU borradas de celdas no asignadas del hive.
  • Decodificar por completo items de dispositivos MTP, de contenido ZIP (0x52) y de resultados de búsqueda (se conservan como nombre aproximado más hexadecimal).

Para eso, use en paralelo ShellBags Explorer / SBECmd y Registry Explorer.

Artículos relacionados

Artículos relacionados