09 febrero, 2014

Analizando la carpeta Prefetch de Windows [ficheros .pf]

La carpeta Prefetch de Windows ubicada en el path C:\Windows\Prefetch, según Microsoft Windows, define esta carpeta de la sigiente manera.
"Cada vez que se enciende 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 (de extensión .pf) en la carpeta Prefetch. La próxima vez que encienda el equipo, Windows recurrirá a estos archivos para acelerar el proceso de inicio."

Es decir, que es como un almacenamiento de "cachés" en las que almacenan datos en general, librerías utilizadas por los programas más recurrentes, etc.

Los ficheros .pf entre otras cosas almacenan información relevante a los dispositivos de almacenamientoya sea discos duros internos, externos, dispositivos de almacenamiento USB, etc. Estos registran datos como la fecha/hora, paths, aplicaciones, librerías dependientes de esas aplicaciones, procesos .exe, etc. instaladas en nuestro sistema. De modo que para análisis forenses estos registros de sucesos pueden resultar muy útiles.

Esto es gracias al funcionamiento del servicio "Programador de tareas" (que se ejecuta bajo el proceso 'svchost') el cual entre otras cosas graba en páginas de memoria que son utilizadas con frecuencia por las aplicaciones. Esta es monitorizada por el File caching (Windows Cache Manager) y después de esa información recogida por cada aplicación utilizada de forma habitual se genera el archivo .pf.

Los ficheros .pf se crean con el nombre del tipo: "IEXPLORE.EXE-4B6C9213.pf". En el que la primera parte del nombre es el proceso ejecutable en cuestión de la aplicación y seguido de un Hash de 32bits representado en hexadecimal, el cual se construye a partir de la ruta completa de la aplicación.

Ahora bien, como vemos la información de estos ficheros .pf ??
Si nos vamos a la ruta donde esta esta carpeta vemos todos los ficheros .pf y también veremos un archivo de inicialización llamado: "Layout.ini".
Este fichero contiene en texto plano registros realizados/cambios con aplicaciones en nuestro ya sean instalaciones, desinstalaciones o actualizaciones, con referencia a los ficheros .pf creados.

Figura 1: Fichero 'Layout.ini' con información de los ficheros .pf alamacenados.

Para poder profundizar un poco más en lo que ahora almacena realmente cada fichero .pf, fecha/hora, paths, procesos, dependencias de librerías, etc.
Podemos hacer uso de una herramienta externa desarrollada por Nirsoft la cual es WinPrefetchView.

WinPrefetchView nos permite visualizar de modo legible la información de estos ficheros .pf y que nos sea de utilidad en un análisis forense en busca de evidencias o para controlar si se instaló determinada aplicación en un equipo corporativo. Incluso es muy útil para detectar intrusiones de algún tipo de fichero ejecutable malicioso (malware) haciéndose pasar por otro.

Figura 2: WinPrefetchView mostrando la información de ficheros .pf

Para más información sobre el funcionamiento de esta tecnología dejo dos enlaces de utilidad.
http://www.forensicswiki.org/wiki/Windows_Prefetch_File_Format
https://googledrive.com/host/0B3fBvzttpiiSbl9XZGZzQ05hZkU/Windows%20Prefetch%20File%20(PF)%20format.pdf

Saludos!

03 febrero, 2014

Recuperación de arranque en Windows 7 [BCD Rebuild, BOOTMGR, BOOT, NTLDR]

Hoy comentaré algunas de las formas formas más eficaces de poder recuperar una secuencia de inicio y carga de arranque corrupto o dañado de Windows 7.
Es decir cuando se nos presentan fallos por estar corruptos algunos ficheros de arranque ya sean, MBR, NTLDR, Bootmgr, etc... al encender nuestro PC nos encontraremos con mensajes del tipo: BOOTMGR is missing..., Falta NTLDR o mensajes similares.
Tanto NTLDR (para Windows XP) como BOOTMGR (para Windows Vista en adelante) son gestores de inicio o cargadores de sistemas Windows.

Para intentar solucionar este problema:

[1] - Podremos usar la forma sencilla y automática de Windows 7 que sería: Iniciar el DVDLive de instalación de Windows 7, una vez se nos arranque y se nos muestre la primera ventana del asistente de instalación le daríamos en la opción "Reparar equipo" (situada generalmente en la parte inferior-izquierda). Y a partir de ahí, usar la opción de "Reparación de inicio".
Esta opción nos solucionará principalmente fallos cuando se corrompe el fichero NTLDR (NTLoaDeR).

Otra opción sería hacerlo de forma manual y que restaurar los propios ficheros en cuestión corruptos cogiendo una copia del DVDLive de instalación de Windows 7 un Windows PE (Entorno de preinstalación).

Ahora explicaré varias posibles soluciones, aunque esto depende también de cada caso que tengamos.

[2.1] - En un Windows RE (Entorno de recuperación), ejecutamos el comando diskpart (Administrador de discos en Windows "diskmgr.msc").
Tendremos que seleccionar el disco en el que tenemos nuestro arranque de OS de Windows 7, esto dependerá de cada uno y de las particiones y/o discos que se tengas instalados en el equipo, pondré un ejemplo típico y común, (cuyo caso sería un solo disco duro y una sola partición).

En esta zona por defecto en un mismo disco en estos casos las letras asignadas a cada partición o unidad suelen distribuirse de la siguiente forma:
X: Unidad creada para el sistema de restauración de imágenes de lo anterior seleccionado, esta contienen principalmente los binarios que lanzan los asistentes para la restauración del sistema así como otros para las reparaciones automáticas de arranque que nos ofrece Microsoft en un WindowsRE, entre otras tareas.
C: La partición "reservada para el sistema" de unos aprox. 100/200 MB, la cual contiene el boot de arranque y otros ficheros relacionados.
D: La partición donde está instalado Windows y los datos, esta es la que estaría montada como C:\ cuando corremos un sistema operativo Windows.
E: Unidad asignada al DVD o USB de instalación de Windows (Windows PE y Windows RE).

En que partición se tienen que realizar las acciones para recuperar el arranque de Windows?.
Lógicamente en la partición en la que tengamos dichos ficheros dañados, que obviamente será la partición reservada por el sistema operativo para su arranque, en este caso (y por defecto como ya se mencionó anteriormente) C:.
c:
diskpart
list disk
select disk=0
list partition
select partition=1
active
exit
Con esto listamos, seleccionamos el disco donde se albergue Windows 7, listamos las particiones y seleccionamos la partición donde esté instalada Windows7, la marcamos como activa y salimos.
A continuación, ejecutamos la siguiente secuencia de comandos:
bootrec /fixmbr
bootrec /fixboot
bootrec /rebuildbcd
exit
Esto nos reparará el MBR (Master Boot Record), la secuencia de inicio BOOT y nos reconstruirá la base de datos de arranque BCD (Boot Configuration Data).
Reiniciamos y probamos si con esto conseguimos solucionar el problema de arranque y Windows nos arranque correctamente.

[2.2] - Si el error persiste y no se hubiese solucionado nuestro problema habría que reconstruir de nuevo el BCD pero de otra forma, hacerlo "desde cero" sin que sobrescriba ningún fichero ya existente.
Para ello, en la consola de recuperación escribimos:
bcdedit /export c:\bcd_backup
c:
cd boot
attrib bcd -s -h -r
ren c:\boot\bcd bcd.xxx
bootrec /rebuildbcd
bootrec /fixmbr
bootrec /fixboot
exit
Con esto lo que haremos es hacer un respaldo de la base de datos boot exportándola a C:. Después simplemente entramos en la carpeta "Boot" que está situada en la raíz del sistema y borramos los atributos (de archivo del Sistema, Oculto y Solo lectura) del fichero bcd en cuestión.
Por último reconstruimos de nuevo la BCD, en este caso desde cero sin que tome referencia de ninguna otra y reparamos el MBR y el BOOT como los pasos anteriores y reiniciamos a ver si ya se corrigió el problema de arranque.

[2.3] - Si seguimos sin poder repararlo como última instancia tendríamos que sobrescribir el fichero BOOTMGR (situado en el raiz del sistema, C:) .

Situados en la consola de recuperación, buscaremos y entraremos a la letra de unidad asignada a la lectora DVD o la unidad asignada al dispositivo donde tengamos la instalación de Windows 7. En mi caso, fue la la letra E: pero podría a ver sido otra, es cuestión de ir probando en un orden alfabético (D:, E:, F:, G:, H:, etc.).
e:
copy bootmgr c:\
c:
attrib bootmgr +s +h +r
bootrec /rebuildbcd
bootrec /fixmbr
bootrec /fixboot
exit
Como vemos, copiamos el bootmgr del DVD (en este caso) al disco raíz, nos vamos a nuestro disco raíz (por defecto C:) y establecemos los atributos (de archivo de Sistema, Oculto y Solo lectura) al fichero bootmgr que copiáramos anteriormente.
Ahora bien, en el momento de reconstruir la base de datos de arranque de nuevo si no nos detecta el OS, deberemos hacer lo del paso 2.1, seleccionar la partición correcta y marcarla como activa. Después de eso ya podremos reconstruir sin problemas la BCD y seguir con la reparación de fixmbr y fixboot.

Ahora salimos de la consola y reiniciamos y con estos todos casos anteriores y planteados en este artículo deberíamos solucionar gran parte de errores relacionados con fallos de arranque o carga de un sistema operativo Windows 7.

NOTA: En el caso de que nos pida otro fichero de arranque el cual, se me pudo olvidar reflejar en este post y sabemos que lo tenemos en el DVD de instalación de Windows 7, sería el mismo procedimiento que el último paso 2.3. Es decir coger ese fichero copiarlo y pegarlo en su ubicación original del disco raíz, reconstruir la base de datos de arranque (BDC) y reparar el MBR y el BOOT.

Saludos!
Entradas Relacionadas