Limitaciones y antiforense de los ShellBags
Lo que los ShellBags no pueden probar, lo que nunca los crea, cómo los borran PrivaZer o CCleaner y los rastros que dejan el borrado y la manipulación.
TL;DR. Los ShellBags prueban navegación en el shell de Windows por parte de una cuenta, nada más. Son ciegos al acceso a archivos por consola, script o API, sus fechas exigen interpretación, Windows limita cuántas carpetas recuerda, y un usuario (o un malware) puede borrarlos con una edición del registro o un limpiador. El borrado rara vez no deja nada: busque claves Bags huérfanas, listas MRUListEx que referencian valores inexistentes, claves borradas en celdas no asignadas del hive, copias antiguas en registros de transacciones e instantáneas, y rastros de ejecución del propio limpiador.
He visto ShellBags ganar casos y los he visto mal usados en informes. El fallo casi siempre es el mismo: tratar el artefacto como un registro completo e inalterable de acceso a carpetas. No es ninguna de las dos cosas.
Lo que los ShellBags no pueden decirle
| Limitación | Por qué | Qué usar en su lugar |
|---|---|---|
| Acceso a archivos | Solo se registran carpetas | Archivos LNK, Jump Lists, RecentDocs |
| Actividad por consola / script | cmd, PowerShell, scripts y API nunca pasan por el espacio de nombres del shell | Artefactos de ejecución (Prefetch, Amcache), registros de eventos de PowerShell y Seguridad, diario USN |
| Hora exacta de visita de la mayoría de entradas | Solo el hijo en primera posición MRU de cada carpeta se vincula a una escritura de clave | Corrobore; véase las marcas de tiempo de los ShellBags explicadas |
| Número de visitas | No existe contador | Jump Lists (número de accesos en versiones recientes) |
| Identidad del dispositivo | Un item de volumen solo guarda la letra de unidad | Historial de dispositivos del hive SYSTEM, números de serie de volumen de los LNK |
| Quién estaba al teclado | El hive pertenece a una cuenta | Eventos de inicio de sesión, artefactos de RDP, contexto |
Lo que nunca crea un ShellBag
dir, cd, robocopy, xcopy, Get-ChildItem, Compress-Archive, rclone, la mayoría de herramientas de administración remota y el malware que enumera archivos mediante API. El resumen de 2026 de Cyber Triage dice lo mismo sobre el acceso por línea de comandos y por navegador. Un atacante que nunca abre el Explorador no deja ningún ShellBag.
Límites de retención
Windows solo recuerda ajustes de vista para un número limitado de carpetas. El valor BagMRU Size, cuyo valor por defecto suele documentarse como 5.000 desde Vista (véase el artículo de Winaero), amplía el límite. En perfiles muy usados, no dé por hecho que la navegación más antigua sigue ahí.
Límites de los parsers
Los shell items no están documentados y son extensibles. Todos los parsers, incluido ShellBags Parser, decodifican algunos items solo en parte (dispositivos MTP, contenido de archivos comprimidos, resultados de búsqueda). Desconocido no significa sospechoso. Conserve el hexadecimal y contraste con una segunda herramienta antes de construir sobre una entrada extraña (comparativa de herramientas).
Estado del hive
Un hive copiado de un sistema en vivo suele estar sucio (dirty): las escrituras más recientes están en .LOG1/.LOG2. Que falten ShellBags recientes es más a menudo un problema de adquisición que de antiforense. Reproduzca primero los registros (la especificación del formato de registro de Suhanov describe el mecanismo).
Cómo se eliminan los ShellBags
| Método | Qué hace | Rastros típicos |
|---|---|---|
Borrado manual (regedit, reg delete) de BagMRU/Bags | Elimina claves bajo HKCU\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell y/o HKCU\Software\Microsoft\Windows\Shell | Árbol diminuto con un LastWrite reciente en la raíz; celdas borradas en el hive |
| PrivaZer | Según su documentación, elimina el rastro BagMRU; conserva los ajustes Bags salvo que se elija «eliminar todo»; puede limitarse a los «rastros de carpetas borradas» | Claves Bags\<n> huérfanas; se conservan entradas de carpetas existentes mientras desaparecen las borradas; artefactos de ejecución de PrivaZer |
| CCleaner con reglas de la comunidad (Winapp2) | Borra las claves listadas en el archivo de reglas | Artefactos de ejecución de CCleaner, archivo de reglas en disco |
| Restablecimiento / perfil nuevo | UsrClass.dat nuevo | Fecha de creación del perfil, restos de la carpeta del perfil anterior |
| Manipulación de fechas | Herramientas como SetRegTime pueden reescribir el LastWrite de las claves mediante la clase documentada KEY_WRITE_TIME_INFORMATION | Fechas de clave incoherentes con las fechas incrustadas, el orden padre/hijo y otros artefactos |
Detectar una limpieza
1. Incoherencias estructurales
- Claves
Bagshuérfanas. Cada entrada BagMRU tiene unNodeSlotque apunta aBags\<n>. Muchas clavesBags\<n>sin ninguna entrada BagMRU que apunte a ellas encajan con un borrado limitado a BagMRU. ShellBags Parser muestra el NodeSlot de cada entrada; liste las subclaves deBagsen Registry Explorer y compare. MRUListExque referencia valores inexistentes. Si elMRUListExde un padre incluye la ranura 3 pero no existe el valor3, algo eliminó el valor sin reescribir la lista.- NodeSlots altos, pocas entradas. Los slots se asignan a medida que las carpetas reciben estado de vista. Un perfil cuyos NodeSlots llegan a los miles pero cuyo BagMRU tiene un puñado de entradas puede haber perdido historial (una heurística; confírmelo con las demás comprobaciones).
- LastWrite reciente de la raíz en un árbol casi vacío. La clave raíz
BagMRUreescrita minutos antes de la adquisición, en un perfil por lo demás activo, merece una pregunta.
2. Copias recuperables
- Celdas no asignadas del hive. Las claves y valores borrados suelen quedar en celdas libres hasta que se sobrescriben. Registry Explorer muestra claves borradas recuperadas; ShellBags Parser aún no las recupera.
- Registros de transacciones.
UsrClass.dat.LOG1/.LOG2pueden contener estados anteriores de algunas páginas. - Instantáneas de volumen y copias de seguridad suelen contener un UsrClass.dat más antiguo. Analice ambos y compárelos.
- Otros hives.
NTUSER.DATtiene su propio árbol BagMRU, que algunos limpiadores ignoran.
3. Rastros del limpiador
Un limpiador es un programa. Aparece en Prefetch, Amcache, ShimCache, SRUM y BAM como cualquier otro. PrivaZer o CCleaner ejecutados poco antes de una investigación previsible es un hallazgo en sí.
4. Huecos entre artefactos
LNK, Jump Lists y RecentDocs que apuntan a carpetas sin ShellBags, o un historial de dispositivo USB para una letra de unidad sin ningún ShellBag en esa letra, sugieren que los ShellBags están incompletos. Huecos coherentes en varios artefactos apuntan a un limpiador o a otra cuenta.
Informar con responsabilidad
- Indique qué muestran los ShellBags, para qué cuenta y con qué tipo de fecha.
- No infiera nunca acceso a archivos a partir de un ShellBag.
- No infiera nunca inocencia a partir de una ausencia.
- Si sospecha una limpieza, enumere las incoherencias concretas, no una conclusión.
Preguntas frecuentes
¿Se pueden borrar los ShellBags?
Sí. Cualquier proceso que se ejecute como el usuario puede borrar las claves BagMRU, y limpiadores como PrivaZer, o CCleaner con reglas de la comunidad, ofrecen limpiarlos. Suelen quedar rastros: claves Bags huérfanas, listas MRU incoherentes, celdas no asignadas del hive, registros de transacciones, instantáneas y la ejecución del propio limpiador.
¿Un árbol de ShellBags vacío significa que el usuario no hizo nada?
No. La actividad por consola y por scripts nunca crea ShellBags, y un árbol vacío o diminuto en un perfil activo es en sí un motivo para buscar una limpieza o un restablecimiento del perfil.