Cazar malware con el ShimCache: un workflow paso a paso

4 min de lectura

TL;DR. Parsea el hive SYSTEM. Filtra por rutas en ubicaciones escribibles por el usuario (\AppData\, \Temp\) y rutas del sistema inesperadas. Corrobora hits con hashes de AmCache y Prefetch. Pivota por SHA-1 cuando el archivo se haya ido. El ShimCache pone nombres en tu lista de caza. No cierra casos por sí solo.

La razón por la que el ShimCache se gana su sitio en un workflow de hunting es que sobrevive. Un atacante suelta una herramienta, la ejecuta, la borra, y la ruta sigue ahí en el cache. Eso lo convierte en un pivote de alta señal cuando AmCache y Prefetch han sido vaciados o nunca estuvieron activos. Así lo uso de verdad.

Workflow de caza de malware con ShimCache en cinco pasos

El workflow en cinco pasos

  1. Recolecta el hive SYSTEM. Saca C:\Windows\System32\config\SYSTEM y sus hermanos .LOG1 y .LOG2, o usa Velociraptor para recolección en vivo. La guía de adquisición cubre los métodos seguros. Recuerda que el cache vive en memoria hasta el apagado limpio, así que comprueba el momento de almacenamiento antes de asumir que el hive en disco está al día.
  2. Parsea a una lista plana. Decodifica el blob binario a filas (path, mtime, format). El Shimcache Parser lo hace en tu navegador; el AppCompatCacheParser de Eric Zimmerman o el Mandiant Shim Cache Parser lo hacen offline.
  3. Filtra por rutas sospechosas. Aquí es donde sucede la caza de verdad.
  4. Corrobora la ejecución. Una fila de ShimCache por sí sola prueba existencia, no ejecución. Empareja cada fila interesante con Prefetch, AmCache o EVTX / Sysmon. La matriz completa está en la referencia de artefactos de ejecución de programas.
  5. Pivota por hash. Cuando el archivo en disco se ha ido, el SHA-1 de AmCache es tu asidero para VirusTotal y consultas de inteligencia de amenazas. El desglose ShimCache vs AmCache explica por qué siempre sacas los dos.

Patrones que vale la pena filtrar

Estos son los patrones de ruta que puntúan consistentemente más alto en cazas reales:

  • Directorios escribibles por usuario. \AppData\Local\Temp\, \AppData\Roaming\, \Users\Public\, \ProgramData\. Usuarios y servicios pueden soltar binarios aquí sin derechos de admin, y lo hacen.
  • Escribibles por sistema pero no debería. C:\Windows\Temp\, C:\PerfLogs\, cualquier cosa bajo C:\Windows\ que no sea una ruta conocida de Windows. Binarias de servicio PsExec y herramientas de named-pipe aterrizan aquí todo el rato.
  • Doble extensión y lookalikes. svchost.exe fuera de \System32\, lsass.exe en cualquier sitio inusual, *.pdf.exe, *.docx.exe. El OriginalFileName de AmCache suele romper el disfraz.
  • Recursos compartidos de red y medios extraíbles. \\?\UNC\, letras de unidad que no son C:, \Device\HarddiskVolumeShadowCopy*. Muestran la ruta de staging. Cruza con archivos LNK para historial de shell.
  • Tooling de un solo uso. psexec.exe, winrm.cmd, wmiexec.exe, mimikatz*.exe, artefactos de Cobalt Strike. Las herramientas de admin legítimas se abusan; trátalas como findings a aclarar, no como ruido a ignorar.

No te pongas listo con regex en la primera pasada. Ordena por mtime y recorre las entradas recientes a ojo. Eso pilla las cosas que los filtros heurísticos pierden, incluidos los binarios que el atacante renombró para evadir tu lista de filtros.

Reglas de oro para triage

Unas pocas comprobaciones rápidas separan señal de ruido:

  • ¿Tiene un hermano en Prefetch? Casi prueba de ejecución.
  • ¿AmCache lleva un SHA-1? Búscalo. Hash de fabricante firmado y limpio significa despriorizar. Hash desconocido en ruta escribible por usuario significa escalar.
  • ¿Está la mtime sospechosamente cerca de una hora de incidente conocida? Modificada en minutos respecto a una alerta merece una mirada más profunda. Recuerda que la mtime es una propiedad del archivo, no el momento en que Windows lo vio.
  • ¿El directorio padre es el perfil del usuario pero el usuario no es admin? Razonable para instaladores; vigila indicadores de elevación en Sysmon Event ID 1 y Security 4688 con tokens elevados.
  • ¿El USN journal o la MFT confirman creación en la ventana de interés? Corroboración fuerte cuando el archivo aún está en disco.

Lo que este workflow no te dice

El ShimCache por sí solo no te dirá quién lanzó el binario, con qué argumentos, ni cuándo. Para eso necesitas Sysmon, logs de eventos Security, o una línea de tiempo de ejecución de programas completa. El trabajo del cache es poner nombres en la lista de caza, no cerrar la investigación.

Lectura adicional

Artículos relacionados