Skip to content

Auditoría forense: file carving con foremost

Publicado por Sergio Hernando el 1 diciembre 2008

Hola,

Tiempo atrás hablamos sobre el file carving sobre FUSE. Por resumir un poco, y copiando lo que comentaba en el artículo que os enlazo, comentar que el file carving es un proceso cuya misión es recuperar ficheros en un escenario forense basando el análisis en contenidos y no en metadatos, con lo que este tipo de técnicas son especialmente útiles cuando se pretender recuperar estructuras corruptas. Los tipos usuales de carving son el basado en bloques, el de cabeceras y pies, el basado en características, los limitados en tamaño de fichero, el carving con validación, el carving semántico, el de recuperación de fragmentos y el basado en estructura de ficheros.

Hoy vamos a realizar una tarea de carving mucho más sencilla. De hecho, es la más simple que se me ocurre, y para ello vamos a necesitar un programa que si no aparece en todas las distribuciones forenses, aparece en la práctica mayoría: foremost

Foremost es un programa de consola que permite recuperar ficheros en función de cabeceras, pies y estructura interna de datos. Como gran ventaja, permite procesar directamente imágenes obtenidas mediante dd, directamente sobre la unidad a analizar, y admite otros formatos de imágenes forenses extendidos, como Encase Forensics o Safeback.

Obtención del fuente

Foremost se puede descargar en http://foremost.sourceforge.net. Si queréis usar wget, aquí os dejo un enlace directo

nas# wget http://ovh.dl.sourceforge.net/sourceforge/foremost/foremost-1.0.tar.gz

Compilación

Es muy sencilla. Nada problemática. Se queja de un par de warnings, pero ni caso.

make && make install

Ejecutando el carving

Para empezar, podemos bajarnos dos imágenes de ejemplo, creadas específicamente para poder lanzar herramientas contra ellas. Cualquiera de las dos vale.

http://dftt.sourceforge.net/test11/index.html
http://dftt.sourceforge.net/test12/index.html

Desempaquetamos la imagen, y lanzamos la aplicación. En este caso, le diremos a foremost que localice todos los tipos de fichero (-t all) que tiene internamente definidos sobre el fichero de imagen ejemplo que hemos descargado (11-carve-fat.dd)

nas# /usr/local/bin/foremost -t all -i 11-carve-fat.dd
Processing: 11-carve-fat.dd
|*|
nas#

De una manera automática, se generará un directorio que se llama output, dentro del cual hay un fichero llamado audit.txt que contiene los resultados:

Foremost version 1.0 by Jesse Kornblum, Kris Kendall, and Nick Mikus
Audit File

Foremost started at Sun Nov 30 22:31:59 2008
Invocation: /usr/local/bin/foremost -t all -i 11-carve-fat.dd
Output directory: /mnt/carving/output
Configuration file: /usr/local/etc/foremost.conf
------------------------------------------------------------------
File: 11-carve-fat.dd
Start: Sun Nov 30 22:31:59 2008
Length: Unknown

Num Name (bs=512) Size File Offset Comment

0: 19717.jpg 29 KB 10095104
1: 19777.jpg 433 KB 10125824
2: 20645.jpg 96 KB 10570240
3: 20841.gif 5 KB 10670592 (88 x 31)
4: 321.wmv 7 MB 164352
5: 21929.wmv 1012 KB 11227648
6: 20853.mov 537 KB 10676740
7: 16021.wav 311 KB 8202752
8: 281.doc 20 KB 143872
9: 16693.xls 24 KB 8546816
10: 23957.ppt 13 KB 12265984
11: 23981.zip 77 KB 12278272
12: 16741.pdf 1 MB 8571392 (PDF is Linearized)
13: 19477.pdf 119 KB 9972224
Finish: Sun Nov 30 22:32:02 2008

14 FILES EXTRACTED

jpg:= 3
gif:= 1
wmv:= 2
mov:= 1
rif:= 1
ole:= 3
zip:= 1
pdf:= 2
------------------------------------------------------------------

Foremost finished at Sun Nov 30 22:32:02 2008

Creación y análisis de una imagen real

A modo de ejemplo, vamos a crear una imagen de un dispositivo iPod. No es el dispositivo más indicado para una prueba, pero al ser de poco tamaño, generaremos una imagen de manera rápida. Una vez insertado en el puerto USB, debería aparecer en dmesg algo parecido a:

umass0: on uhub4
da0 at umass-sim0 bus 0 target 0 lun 0
da0:
Removable Direct Access SCSI-4 device
da0: 40.000MB/s transfers
da0: 495MB (1015040 512 byte sectors: 64H 32S/T 495C)

Generamos una imagen llamada dumpusb, que será volcada en la carpeta /mnt:

#nas dd if=/dev/da0 of=/mnt/dumpusb

Observamos el resultado del dump, ya que nos hará saber si es correcto o no. En este caso hay coincidencia entre registros de entrada y salida, y se nos informa de la tasa de extracción y consolidación de la imagen.

1015040+0 records in
1015040+0 records out
519700480 bytes transferred in 761.919000 secs (682094 bytes/sec)

Volvemos a lanzar foremost:

nas# /usr/local/bin/foremost -t all -i dumpusb

Con los siguientes (escasos) resultados:

Foremost version 1.0 by Jesse Kornblum, Kris Kendall, and Nick Mikus
Audit File

Foremost started at Mon Dec 1 00:09:26 2008
Invocation: /usr/local/bin/foremost -t all -i dumpusb
Output directory: /mnt/carving/output
Configuration file: /usr/local/etc/foremost.conf
------------------------------------------------------------------
File: dumpusb
Start: Mon Dec 1 00:09:26 2008
Length: Unknown

Num Name (bs=512) Size File Offset Comment

0: 681667.jpg 15 KB 349013804
Finish: Mon Dec 1 00:09:43 2008

1 FILES EXTRACTED

jpg:= 1
------------------------------------------------------------------

Foremost finished at Mon Dec 1 00:09:43 2008

foremost vs scalpel

En distribuciones forenses más actuales es frecuente encontrar una solución que se llama scalpel. Se trata de una reescritura completa de foremost, es software libre y puede ser empleado con (prácticamente) la misma finalidad.

Scalpel trabaja con un fichero, llamado scalpel.conf, donde se define el patrón de búsqueda de los tipos de fichero que queremos localizar, similar al que utliza foremost (foremost.conf)

Se puede descargar en http://www.digitalforensicssolutions.com/Scalpel/.

Un saludo,

Be Sociable, Share!

Categoría/s → Forensics

Escribir un comentario

Note: XHTML permitido. Tu email nunca será publicado.

Suscribirse a los comentarios via RSS