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
| ShimCache | Prefetch | |
|---|---|---|
| Ubicación | HKLM\SYSTEM\…\AppCompatCache | C:\Windows\Prefetch\*.pf |
| Qué prueba | El archivo existió / fue examinado | El archivo se ejecutó |
| Contador de ejecuciones | No | Sí |
| Marcas de ejecución | No (solo el mtime del archivo) | Sí — últimas 8 ejecuciones |
| Archivos referenciados | No | Sí — DLL, archivos de datos cargados |
| Se escribe cuando | Solo al apagar limpiamente | En ~10 s tras la ejecución |
| Por defecto en servidores | Sí | A menudo deshabilitado |
| Capacidad | Hasta 1.024 entradas | 1.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
- Notas del formato Prefetch (libscca) — la referencia del formato binario
.pf. - Mandiant: leveraging the ShimCache — define el papel forense del ShimCache.