TL;DR. La marca de tiempo del ShimCache es la hora de última modificación $STANDARD_INFORMATION del ejecutable, copiada del sistema de archivos. No la hora a la que se ejecutó. No la hora a la que se cacheó. Trátala como una propiedad del archivo, nunca como un evento en una línea de tiempo.
El error más común en el análisis de ShimCache es leer la columna de timestamp como "cuándo corrió esto". No lo es. He visto a analistas poner esa interpretación delante de clientes y reguladores, y he visto el informe quedar hecho trizas en revisión por cualquiera con un conocimiento funcional de NTFS. No seas ese analista.
Qué es realmente la marca de tiempo
Cada entrada guarda la hora de última modificación $STANDARD_INFORMATION del archivo (SI mtime), tal como estaba en el volumen NTFS en el momento en que Windows registró la entrada. Copia directa de un atributo del sistema de archivos. No dice nada sobre creación de proceso, carga de módulos o apagado.
Tres consecuencias inmediatas:
- Un binario compilado el año pasado y ejecutado hoy muestra la fecha del año pasado.
- Un archivo copiado con una herramienta que preserva timestamps mantiene su mtime original, no el tiempo de copia.
- Dos hosts ejecutando el mismo binario firmado mostrarán el mismo timestamp, porque es una propiedad del archivo, no de ninguna de las máquinas.
Por qué no es la hora de ejecución
Windows añade una entrada al cache cuando examina un archivo por razones de compatibilidad de aplicaciones. A menudo, pero no siempre, coincidente con la ejecución. Incluso cuando coincide, el cache guarda la mtime del archivo, no el momento del examen. Así que la marca de tiempo responde "¿cuándo se modificó por última vez este archivo?" y nunca "¿cuándo se ejecutó?". La distinción ejecución vs existencia se trata en profundidad en ¿prueba el ShimCache la ejecución?.
Si necesitas una hora de ejecución real, necesitas tiempos de ejecución de Prefetch, primera ejecución de AmCache, Security 4688, o Sysmon Event ID 1. El cache no puede dártelo.
Cuándo la marca de tiempo sigue siendo valiosa
Es débil como hora de evento pero fuerte como ancla de identidad:
- Detección de manipulación. Si un binario del sistema como
svchost.exemuestra una mtime que no coincide con el nivel de parche del host, ese archivo fue reemplazado. Cruza con el atributo$FILE_NAMEde la MFT, que es más difícil de manipular. - Correlación de builds. El malware compilado en una campaña suele compartir un cluster de mtime entre víctimas. Útil para agrupar incidentes al mismo actor.
- Ordenación, con cuidado. Dentro de un mismo host, las entradas se guardan en orden aproximado de inserción. El orden es más fiable que los timestamps absolutos para secuenciar actividad. Pero orden no es tiempo, y la secuencia de inserción se reinicia en el arranque.
Cómo abusan los atacantes de ella
Como es solo un atributo del sistema de archivos, es trivialmente falsificable. El timestomping (poner una mtime a 2009-07-14, la fecha clásica de kernel32.dll) hace que un dropper se mezcle con los archivos del sistema Windows. El cache registra fielmente el valor manipulado, así que un timestamp limpio de 2009 en una ruta en C:\Users\Public\ es en sí mismo una bandera roja. Los patrones anti-forenses están catalogados en ¿pueden los atacantes borrar el ShimCache?.
El atributo $FILE_NAME de la MFT suele retener la hora de creación verdadera incluso después de que $STANDARD_INFORMATION haya sido manipulado. El parser de MFT recorre la comparación. El USN journal también captura el evento de creación original en la mayoría de los casos.
Usarla correctamente en una línea de tiempo
Pon la mtime del ShimCache en una columna separada de las horas de evento. Nunca la fusiones en la línea de tiempo principal como si fuera una acción. Corrobora la secuenciación con artefactos que sí lleven horas de evento: tiempos de ejecución de Prefetch, install / primera ejecución de AmCache, Security 4688, Sysmon Event ID 1. La referencia cruzada completa está en Prefetch, AmCache, ShimCache: una referencia rápida.
Para inspeccionar tú mismo los valores en crudo, suelta un hive SYSTEM en el Shimcache Parser. Muestra la mtime exacta almacenada por entrada, en tu navegador, sin nada subido.
Lectura adicional
- Caching Out the Val de Mandiant. el write-up original que definió el uso forense del artefacto.
- AppCompatCacheParser de Eric Zimmerman. parser de referencia cuya salida usa la misma semántica de mtime.