La respuesta más rápida y concisa a la pregunta qué son los PreFetch y los SuperFetch sería que son dos de los artefactos importantes en el Sistema Operativo Windows.
Recordemos que los artefactos son los elementos de Windows que dejan rastro de la actividad de los usuarios, de los programas utilizados, los accesos, las conexiones, aplicaciones, si han navegado, descargado o ejecutado programas… Por lo tanto los artefactos son cruciales para el perito informático, ya que aportan muchísima información para los análisis forenses.
Entre los artefactos destacamos: el registro del sistema (Hives), los logs o ficheros del sistema, la Tabla Maestra de Archivos (MFT), el visor de eventos, los ficheros PreFetch y SuperFetch, los accesos directos, la papelera, los metadatos en imágenes y documentos, …
En el presente artículo vamos a centrarnos en los ficheros PreFetch y SuperFetch:
El componente de PreFetch, que apareció por primera vez con Windows XP y que se ha mantenido hasta la versión actual de Windows 10, podríamos definirlo como una característica de «pre-carga» que mejora el rendimiento del sistema operativo de forma realmente notable. Cuando se arranca Windows, el sistema realiza un seguimiento del inicio y de los programas que se abren habitualmente. Windows guarda esta información en un sistema de archivos en la carpeta del sistema llamada Prefetch. Son pequeños archivos con extensión .pf que facilitan que el inicio del sistema se realice más rápido, ya que por cada programa ejecutado se crea un fichero Prefetch que contiene información sobre dicho programa como sería su path, la fecha y hora de modificación, creación y última vez que se ejecutó, así como una lista de dependencias cargadas por la aplicación en los primeros 30 segundos de ejecución.
El archivo .pf también registra información sobre el disco, el GUID y la marca de tiempo de creación de la unidad. Esta información se almacena para todos los volúmenes y es útil para encontrar GUIDs de unidades externas. En algunos Análisis Forenses es interesante este dato y se puede comparar con las unidades externas utilizadas para poner en marcha las aplicaciones o para descubrir archivos que han sido abiertos desde el propio dispositivo o disco duro externo y que puede ser interesante dejar reflejado en el Informe Pericial.
El funcionamiento, de forma muy resumida, consiste en que «windows cache manager» monitoriza los 10 primeros segundos de la ejecución de cualquier programa almacenando las páginas de memoria que son accedidas con más frecuencia. Este proceso se realiza a través de «svchost» y esto se vuelca en un fichero Prefetch cuyo nombre tendrá la nomenclatura «programa-extension-HASH.pf».
Existen distintos programas que permiten ver el contenido de los Prefetch (ficheros .pf), como podría ser WindowsPrefetchView de Nirsoft.
Desde el punto de vista de usuario, también cabe señalar dos aspectos respecto de los ficheros Prefetch:
- Estos ficheros pueden ser borrados sin problema y de hecho suele ser aconsejable hacerlo cada cierto tiempo para agilizar el sistema operativo.
- Por otro lado debemos tener en cuenta el tipo de disco duro que tengamos. En caso de que usemos un disco duro SSD (disco de estado sólido) en lugar de un disco duro HDD (disco mecánico tradicional), es recomendable desactivar el Prefetch, ya que debido a la alta velocidad de lectura y a los reducidos tiempos de acceso, con los SSD resulta una pérdida de rendimiento por las innecesarias operaciones de lectura y de escritura que se realizan. Debemos tener en cuenta que el sistema de Prefetch fue creado originalmente para mejorar el rendimiento con discos HDD tradicionales.
La forma de deshabilitar el sistema Prefetch, de manera muy resumida sería:
Ejecutar en modo administrador «regedit» para lanzar el Registro de Windows, en el cual tendremos que ir navegando por las carpetas que veremos a la izquierda en este orden:
HKEY_LOCAL_MACHINE/ SYSTEM/ CurrentControlSet/ Control/ Session Manager/ Memory Management/ PrefetchParameters
A la derecha, hacemos doble click en la entrada EnablePrefetcher para editarla. Sus posibles valores son:
- 0: Deshabilitar Prefetch
- 1: Habilitar Prefetch de inicio de aplicaciones
- 2: Habilitar Prefetch de inicio del sistema
- 3: Habilitar Prefetch de inicio de aplicaciones y de inicio del sistema (valor por defecto)
Debemos darle el valor 0 y aceptar.
Los SuperFetch es una nueva mejora que apareció a partir de Windows Vista y que también se mantiene hasta el actual Windows 10. Esta característica incrementa aún más el rendimiento ya que se crea una cache de ficheros a los que cada aplicación accede más frecuentemente. A partir de Windows 7, dependiendo del rendimiento del disco duro, el sistema operativo habilita o deshabilita esta característica.
Los Superfetch no reemplazan al servicio de los Prefetch y debido a su efectividad sigue existiendo en Windows 8 y Windows 10. La información de los Superfetch se guarda en el mismo directorio que los Prefetch, en bases de datos con nombres «AG*.db». Este servicio, como hemos mencionado, está diseñado para anticipar cuales son las aplicaciones que se ejecutan frecuentemente tras un arranque del sistema, una actividad de hibernación, reposo, cambio de usuario, etc…
Para ello, el sistema monitoriza los patrones de uso de las aplicaciones en periodos de tiempo. De este modo, se almacenan en memoria por adelantado los datos que las aplicaciones necesitarán. Estos patrones y en consecuencia los archivos que se necesitan pueden cambiar, por lo que SuperFetch también se adaptará. SuperFetch puede predecir hasta las tres aplicaciones siguientes que se iniciarán para reducir su tiempo de arranque.
En caso de que el sistema detecte que se encuentra instalado un disco duro SSD el SuperFetch desactiva el «ReadyBoot», «ReadyBoos» y a si mismo.
Por otro lado, desde el punto de vista de usuario, si fuera necesario deshabilitar el sistema de SuperFetch, de manera similar a los Prefecth, la forma de hacerlo sería:
Ejecutar «regedit» en modo administrador para acceder al editor de Registro de Windows. A continuación, editar la entrada EnableSuperfetch que se encuentra justo al lado de la entrada EnablePrefetcher, a la que hemos accedido en el apartado anterior de este artículo. Nos movemos hasta:
HKEY_LOCAL_MACHINE/ SYSTEM/ CurrentControlSet/ Control/ Session Manager/ Memory Management/ PrefetchParameters
En la derecha, hacemos doble click en la entrada EnableSuperfetch para editarla. Los posibles valores son los siguientes:
- 0: Deshailitar Superfetch
- 1: Habilitar SuperFetch para los archivos de inicio
- 2: Habilitar SuperFetch para aplicaciones
- 3: Activar SuperFetch tanto para los archivos de inicio como para aplicaciones (valor por defecto)