RecentFileCache vs AmCache: cuál está en tu host y por qué
El BCF y el AmCache resuelven problemas que se solapan en distintas versiones de Windows. Saber cuál tienes, y por qué, decide qué puedes afirmar.
Si estás sacando artefactos de un host desconocido y encuentras tanto RecentFileCache.bcf como Amcache.hve en C:\Windows\AppCompat\Programs\, párate y comprueba el build de Windows. Estás mirando algo inusual.
En un host Win7 SP1 normal: solo BCF. En un host Win8 o posterior normal: solo AmCache. Ambos: un host Win7 que fue actualizado in-place a Win10 y heredó el archivo viejo. Pasa. Raramente.
Los dos artefactos resuelven problemas que se solapan pero no son lo mismo, y los límites importan cuando redactas hallazgos.
La frontera de versión
RecentFileCache.bcf fue el archivo de trabajo para el appraiser de Application Experience en Windows 7 SP1 y Windows Server 2008 R2. A partir de Windows 8, Microsoft reemplazó la pipeline del appraiser y el BCF desapareció. El reemplazo, Amcache.hve, es un hive de registro de forma ESE con metadatos más ricos por entrada. Los dos formatos nunca se pensaron para coexistir.
La frontera de versión es nítida. Windows 8 RTM no escribe un BCF. Windows 7 SP1 no escribe un AmCache. No hay punto medio en operación normal.
La excepción, y es real: una actualización in-place de Windows 7 a Windows 10 puede dejar el viejo RecentFileCache.bcf en disco porque el instalador no lo borra. El appraiser de Win10 no lo va a tocar. El archivo simplemente se queda ahí. He visto esto personalmente dos veces en endpoints empresariales de larga vida cuyos dueños solo hicieron reemplazos limpios después de que el hardware muriera. Ambas veces el BCF contenía entradas de años antes de la actualización. Útil, en el sentido de que ataba la ejecución a un año específico. No útil para investigaciones actuales.
Diferencias de ciclo de vida
Aquí es donde más divergen.
El BCF es un write-ahead log. La tarea de Application Experience procesa el archivo aproximadamente a diario, luego lo trunca. Un binario en el BCF corrió aproximadamente en las últimas 24 horas. Las ejecuciones más antiguas se han ido.
El AmCache está más cerca de una base de datos de larga vida. Las claves Root\InventoryApplicationFile persisten a través de los pases de evaluación. Las entradas pueden sobrevivir durante la vida útil de la instalación. La cadencia de escrituras también es diferente: las actualizaciones del AmCache ocurren durante el pase de evaluación, pero las entradas viejas no se vacían en el mismo calendario. Puedes encontrar entradas del AmCache que son de meses atrás.
Para las investigaciones, esto significa:
- BCF responde "¿corrió esto en el último día más o menos?"
- AmCache responde "¿se ha visto esto en esta máquina en algún punto de la historia reciente?"
Dos preguntas forenses diferentes. Dos formas diferentes de evidencia.
Qué registra cada uno
El BCF registra:
- Ruta NT completa del ejecutable.
- Nada más.
El AmCache registra:
- Ruta completa.
- Hash SHA1 de los primeros 31 megabytes del archivo (o todo el archivo si es más pequeño).
- Tamaño de archivo, marca de tiempo de cabecera PE, fecha de link.
- Editor, nombre del producto, versión (de los recursos PE).
- Una aproximación del tiempo de instalación.
- Claves específicas de driver bajo
Root\InventoryDriverBinary. - Un montón de otros campos menos consistentemente poblados, dependiendo del build de Windows.
Ese hash es el grande. Con el AmCache puedes pivotar a threat intel. Con el BCF no puedes. Tienes que adquirir el binario del disco o reconstruirlo desde otra fuente y hashearlo tú mismo.
A cambio, el BCF te da algo que el AmCache no: una afirmación más estricta sobre la ejecución. El contenido del BCF está limitado a binarios que el appraiser cree que fueron ejecutados. El AmCache tiene columnas que insinúan ejecución (las marcas de tiempo de última modificación de Root\InventoryApplicationFile, por ejemplo) pero el AmCache mismo es más de forma inventario que de forma ejecución. Muchos binarios en el AmCache nunca corrieron en el host; el appraiser los escaneó. El BCF, cuando existe, está más cerca de un registro limpio de ejecución.
Si solo tienes el AmCache, apóyate en Prefetch y EVTX 4688 / Sysmon 1 para confirmación de ejecución. El AmCache solo no prueba que un binario corrió. El BCF solo sí, dentro de un margen de ventana de evaluación.
Cuándo verías ambos
El caso legítimo que describí arriba: un host actualizado de Win7 a Win10 con el viejo BCF todavía presente. Las entradas del BCF datan de la vida previa a la actualización de la máquina.
El caso menos legítimo: alguien soltó un RecentFileCache.bcf en un host Win10 como distracción. He visto esto exactamente una vez, en un CTF, nunca en un incidente real. Vale la pena anotarlo porque es una posibilidad, no porque sea común. Comprueba el tiempo de creación de la entrada MFT del archivo contra la fecha de instalación del sistema. Un BCF creado la semana pasada en una caja Win10 instalada en 2022 es falso.
El tercer caso, que no es "ambos al mismo tiempo" pero vale la pena señalar: un host Win7 que ha sido migrado a un dominio cuya política deshabilita la tarea del appraiser. El BCF se acumulará sin ser vaciado. Puedes acabar con un BCF que contiene dieciocho meses de ejecuciones porque nada lo ha rotado. Ese archivo es una mina de oro, y deberías agarrarlo en el primer contacto.
Mapear una entrada BCF en pensamiento AmCache
Si eres un analista cuya carrera entera ha sido en Windows 10, el BCF puede sentirse desconocido. Dos traducciones que ayudan:
- Una entrada BCF es equivalente a una fila
InventoryApplicationFileque fue añadida desde el último pase de evaluación, menos todas las columnas de metadatos. - La "marca de tiempo de última ejecución" que buscas en los parsers de AmCache no existe en el BCF. Lo más cercano es la marca de tiempo de última modificación del propio archivo, que te dice cuándo el appraiser le escribió por última vez, no cuándo corrió alguna entrada individual.
Si vives en el mundo del AmCache y cambias a un caso Win7, la pérdida de metadatos es la parte más dura. Pasas de "sé el hash, el editor y aproximadamente cuándo fue instalado" a "sé la ruta". La ruta sigue siendo útil. Solo que no tanto.
Árbol de decisión práctico
Cuando aterrizas en un host y necesitas saber qué artefacto tirar:
- Comprueba el build.
winver, oSetup\InstallationType/CurrentVersiondel hive SYSTEM. - Si es Win7 SP1 o Server 2008 R2: BCF. Agárralo antes del siguiente pase de evaluación.
- Si es Win8 o posterior: AmCache. El BCF, si está presente, es histórico y probablemente no relevante.
- Si ambos: probablemente una actualización in-place. Trata el BCF como historia pre-actualización y el AmCache como actual.
- Si estás en Server 2012 R2, espera AmCache y un esquema temprano peculiar. El parser de AmCache maneja las variaciones de esquema.
Empareja ambos artefactos con las fuentes corroborantes con las que siempre emparejas evidencia de ejecución: Prefetch, Shimcache, USN journal y MFT. Ninguno es una prueba autónoma.
Una nota sobre paridad de tooling
La comunidad forense ha tenido parsers de grado de producción para ambos formatos por más de una década. El BCF es genuinamente fácil de parsear; el AmCache es más difícil porque el formato ESE y la varianza de esquema a través de los builds de Windows añaden complejidad. AmcacheParser de Eric Zimmerman es la referencia para el AmCache. Para el BCF, varios parsers open-source y el parser en este sitio producen todos salida equivalente porque el formato no deja espacio para interpretación.
Lecturas adicionales
- Yogesh Khatri, AmCache.hve in Windows 8: a goldmine for malware hunters. El post que introdujo el AmCache a la comunidad.
- Willi Ballenthin, RecentFileCache.bcf. Pieza acompañante para el BCF.
- Blanche Lagny, Análisis del AmCache. El deep-dive más exhaustivo sobre la semántica del AmCache.
Si te encuentras echando mano del BCF en un incidente de 2026, el host es más viejo que el analista. Ambas cosas pueden pasar.