Análisis forense de plataformas Windows: Tecnologías de aceleración y precarga (Prefetcher y SuperFetch)
Tanto como para Prefetcher como para SuperFecth, el fundamento es exactamente el mismo: cuando se carga el sistema, como es lógico, un determinado número de ficheros es accedido y sus contenidos son cargados en la memoria. Dada la arquitectura del sistema, es frecuente que los mismos ficheros sean accedidos numerosas veces, lo que ralentiza la carga. La tecnología de prefetching observa el patrón de acceso descrito, graba la secuencia empleada y reutiliza la información para tratar de realizar una carga óptima del sistema en sucesivos encendidos del sistema. Los cambios suelen captarse demorando el proceso de monitorización al evento que culmine en primera instancia, entre la carga de la shell de usuario o el tiempo completo de carga del sistema, siendo el proceso similar para la captación de trazas de carga de aplicaciones.
Técnicamente, para cada aplicación o proceso del sistema sometido a prefetching, se genera un fichero .pf que incluye las referencias a los ficheros y directorios que dicha aplicación utilizó en la carga. Adicionalmente, el fichero tendrá la huella temporal de la última ejecución de la aplicación o proceso seleccionado. El resultado para el usuario es un sistema que carga más rápido, lo cual agradecerá. Para el analista forense, el resultado es otra fuente más de información valiosa, especialmente para descubrir trazas de uso y eliminación de aplicaciones por parte de los usuarios, lo cual, también se agradece. Este artículo se centrará en el análisis de Prefectcher para Windows XP.
Inspección de Prefetcher
La configuración de Prefetcher se almacena en la siguiente llave del registro:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory ManagementPrefetchParameters
Para acceder a dicha llave pueden utilizar cualquier herramienta de acceso al registro, y verificar su valor. Por defecto, el valor será 3, lo que implica que el prefetching está activo para el sistema y las aplicaciones.
Una vez verificado el valor, podemos acceder a los contenidos de Prefetcher, ya que están ubicados en el directorio del sistema. Por defecto, y suponiendo que el sistema tiene la unidad lógica C: asignada, la ubicación será C:WINDOWSPrefetch. Algunos ejemplos son, para mi máquina Windows, las siguientes entradas de Firefox y Keepass:
shernando@hpsergio-linux:/media/0A8C1FAF8C1F9473/WINDOWS/Prefetch$ ls -la | grep FIREFOX -rw------- 2 shernando shernando 127612 2010-11-02 19:04 FIREFOX.EXE-24B8FB1A.pf
shernando@hpsergio-linux:/media/0A8C1FAF8C1F9473/WINDOWS/Prefetch$ ls -la KEEPASS.EXE-35620CED.pf
-rw------- 2 shernando shernando 108848 2010-11-02 17:38 KEEPASS.EXE-35620CED.pf
Es posible explorar los contenidos del fichero, para obtener información adicional que puede resultar útil en la investigación. Hay muchas herramientas que permiten leer los contenidos de los ficheros .pf, si bien es habitual emplear Prefetch Parser, Windows File Analyzer, prefetch-tool o WinPrefetchView.
Así, para el caso de Firefox, según prefetch-tool se obtiene que ha sido ejecutado 62 veces con la huella temporal que se muestra. Nótese la diferencia respecto a la consulta anterior, ya que la efectuada en Linux correspondía con el sistema sin cargar, mientras que los de prefetch-tool corresponden con el sistema en ejecución en el momento de escribir el artículo.
Analyzing 21 of 129 files
Filename: firefox.exe-24b8fb1a.pf
MD5: 1b856921749e18e225b4f4ac5cf538d5
SHA1: da39a3ee5e6b4b0d3255bfef95601890afd80709
Last accessed time: Sat Nov 06 20:16:24 2010
Last modified date: Sat Nov 06 21:16:29 2010
File creation date: Sun Sep 05 20:57:07 2010
Total number of runs: 62
Mediante WinPrefetchView o Prefetch Parser es posible conocer también el nombre de los ficheros accedidos por la aplicación en la inicialización, así como la ruta mapeada en Prefetcher, lo que servirá para localizarlos en el proceso de carga. Para Firefox estos son algunos ejemplos:
FIREFOX.EXE-24B8FB1A.pf DEVICEHARDDISKVOLUME1WINDOWSSYSTEM32 NTDLL.DLL
FIREFOX.EXE-24B8FB1A.pf DEVICEHARDDISKVOLUME1WINDOWSSYSTEM32 KERNEL32.DLL
FIREFOX.EXE-24B8FB1A.pf DEVICEHARDDISKVOLUME1WINDOWSSYSTEM32 UNICODE.NLS
FIREFOX.EXE-24B8FB1A.pf DEVICEHARDDISKVOLUME1WINDOWSSYSTEM32 LOCALE.NLS
FIREFOX.EXE-24B8FB1A.pf DEVICEHARDDISKVOLUME1WINDOWSSYSTEM32 SORTTBLS.NLS
Resumen
En el proceso de investigación de un sistema Windows, a la hora de componer la línea temporal de eventos o para conocer la actividad del usuario, puede resultar de utilidad la consulta de los contenidos de Prefetcher. No sólo para saber qué elementos ha ejecutado, o el número de veces que han sido ejecutados, sino para tener información certera sobre la huella temporal.
La mayoría de los usuarios estándar de plataformas Windows ni tan siquiera conoce la utilidad de Prefetch, ni dónde se ubican los ficheros. Es por tanto que en la mayoría de los casos este directorio está repleto de información (existe una limitación, sólo se almacenan 128 entradas) que podemos explotar para el proceso forense. Teniendo en cuenta el desconocimiento de estas tecnologías, no es de extrañar que la mayoría de aplicaciones de gestión de privacidad eliminan los contenidos del directorio de prefetching en su proceso de limpieza. Existe un motivo claro para hacerlo.
Visto | Sergio Hernando
Es posible explorar los contenidos del fichero, para obtener información adicional que puede resultar útil en la investigación. Hay muchas herramientas que permiten leer los contenidos de los ficheros .pf, si bien es habitual emplear Prefetch Parser, Windows File Analyzer, prefetch-tool o WinPrefetchView.
Así, para el caso de Firefox, según prefetch-tool se obtiene que ha sido ejecutado 62 veces con la huella temporal que se muestra. Nótese la diferencia respecto a la consulta anterior, ya que la efectuada en Linux correspondía con el sistema sin cargar, mientras que los de prefetch-tool corresponden con el sistema en ejecución en el momento de escribir el artículo.
Analyzing 21 of 129 files
Filename: firefox.exe-24b8fb1a.pf
MD5: 1b856921749e18e225b4f4ac5cf538d5
SHA1: da39a3ee5e6b4b0d3255bfef95601890afd80709
Last accessed time: Sat Nov 06 20:16:24 2010
Last modified date: Sat Nov 06 21:16:29 2010
File creation date: Sun Sep 05 20:57:07 2010
Total number of runs: 62
Mediante WinPrefetchView o Prefetch Parser es posible conocer también el nombre de los ficheros accedidos por la aplicación en la inicialización, así como la ruta mapeada en Prefetcher, lo que servirá para localizarlos en el proceso de carga. Para Firefox estos son algunos ejemplos:
FIREFOX.EXE-24B8FB1A.pf DEVICEHARDDISKVOLUME1WINDOWSSYSTEM32 NTDLL.DLL
FIREFOX.EXE-24B8FB1A.pf DEVICEHARDDISKVOLUME1WINDOWSSYSTEM32 KERNEL32.DLL
FIREFOX.EXE-24B8FB1A.pf DEVICEHARDDISKVOLUME1WINDOWSSYSTEM32 UNICODE.NLS
FIREFOX.EXE-24B8FB1A.pf DEVICEHARDDISKVOLUME1WINDOWSSYSTEM32 LOCALE.NLS
FIREFOX.EXE-24B8FB1A.pf DEVICEHARDDISKVOLUME1WINDOWSSYSTEM32 SORTTBLS.NLS
Resumen
En el proceso de investigación de un sistema Windows, a la hora de componer la línea temporal de eventos o para conocer la actividad del usuario, puede resultar de utilidad la consulta de los contenidos de Prefetcher. No sólo para saber qué elementos ha ejecutado, o el número de veces que han sido ejecutados, sino para tener información certera sobre la huella temporal.
La mayoría de los usuarios estándar de plataformas Windows ni tan siquiera conoce la utilidad de Prefetch, ni dónde se ubican los ficheros. Es por tanto que en la mayoría de los casos este directorio está repleto de información (existe una limitación, sólo se almacenan 128 entradas) que podemos explotar para el proceso forense. Teniendo en cuenta el desconocimiento de estas tecnologías, no es de extrañar que la mayoría de aplicaciones de gestión de privacidad eliminan los contenidos del directorio de prefetching en su proceso de limpieza. Existe un motivo claro para hacerlo.