TL;DR. Usa AppCompatCacheParser de Eric Zimmerman para casework — mayor cobertura de SO, salida CSV, probado. Usa Velociraptor para triaje en vivo a escala. Usa ShimCacheParser de Mandiant cuando ayude una referencia Python simple. Usa esta herramienta cuando quieras cero instalación y cero upload — triaje rápido en el navegador. Cruza resultados ante desacuerdos: el formato es lo bastante quisquilloso como para que dos parsers vean cosas distintas a veces.
Los cuatro parsers que importan
| Herramienta | Lenguaje | Distribución | Mejor para |
|---|---|---|---|
| Mandiant ShimCacheParser | Python | Fuente en GitHub | Leer el formato, scriptear análisis personalizado |
| Eric Zimmerman AppCompatCacheParser | C# / .NET | Binario único | Trabajo de caso — el más fiable para informes |
Velociraptor Windows.Registry.AppCompatCache | VQL | Servidor Velociraptor | Recolección en vivo a escala de flota |
| Shimcache Parser (esta herramienta) | Rust → WebAssembly | Solo navegador, sin instalación | Triaje rápido sin setup; ningún dato sale del equipo |
Cuándo usar cada uno
AppCompatCacheParser de Eric Zimmerman (estándar para casework)
El parser en C# de EZ es el estándar de facto para análisis offline. Cubre todas las versiones de Windows desde XP hasta 11, reproduce automáticamente los logs de transacción de SYSTEM y genera CSV que encaja en Timeline Explorer. Si tu salida va a un informe final, es lo que los revisores esperan.
AppCompatCacheParser.exe -f SYSTEM --csv .
Limitaciones: binario solo para Windows; necesita .NET Framework / Core; poco adecuado para triaje ad-hoc en navegador.
Velociraptor Windows.Registry.AppCompatCache (recolección a escala)
Cuando hay que extraer el ShimCache de decenas o miles de hosts, gana Velociraptor. El artefacto lee la caché en memoria directamente desde endpoints en marcha — la misma vista que el SO habría volcado al apagar, pero sin esperar al apagado. Mira Extraer el ShimCache de un volcado de memoria.
Limitaciones: requiere infraestructura Velociraptor. Sobredimensionado para análisis puntuales.
ShimCacheParser de Mandiant (la referencia del formato)
La prueba de concepto original en Python. Menos pulido que EZ pero útil cuando quieres leer el código para entender cómo se decodifica el formato, o para scriptear análisis personalizado. Salida en texto plano; intégralo en otros pipelines Python.
python ShimCacheParser.py -t -h /ruta/a/SYSTEM
Limitaciones: requiere Python 2.x (o fork de compatibilidad); CSV / JSON menos pulidos que los de EZ.
Este Shimcache Parser (sin instalación, sin upload)
Esta herramienta existe para dos casos que los demás no cubren bien:
- Triaje sin instalación: abre la página, suelta una colmena, mira las entradas. Útil cuando estás en un host sin herramientas DFIR instaladas, o analizando en portátil / préstamo.
- Análisis sensible: la colmena se analiza por completo en tu navegador vía WebAssembly. El archivo nunca sale de la página, nunca toca un servidor, nunca aparece en logs. Importa cuando la colmena pertenece a un cliente / caso donde subir no es aceptable.
Compromisos: sin línea de comandos, sin exportación CSV (todavía), sin ganchos de automatización. Para triaje guiado por humano, no pipelines. Para pipelines, la herramienta de EZ.
Cruce de resultados: cuando dos parsers no concuerdan
El formato binario del ShimCache no perdona — la referencia del formato Windows 10/11 muestra cómo un solo offset mal calculado puede cascadear. En la práctica suelen coincidir, pero hives reales a veces vienen ligeramente fuera de spec, y los parsers difieren en:
- Detección de bitness en hives Win7 — la cabecera no dice inequívocamente «x86 vs x64», los parsers eligen heurísticamente. Dos herramientas con rutas distintas en la misma hive son tu señal.
- Normalización de rutas — escapado de backslashes, capitalización de unidades, prefijos
\??\. Cada parser normaliza distinto. - Entradas vacías / placeholders — unos emiten filas vacías, otros las saltan.
Cuando importa, corre dos parsers y diff. Combinaciones recomendables:
- EZ + esta herramienta para cross-check rápido
- EZ + Mandiant para «Python vs C#»
- EZ + Velociraptor para «memoria vs disco»
Errores comunes
- No olvides los logs de transacción.
SYSTEM.LOG1/SYSTEM.LOG2llevan escrituras pendientes; sin ellos lees una colmena obsoleta. EZ los reproduce automáticamente, otros no. Mira Adquirir una colmena SYSTEM. - No compares ShimCache en disco y en memoria directamente. Fuentes de verdad distintas — en disco, solo el último estado de apagado limpio; en memoria, la sesión actual. Complementarios, no redundantes.
- No asumas ejecución. Ningún parser corrige esto — la caché registra examen, no ejecución.
Lectura adicional
- AppCompatCacheParser de Eric Zimmerman — parser de referencia.
- ShimCacheParser de Mandiant — implementación Python original.
- Velociraptor
Windows.Registry.AppCompatCache— artefacto VQL. - Windows 10/11 AppCompatCache deep dive (Ø Security) — explica por qué los parsers a veces difieren.