Fat analisis

28
FAT Análisis @d7n0 © JHON JAIRO HERNÁNDEZ HERNÁNDEZ Dinosaurio Dino Jhonjairo.hernandezœ@hackinganddefense.co [email protected] HACKING & DEFENSE SAS © Jhon Jairo Hernández Hernández

Transcript of Fat analisis

FAT Análisis

@d7n0

© JHON JAIRO HERNÁNDEZ HERNÁNDEZ

Dinosaurio – Dino

Jhonjairo.hernandezœ@hackinganddefense.co

[email protected]

HACKING & DEFENSE SAS

© Jhon Jairo Hernández Hernández

© Jhon Jairo Hernández Hernández

Director Proyectos,

Consultor Seguridad Informática / Información

Investigador Informática Forense

Académico, Socio Fundador HACKING& DEFENSE SAS

#whoami

FAT Análisis(File Allocation Table and directory entries)

El concepto básico de un sistema de archivos FAT es que a cada archivo y

directorio es asignado a una estructura de datos, llamada una entrada de

directorio, que contiene el nombre del archivo, tamaño, dirección inicial del

contenido del archivo y otros metadatos. El contenido del Archivo y del

directorio se almacena en unidades de datos llamados clusters.

El diseño del sistema

de archivos FAT tiene

tres secciones físicos

en ellas:

Hay tres diferentes versiones de FAT:

FAT12, FAT16 y FAT32. La principal

diferencia entre ellos es el tamaño de las

entradas en la FAT.

© Jhon Jairo Hernández Hernández

FAT Análisis(File Allocation Table and directory entries)

En un sistema de archivos FAT,

la categoría de sistema de

archivos de datos se pueden

encontrar en los datos de

estructura del boot sector.

El boot sector (inicio) se

encuentra en el primer sector del

volumen, y es parte del área

reservada del sistema de

archivos. Microsoft se refiere a

algunos de los datos en el primer

sector como perteneciente al

bloque de parámetros del BIOS

(BPB) = boot sector.

© Jhon Jairo Hernández Hernández

FAT Análisis(File Allocation Table and directory entries)

El área reservada se inicia en el

sector 0 del sistema de archivos, y su

tamaño se da en el boot

sector. Para FAT12/16 el área reservada

generalmente sólo es un sector, pero

para FAT32 por lo general se reservará a

muchos sectores.

El diseño del área de datos es

ligeramente diferente en FAT12/16 y

FAT32. En el FAT12/16 el comienzo

del área de datos está reservado para el

directorio raíz, pero en FAT32 el

directorio raíz puede estar en cualquier

lugar en el área de datos.

© Jhon Jairo Hernández Hernández

FAT Análisis(File Allocation Table and directory entries)

Los primeros tres bytes del sector de

arranque contienen una instrucción de

salto en código máquina que hace que la

CPU salte más allá de los datos de

configuración en el resto del código de

arranque. Como se puede ver en la

estructura de datos, el sector de

arranque es de 512 bytes y bytes de 62 a

509 en FAT12/16 y los bytes 90 a 509 en

FAT32 no se utilizan. Estos bytes

contienen el código de arranque, y

FAT32 puede utilizar los siguientes

sectores el sector de arranque para el

código de arranque adicional.

© Jhon Jairo Hernández Hernández

FAT Análisis(File Allocation Table and directory entries)

Ejemplo de FAT32, tomada con Sleuth Kit

(TSK) y su herramienta llamada fsstat que

muestra muchos de los datos en la

categoría de sistema de archivos de

datos.

© Jhon Jairo Hernández Hernández

FAT Análisis(File Allocation Table and directory entries)

Para encontrar el inicio de un sistema de

archivos FAT, vamos a buscar los

valores de la firma de 0x55 y 0xAA en los

dos últimos bytes del sector de

arranque. Debemos esperar un número

considerable de entradas falsas,

haciendo sólo esta búsqueda. Si un

disco contiene datos aleatorios, es de

esperar, en promedio, para encontrar esta

firma cada 65.536 (es decir,

216) sectores.

Se puede reducir el número de

accesos falsos mediante una firma más

grande o mediante el uso de otros

datos. Este escenario muestra cómo el

último método funciona bien con

FAT32 porque hay un patrón de

estas firmas en el

área reservada del sistema de archivos.

© Jhon Jairo Hernández Hernández

FAT Análisis(File Allocation Table and directory entries)

La herramienta sigfind imprime el sector en

el que se encontró la firma y le da la

distancia desde el HIT anterior. Aquí está la

salida, junto con el comentario:

El primer éxito de la firma se encuentra

en el sector 63, lo cual tiene sentido ya que

la primera partición comienza típicamente

en el sector 63. Leemos el sector y aplicar

el sector de arranque de la estructura de

datos. Nos enteramos de que tiene un

sector de booteo de backup en el sector 6

y FSINFO en el sector 1 del sistema de

archivos.

También sabemos que hay sectores

20,482,812 en el sistema de archivos.

La estructura de datos FSINFO tiene la

misma firma que el sector de arranque, por

lo que el sector 64 es también un éxito

© Jhon Jairo Hernández Hernández

Estructuras de datos FAT

Boot SectorEl Boot Sector (sector de inicio) se encuentra en el primer sector de sistema de

archivos FAT y contiene la mayor parte de la categoría de sistema de archivos de

datos. FAT12/16 y FAT32 tienen versiones diferentes del sector de arranque, pero

ambos tienen las mismas iniciales de 36 bytes.

© Jhon Jairo Hernández Hernández

Estructuras de datos FAT

Boot Sector

El primer valor en el sector de

arranque, los bytes 0 a 2, es una

instrucción de código de

arranque indica al ordenador dónde

se encuentra el código necesario

para arrancar el sistema

operativo. Si el sistema de

archivos no se utiliza para arrancar

el equipo, el valor no es necesario.

De 36 bytes en adelante, FAT12 y

FAT16 tienen un diseño distinto al

de FAT32. El valor que ambos

tienen en común es la firma

de 0x55 en el byte 510 y 0xAA en el

byte 511.

© Jhon Jairo Hernández Hernández

Estructuras de datos FAT

Boot Sector

© Jhon Jairo Hernández Hernández

Estructuras de datos FAT

Boot Sector

© Jhon Jairo Hernández Hernández

Estructuras de datos FAT

Jhon Jairo Hernandez ( Dinosaurio / Dino ) http:World-Of-Dino.blogspot.com

Los datos entre los bytes de 62 a 509 en un sistema de archivos FAT12/16 y bytes de 90 a

509 en un sistema de archivos FAT32 no tiene un fin específico, pero normalmente se

utilizan para almacenar el código de arranque y mensajes de error.

Aquí está un volcado hexadecimal del primer sector de un sistema de archivos FAT32 en

un sistema Windows XP:

La primera línea nos muestra que el nombre de OEM es "MSDOS5.0", que puede haber sido generada por

un sistema Windows 2000 o XP Bytes 11 a 12 nos muestran que cada sector es de 512 bytes, (0x0200) y

el byte 13 nos muestra que el tamaño de cada grupo en el área de datos es de 2 sectores, que es 1024

bytes. Bytes 14 a 15 nos muestran que hay 38 (0x0026)sectores en el área reservada, por lo que

sabemos que el Área de FAT se iniciará en el sector 38, y el byte 16 muestra que hay dos estructuras de

FAT. Bytes 19 a 20 contienen el 16-bit de sistema archivo valor de tamaño y es 0, lo que significa que el

campo de 32-bit en bytes 32 a 35 debe ser utilizado. © Jhon Jairo Hernández Hernández

Estructuras de datos FATEsta imagen es FAT32, por lo que tenemos que aplicar la estructura de datos adecuada a

partir de ahora. Bytes 36 a 39 muestran que el tamaño de cada estructura de FAT es 797

(0x0000 031d) sectores, y porque sabemos que habrá dos estructuras de FAT, el tamaño

total de la zona de FAT será 1.594 sectores. Bytes 48 a 49 muestran que la

información FSINFO se encuentra en el sector 1, y los bytes 50 a 51 muestran que

la copia de seguridad del sector de arranque es en el sector 6.

El número de serie del volumen se encuentra en bytes 67 a 70, y su valor es0x4c194603. La etiqueta de

volumen es en bytes 71 a 81 y tiene el valor "SIN NOMBRE" (además de cuatro espacios). Veremos más

adelante que la etiqueta real, se almacena en otro lugar en el sistema de archivos. La placa de tipos es en

bytes 82 a 89, y es "FAT32" (además de tres espacios) para este sistema. Bytes90 a 509 no son utilizados

por el sistema de archivos, pero podemos ver los datos de aquí que se utiliza cuando el sistema

intenta arrancar desde este sistema de ficheros. Bytes 510 y 511 tienen la firma 0xAA55 valor.

© Jhon Jairo Hernández Hernández

Estructuras de datos FAT

FAT32 FSINFOUn sistema de archivos FAT32 tiene una estructura de datos que incluye FSINFO pistas

sobre donde el sistema operativo puede asignar nuevos grupos. Su ubicación se da en el

sector de arranque

El número de serie del volumen se encuentra en bytes 67 a 70, y su valor es 0x4c194603. La etiqueta de

volumen es en bytes 71 a 81 y tiene el valor "SIN NOMBRE" (además de cuatro espacios). Veremos más

adelante que la etiqueta real, se almacena en otro lugar en el sistema de archivos. La placa de tipos es en

bytes 82 a 89, y es "FAT32" (además de tres espacios) para este sistema. Bytes90 a 509 no son utilizados

por el sistema de archivos, pero podemos ver los datos de aquí que se utiliza cuando el sistema

intenta arrancar desde este sistema de ficheros. Bytes 510 y 511 tienen la firma 0xAA55 valor.

© Jhon Jairo Hernández Hernández

Estructuras de datos FAT

FAT32 FSINFO

Ninguno de estos valores se requiere. Están allí como una sugerencia para el

sistema operativo, pero es válida para que no se actualizará. Aquí vemos el

contenido del sector 1 del sistema de archivos que examinó

anteriormente. Los desplazamientos de bytes se dan con respecto al

inicio de este sector.

Vemos las firmas de bytes 0 a 3, 484 a 487, y 508 a 511. El número de grupos es en

bytes libres 488 a 491, y este sistema de archivos tiene 101 918 (0x00018e1e) clústeres

libres. Tenga en cuenta que este valor es en los grupos y sectores no. El clúster libre al

lado se encuentra en bytes 492 a 495, y vemos que se trata de la agrupación 75

(0x0000 004b).

© Jhon Jairo Hernández Hernández

Estructuras de datos FAT

FAT

El FAT es crucial para un sistema de archivos FAT y tiene dos propósitos. Se utiliza para

determinar el estado de asignación de un grupo y para encontrar el siguiente grupo

asignado en un archivo o directorio.

Normalmente hay dos tipos de FATs en un sistema de archivos FAT, pero el número

exacto se da en el sector de arranque. La primera FAT se inicia después de los sectores

reservados, el tamaño de la que se da en el sector de arranque. El tamaño total de cada

FAT también se da en el sector de arranque, y la segunda FAT, si existe, se inicia en el

sector tras la final de la primera.

© Jhon Jairo Hernández Hernández

Estructuras de datos FAT

FAT

Si un grupo no se ha asignado, la entrada tendrá un 0 en el mismo. Si un

grupo se le asigna, su entrada será distinto de cero, y contendrá la dirección

del siguiente clúster en el archivo o directorio. Si es el último clúster en un

archivo o directorio, la entrada tendrá un marcador de fin de archivo, que es

cualquier valor mayor que 0xff8 de archivos FAT12, FAT16 y 0xfff8 de 0x0FFF

FFF8 para FAT32. Si una entrada tiene un valor de 0xff7 de archivos FAT12,

FAT16 para 0xfff7 o 0x0FFF FFF7 para FAT32, el grupo se ha marcado como

dañado y no debe ser asignado.

Recordemos que el primer grupo direccionable en el sistema de archivo es el

# 2. Por lo tanto, las entradas 0 y 1 en la estructura de FAT no son

necesarios. Entrada 0 suele almacenar una copia del tipo de medio, y la

entrada 1 típicamente almacena el estado dirty (sucio) del sistema de

archivos. También hay un valor de almacenamiento para el tipo de medio de

en el boot sector (sector de arranque), pero señaló que antes, Windows no

puede usarlo y podría utilizar el valor de la entrada 0 FAT. El estado dirty

(sucio) puede ser utilizado para identificar un sistema de archivo que estaba

no montado correctamente (apagado incorrecto) o que los errores en la

superficie de hardware fueron encontradas. Ambos valores no son esenciales

y pueden no ser exactos.

© Jhon Jairo Hernández Hernández

Estructuras de datos FAT

FAT

Esta salida es a partir de un sistema de archivos FAT32, por lo que cada

entrada es de 4 bytes (dos columnas) y se muestra la primera entrada tiene

un valor de 73 (0x0000 0049). Su ubicación actual en la estructura de FAT se

encuentra en desplazamiento de bytes 288, y se puede dividir por cuatro (el

número de bytes por entrada) para determinar que se trata de la

entrada 72. Sabemos que esta entrada se le asigna, ya que no es cero y

el siguiente grupo en el archivo es compatible con clústeres 73.

Podemos ver que la entrada en bytes 300 a 303 y las entradas de los bytes en 340 en

adelante son todos 0, lo que significa que los grupos correspondientes alas entradas no

están asignados. En este ejemplo, los bytes en 300 a 303 son para racimo 75, y los

bytes en 340 son para racimo 85 y en adelante. Hay un ejemplo en la sección de entrada de

directorio que muestra cómo seguir una cadena de cluster en la FAT.

© Jhon Jairo Hernández Hernández

Estructuras de datos FAT

Directory Entries

La entrada de directorio FAT contiene el

nombre y los metadatos de un archivo o

directorio. Una de estas entradas se asigna

a cada fichero y directorio, y se encuentran

en los grupos asignados al directorio

padre del archivo. Esta estructura de

datos compatible con un nombre que tiene

sólo 8 caracteres en el nombre y 3 caracteres

en la extensión. Si el archivo tiene un nombre

más complejo, habrá un nombre de archivo

largo entrada de directorio, además de una

entrada de directorio.

© Jhon Jairo Hernández Hernández

Estructuras de datos FAT

Directory Entries

© Jhon Jairo Hernández Hernández

Estructuras de datos FAT

Directory EntriesEl primer byte de la estructura de datos funciona como el estado de asignación, y si se ajusta

a 0xE5 o 0x00, la entrada de directorio no está asignado. De lo contrario, el byte se utiliza para

almacenar el primer carácter del nombre del archivo. El nombre es por lo general en formato

ASCII, pero también podría usar una de las páginas de códigos de Microsoft si el nombre no

ASCII utiliza símbolos.

Si el nombre de archivo tiene el valor 0xE5 en ese byte, 0x05 se debe utilizar en su lugar. Si el

nombre no tiene 8 caracteres en su nombre, los bytes no utilizados suelen ser rellenado con

el valor ASCII de un espacio, que es0x20.

El campo de tamaño de archivo es de 4 bytes y, por tanto, el tamaño máximo es de 4

GB. Directorios tendrá un tamaño de 0 y la estructura FAT debe ser utilizado para

determinar el número de grupos asignados al mismo.

© Jhon Jairo Hernández Hernández

Estructuras de datos FAT

Directory EntriesLa porción de la fecha de cada marca de tiempo es un valor de 16-bits que consta de tres

partes, que se muestran en la Figura 10,2 (A). Los menores de 5 bits son para el día del

mes, y los valores válidos son del 1 al 31. Los bits 5 a 8 son para el mes, y los valores

válidos son del 1 al 12. Los bits 9 a 15 son para el año, y el valor se añade al de 1980. El

rango válido es de 0 a 127, lo que da un rango de años de 1980 a 2107. La conversión

de la fecha 01 de abril 2005 a su formato hexadecimal se puede encontrar en la figura 10.2

(b).

© Jhon Jairo Hernández Hernández

Estructuras de datos FAT

Directory EntriesEl valor del tiempo es también un valor de 16 bits y también tiene tres partes. Los

menores de 5 bits son para el segundo, y utiliza intervalos de dos segundos. El rango

válido de este valor es de 0 a 29, que permite a un segundo rango de 0 a 58 en intervalos

de dos segundos. Los próximos 6 bits son para el minuto y tiene un rango válido de 0 a

59. Los últimos 5 bits son para la hora y tienen un rango válido de 0 a 23. Esto puede

verse en la Figura 10,3 (A). Un ejemplo de convertir el tiempo 10:31:44 am al formato

FAT se puede encontrar en la Figura 10,3 (B).

© Jhon Jairo Hernández Hernández

Estructuras de datos FAT

Directory EntriesEl punto de partida del directorio raíz en un sistema de archivos FAT32 se da en el sector

de arranque.

Las dos primeras líneas muestran una entrada de directorio con el atributo en el

byte 11 se establece en el valor binario 0000 1000 (0x08), que es una etiqueta de

volumen. También podemos ver que el tiempo de escritura y la fecha se fija en bytes de 22

a 25 en la línea 2. El tiempo de escritura en una etiqueta de volumen puede contener la

fecha en que el sistema de archivo fue creado. Tenga en cuenta que la etiqueta de

volumen en el sector de arranque se ajusta a "NO NAME".

Las líneas tercera y cuarta son para una entrada de directorio en segundo lugar, y vemos que el nombre

de este archivo es "RESUME-1.RTF". El valor del atributo en el byte 43 es 0000 0010 (0x20), lo que

significa que sólo el bit de atributo de archivo está establecido. Byte 45 muestra las décimas de

segundo para el tiempo de creación, que es 163 (0xA3). Bytes 46 a 47 tienen el tiempo de creación,0x7e34,

lo cual es 15:49:40.

El día es creado en bytes de 48 a 49 y tiene un valor de 0x304a, que es 10 de febrero 2004.

© Jhon Jairo Hernández Hernández

Estructuras de datos FAT (Long File Name Directory Entries)

La entrada de directorio estándar se admiten nombres con sólo 8 caracteres en el

nombre y 3 caracteres en la extensión. Nombres más largos o nombres que usan

caracteres especiales requieren de nombre de archivo largos (LFN) entradas de

directorio. Un archivo tendrá una entrada normal, además de las entradas LFN, y las

entradas LFN precederá a la entrada normal. La versión LFN de la entrada del directorio

tiene los campos que se muestran en la Tabla 10.7.

El campo de número de secuencia es un contador para cada entrada necesaria para almacenar el

nombre del archivo, y la primera entrada tiene un valor de 1. El aumento de número de secuencia

para cada entrada de LFN hasta la entrada final, que es un OR bit a bit con el valor 0x40. Cuando dos

valores son bit a bit OR juntos, el resultado tiene un 1, cuando cualquiera de las dos entradas tenía

un 1. © Jhon Jairo Hernández Hernández

© Jhon Jairo Hernández Hernández