Comparativa de parsers de ShimCache: Mandiant, Zimmerman, Velociraptor y esta herramienta

4 min de lectura

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

HerramientaLenguajeDistribuciónMejor para
Mandiant ShimCacheParserPythonFuente en GitHubLeer el formato, scriptear análisis personalizado
Eric Zimmerman AppCompatCacheParserC# / .NETBinario únicoTrabajo de caso — el más fiable para informes
Velociraptor Windows.Registry.AppCompatCacheVQLServidor VelociraptorRecolección en vivo a escala de flota
Shimcache Parser (esta herramienta)Rust → WebAssemblySolo navegador, sin instalaciónTriaje 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:

  1. 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.
  2. 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.LOG2 llevan 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

Artículos relacionados