Incident Response, Security and Forensics"

.

miércoles, 3 de diciembre de 2008

El baúl de los recuerdos - Prefetching

Vamos a ver una carpeta que también tiene un significado especial a la hora de encontrar información valiosa para el análisis forense informático, para ello vamos a hablar del...

Prefetching.

Cada vez que encendemos el equipo, Windows realiza un seguimiento de la forma en que se inicia el equipo y los programas que se abren habitualmente.

Windows guarda esta información en una serie de pequeños archivos en la carpeta Prefetch. La próxima vez que se encienda el equipo, Windows recurrirá a estos archivos para acelerar el proceso de inicio.

La carpeta Prefetch es una subcarpeta de la carpeta del sistema Windows. La carpeta Prefetch no requiere mantenimiento: no es necesario eliminar ni vaciar su contenido. Si eliminamos la carpeta, Windows/prefetch, los programas tardarán más en abrirse la próxima vez que encendamos el equipo.

Para que nos entendamos, Microsoft guarda en esta carpeta, parte del programa (y dlls) que hemos usado, para cargarlos en memoria la próxima vez que iniciemos, y para que nuestro acceso sea mas rápido la proxima vez. Esto forma parte de todo un proceso de Microsoft para "acelerar" el acceso/ejecución a ficheros/aplicaciones, llamado Enhanced Write Filter (EWF).

¿Como funciona el prefetching?

Una vez iniciada la máquina, el administrador de chache comienza a monitorizar las aplicaciones que el usuario ejecuta (o se inician de forma automática), con la siguiente frecuencia:

1.- A los 2 primeros minutos del proceso de arranque
2.- A los 60 segundos después de que todos los servicios de Win32 haya terminado la inicialización
3.- A los 30 segundos después del inicio del shell o entorno del usuario.

(También el administrador de cache supervisa los primeros 10 segundos de inicio de una aplicación.)

Una vez que monitoriza la información con la frecuencia anteriormente descrita, interviene el programador de tareas y realiza un llamamiento a la función 'NtQuerySystemInformation' solicitando la extracción de datos.

Después de realizar el post-procesado de datos extraídos anteriormente por la función, el programador de tareas escribe los datos en un archivo en la carpeta \Windows\prefetch asociandolo a un nombre.

El nombre del archivo es el nombre de la aplicación ejecutada seguida por un guión y la representación hexadecimal de un hash de la ruta de acceso del archivo.
El archivo tiene una extensión '. PF'

Un ejemplo sería NOTEPAD.EXE-AF43252301.PF.


Ejemplo de carpeta prefetch


'Cacheado' de aplicaciones en memoria

Cuando el sistema arranca o se inicia una aplicación, el administrador de caché lleva a cabo el Prefetching.

El Administrador de caché comprueba en el directorio 'prefetch'para ver si un archivo PF existe. Si es así, el administrador de caché realiza a continuación una llamada al sistema de metadatos de NTFS y este le indica el contenido del directorio 'prefecht' y abre cada uno de los archivos que precisa.

A continuación, llama al administrador de memoria para leer los datos de los ficheros PF y el código se vuelca sobre una zona de memoria,de esta forma tenemos 'cacheadas' las aplicaciones. El Administrador de memoria inicia todas las lecturas de forma asíncrona

Para minimizar aún más la búsqueda, cada tres días o menos, durante los períodos de inactividad del sistema, el programador de tareas organiza una lista de archivos y directorios en el orden en que se arranquen o inician las aplicaciones y almacena la lista en un archivo llamado \Windows\ Prefech\Layout.ini.


Como podréis comprobar esto da mucho juego para saber respuestas a preguntas como las siguientes:

-. ¿que aplicaciones tiene o tenia instaladas?, ¿Cuantas veces se ejecuta una aplicación?, ¿en que orden?.

Ni que decir tiene que además es muy útil para saber si un malware esta ejecutándose en el sistema. Para la solución de estas preguntas vamos a ver como funciona la siguiente herramienta.

BUSCANDO EN EL BAúL CON PREFECHT_INFO

Prefecht_info es un programa en línea de comandos y lo que hace es analizar el archivo PF que escojamos dando la siguiente información: fecha de ejecución, el número de veces que se ejecuta, así como una lista de directorios y archivos que son o han sido cargadas. El programa puede encontrarse aquí.

La ejecución del programa es muy sencillo, os dejo un ejemplo:



Como se puede observar contiene datos valiosos como las fechas de creación, acceso y modificación, así como el disco y ruta donde estaba instalado y sus librerias asociadas.




4 comentarios:

Gracias por compartir toda estas cosicas; llegué a tu blog por la mención de algún maligno y la información que publicas me está resultando bastante útil en mi vida laboral y personal. ¡Sigue así!

Un saludo.

hola, yo tambien llegue a tu blog por un apagina que se referia a imformatica forense, hace como un mes. Y la verdad es que tengo que felicitarte, tus articulos son muy bueno y aunque sea solo un estudiante de segundo año de ing de computacion me an alludado bastante a saber sobre muchas cosas que no sabian que existian. y que ahor que lo se me encantan

Hola, gracias a los dos y a todos por leerme. Prometo poner cosicas interesantes.

gracias!!!

gracias , siempre con post tan interezantes , muchas muchas gracias es una inspiracion constante para seguir estudiando mas sobre este ambito

saludos