ShimCache vs AmCache: qué artefacto de Windows responde a cada pregunta

4 min de lectura

TL;DR. ShimCache prueba que un archivo existió en disco. AmCache prueba que se ejecutó y lo identifica por SHA-1. ShimCache solo se vuelca al apagar limpiamente. AmCache escribe de forma continua. Saca los dos. Son testigos complementarios, no sustitutos.

Cada analista junior al que he formado ha hecho la misma pregunta en la primera semana: "Si AmCache es mejor, ¿por qué seguimos sacando el ShimCache?". La respuesta es que registran eventos distintos, en momentos distintos, con modos de fallo distintos. Trátalos como sustitutos y escribirás informes que se caen al primer review técnico.

Árbol de decisión ShimCache vs AmCache

De un vistazo

ShimCacheAmCache
Ubicación en registroHKLM\SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCacheC:\Windows\AppCompat\Programs\Amcache.hve
CapacidadHasta ~1.024 entradasMiles de entradas, sin límite fijo
Datos por entradaRuta, mtime del archivo, flag de ejecución (legacy)Ruta, SHA-1, tamaño, editor, fecha de instalación, mucho más
Cuándo se escribeSolo en apagado limpioDe forma continua y al correr la tarea Appraiser
Sobrevive a reinicio forzadoNo, las entradas recientes se pierdenSí, ya están en disco
Mejor paraProbar que un archivo existió en discoProbar que un archivo se ejecutó e identificarlo por hash

Cuándo gana el ShimCache

El cache se dispara al examinar, no al ejecutar. Esa sensibilidad lo convierte en el mejor testigo para archivos que un atacante soltó brevemente y luego eliminó. Un binario que aterrizó en C:\Users\Public\ a las 14:33 y se borró a las 14:35 puede aparecer en el ShimCache si Windows lo tocó por cualquier motivo en esos dos minutos.

El cache también lleva la mtime $STANDARD_INFORMATION del archivo. Esa marca de tiempo no es un tiempo de ejecución. Es una propiedad del archivo, lo que significa que sobrevive a renombrados y copias que preservan metadatos. Útil para agrupar builds relacionadas entre hosts. Inútil para secuenciar eventos en una línea de tiempo, como se cubre en qué significa realmente la marca de tiempo del ShimCache.

Cuándo gana AmCache

Pregúntale a AmCache "¿este binario se ejecutó realmente, y qué binario exactamente?" y obtienes una respuesta de verdad. Cada entrada InventoryApplicationFile bajo Amcache.hve lleva un hash SHA-1, tamaño de archivo, editor, estado de firma, y un LastWrite por archivo que aproxima "cuándo Appraiser se dio cuenta de esto". Eso basta para pivotar a VirusTotal, a inteligencia de amenazas, o a otros hosts del parque incluso cuando el archivo en disco ya no está.

El modelo de persistencia también gana. AmCache lo vuelca compattelrunner.exe con planificación y en eventos de instaladores. Los reinicios forzados y los BSOD no destruyen silenciosamente la actividad reciente como ocurre con ShimCache. Saca Amcache.hve más Amcache.hve.LOG1 y Amcache.hve.LOG2 para reproducir transacciones en vuelo.

Usarlos juntos

Trátalos como testigos complementarios con puntos ciegos diferentes.

  • Ambos presentes, rutas coinciden. Evidencia fuerte de ejecución. Usa AmCache para identidad por hash y ShimCache para confirmar que el archivo estuvo en esa ruta en algún momento.
  • Solo ShimCache. El archivo existió. La ejecución no está probada. Busca corroboración en Prefetch, EVTX o BAM/DAM.
  • Solo AmCache. El host no se ha apagado limpiamente desde la actividad. ShimCache nunca se volcó. Saca un volcado de RAM si la máquina sigue arriba; el ShimCache en memoria está ahí.
  • Ninguno presente pero sospechas actividad. Comprueba que la tarea Appraiser corrió. Un Compatibility Appraiser desactivado produce hives de AmCache que parecen vacíos.

Para los detalles técnicos del diseño, mira el recorrido del formato binario de Windows 10/11. Para parsear un hive ahora mismo sin instalar nada, suéltalo en el Shimcache Parser. Corre por completo en el navegador.

Lectura adicional

Artículos relacionados