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.
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:
| Archivo | Dónde | Por qué |
|---|---|---|
UsrClass.dat | C:\Users\<user>\AppData\Local\Microsoft\Windows\ | Árbol principal de ShellBags desde Vista |
NTUSER.DAT | C:\Users\<user>\ | Segundo árbol BagMRU y el nombre de usuario |
.LOG1 / .LOG2 de cada uno | Junto a cada hive | Escrituras 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:
| Campo | Significado |
|---|---|
| Nombre / Nombre 8.3 | Nombre largo del bloque de extensión, nombre corto de la cabecera del item |
| Tipo de elemento shell | Raíz, volumen, directorio, red, delegado, panel de control, URI, variable |
| Clave BagMRU | Por ejemplo BagMRU\0\1\0\0, para encontrarla en Registry Explorer |
| Posición MRU | Posición en el MRUListEx del padre (0 = la más reciente) |
| NodeSlot | Vínculo con la clave de ajustes Bags |
| Subcarpetas | Número de subclaves |
| Modificación (elemento shell) | Fecha de modificación FAT de la cabecera del item |
| Versión del bloque de extensión | 3, 7, 8 o 9: indica la versión de Windows que lo escribió |
| GUID | Para items raíz y carpetas conocidas |
| Elemento shell sin procesar | Hexadecimal, 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.