Tienda Wifi

Tienda Wifi
CiudadWireless es la tienda Wifi recomendada por elhacker.NET

Entradas Mensuales

Síguenos en:

Canal Oficial Telegram de elhacker.NET Grupo Facebook elhacker.NET Twitter elhacker.NET Canal Youtube elhacker.NET Comunidad Steam: Grupo elhacker.NET Mastodon

Entradas populares

PostHeaderIcon File Carving


A menudo nos encontramos con noticias sobre fugas de información en empresas tanto de carácter público como privado, la pérdida de un USB, un disco duro "viejo" tirado en la basura como si se tratase de un cleanex, documentos con datos que no se ven pero que están ahí... la mayoría de las veces la información se encuentra a simple vista en los dispositivos, pero que sucede si dicha información ha sido borrada, o mejor aun, el dispositivo ha sido formateado?.
Incluso después del borrado/formateo/reparticionado podemos tener acceso a esta información, existen varias técnicas, tanto hardware como software, pero hoy nos vamos a centrar en una de ellas: File Carving

El File Carving es el proceso de extracción de una serie de datos que se encuentran dentro de otro conjunto mayor de datos. Las técnicas de Data Carving son usadas frecuentemente en Análisis Forense cuando nos encontramos con porciones de datos pertenecientes al Sistema de Archivos que a primera vista no están usados pero que pueden tener sorpresas.


  • Recuperado de datos tradicional:

Existen varias técnicas dentro del File Carving, pero lo que debe de quedar claro es que NO se usan las estructuras/metadatos del Sistema de Archivos para recuperar datos. Esto es fundamental, ya que las técnicas "clásicas" de recuperación de ficheros usaban precisamente estos mecanismos que proveen los Sistemas de Archivos, por ejemplo las tablas de ficheros. Esto es así porque la mayoría de los Sistemas de Ficheros no tocan la localización física de los ficheros durante el borrado, sino que se limitan a marcarla como vacía para que se pueda grabar en esa posición. Después del borrado, la entrada en la tabla seguirá estando presente y seguramente el puntero a la dirección de memoria donde se encuentra también, de forma que el fichero podrá ser recuperado.

Otra ventaja del uso de estas estructuras es que se puede mapear rápidamente los archivos existentes que no han sido borrados, por lo que sólo será necesario buscar en las zonas de disco que se consideren vacías.
La pega de todo esto es que cuando dichas estructuras no existen, están corruptas, o han sido manipuladas/borradas a posta, no podremos acceder a los datos aunque sepamos que están ahí, por lo que necesitamos nuevos mecanismos que solucionen esto.

  • File Carving:

Una vez que ha quedado claro que el método tradicional de recuperación de datos tiene sus limitaciones, es necesario introducir nuevas técnicas para el recuperado de ficheros importantes, tanto desde el punto de vista del usuario final como del análisis forense. Ejemplos de estos archivos pueden ser documentos privados de clientes, datos personales, o logs del Sistema Operativo. En la mayoría de los casos los archivos que tienen importancia desde el punto de vista del recuperado son los que son creados/manipulados por el usuario o servicios del Sistema, NO los propios ficheros del Sistema, ya que estos los podemos recuperar de diversas formas, no así los citados anteriormente.

El File Carving es una técnica para recuperar archivos basándose "simplemente" en la estructura de los archivos y en el contenido, sin el uso de estructuras del Sistema de Ficheros. Esta técnica es usada comunmente para recuperar ficheros en la zona no reservada del disco, con zona no reservada nos referimos al área de disco donde no hay nada almacenado desde el punto de vista de las estructuras del Sistema de Archivos. En el caso de dispositivos dañados esto será todo el espacio.

Dado un dispositivo de almacenamiento, un File Carver podrá o no reconocer el Sistema de Archivos usado, por lo que es tarea de este determinar que espacio está sin reservar. Esto en algunos casos significa que se trabajará sobre TODO el disco, lo que no es óptimo, por lo que para reducir esta cantidad de trabajo, las aplicaciones más avanzadas son capaces de identificar ficheros del sistema y ficheros pertenecientes a aplicaciones, todo esto basándose en Hashes MD5 y en palabras clave. Encase y Forensik Toolkit poseen esta funcionalidad que ahorrará mucho trabajo.

La primera generación de File Carvers usaban los "magic numbers", o lo que es lo mismo, secuencias de bytes situados en los archivos en un offset concreto, que permiten identificar el tipo de archivo con el que se está trabajando. Las técnicas de File Carving se usaron en un principio para recuperar archivos que contuviesen una cabecera y un fin de archivo. La cabecera identifica el inicio del archivo, y el final los últimos bytes de este. Estas cabeceras son usados por los OS's para saber con que aplicación abrir un archivo concreto, por ejemplo, los archivos jpge's empiezan con la secuencia hexadecimal FFD8 y finalizan con la secuencia hexadecimal FFD9. Un File Carver de este tipo intentará coger todo el contenido que haya entre la cabecera y el fin del archivo y unirlo para obtener el archivo original.

Hay otros tipos de archivos que no contienen secuencias de fin de archivo características, sin embargo si que tienen información sobre el tamaño del archivo, un ejemplo de esto son los archivos BMP, que contienen la longitud del archivo en Bytes. El modo de actuar es similar al caso anterior.

A parte de estos 2 métodos, hay unos cuantos más, que podríamos agrupar de la siguiente manera:

    - Block Based Carving: Método que analiza la entrada bloque por bloque para determinar si dicho bloque es parte de un posible archivo salida. Este método asume que cada bloque SÓLO puede pertenecer a un único archivo.

    - Characteristic Based Carving: Método que analiza la entrada basándose en ciertas características (por ejemplo la entropía) para determinar si es parte de un posible archivo salida.

    - Header/Footer Carving: Método para rescatar archivos dentro de datos en "crudo" basándose en las cabeceras y fines de archivo características

    - Header/Maximum size Carving: Método que se basa en buscar cabeceras características y a partir de ahí recuperar X bloques. Esto funciona porque muchos formatos de ficheros (por ejemplo JPEG o MP3) no se corrompen si se añaden datos al final de un fichero válido.

    - Header/Embedded Length Carving: Método parecido al anterior, pero que se sirve de los metadatos del propio archivo para saber la longitud de este.

    - File structure based Carving: Método para recuperar archivos en el que se usa un cierto grado de conocimiento sobre la estructura interna de los tipos de archivos.

    - Semantic Carving: Método basado en el análisis lingüístico del contenido de los archivos. Por ejemplo, un carver semántico podría llegar a la conclusión que X bloques en lengua Francesa que se encuentren en medio de un HTML en Inglés, significa que es un fragmento de un archivo previo y no pertenece a dicho HTML.

    - Carving with Validation: Método en el que los ficheros rescatados se validan usando un validador específico para cada tipo de archivo.

    - Fragment Recovery Carving: Método en el que se reensamblan bloques fragmentados de un mismo fichero.

  • Fragmentación y Smart Carving
El problema con la primera generación de File Carvers es que se asumía (sin motivo alguno) que NO había fragmentación en los ficheros, como resultado se obtenían muchos ficheros incompletos o que contenían "basura" (perteneciente a otros ficheros) en medio de los archivos. Podemos ver un ejemplo de esto en la siguiente figura, donde se ve un jpeg que fue recuperado basándose únicamente en la técnica header-footer, en ella se observa como hay una gran cantidad de bloques que han sido encapsulados dentro de este archivo pero que en realidad no pertenecen a él.





Obviamente SI que hay fragmentación (imagen 2), pero, como afecta esto al Análisis Forense y en concreto a las técnicas de File Carving?
Si nos basamos en un estudio que hizo Simson Garfinkel, tenemos que apenas un 6% de los archivos sufren fragmentación, lo que podríamos pensar que es un nivel bajo, de hecho lo es... PERO, si nos centramos en los archivos importantes desde el punto de vista forense, nos topamos con el siguiente porcentaje de fragmentación:

- Jpeg's: 16%
- DOC: 17%
- PST: 58%
- ...

Esto ya SI que es un nivel alto, por lo que ha habido que desarrollar nuevas técnicas que permitan solucionar este problema.
Uno de los primeros en intentar avanzar en este campo fue Shanmugasundaram (se quedaron a gusto al ponerle el nombrecito ¬¬), quién formuló el problema como un camino Hamiltoniano (teoría de grafos) y propuso una heurística Alpha-Beta (teoría de juegos) para solucionar el problema.
Después de él han seguido numerosos estudios para mejorar el asunto (Garfinkel, Pal, etc.), hasta a llegar a crearse una nueva rama de file carvers, conocidos como Smart Carvers.
Estas técnicas son bastante complejas y se basan en temás matemáticos que se salen del cometido de este artículo, pero para hacernos una idea vamos a ver un par de imágenes que servirán para hacernos una ligera idea de como trabajan unos y otros:





En la primera imagen observamos como trabajan los Carvers más rudimentarios basados en Header-Footer.
Vemos que se limitan a recuperar los archivos que no sufren fragmentación, y observamos 3 ejemplos en los que se han colado y/o faltan bytes del archivo, con el efecto que esto produce.

En la segunda imagen vemos como trabajan los Smart Carvers.
El algoritmo de Smart Carving tiene 3 fases principales: preprocesado, cotejado y reensamblado. En la fase de preprocesado los bloques son descomprimidos y/o desencriptados si fuera necesario. En la fase de cotejado los bloques son ordenados de acuerdo al tipo de archivo al que pertenecen. Finalmente en la fase de reensamblado, los bloques son ordenados en la secuencia correcta para reproducir los archivos borrados. Aunque esto se ve muy bonito y fácil en la imagen, hay MUCHO trabajo para llegar a conseguir esto!
Este algoritmo es la base para algunas herramientas como Adroit Photo Forensics y Adroit Photo Recovery.

  • Header/Footer Carving con JPEG's
Para finalizar esta entrada, vamos a ver un ejemplo práctico de como trabajaría un File Carver basado en Header-Footer.
En un archivo jpeg hay ciertas estructuras que nos pueden ayudar en el proceso de Carving a la hora de distinguir este tipo de ficheros de otros.
En primer lugar tenemos la cabecera, que coincide con el patrón hexadecimal 0xFFD8, al igual que tenemos esta cabecera, tenemos un patrón que indica el final de fichero, que es 0xFFD9. Hay bastantes más patrones característicos en los ficheros jpges, los cuales pueden ser vistos en la imagen 5.



Para corroborar esto vamos a examinar con un editor hexadecimal un archivo jpeg, obteniendo los siguientes resultados:




Como vemos, se siguen los patrones que dijimos, lo que permitirá recuperar el archivo original (en caso de que no haya fragmentación como ya dijimos) sin problemas de entre todo un conjunto de datos.

  • Conclusión

Como hemos visto a lo largo de este artículo, el File Carving ofrece métodos avanzados para la recuperación de ficheros, sobre todo las últimas tendencias (Smart Carving), aunque esto implica un alto grado de complejidad para conseguir salvar diversos obstáculos como por ejemplo el problema de la fragmentación. Sin duda una técnica muy interesante y muy útil, sobre todo en el ámbito del Análisis Forense, aunque cada vez tiene más auge debido a que todo el mundo usa dispositivos que permiten grabar información, lo que conlleva a que guardemos datos importantes para nosotros y que si por algún motivo se nos dañan sea crucial el poder recuperarlos.

6 comentarios :

Anónimo dijo...

Increíble.

Antonio Sánchez dijo...

buena descripción si señor! :p

thanks

Anónimo dijo...

Interezante... ya probe borrando y poniendo nuevamente los HEXADECIMALES FFD8 y FFD9... pero si yo saco esos HEXA y lo dejo por largo tiempo asi a la imagen, No hay manera de que se estropeen y no se puedan volver a ver, verdad?...

Por ejemplo borro FFD8 y 9 y los dejo por un año asi (la imagen la tengo un pendrive) y a fin de año abro esas imagenes con un editor exadecimal y vuelvo a colocarlos, funcionarian nuevamente, no?

quiero preguntarlo y no probarlo porque tengo imagenes valiosas para mi y si las pierdo probandolo me muero.

Espero la respuesta de alguien porfavor. Muchas Gracias

Att:The_Unforgiven

Antonio Sánchez dijo...

Mientras que en esa imagen no toques nada, es decir, no crees nuevos ficheros (obviamente si es una imagen, antes tendrás que montarla) no pasará nada, son 1's y 0's que están ahí y no se modifican si no los tocas.

Anónimo dijo...

Ok, Muchas Gracias.

Att:The_Unforgiven

Anónimo dijo...

Muy bueno nunca me habia interesado esto (porque no lo conocia) pero este texto me esta haciendo sentir curiosidad. Gracias por despertar mi curiosidad.


Saludos Søra

Publicar un comentario

Los comentarios pueden ser revisados en cualquier momento por los moderadores.

Serán publicados aquellos que cumplan las siguientes condiciones:
- Comentario acorde al contenido del post.
- Prohibido mensajes de tipo SPAM.
- Evite incluir links innecesarios en su comentario.
- Contenidos ofensivos, amenazas e insultos no serán permitidos.

Debe saber que los comentarios de los lectores no reflejan necesariamente la opinión del STAFF.