Date post: | 15-Jul-2015 |
Category: |
Technology |
Upload: | jhon-jairo-hernandez |
View: | 983 times |
Download: | 0 times |
FAT Análisis
@d7n0
© JHON JAIRO HERNÁNDEZ HERNÁNDEZ
Dinosaurio – Dino
Jhonjairo.hernandezœ@hackinganddefense.co
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
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 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