ShimCache vs Prefetch: ¿cuál prueba que un programa se ejecutó?

3 min de lectura

TL;DR. Prefetch es prueba real de ejecución, con número y horas de ejecución. ShimCache solo prueba que un archivo existió y fue examinado. Si necesitas «¿se ejecutó, y cuándo?», recurre primero a Prefetch; si Prefetch está deshabilitado o borrado, ShimCache pasa a ser tu testigo de respaldo sobre la existencia.

ShimCache y Prefetch se comparan constantemente porque ambos sacan a la luz «programas en un equipo Windows». Pero no son el mismo tipo de evidencia, y tratarlos como intercambiables produce conclusiones erróneas. Esta es la comparación directa.

Vistazo general

ShimCachePrefetch
UbicaciónHKLM\SYSTEM\…\AppCompatCacheC:\Windows\Prefetch\*.pf
Qué pruebaEl archivo existió / fue examinadoEl archivo se ejecutó
Contador de ejecucionesNo
Marcas de ejecuciónNo (solo el mtime del archivo)Sí — últimas 8 ejecuciones
Archivos referenciadosNoSí — DLL, archivos de datos cargados
Se escribe cuandoSolo al apagar limpiamenteEn ~10 s tras la ejecución
Por defecto en servidoresA menudo deshabilitado
CapacidadHasta 1.024 entradas1.024 archivos .pf (Win8+)

Dónde gana Prefetch

Prefetch es el artefacto de ejecución más fuerte, sin discusión. Cada archivo .pf te da la última hora de ejecución (hasta ocho en Windows 8+), un contador total de ejecuciones y la lista de archivos que cargó el proceso. Eso basta para afirmar «este binario se ejecutó a estas horas» — algo que ShimCache nunca puede hacer, porque su única marca temporal es la fecha de última modificación del archivo, no una hora de ejecución.

Dónde gana ShimCache

Prefetch tiene una debilidad crítica: está frecuentemente deshabilitado en servidores, en imágenes optimizadas para SSD y por los atacantes (EnablePrefetcher = 0). También lo borran activamente las herramientas de limpieza. ShimCache, en cambio, siempre está activo y es lo bastante sensible para registrar un binario que se soltó y se borró antes de ejecutarse siquiera. Cuando Prefetch está vacío, ShimCache aún responde a menudo a «¿este archivo tocó alguna vez este equipo?» — ver ¿Demuestra el ShimCache que un programa se ejecutó? para saber hasta dónde llevar esa inferencia.

Cómo usarlos juntos

  • Ambos presentes, rutas coincidentes: prueba sólida de ejecución. Usa las horas de Prefetch como línea de tiempo de eventos; usa el mtime de ShimCache solo para anclar la identidad del archivo.
  • Solo Prefetch: la ejecución está probada; ShimCache puede que simplemente aún no se haya volcado (solo escribe al apagar — ver dónde se almacena el ShimCache).
  • Solo ShimCache: el archivo existió y fue examinado. No afirmes ejecución sin corroboración — saca AmCache, BAM y registros de eventos (matriz completa aquí).
  • Ninguno, pero sospechas ejecución: busca antiforense. El borrado de Prefetch más un volcado de ShimCache ausente es en sí un hallazgo, tratado en Antiforense del ShimCache.

Para leer el lado de ShimCache sin instalar nada, suelta una colmena SYSTEM en el Shimcache Parser — todo en el navegador.

Lectura adicional

Artículos relacionados