
En estás últimas semanas estoy siguiendo un curso de Análisis Forense (en el que me lo estoy pasando genial además de aprender y/o reforzar este tipo de asuntos que para eso asisto a clase, claro)
El caso es que estoy pasando los apuntes y demás... y pensé... “por qué no publicarlo en estos foros?”, Claro que sí, por favor....
El curso nos lo imparte un elemento bastante bueno en esta tarea “funcionario”, jeje... vamos de los “Men in Green” :P no daré muchos mas datos, pero solo con oir Unidad Operativa de Delitos Informáticos de la Guardia Civil, Policía Judicial, Master por la INTERPOL, EUROPOL etc..... a mas de uno se le ponen los pelos de punta, jajaja y como no podía ser de otra manera, estamos fraguando una relación y confianza que me da buenas vibraciones...
A ver si he sido buen alumno y consigo ir explicando por partes en estos foros gran parte del contenido de estos cursos y tenemos un bonito hilo acerca de este asunto que a los que nos gusta esto de la seguridad es un tema importante, a veces desconocido y con difícil soporte en español....
Voy a dejar de un lado todo el asunto de Normativas, Código Penal, Legislación, LSSI., LOPD, también me apartaré un poco de lo que se denomina la “escena del Crimen”, la cadena de custodia y demás zarandajas que se han de tomar en cuenta cuando la Guardia Civil o autoridades competentes intervienen en una inspección, es muy importante pero se nos escapa un poco y aunque hay aspectos determinantes para poder inculpar a alguien en este post vamos a ir mas directamente a lo que es el análisis forense.
Decía antes que es importante porque de nada sirve encontrar restos de información o incluso completarla para que luego no sirva ante un eventual juicio, de momento que nos sirva una frase:
“Tan importante es encontrar evidencias de un delito como demostrar que esas evidencias sean veraces, que se haya seguido el procedimiento judicial adecuado, custodiado y desarrollado con profesionalidad”
Ya iremos apuntando algunas de las cuestiones legales, de cómo presentarlas, de la certificación de la evidencia, de la veracidad de la misma, del “no tocar” y demostrar que “no se ha tocado”, de muchas cuestiones que según mi profe, tiran por tierra muchos casos por el simple hecho de alterar un solo bit o que simplemente no entiende lo que se le presenta.
En esta primera parte nos vamos a centrar en Windows, en el análisis con herramientas Windows y del sistema operativo Windows.
Mas concretamente del Sistema de Archivos FAT y NTFS, del análisis de discos, de la recuperación de datos, del sistema de particiones, del logging, del registro, del archivo de paginación, de los slacks, de los data run, de los archivos residentes, de mil cosas.... del logging, de recolectar información perdida por el registro, de identificar todo lo que se pueda para luego presentar a un juez las pruebas obtenidas.
Usaremos herramientas de análisis forense como EnCASE, Helix , FTK y alguna mas como sleuthkit ...
Tal y como se hizo con el Taller de TCP/IP, aprenderemos a analizar los rastros y registros “manualmente” luego con ayuda de herramientas específicas. Así entenderemos a la perfección como trabajan y cómo lo hacen.
Y también, al igual que con el Taller TCP/IP, iré posteando todo por partes, dando algo de tiempo para asimilar los contenidos y mantendremos el hilo cerrado para que quede todo mas legible, si bien, abriremos otro hilo paralelo para que podáis plasmar dudas, comentarios, correcciones, mejoras, etc que se puedan ir añadiendo al hilo “principal”.
Espero que sea de vuestro interés, la verdad es que va a ser un documento grande y de varias horas en su elaboración y desarrollo.
Cuando todo esté maquetado y bien presentado colgaré la documentación en un pdf para que sea mas fácil su lectura y se pueda imprimir de forma más práctica que los post del foro.
Bueno, que empezamos!!!!
Indice (Parte I. Sistema de Archivos FAT)
1.- Análisis Forense. Introducción
2.- Estructuras del Sistema y unidades
2.1.- Estructura Física
2.2.- Estructura Lógica
2.3.- CHS v.s. LBA
2.4.- Impacto en el sistema de archivos. File Slack.
3.- Introducción al Sistema de Archivos FAT
3.1.- Boot Record
3.2.- File Allocation Table
3.3..- Root Directory
3.4.- Data Area
4..- Primeros pasos con EnCase. Herramienta Forense
5.- Análisis de FAT
5.1.- El Registro de arranque al desnudo (Boot Record)
5.2.- Ejemplo de un Boot record a fondo....
5.3.- Áreas FAT1 y FAT2 con ejemplos
5.4.- El Dirty Bit
5.5.- Root Directory
5.6.- El área de datos sin secretos
6.- Ejercicios y Prácticas con FAT
6.1.- El acceso a los Datos.
6.2.- Recuperar de datos tras formateo de una unidad FAT16. File Carving
6.3.- Nombres Largos (Long Names)
6.4.- Recuperación de datos borrados y áreas Slack
6.5.- Particiones. Análisis de la Tabla de Particiones y MBR
No termina aquí, NI MUCHO MENOS!!!!! de hecho en esta primera entrega sólo se entrega hasta el punto 5.2, la próxima será el resto de esta primera parte.
Luego vendrá FAT32, NTFS, Particiones primarias y extendidas, MFT, Forensic de Windows, USB, Registro, El archivo de paginación, firmas de archivos, recuperacion, EnCase a fondo, Helix para Windows, FTK, imágenes y duplicados de volúmenes y un largo etcétera...
También veremos Forensic de Linux, con herramientas Linux y por supuesto, Anti-Forensic

ESTRUCTURA FISICA Y LOGICA DE UN DISCO
En todo disco (ya sea disquete, disco duro, memoria flash, etc..) hay que distinguir entre una estructura física y una estructura lógica.
La estructura física es inherente al disco y se crea cuando se construye el disco en la fabrica.
La estructura física divide al disco en: caras, cilindros o pistas, y sectores.
La estructura lógica se crea por el usuario al formatear el disco por ejemplo con la orden FORMAT. Los datos se almacenan según la estructura lógica. Por eso, siempre hay que formatear un disco antes de usarlo. En el caso de los discos duros, antes del formateo se deberá efectuar su partición o particiones.
ESTRUCTURA FISICA
La estructura física determina la capacidad del disco y viene impuesta por el fabricante.
Cada disco puede tener varias “caras” y/o o “cabezas” los disquetes tienen dos caras, los discos duros suelen tener varias caras.
Las caras de un disco se numeran comenzando por la 0.
Cada cara la podemos imaginar dividida en círculos concéntricos llamados pistas en los disquetes y cilindros en los discos duros.
En los discos duros cada una de las caras también se divide en varias pistas. Sin embargo en los discos duros no se habla de pistas, sino de cilindros. Un cilindro designa el conjunto de todas las pistas con igual número pero distinta cara.
Cada pista se divide en segmentos llamados sectores. El sector es la unidad mínima de información para los discos.
Cuando se lee o escribe información en un disco lo que esta haciendo es leer o escribir uno o mas sectores en el disco.
ESTRUCTURA LOGICA
Los sistemas operativos trabajan con clusters y estructuras lógicas que se crean durante el proceso del formateo.
Cada vez que se formatea un disco se realizan dos cosas:
- 1- Se define el numero de pistas y el numero de sectores por pista.
2- Se divide el disco en zonas
Aunque el numero de pistas de un disco esta impuesto por su estructura física tal y como lo entrega el fabricante es posible crear una estructura lógica (formatear) con menos pistas por cara o con mas.
El número de sectores por pista también puede variar según el formateo, por ejemplo un disquete de 3 pulgadas y 1/2 de 1.44MB con 18 sectores por pista puede ser formateado con 9 sectores por pista (discos de 720K).
División en zonas
La acción de formatear depende del Sistema de Archivos elegido, no son las mismas zonas las que se crean para un disco formateado en FAT que en NTFS u otros... sin embargo hay algo que es común: El Sector de arranque
El sector de arranque (boot sector) se localiza en el primer sector de todo disco y ocupa 512 bytes.
Este sector de arranque se utiliza principalmente para dos tareas:
- a) Contiene un pequeño programa que se ejecuta al encender el ordenador y que permite cargar el sistema Operativo (si se trata de un disco de arranque) en memoria durante la inicialización del sistema.
Cada vez que se inicializa el ordenador se busca el sector de arranque de la unidad A, C ... y se ejecuta este pequeño programa, que puede hacer dos cosas: o bien carga el Sistema Operativo o bien muestra algún mensaje:
No es disco de sistema
Pulse cualquier tecla para continuar
....
....
b) El sector de arranque almacena una tabla con información sobre la estructura física y lógica del disco: número de caras, pistas, sectores por pista, bytes por sector, sectores por cluster, numero de Fats, nombre y versión del sistema operativo, etc.
Un cluster es un conjunto de uno o mas sectores contiguos.
Cuando el Sistema Operativo copia un fichero en un disco, no lo copia en el sector x de la pista x de la cara x, sino que lo copia en el cluster x.
El sector es la mínima unidad de información para el disco; pero el cluster es la unidad mínima de información para el Sistema Operativo.
El numero de sectores que ocupa cada cluster ha de ser potencia de 2 (1, 2, 4, 8, etc) y su valor exacto depende de la capacidad del disco.
Los clusters solucionan el problema del almacenamiento de los ficheros en el disco, pues aunque los clusters se componen de sectores contiguos, los ficheros se almacenan en clusters que no necesitan ser contiguos.
Ahora bien, ¿como sabe el Sistema Operativo en que cluster continua un determinado fichero?
Pues mediante el Sistema de Archivos, ya sea FAT16, FAT32, NTFS y otros...
También se incluyen determinadas marcas para saber si un cluster está ocupado, libre, defectuoso, si es el último, etc.. como ya se ha dicho varias veces, la forma de hacerlo depende del sistema de archivos elegido.
CHS v.s. LBA
Ya hemos hablado de Estructura Física y Estructura Lógica de un disco, físicamente el disco lo entendemos como un conjunto de “platos” en los que existen “cabezas” que leen cada una de las caras que a su vez se disponen es sectores.
Si trazásemos unas líneas imaginarias verticales que segmentasen el conjunto de platos del disco obtendríamos los que se denomina el cilindro.
Hace tiempo las caras de los platos mas exteriores (la de mas arriba y la de mas abajo) no se utilizaban para almacenar datos, se usaban para lo que se denomina el “aterrizaje” el “landing” hoy en día sí que se usan todas las caras de un disco.
Los cilindros “atraviesan” verticalmente cada uno de los platos del disco, es decir, para el acceso físico a un sector determinado del disco se utilizan tres coordenadas, lo que conocemos como CHS.
- * El número de cilindro: 10 bits (del 0 al 1023)
* El número de cara o cabeza: 8 bits (del 0 al 255)
* El número de sector que corresponde a la pista: 6 bits (del 1 al 63, el cero no se usa)
Si atendemos a este tipo de direccionamiento resulta que el tamaño máximo de un disco sería:
- Código: Seleccionar todo
1024 cilindros x 256 cabezas x 63 sectores x 512 bytes por sector = 8.4 Gbytes
La BIOS utiliza la interrupción 13 (INT 13h) permiten alcanzar una posición de cualquier sector mediante estos tres números.
Este era un límite hace años, cuando los discos empezaron a fabricarse mas grandes, las BIOS utilizaron los denominados “modo Largo” o modo “extendido” ECHS, hoy en día esos límites y sistemas de traducción han quedado muy lejos por el gran tamaño de los discos y utilizan lo que se llama el modo LBA,
Físicamente se accede a los datos por estas tres coordenadas (CHS) pero para el sistema operativo sería muy lento direccionar los datos atendiendo a esos tres valores, en su lugar se usa otro sistema unidireccional, el LBA (Logic Block Address) no siempre fue así, normalmente es la BIOS quien realiza esa traducción.
La conversión de una dirección CHS a LBA puede hacerse con la siguiente expresión:
- Código: Seleccionar todo
LBA= (NC x NH + H) x NS + S -1
Siendo:
NC = Nº de cilindro a direccionar
NH = Nº de cabezas totales
H = Número de cabeza a direccionar
NS= Número de sectores por pista
S = Sector a direccionar
Las extensiones de BIOS actuales emplean direccionamiento LBA de 48 bits lo que nos llevaría a un límite de:
- Código: Seleccionar todo
2 ^48 x 512 bytes por sector = 144.000.000 Gbytes aproximadamente
Sin embargo también pueden emplear el direccionamiento [b]CHS [/b]junto con LBA por cuestiones de compatibilidad , el acceso al disco duro durante las primeras fases de arranque se hace por CHS, mas tarde, se comprueba si se pueden usar las Extensiones de INT 13h para acceder al disco mediante direcciones LBA.
Obviamente el acceso LBA es mas rápido, basta con pensar que sólo se necesita una coordenada para llegar a cualquier parte del disco en lugar de las tres que proporciona CHS, para el sistema operativo también es mas rápido, pero de una forma u otra, físicamente se mantiene el formato CHS y el disco físicamente sigue manteniendo una estructura CHS, por tanto, LBA es la forma lógica de acceder a las posiciones físicas determinadas por CHS.
La BIOS utiliza el acceso al disco duro mediante dos formas:
- Servicios estándar con traducción (limitado a discos máximo 8.4GB)
Servicios extendidos (LBA de 48 bits)
La explicación es obvia, si estuviese “partido” horizontalmente, las cabezas del disco tendrían que moverse constantemente “adelante y atrás” para alcanzar los sectores, si lo cortamos verticalmente se pueden leer todas las posiciones de un cilindro “a la vez” por cada cabeza, claro no?
Otra curiosidad es que no todos los sectores de un disco se terminan usando (dejando al margen aquellos que se puedan marcar como defectuosos) existe o puede existir un área de sectores sobrantes (surplus sectors) esto es debido a que el número de sectores totales del disco no es un múltiplo del número total de cilindros, por ejemplo:
Un disco duro de 40 Gbytes cuya estructura física según el fabricante es de:
- Nº de sectores = 78165360
Nº de cilindros = 4865
Nº de cabezas = 255
Nº de sectores por pista = 63
Y si restamos el número de sectores que nos da el fabricante menos el valor calculado, tenemos:
78165360 – 78156225 = 9135 que seran los sectores sobrantes según esa tecnología de disco.
TERMINOLOGÍA
FAT: File Allocation Table, Es la estructura presente en volúmenes FAT, por supuesto…. Volumen
FAT1: También llamada Primary FAT y es la primera copia de FAT
FAT2: También llamada Secundary FAT y es una segunda copia de FAT
FAT12: Sistema de archivos que utiliza 12-bit por cluster en el direccionamiento
FAT16: Sistema de archivos que utiliza 16-bit por cluster en el direccionamiento
FAT32: Sistema de archivos que utiliza 32-bit por cluster en el direccionamiento
FAT or FATxx: Sistema de archivos que usa FAT
VFAT: Código de 32-bit usado por Win9x en modo gráfico (GUI)
Cluster: Unidad de Datos que se usa para el almacenamiento lógico de la información
Sector: Unidad de Datos que se usa para el almacenamiento Físico de la información
Physical sector address: Dirección absoluta de un sector en términos físicos del Hardware
CHS sector address: Cylinder, Head, Sector (Cilindro, Cabeza y Sector)
Logical sector address: Dirección relativa de un sector address
Folder: Eso, las carpetas que podemos ver con el Explorador de Windows, por ejempplo
File Folder: Pues lo mismo de antes en términos “mas modernos”
Directory: Estructura de datos que contiene archivos u otros directorios
Directory entry: Puntero a un archivo o directorio que contiene información acerca de los atributos, marcas horarias, tamaño, cluster de inicio, etc...
Attributes: Colección de bits en una entrada de directorio que lo describe
Algunos de estos términos tienen el mismo significado en otros sistemas de archivos y otros son particulares de FAT.
FILE SLACK
Por el momento, es importante que entendamos la diferencia entre sectores y cluster.
Un sector comúnmente referencia a un espacio físico del disco mientras que un cluster es una agrupación de sectores y los debemos tomar en un sentido lógico.
Todos alguna vez en nuestra vida hemos formateado un disco, jajaja, igual no... bueno, el caso es que una de las acciones que la acción de formatear un disco ejerce es agrupar los sectores en cluster, eso que Microsoft llama Tamaño de unidad de asignación.
Como vemos en la pantalla anterior, podemos usar 512, 1024, 2048 o 4096 bytes
Si nuestro disco utiliza sectores físicos de 512 bytes, podemos hacer agrupaciones de 1 sector por cluster, de 2 sectores por cluster, de 4 sectores por cluster o de 8 sectores por cluster.
El tamaño predeterminado que usa Windows depende de la capacidad del disco y del sistema de archivos elegido (p.e. FAT 16, FAT32, NTFS...), ya lo veremos.
Lo primera duda que nos asalta es qué es mejor... 1, 2, 4, 8... más?
Bien, veamos la problemática:
El archivo test.txt contiene un simple HOLA (4 bytes) sin embargo, observamos que el espacio en disco es de 4KB (4096 bytes) es decir, estamos “desperdiciando” 4092 bytes de espacio en disco, si tuviésemos 85400 archivos de este tamaño resultaría que:
- Código: Seleccionar todo
85400 x 4096 = 349.798.400 bytes en el tamaño del disco, unos 341 Megas
mientras que la información útil debería ocupar:
- Código: Seleccionar todo
85400 x 4 = 341.600 bytes unos 333 KB
Vamos, que nos chupamos mas de 300 Megas del disco que no se podrán usar pero que están “ocupados”
Obviamente la mejor solución en cuanto al ahorro de espacio en disco sería usar el mínimo posible pero traería consigo un menor rendimiento en archivos mas grandes puesto que el sistema operativo tendría que “enlazar” ese archivo por demasiados sectores.
De todos modos esto no es muy importante puesto que la mayor parte de nuestros archivos son bastante mas grandes.
Lo que sí es importante es que aunque el contenido del archivo es HOLA ocupa realmente 8 clusters (4096 bytes) y... qué pasa con el resto? Que contienen los 4092 bytes restantes?
Pues en Windows, habitualmente, completa el sector del primer cluster con ceros (lo wipea) y el resto lo deja tal cual se lo encontró.
Dicho de otro modo, pongamos un ejemplo:
- * Escribimos un archivo de texto que ocupa 112 byes
* Como usamos un sistema de archivos de 4096 bytes por cluster, necesitaría de 8 sectores de 512 bytes.
* En el primer sector se almacenan los 112 bytes que hemos escrito y el resto (400bytes) se wipean y se marcan con 00
* El resto de los sectores (7) del cluster, quedan con lo que había, esa información sigue estando, susceptible de verse, de recuperarse y/o de investigar. Esto es lo que se llama SLACK FILE
Un ejemplo:
Como vemos aparece la palabra hola y el resto de bytes del primer sector se wipean pero también aparece el contenido anterior (la zona en rojo) que tenían (tienen) esos sectores, por ejemplo, podría tratarse de parte de una imagen, de un archivo de audio o de un log de Chat en texto plano, sencillamente podemos acceder a ello con herramientas forenses y encontrar indicios.
Ya veremos mas adelante que podemos buscar en el contenido de los slack files (también en otros como los slack volume, Ram Slack, ) en el caso de los archivos de audio (imaginemos que buscamos conversaciones grabadas, se puede reproducir esa parte), si se tratan de correos electrónicos igual hay suerte y encontramos las evidencias del posible delito, ni que decir tiene si son log del Messenger u otros...
También veremos mas tarde que no se ha de modificar el contenido de los slack file puesto que si bien no afecta a la propia información del archivo que representa el sistema operativo, el hash de autenticidad del mismo cambiaría y la prueba, la evidencia del presunto delito, podría ser nula.
Sigamos con FAT.....
Estructura del Sistema de Archivos en FAT
El volumen de FATxx está dividido en 4 áreas
- Boot Record
File Allocation Tables (FAT1 y FAT2)
Root Directory
Data Area
Define el volumen y la ubicación del resto de áreas, además si la unidad es de arranque, el primer sector contiene el código necesario para la inicialización del sistema operativo.
En FAT 12 y FAT 16 es sólo el primer sector, mientras que en FAT32 son los 3 primeros sectores.
Recuerda 1 Sector para FAT12 o FAT16 y 3 para FAT32.
Pueden existir mas sectores reservados de forma opcional, de hecho casi siempre es así.
Habitualmente encontramos el valor EB 3C 90 que define este sector
File Allocation Table
Es una serie de direcciones a las que se accede como si se tratase de una tabla de búsquedas cuando se carga un archivo o se atraviesa un directorio.
Existen dos copias llamadas FAT1 y FAT2 tanto para FAT12-16-32 de ese modo si una de ellas se daña, corrompe o falla, se puede recuperar inmediatamente con la otra copia.
FAT12 es mas complicado de calcular (por el momento) puesto que cada entrada ocuparía 12bits (1 byte y medio), FAT16 serían 2 bytes por cada entrada y FAT32, 4 bytes por cada una de ellas.
Vemos un ejemplo para FAT16 que es “mas sencilla” de entender.
Los valores que marcan el inicio de FAT1 y FAT2 son F8 FF FF FF, a continuación existirán valores hexadecimales que le indican a la FAT si un determinado cluster está ocupado o no.
Como estamos hablando de FAT16, necesitamos 2 bytes (16 bits) por tanto tendremos que tomar parejas de bytes para saber si un determinado cluster está ocupado o no.
- Los valores 00 00 indican que el cluster está disponible
Los valores FF FF indican que es el fin de la entrada de un archivo
Otros valores reflejan la posición del archivo en el cluster.
Puede haber mas, pero de momento sólo nos fijaremos en estos.
root directory
Sólo existe para unidades FAT12 y FAT16, en FAT32 no encontraremos el área de Root Directory.
Es un área fija y localizada en el comienzo del volumen de la unidad inmediatamente después de las tablas FAT1 y FAT2.
Cabe destacar que sólo encontraremos aquí entradas a archivos y/o directorios que son accesibles desde el directorio raiz, por ello se llama Root Directory, es decir, en una estructura como esta:
Sólo existirían entradas en Root Directory asus, csrf, nomina.xls y serial.txt puesto que son los que estan en el directorio raiz.
Recuerda: No existe en FAT32
Data area
Es el resto del volumen, dividida en cluster y que almacena el contenido de los archivos y directorios.
Herramienta de Análisis Forense EnCase. Breve Introducción
Para continuar con el análisis del sistema de archivos vamos a necesitar algo que nos permita ver, aprender y estudiar lo anteriormente comentado, podríamos usar cualquiera, hasta un editor hexadecimal pero como una parte de este Taller va dirigido al análisis forense, empezaremos con una de ellas que se llama EnCase.
Desgraciadamente no es gratuita y las versiones Demo que podéis encontrar no son 100% operativas, vamos que hay que disponer de la Licencia correspondiente para ello, es una herramienta muy cara, de precio desorbitado y prácticamente va destinada a Cuerpos Policiales y de Seguridad Nacional.
Yo voy a usar la versión 4.2 aunque ya estamos por la 6, pero de esta última no tengo mas que la versión de prueba y no podre usar todas las funcionalidades que trae.
Una vez instalada, al ejecutar EnCase veremos algo así:
Lo primero ir al menú File y seleccionamos la opción New (Nuevo caso) y completamos el formulario con lo que creamos oportuno:
Luego Finalizar y quedará como se muestra a continuación:
Ahora debemos añadir los discos y/o dispositivos a analizar, para ello elegimos AddDevice en la barra de herramientas y cuando se muestre la pantalla de los dispositivos, verificamos la casilla 1, Local Drives y Siguiente
Aparecerá una serie de discos y unidades que tendremos que verificar para añadirlas al análisis, en mi caso elegí la unidad H que se corresponde con el pen-drive de esta primera práctica.
Después... siguiente y si es correcto Finalizar.
Dependiendo del tamaño de la unidad seleccionada tardará un ratito...
Si seleccionamos la unidad añadida al caso a analizar (en el ejemplo la H) veremos que en la parte derecha de Encase nos muestra diversa información, los archivos y/o carpetas que contiene y como se trata de una unidad FAT16, también informa de Primary FAT, Secundary FAT, Volume Boot, Volume Slack, y Los cluster libres o no asignados.
Vamos a comenzar por el análisis del Boot Record o como lo llama EnCase, Volume Root. También podemos encontrar autores (p.e. Microsoft) que hacen referencia a esta parte de la FAT como BPB (BIOS Parameter Block).
Seleccionamos en la parte derecha Volume Boot y en la zona inferior pinchamos en el icono que pone Disk.
En color Rosa vemos los sectores que pertenecen a los clusteres del Boot Record
En Azul claro (Cyan) tenemos Primary FAT (aparece un 1 en cada cuadradito) y Secundary FAT (un 2 en los cuadraditos)
En Verde se marca la zona que pertenece al Root Directory
En Azul oscuro los sectores ocupados por los archivos
En Gris los sectores no asignados.
En la parte derecha de los cuadraditos vemos que hay unas fichas de herramientas que pone Text, Hex y Legend... si pinchas en esta última tendrás la leyenda de lo que significa cada color
Bien, pues vamos a dejar la pantalla mas o menos como sigue:
Y ahora vamos a destripar la parte que hemos selccionado que es Record Boot o Volume Boot según EnCase.
Los más importantes están situados desde el byte cero hasta el byte 63 (los 64 primeros)
El contenido desde el byte 64 hasta el 510 ambos inclusive corresponden al código máquina del cargador de arranque si se trata de una unidad de inicio del sistema operativo (por ejemplo un disquete de inicio)
Los bytes 511 y 512 son siempre 55 AA que es la firma de la unidad de arranque y final del sector (EBR)
Este es un ejemplo de mi pen drive formateado en FAT16:
Una Tabla Resumen nos guiará en la interpretación:
Destripemos entonces de qué va esto:
EB 3C 90 -> Código de Arranque
4D 53 44 4F 53 35 2E 30 -> etiqueta en el ejemplo es: MSWIN5.0
00 02 - > Bytes por sector en little endian 512bytes
20 -> Numero de sectores por cluster -> 32
08 00 -> Regiones Reservadas en litllen endian (08 )
02 -> Número de Fat’s (2) que son FAT1 Y FAT2
00 02 -> Entradas máximas en el directorio raiz (512 en little endian)
00 00 -> Sectores Totales
F8 -> Descriptor del medio usualmente F0 para disquetes F8 para Discos Duros
F4 00 -> Sectores por Fat en little endian (00 F4) que son 244 sectores
3F 00 -> Sectores por Pista en little endian (00 3F) que son 63
FF 00 -> Número de caras en little endian (00 FF) que son 255
F4 00 00 00 -> Sectores ocultos en little endian (00 00 00 F4) 244 sectores
0C 63 1E 00 -> Longitud total de sectores en little endian (00 1E 63 0C) que son 1.991.436
00 -> Número de unidad
00 -> Banderas
29 -> Firma
2F EF 60 D4 -> Número de serie
4E 4F 20 4E 41 4D 45 20 20 20 20 -> Etiqueta de volumen, en el ejemplo es NO NAME
46 41 54 31 36 20 20 20 -> Identificador de Formato, en el ejemplo es: FAT16
...
55 AA -> Firma de la unidad y fin de sector
UN ANÁLISIS DE LA FAT Boot Record MAS A FONDO
Aunque FAT12 y FAT32 son diferentes de FAT16 muchos de estos valores y significados se pueden aplicar a ellos igualmente (recuerda que de FAT12 no voy a hablar nada) Aún así, algunos de estos campos pueden crear confusión.
No todos los sistemas operativos y/o dispositivos que manejan el sistema de archivos FAT atienden “literalmente” a estos valores, muchos de ellos los tratan sencillamente como comentarios o los ignoran directamente,
EB 3C 90 -> Código de Arranque
Poco mas que hablar.
4D 53 44 4F 53 35 2E 30 -> etiqueta en el ejemplo es: MSWIN5.0
Ciertamente es un comentario, daría igual lo que tengan estos 8 bytes, de hecho el pendrive de origen (sin formatear por Windows) tendría otros valores. En el análisis forense esto nos indicaría que ha sido formateado con un sistema Windows, nada mas. En un caso extremo, supongamos una sala en la que sólo hay dos equipos Windows, un Mac y varios Linux, al menos ya sabemos (o podemos intuir) que esa memoria usb se formateo en alguno de esos dos equipos, pero nada mas relevante.
00 02 - > Bytes por sector en little endian 512bytes
Los valores admitidos para todos los formatos y sistemas operativos son: 512 – 1024 – 2048 –4096
La compatibilidad máxima se obtiene con el valor 512, otros valores pueden no ser bien interpretados y la unidad no reconocerse o no poder usarla.
Recuerda también las diferencias entre lo que son las estructuras físicas y las estructuras lógicas, no por tener un tamaño de sector mas grande mejoraremos el rendimiento, igual es peor o desperdiciamos espacio.
20 -> Numero de sectores por cluster -> 32
Loas valores admitidos son 1 – 2 –4 –8 – 16 - 32 –64 y128
Como antes disponer de muchos sectores por cluster puede reducir el rendimiento y/o la capacidad, también agrupar muchos sectores en un cluster puede dar lugar a un fenómeno que no hemos hablado, la fragmentación interna.
Todos sabemos mas o menos que es la fragmentación, en condiciones óptimas un archivo grande se extiende por varios cluster contiguos, pero no siempre es así, cuando borramos información, volvemos a escribir, etc.. es probable que nuevos archivos ocupen espacios de aquellos que fueron borrados y estén “dispersos” en trocitos (fragmentos) por el disco, el sistema operativo “recompone” esos fragmentos “los sigue” y si está muy fragmentado todo es mas lento porque tiene que ir a buscar esso trozos por muchos sitios distantes. Esto es lo que conocemos como fragmentación, realmente esto es fragmentación externa.
Las utilidades del tipo OoDefrag o el mismo desfragmentador de Windows vuelven a colocar esos fragmentos en posiciones contiguas (siempre que sea posible) y ciertamente mejora el rendimiento del disco.
La fragmentación interna es algo parecido, solo que estas herramientas no la pueden solucionar, los archivos ocupan uno o más clusteres, pero como estos son muy grandes o mas grandes que la propia información del archivo, existe un sobrante (un Slack) muy grande, comprendido no?
Ya veremos cuando toque NTFS que existen otros problemas del tipo fragmentación como los Parse File, en fin.. esto es un mundo...
08 00 -> Regiones Reservadas en little endian (08 )
En FAT16 y FAT12 suele ser cero (observa que en el ejemplo tampoco lo es) rn FAT32 es precisamente 32, lo que nunca debe ser es CERO!!!
02 -> Número de Fat’s (2) que son FAT1 Y FAT2
Aquí no hay mucho mas que comentar, son 2 FAT la Primary FAT y la Secundary FAT. Si bien, valores mas grandes pueden ser perfectamente válidos incluso algunas memorias usb pueden venir marcadas con un 1, pero ni es recomendable ni es lo habitual. El estándar es 2.
00 02 -> Entradas máximas en el directorio raiz (512 en little endian)
Como dice el título del campo son el máximo número de entradas (archivos o carpetas) en el área de Root Directory. Esto solo tiene sentido en FAT12 y FAT16 puesto que Root Directory no existe en FAT32, en FAT32 este campo tiene un valor de 00 00
00 00 -> Sectores Totales
Este campo puede ser cero (como en el ejemplo) y si lo es, el campo Longitud total de sectores que veremos mas abajo, no debe ser cero.
En FAT32 este campo siempre será cero.
F8 -> Descriptor del medio usualmente F0 para disquetes F8 para Discos Duros
El valor F8 es el estándar para discos fijos y el valor F0 para discos removibles como disquetes, los valores admitidos son: F0, F8, F9, FA, FB, FC, FD, FE, y FF.
Lo verdaderamente importante es que lo que ponga en este byte también ha de ser el valor del primer el primer byte en la entrada de FAT1 y FAT2, vamos que en nuestro caso FAT1 y/o FAT2 deben comenzar por F8, veámoslo con EnCase:
Observa los recuadros en rojo que puse para resaltar lo que se ha comentado, el primer byte de FAT1 es F8.
F4 00 -> Sectores por Fat en little endian (00 F4) que son 244 sectores
Pues eso mismo, 244 sectores son los que ocuparán FAT1 (primaria) y FAT2 (secundaria), en FAT32 este campo tendrá el valor de cero (00 00)
Vamos a contarlos con EnCase:
En rojo tienes dos recuadros que marcan el primer sector de FAT1 y a su derecha en otro recuadro rojo se enmarca una “cosa” que dice LS8 (esto es Logical Sector

Ahora vamos a pinchar en el último sector de la FAT1 (ojo no te equivoques y pinches en el último sector de FAT2) y observemos lo que dice el LS
Como ves, ahora el desplazamiento indica LS251, o sea, los 244 sectores que hablábamos... A ver si alguno se confunde... 251 – 8 = 243 y no 244, pero ya sabes: El 8 es el primero, el 9 el segundo.... el 243 es el 250 y el 244 el 251) vamos que le sumes uno a la resta y ya está, es como contar del cero al nueve, si restamos: 9 – 0 = 9 pero son DIEZ elementos no nueve, jejeje... si es que hay que explicarlo todo.
3F 00 -> Sectores por Pista en little endian (00 3F) que son 63
Son los sectores por pista que cargará el gestor de arranque (interrupción 0x13 de la BIOS que es quien se encarga de ello) y sólo tiene significado para unidades divididas en pistas-cabezas-cilindros, vamos habitualmente los disquetes y los discos fijos.
FF 00 -> Número de caras en little endian (00 FF) que son 256
Como antes, este valor es usado por la interrupción ox13 de la BIOS para determinar el número de caras (cabezas) del dispositivo, usado para disquetes y discos duros.
F4 00 00 00 -> Sectores ocultos en little endian (00 00 00 F4) 244 sectores
Es el número de sectores ocultos (sectores no accesibles para datos) que preceden a la estructura FAT (Root Directory para FAT12 y FAT 16) y el propio área de datos para FAT32.
Cuando este campo tiene como valor 00 00 00 00 significa que el volumen no ha sido formateado.
0C 63 1E 00 -> Longitud total de sectores en little endian (00 1E 63 0C) que son 1.991.436
Cuando hablamos del campo Sectores Totales anteriormente ya lo citamos, si Sectores Totales es cero, este campo no debe ser cero y para FAT32 nunca lo será. Y cuenta lo que dice su descripción, la longitud total de sectores de la unidad.
00 -> Número de unidad
También es usado por la interrupción 0x13 de la BIOS y le indica si se trata de un disco fijo o de un disquete. 00 para disquetes y 80 para discos duros (fijos) En este caso el pen-drive lo interpreta como un disquete, también hay que advertir que este campo es específico del Sistema Operativo, Windows lo trata como 00, otros Sistemas pueden no entregar ese valor al formatear la unidad.
00 -> Banderas
Es un campo reservado y sólo lo usa Windows NT, vamos que normalmente es 00
29 -> Firma
Es una firma “extendida” que indica que los siguientes tres campos del sector boot están presentes, estos campos son el número de serie, la etiqueta de volumen y el identificador de formato, sin no están presentes este valor puede ser cero.
2F EF 60 D4 -> Número de serie
Este campo junto con el siguiente (Etiqueta de Volumen) se utiliza para detectar si se ha introducido un disco erróneo.
Este número de serie se genera mediante una combinación de la fecha y hora. En el análisis Forense puede servir para identificar un dispositivo, pero ello no significa que sea único para el mismo, simplemente puede ser una evidencia mas.
4E 4F 20 4E 41 4D 45 20 20 20 20 -> Etiqueta de volumen, en el ejemplo es NO NAME
Lo que dice... la etiqueta de volumen si la tiene (hasta 11 caracteres), y también se escribe en el área de Root Directory para sistemas de archivos FAT12 y FAT16.
46 41 54 31 36 20 20 20 -> Identificador de Formato, en el ejemplo es: FAT16
Es habitual encontrar las cadenas “FAT12 “, “FAT16 “ o “FAT32 “ Mucha gente piensa que estas cadenas son identificadores del sistema de archivos usado, no es cierto.
Sólo tiene un valor testimonial o mera información, no significa que realmente sea el sistema de archivos con el que se ha formateado la unidad, Microsoft no usa estos valores para averiguar si se trata de un sistema FATxx .
55 AA -> Firma de la unidad y fin de sector
Ufff!!!! Y eso que dicen que el sistema de archivos FAT era sencillito... ya veremos que NTFS simplifica bastante el reconocimiento y sistema de archivos, pero en fin... así es la vida, nadie dijo que sería fácil.
Podemos desprender alguna información útil de este ejemplo:
- Según el tercer campo (bytes 11 y 12) EL número de Bytes por sector es de 512
Según el cuarto campo (byte 13) El Numero de sectores por cluster es 32
Por tanto, un archivo cuyo contenido sea nada mas que 59 bytes realmente ocupará en disco: 512 bytes x 32 sectores = 16384 bytes = 16KB
La unidad “parece” haber sido formateada con un sistema Windows tal y como indica el segundo campo del boot record (bytes 3 al 10): 4D 53 44 4F 53 35 2E 30 -> MSWIN5.0
Además el campo Número de unidad tiene un valor 00 que es el que acostumbra Windows
- Según el campo sexto, el número de FAT’s es 02 (primaria y secundaria) este campo debería ser cero si se tratase de un sistema de archivos FAT32
Según el campo séptimo, el número de entradas máximas a Root Directory es 512, si fuese FAT32 este campo debería ser 00 00
El Campo Sectores por Fat tiene un valor de 244 sectores, si fuese un sistema de archivos FAT32 este campo tendrá el valor de cero (00 00)
Además, y aunque esta información puede variar y depende del Sistema Operativo usado para dar formato a la unidad, el campo Identificador de Formato tiene el valor: 46 41 54 31 36 20 20 20 que es:
- 46 --------- F
41---------- A
54 --------- T
31 --------- 1
36 --------- 6