Miércoles de Windows: Prefetch Files

Para el post de hoy, voy a tomar unos momentos para discutir Windows Prefetch. Pero primero, un enchufe rápido para algunos entrenamientos próximos:

Actualmente me estoy preparando para una próxima clase FOR508 con Chad Tillbury en SANS Security East 2017. ¡Aunque está muy cerca, estamos esperando una clase impresionante y encontrar el próximo equipo de forenses letales! Si vas a asistir, por favor escríbeme con antelación. Si quieres asistir, ¡creo que la inscripción aún está abierta! También durante el evento, el miércoles 11 de enero, daré una charla de SANS@Night llamada Zero In on the Artifacts That Matter. La preparación de esa charla fue la inspiración para el post de hoy, ya que prefetch ciertamente tendrá una mención.

Lo he dicho antes y lo diré de nuevo – muchos artefactos que amamos en el mundo DFIR son en realidad subproductos del sistema operativo tratando de hacer la vida más fácil y / o más eficiente para el usuario o los desarrolladores. En mi opinión, prefetch también entra en esta categoría.

Prefetch ha existido desde Windows XP. Fue diseñado originalmente para ayudar a acelerar el arranque del sistema y el lanzamiento de aplicaciones. El objetivo de prefetch es analizar y registrar el comportamiento de arranque de las aplicaciones al ejecutarse para hacer más eficientes los futuros arranques. Estos datos se registran hasta 10 segundos después del inicio de la aplicación. El comportamiento registrado de la aplicación se guarda en un archivo de rastreo -lo que llamamos archivo de prefetch- en la ruta C:\Windows\Prefetch.

Archivos de prefetch

Como se mencionó anteriormente, los archivos de prefetch se encuentran en el directorio estático C:\Windows\Prefetch. Los archivos prefetch tienen una extensión .pf y siguen una convención de nomenclatura estándar:

<APPLICATION NAME IN ALL CAPS>-<EIGHT CHARACTER HASH OF APPLICATION LOCATION>.pf

Los archivos prefetch contienen los siguientes metadatos:

  • El nombre del ejecutable correspondiente
  • El número de veces que se ha ejecutado el ejecutable
  • El tamaño del archivo prefetch
  • Los archivos y directorios a los que se hizo referencia durante el inicio de la aplicación (esto es lo que Windows quiere rastrear)
  • Información relacionada con el volumen en el que se encuentra el ejecutable, incluyendo la ruta del volumen y el número de serie.

Aquí hay una muestra de algunos archivos prefetch de mi host de prueba:

Captura de pantalla de la carpeta Prefetch de un host de prueba de Windows 10

Nótese que tengo varias aplicaciones con el mismo nombre, pero una ubicación diferente. Eso es evidencia por los hashtags algo similares, y en los casos de muchas aplicaciones, es probablemente indicativo de una actualización de software o cambio de estructura de carpetas.

EDIT: Gracias a Eric Zimmerman por recordarme que los nombres de los archivos de prefetch también dependen de los argumentos de la línea de comandos y son sensibles a las mayúsculas y minúsculas, a pesar de la falta de sensibilidad a las mayúsculas en el archivo de seguimiento. Hexacorn cubre el algoritmo de hashing en detalle aquí, y yo recomendaría que lo revises si necesitas hacer este nivel de análisis de prefetch.

Parar el archivo de prefetch

La estructura de los archivos de prefetch es en realidad bastante conocida y hay múltiples opciones de análisis disponibles. Aquí hay algunas opciones:

  • En el peor de los casos, podemos utilizar strings para obtener alguna información sobre el rastreo de prefetch. He aquí un ejemplo de enumeración de cadenas Unicode de un ejecutable sospechoso:

Captura de pantalla de las cadenas de un archivo de prefetch para A.EXE
  • Eric Zimmerman mantiene su herramienta PECmd, actualmente en la versión 0.7.2.0. Se puede descargar aquí.
  • log2timeline/Plaso contiene un analizador de prefetch, y puede poner los datos clave de los archivos de prefetch en un formato de línea de tiempo.
  • TZWorks también publica un analizador de prefetch realmente útil y práctico pf. Puedes ver más información sobre él aquí. Aquí hay un ejemplo de la salida de la herramienta pf de TZWorks:

Captura de pantalla de la salida pf de TZWorks para un archivo prefetch

En la siguiente sección trataré algunos de los artefactos forenses dentro de esta salida, pero fíjate en que ahora tenemos información contextual, tiempos de ejecución y marcas de tiempo importantes.

Otra nota importante sobre el análisis de los archivos de prefetch es que las nuevas versiones de prefetch, en concreto Windows 10, utilizan un nuevo formato de compresión que no funciona bien con los analizadores de versiones anteriores. Asegúrese de que su herramienta puede manejar los artefactos de Windows 10 – o busque un nuevo script – antes de asumir que los archivos pueden estar corruptos.

Cómo usar en DFIR

Los analistas de DFIR necesitan estar al tanto de prefetch porque contiene mucho valor forense. He aquí algunas formas en las que he utilizado el prefetch en el pasado:

  • El recuento de ejecuciones puede ser un indicador importante de cuánto tiempo ha estado el malware en un sistema o con qué frecuencia se ha utilizado. Si sólo has visto pruebas de dos ejecuciones de malware, pero el prefetch muestra docenas, entonces hay que indagar más.
  • Las marcas de tiempo del archivo prefetch también nos dicen volúmenes. Piensa en lo siguiente: ¿Qué crea un archivo de preajuste, y qué modifica un archivo de preajuste? Convierta esas acciones en marcas de tiempo, y podremos determinar lo siguiente: La marca de tiempo de creación de un archivo de prefetch es la primera vez que se ejecutó la aplicación, y la última vez que se modificó un archivo de prefetch es la última vez que se ejecutó. Veamos de nuevo la captura de pantalla de arriba:

Captura de pantalla de la salida pf de TZWorks para un archivo de precarga

Nota nuestra última hora de ejecución (2012-04-04 00:43:06.137) y la hora de modificación: (2012-04-04 00:43:07). Ahora, podemos esperar muy rápidamente a través de archivos Prefetch, sin necesidad de analizar, y encontrar nuestros últimos tiempos de ejecución.

Usted puede utilizar las marcas de tiempo en otros medios también. Por ejemplo, considere la posibilidad de ver las marcas de tiempo de creación de todos los archivos de la carpeta prefetch. Si tenemos alguna marca de tiempo de interés, o archivos de prefetch para malware conocido, busque otros archivos con marcas de tiempo en una proximidad temporal cercana.

  • Al analizar los archivos de prefetch, especialmente los relacionados con malware conocido, eche un vistazo a los archivos mapeados o cargados. Puede encontrar indicadores adicionales.
  • Además, examine los directorios mapeados desde el archivo de precarga. Puede encontrar pruebas de una unidad externa o una partición anterior.
  • ¿Ve varios archivos de precarga con diferentes hash al final del archivo? Recuerde que ese hash se deriva de la ubicación: puede tener malware en varios lugares.
  • Por último, no olvide que Windows supervisa el inicio de las aplicaciones durante un máximo de 10 segundos. Así que, aunque podemos confiar en nuestras marcas de tiempo de archivos de precarga como indicadores bastante fuertes, debemos tener en cuenta el retraso máximo de diez segundos.

Vamos más allá de la precarga

En Windows Vista y más allá, Microsoft ha seguido ampliando la precarga con características adicionales como SuperFetch, ReadyBoost, ReadyBoot y ReadyDrive. En un próximo post profundizaré en estas características.

Hasta mañana, ¡feliz forensicamiento!

Deja una respuesta

Tu dirección de correo electrónico no será publicada.