Técnicas de extracción de metadatos en imágenes fotográficas para análisis forense

Hola,

El análisis forense de imágenes fotográficas es una disciplina que se suele emplear frecuentemente en procesos judiciales. En determinados eventos criminales, una cámara fotográfica y sus fotografías pueden ser evidencias que incriminen o eximan a un acusado en la comisión de un delito, y por tanto, es importante analizar las imágenes que contenga el dispositivo para poder obtener de ellas evidencias suficientes que sustenten una acusación o una defensa ante un juez.

La información básica de imagen suele ser la fecha de toma de la imagen, el fabricante de la cámara y el modelo de cámara utilizado. Esta información se puede deducir mediante la invocación de las propiedades de una imagen. Cualquier sistema operativo lo permite (en Windows, por ejemplo, haciendo botón derecho –> propiedades sobre una imagen). Nosotros vamos a ver dos procesos automatizables para evitar tener que extraer los datos imagen a imagen, y que además, permiten extraer mucha más información.

También veremos como cuando se toma una fotografía, existen muchos más datos que se graban en ella, y que pueden resolver el grado de culpabilidad de un acusado. A veces, la fecha, el fabricante y el modelo no bastan, y quizás sea necesario deducir, por ejemplo, si dos imágenes han sido tomadas con la misma cámara o no. Un análisis de metadatos puede proporcionarnos esta información.

Para la extracción de metadatos de fotografías existen numerosos métodos. Unos son más sencillos de interpretar y otros producen resultados más complejos. Veremos un par de ejemplos prácticos. Para ello utilizaremos una imagen disponible para todos, por ejemplo, esta imagen de Flickr que podéis descargar aquí.

Extracción básica de metadatos mediante hachoir-metadata

Para instalar hachoir-metadata tenemos diversas opciones, según el sistema que estemos empleando. Yo utilizo FreeBSD, y por tanto, para instalar desde ports basta con ejecutar en línea de comandos:

cd /usr/ports/sysutils/hachoir-metadata/ && make install clean

Ejecutamos hachoir sobre nuestra imagen

nas# hachoir-metadata 95283121_f300f7d188_o.jpg

Obteníendose los siguientes resultados:

Metadata:
– Image width: 800
– Image height: 533
– Image orientation: Horizontal (normal)
– Bits/pixel: 24
– Pixel format: YCbCr
– Compression rate: 21.4x
– Creation date: 2006-01-06 05:33:47
– Camera focal: 5.6
– Camera exposure: 1/125
– Camera model: Canon EOS 20D
– Camera manufacturer: Canon
– Compression: JPEG (Baseline)
– Comment: JPEG quality: 80%
– Format version: JFIF 1.01
– MIME type: image/jpeg
– Endian: Big endian

Como véis, nada fuera de lo normal. Es la información que cualquier gestor de ventanas puede sacar de una imagen mediante un «botón derecho–> propiedades» o similar. Vamos a complicar un poco más las cosas.

Exif, Segmentos JPEG y extracción mediante Perl

Este método requiere que instalemos el módulo Image::MetaData::JPEG. La extracción la realizaremos con un sencillo script

use Image::MetaData::JPEG;

my $image = new Image::MetaData::JPEG('95283121_f300f7d188_o.jpg');
die 'Error: ' . Image::MetaData::JPEG::Error() unless $image;

my @segments = $image->get_segments('COM', 'INDEXES');

	print $image->get_description();

die "Ejecucion finalizada\n";

Este script imprime en pantalla la totalidad de lo que se llaman segmentos JPEG. La salida del script es algo larga, y la tenéis disponible aquí para que la consultéis.

Sobre los segmentos no corresponde aquí ahora documentar qué es cada cosa, pero para que os hagáis una idea, casi todas las cámaras digitales emplean Exif (Exchangeable image file format) a la hora de almacenar imágenes. Exif es un invento de JEIDA (Japan Electronic Industry Development Association) en un intento de normalizar el empleo de etiquetas a la hora de intercambiar ficheros de imágenes, y con el paso de los años se ha convertido prácticamente en un estándar de facto. Esta especificación es algo compleja y tediosa, con lo que no vamos a entrar en todos sus detalles. Tan sólo basta con saber que Exif permite emplear etiquetas (marcadores) para almacenar datos críticos de una imagen, y que en virtud a Exif, una imagen digital comprimida se puede representar siempre acorde a una estructura de segmentos parecida a la siguiente:

exif

Estos segmentos básicos contienen la información mínima presente en un fichero comprimido de imagen JPEG, y es frecuente llamarlos marcadores.

Así, el segmento 0xd8 SOI define el comienzo de la imagen (SOI, Start of Image), y como podéis comprobar, es el primero en el dump de segmentos que hemos extraído. Por la misma lógica, debe existir un segmento que indique el final de la imagen, y estará al final del volcado. Ese segmento es 0xd9 EOI (EOI, End of Image)

En nuestro ejemplo, podemos comprobar que tras la definición de inicio (SOI) aparece inmediatamente el segmento de aplicación APP1 (0xe1). Dentro de APP1 encontramos subsegmentos relacionados con información técnica de la imagen, y habilita al fabricante para introducir sus propios marcadores. Así, APP1 –> IFD0 contiene datos básicos para identificar la imagen, como fabricante, modelo o fecha de toma de la imagen:

********** APP1 –> IFD0 ********** ( 9 records)
[ Make]<0x010f> = [ ASCII] «Canon».
[ Model]<0x0110> = [ ASCII] «Canon EOS 20D».
[ Orientation]<0x0112> = [ SHORT] 1
[ XResolution]<0x011a> = [ RATIONAL] 72/1
[ YResolution]<0x011b> = [ RATIONAL] 72/1
[ ResolutionUnit]<0x0128> = [ SHORT] 2
[ DateTime]<0x0132> = [ ASCII] «2006:01:06 05:33:47».
[ YCbCrPositioning]<0x0213> = [ SHORT] 2
[ SubIFD]< ......> = [REFERENCE] –> 0x822bda4

Otros subsegmentos APP derivados del anterior son APP1 –> IFD0 –> SubIFD, APP1 –> IFD0 –> SubIFD –> MakerNoteData_Canon y APP1 –> IFD0 –> SubIFD –> MakerNoteData_Canon –> special. Cada uno de ellos contiene información de diversa índole, pero que permite identificar unívocamente a una imagen tomada en un instante de tiempo determinado por un modelo de cámara determinado.

Justo después del marcador de aplicación, y siguiendo el esquema Exif, debería aparecer el marcador DQT (Define Quantization Table), que define la tabla de cuantización. En nuestro ejemplo aparece como 0xdb DQT. Así sucesivamente. El resto de marcadores aparecidos en nuestra imagen son DHT (Define Huffman Table), que aparece como 0xc4 DHT y SOS (Start of Scan), que aparece como 0xda SOS.

Otros marcadores hacen referencia a puntos específicos de Exif, como por ejemplo, la interoperabilidad. En nuestro ejemplo, recurriríamos al marcador APP1 –> IFD0 –> SubIFD –> Interop, de donde obtenemos la información:

InteroperabilityIndex <0x0001> = [ ASCII] «R98».
InteroperabilityVersion <0x0002> = [ UNDEF] ‘0100’

Este índice de interoperabilidad suele estar a «R98» (nuestro ejemplo), indicando que la fotografía es conforme a la especificación R98 de las recomendaciones de interoperabilidad Exif. Otras veces, estará en «THM», lo que indica que el fichero es conforme a las reglas DCF para «thumbnails» de previsualización.

Resumiendo

Como podéis ver, la imagen responde a un estándar, y ese estándar permite conocer información relevante de todas las condiciones en las que se tomó una fotografía determinada. El análisis de esta información puede ser determinante a la hora de proporcionar evidencias digitales en la comisión de un delito, no sólo por la cantidad de información de la que disponemos, sino porque mediante estas técnicas podemos procesar cantidades elevadas de fotografías en poco tiempo al ser fácilmente automatizables.

Imaginaos (y perdonad por lo crudo del ejemplo) que un sujeto A es detenido en una investigación de pedofilia. A este sujeto se le intervienen 10 fotografías de la víctima B, susceptibles de constituír un delito. Al sujeto A también se le interviene una cámara digital, con la que se han tomado las fotos de la víctima A. En paralelo, se detiene al sujeto C, al que se le intervienen otras 10 fotografías de otra víctima, a la que llamaremos D.

Si mediante un análisis forense de las imágenes, y en virtud a los metadatos unívocos, determinamos que las fotografías de la víctima B han sido tomadas con la misma cámara que las fotografías de la víctima D, podríamos relacionar a los sujetos A y C en la comisión del delito, ya que parecería lógico sospechar que el sujeto A ha realizado las fotos de las víctimas B y D, y el sujeto C ha obtenido de algún modo las imágenes del sujeto A.

Este tipo de relaciones, cuando se fundamentan en derecho, son las que sustentan las investigaciones criminales y permiten poner tras los barrotes a la gente que ha cometido delitos. El ejemplo que hemos puesto es sólo un ejemplo ilustrativo de las muchas posibilidades de las que afortunadamente gozan las Fuerzas y Cuerpos de Seguridad del Estado para luchar no sólo contra la pedofilia, sino contra muchos más delitos en los que medie un elemento digital, en este caso, una cámara de fotos. Como podéis imaginar, otra vez mediará un lápiz USB, un DVD, un CD o un disco duro. Cada medio ofrece un tipo de información, y la misión principal del investigador forense es extraer la información adecuada y pertinente para poder posteriormente relacionar a individuos con actividades delictivas.

Una tarea algo dura y complicada, pero reconfortante :)

16 comentarios sobre “Técnicas de extracción de metadatos en imágenes fotográficas para análisis forense

  1. Sergio,

    ¿Hasta qué punto sería posible extraer los meta-data de un documento redactado y publicado con Google Docs o redactado en Word y publicado en Google Docs?

    Gracias

  2. He probado programas que permiten cambiar información EXIF de las fotos, en concreo los usé para cambiarle la fecha a varias fotos. ¿Hay alguna manera de detectar si el EXIF ha sido modificado? Porque sino, supongo que no tendrá demasiado valor en los procesos judiciales, ya que si se puede cambiar la fecha supongo que con los conocimientos suficientes se pueda cambiar cualquier cosa.

    Salu2

  3. Esto debe ser toda una ciencia / especialidad.

    Sergio:

    Dado que hablamos de fotografías digitales, procesos judiciales, … ¿qué pasa con las modificaciones [Photoshop y similares] que se hacen a los archivos JPG?

    Es decir, en la práctica ¿cómo alteran estos programas a los metadata? Y lo que es más importante aún…

    ¿qué hacen los investigadores con este tipo de cosas?

    Por ejemplo [lo digo de forma chapuza, para que me digáis abiertamente: es incorrecto :-) ]

    – «En términos prácticos, sólo hacen uso, para procesos judiciales, las imágenes encontradas en el módulo de memoria la cámara»

    – «Salvo excepción, estas técnicas de metadata sólo se usan para determinar con qué cámara se hicieron, establecer relaciones, etc – pero no para determinar la VERACIDAD de la fotografía [montajes]»

    ¿Se entienden mis dudas iniciales? :-)

    Como siempre Sergio: muchas gracias por tu mini-enciclopedia interactiva :-))

  4. Pingback: meneame.net
  5. deincognito,

    Si me dejas un pequeño margen de maniobra, hacemos el experimento y lo vemos. Dame unos cuantos días ;)

    Luis,

    El escenario que planteas es plausible. Es posible inyectar marcadores Exif y adulterar. En este tipo de situaciones, siempre y cuando la inyección se haga con conocimiento, y como es lógico, muchas pruebas pueden dejar de tener utilidad incriminatoria, y hay que recurrir a otras vías de investigación. Afortunadamente, no todos los criminales conocen estas técnicas :)

    jcbarreto,

    Respóndete tú mismo ;)

    1. Fotografía original a la que se le ha aplicado un blurring lineal y una compresión JPEG del 95%

    2. Dump de la foto original

    3. Dump de la foto sometida a filtro

    4. Diff entre original-modificada

    Saludos,

  6. Otra herramienta muy útil para trabajar con datos EXIF e IPTC (entre otros) es ExifTool de Phil Harvey (http://www.sno.phy.queensu.ca/~phil/exiftool/).

    Además de poder realizar un dump de todos los metadatos de una imagen también permite su escritura en no pocos formatos.

    Me parece una herramienta altamente recomendable, eso sí, es para la línea de comandos, y gracias a ello está disponible como ejecutable para Win y para Mac OSX además de Módulo de Perl.

  7. El tema da para largo y tampoco soy un experto en análisis forense pero la complicación de la evidencia digital a diferencia de la evidencia física es que no se garantiza la «inmutabilidad de la prueba» debido a la volatilidad de los datos y su fácil manipulación.

    Javier Pages elaboró un extenso post que paso a enlazarte sobre este tema, http://www.javierpages.com/inforenses/index.php/inforenses/2006/01/24/la_fotografia_digital_como_evidencia_dig en relación a la noticia que Hispasec publicó sobre el repudio de una foto digital utilizada en una multa de tráfico.
    La información obtenida en los metadatos es útil pero siempre que nos basemos en la premisa de poder haber demostrado la «no alteración» de la imagen. Por tanto, toda prueba basada en imagen digital primero debe pelear por demostrar su integridad. Algunos fabricantes de cámaras digitales de alta gama (CANON, EPSON, etc) desde hace ya varios años incorporan en sus modelos semi y profesionales de cámaras digitales un sistema de «firma electrónica» basado en algoritmos hash.

  8. Sergio,

    Mil gracias.

    Ya la tenía, pero sólo me vale para EXIF, y hay otros muchos posibles metadatos.

    http://www.sidar.org/ponencias/2004/egyrs/tallerws/all.htm

    Lo que quisiera, en especial, es una herramienta que me saque el geotagging que hace el iPhone de las fotos y vídeos. El iPhone no permite eliminar la adición de ese metadato, pero quiero comprobar si cierto sitio donde puedo subir fotos elimina este metadato o lo mantiene.

    Salu2

Comentarios cerrados.