Volver a todos los artículos

Prefetch vs Amcache vs ShimCache

Windows registra evidencia de ejecución de programas en al menos tres sitios. Se solapan. Discrepan. Cada uno captura algo que los otros pasan por alto. El error es tratar a cualquiera como autoritativo.

  • Prefetch: C:\Windows\Prefetch\*.pf. Caché de tiempos por ejecución.
  • AmCache: C:\Windows\AppCompat\Programs\Amcache.hve. Hive de registro con el inventario de programas.
  • Shimcache (AppCompatCache): HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache. Caché de compatibilidad respaldada por el registro.

Prefetch — la historia de tiempos

Prefetch te dice cuándo se ejecutó un binario y cuántas veces. Cada .pf lleva hasta ocho ranuras FILETIME de última ejecución (en v26+), un contador de ejecuciones monotónico, la información del volumen de lanzamiento y la lista de métricas de archivos de las rutas que el binario tocó en sus primeros diez segundos. El nombre embebe un hash de la ruta de lanzamiento, de modo que dos copias del mismo binario en directorios distintos producen dos entradas .pf distintas.

Lo que Prefetch no te da: un historial completo. El directorio está topado (típicamente alrededor de 1024 entradas; las antiguas caducan durante el mantenimiento, más agresivamente en Win10 1709+ y en Win11 22H2+ con SSD). Tampoco corre en Windows Server por defecto.

Recurre a Prefetch primero cuando la pregunta sea "¿corrió esto, cuándo y desde dónde?". El parser de este sitio o PECmd sobre la carpeta lo expone en una pasada.

AmCache — la historia del inventario

AmCache es una hive de registro (Amcache.hve) poblada por Application Experience e infraestructura de compatibilidad relacionada. Registra metadatos de cada binario que el sistema ha visto, es decir, catalogado por AppCompat, no solo ejecutado. Hash SHA-1, tamaño, editor, versión, estado de firma, fecha de instalación y un puñado de otros campos.

Donde Prefetch dice "esto corrió ocho veces el martes pasado", AmCache dice "este binario existe en esta ruta con este SHA-1 y este editor". Combinándolos tienes "este binario exacto, identificado por hash, fue ejecutado N veces". Esa combinación es lo que te permite defender una afirmación de ejecución cuando el binario en disco ha sido intercambiado.

Para análisis offline de AmCache, consulta el parser de AmCache. En hosts anteriores a Win8, el artefacto análogo es RecentFileCache, mucho más delgado pero cubre el mismo hueco.

Shimcache — la historia de la compatibilidad

Shimcache (AppCompatCache) vive en la hive SYSTEM y existe para alimentar el motor de shimming de compatibilidad de aplicaciones, no DFIR. Registra ruta del archivo, marca temporal de última modificación según NTFS y un flag de ejecución (cuyo significado ha cambiado entre versiones de Windows, a veces de manera significativa). Tope duro alrededor de 1024 entradas en Windows moderno.

Es más antiguo y menos profundo que los otros dos. El flag de ejecución no es fiable en versiones modernas: su presencia no es prueba de ejecución, y su ausencia no es prueba de no ejecución. Trata la marca temporal como la hora de modificación NTFS del binario en el momento en que Shimcache lo observó, no como una hora de ejecución.

Shimcache gana en un escenario específico: cuando Prefetch ha sido limpiado y AmCache no está disponible o también ha sido tocado, Shimcache a menudo aún conserva un registro porque vive en la hive SYSTEM, que los atacantes dejan en paz con más frecuencia. También es útil como tercera fuente de corroboración: si Prefetch, AmCache y Shimcache colocan el binario en la misma ruta con marcas temporales alineadas, la evidencia es difícil de rebatir.

Cuál primero

Para la mayoría de preguntas "¿corrió esto?":

  1. Prefetch. Actualidad y frecuencia de ejecución.
  2. AmCache. Hash, firma e inventario más amplio.
  3. Shimcache. Corroboración de ruta y fallback cuando los dos primeros han sido tocados.

Para el panorama mayor, ninguno de estos tres es el final del trayecto. El USN journal te dice cuándo llegó el binario al disco y cuándo se tocó. SRUM te dice el uso de recursos por proceso, con bytes de red por aplicación en estaciones donde SRUM está activado. Los archivos LNK y las jump lists ponen al usuario en escena. El EVTX de Security/Sysmon te da líneas de comandos, procesos padre y contexto de usuario que ninguno de los tres artefactos de ejecución anteriores aporta por sí solo.

Cada artefacto de esta flota cubre uno de estos aspectos. Juntos cubren los huecos que cualquiera deja por separado.

Lecturas adicionales

  • Yogesh Khatri, los textos originales sobre AmCache: siguen siendo la descripción más clara de lo que la hive contiene realmente.
  • Mandiant, "Caching Out: The Value of Shimcache": lectura obligatoria sobre qué significa y qué no el flag de ejecución.
  • Eric Zimmerman, el trío AppCompatCacheParser / AmcacheParser / PECmd para análisis offline.