• Marcos Pablo Russo

Ghiro - Análisis masivo de imágenes

Es una herramienta muy potente que nos permite investigar muchos casos con contenido de imágenes digitales como evidencia.


Es complicado el análisis de muchas imágenes, dónde tenemos que los metadatos que contienen las imágenes, como fecha, geolocalización, cantidad de colores, modelo de cámara de fotos o celular, etc.


Mediante Ghiro tiene la capacidad de analizar gigas de imágenes, extraer, organizar la información y mostrarla en un informe con un formato agradable y sencillo de leer.


Todas las tareas están totalmente automatizadas, sólo tenemos que cargar las imágenes y dejar a la aplicación trabajar.


A partir de la versión 0.2 utiliza como base de datos MongoDB, esta herramienta se encuentra desarrollada en Python2.7.


No sólo los investigadores forenses pueden usarlo diariamente en su laboratorio de análisis, sino también puede ser utilizado en muchos escenarios. Algunos ejemplos de casos de uso son los siguientes:

  • Si necesitamos extraer como bbieníen dijimos los metadatos ocultos que contiene la imagen, de una manera totalmente automatizada.


  • Si necesitamos analizar un gran volumen de información.


  • Buscar metadatos en forma concreto.


  • Ver la geolocalización de muchas imágenes y verlas en un mapa.


  • O buscar en una lista de hashes de imágenes.


Principales Características


Entre las características mencionadas también tenemos las siguientes:

  • Extracción de metadatos: Los metadatos se dividen en varias categorías según el estándar. Los metadatos de la imagen se extraen y se clasifican. Por ejemplo: EXIF, IPTC, XMP.


  • Localización GPS: en los metadatos de cada imagen a veces hay una etiqueta geográfica, información GPS que proporciona la longitud y latitud de donde se tomó la foto. Se lee y la posición se muestra en un mapa.


  • Información MIME: El tipo de imagen MIME se detecta para conocer el tipo de imagen que se está tratando, de forma simple (ejemplo: image/jpeg) y extendida.


  • Análisis del nivel de error: el análisis del nivel de error (ELA) identifica las áreas dentro de una imagen que se encuentran en diferentes niveles de compresión. La imagen completa debe ser de aproximadamente del mismo nivel, si se detecta alguna diferencia, entonces es probable que haya realizado alguna modificación.


  • Extracción de miniaturas (thumbnails): Las miniaturas y sus datos relacionados se extraen de los metadatos de la imagen y se almacenan para su revisión.


  • Consistencia de las miniaturas: a veces, cuando una foto es editada, la imagen original se edita, pero la miniatura no. Ghiro detecta las diferencias entre las miniaturas y sus correspondientes imágenes.


  • Motor de firmas: Más de 120 firmas proporcionan evidencia sobre la mayoría de los datos críticos para resaltar los puntos focales y exposiciones comunes.


  • Coincidencia de hashes: supón que estás buscando una imagen y tienes sólo el hash. Puedes proporcionar una lista de hashes y se buscarán todas las imágenes en base a ese/esos hashes.


Instalación


Al visitar la url de Ghiro tenemos varios formatos para bajarlo, mediante el código fuente en formato .zip o .tgz o también mediante git, o mediante una máquina virtual que contiene la instalación del software y listo para usar tanto en VirtualBox como en VMWare.


En nuestro caso vamos bajar el archivo .ova, el cual es utilizado por VirtualBox.


Si no tenemos VirtualBox lo primero que hacemos es bajarlo para el Sistema Operativo que tenemos y también bajamos las VirtualBox Software Developer Kit (SDK).



Instalación en VirtualBox


Cuando bajamos el archivo, lo que hacemos es descomprimirlo mediante unzip, para que nos deje el archivo .ova para importarlo en VirtualBox.




Al descomprimirlo también veremos que tenemos un archivo llamado README.txt, donde en síntesis indica la siguiente información:

  • Username: ghiro


  • Password: ghiromanager

Dicho usuario y contraseña es la que vamos a utilizar para conectarnos desde nuestro navegador. Donde vamos a acceder desde http://IP en el puerto 80.


Arrancamos el software VirtualBox y vamos Archivo luego Importar servicio virtualizado.




Nos abre la siguiente pantalla, donde le indicamos la fuente que bajamos es decir el archivo .ova, y que lo tenemos en forma local el archivo.




Le damos Next y nos muestra la información detallada de la memoria asignada, donde se guarda la virtual, discos, placa de red, etc.



Le damos Importar y en unos minutos lo tendremos instalado.



Luego configuramos la red, en Configuración, Red y lo ponemos como Adaptador puente.



Listo ahora podemos arrancarlo, cuando lo hacemos observamos que nos indica la ip que obtuvo por medio de DHCP, el usuario y su password.



Problemas que tuve con respecto a la versión OVA, es que se rompe la base de datos mongodb.


Solución del probema

  • Crear un servidor mongodb y apuntarlo a la dirección IP de este.


  • Crear un container de mongodb.


Crear un container de mongdb


La manera más fácil si sabemos sobre docker es crear un container de mongodb. Para esto creamos un archivo llamado docker-compose.yaml

version: '3.1'

services:

   mongodb:
      image: mongo:3.2
      container_name: mongodb
      restart: always
      ports:
         - 27017:27017

Para construirlo hacemos lo siguiente:

$ docker-compose up -d

Modificamos el archivo local_settings.py para indicarle donde está la base de datos de mongodb.

Mongo database settings
MONGO_URI = "mongodb://IP/"
MONGO_DB = "ghirodb"

Utilizando Ghiro


Vamos a nuestro navegador e ingresamos la IP que nos aparece.



Una vez ingresado el usuario ghiro y passowd ghiromanager, que es el administrador de la aplicación, veremos la siguiente pantalla.



Ahí como vemos nos indica que tenemos un usuario que es el cual entramos por medio de la web.

Para poder inicializar vamos a Cases para crea un nuevo caso para luego subir las fotos y poder analizarlo y vamos al icono con el símbolo +.



Luego vamos a ingresar el nombre del caso y la descripción del mismo, también si tenemos varios usuarios podemos indicar que usuarios lo puede seguir la investigación.



En nuestro caso agregamos una carpeta para que analice todo su contenido, esta carpeta tiene que estar dentro de la máquina virtual donde tenemos Ghiro. Podemos pasar la información de nuestro máquina local por medio de SFTP el cual funciona en el puerto 22 para esto podemos utilizar como software Filezilla siendo un software OpenSource.



Hay varias formas de pasar las imágenes:

  • Mediante el protocolo SFTP que nos permite dejar los archivos y luego tomar la carpeta.

  • Otro hacer un Drag de nuestras fotos al servidor.


Una vez que grabamos nos queda de la siguiente forma.



Nuevamente vamos al símbolo +, para agregar las fotos o una url o una carpeta con contenido.



Ahora le indicamos todo el path absoluto de donde subimos las fotos que es en /home/ghiro/Fotos-Analizar.



Vamos a ver que empieza a procesar las imágenes.



Podemos ir a Thumbnails, donde podemos ver las imágenes.


Si nos paramos en cada en cada imagen, veremos que en la izquierda nos aparece tres iconos.


  • El primer icono: nos muestra un reporte.

  • El segundo icono: lo marca como favorito.

  • El tercer y último icono: vemos la imagen.


Reporte de la imagen


La información que podemos obtener es sobre los metadata que contiene la imagen, como bien dijimos geolocalización, tipo de cámara, etc.



Al final de esta pantalla podemos agregar un comentario de la imagen que corresponde a la investigación de nuestro caso. También podemos bajar la imagen o exportarla.


Vamos a tener por cada dato un pestaña con su respectiva información. Por ejemplo, si vamos a EXIF, tendremos información de los metadatos.



Si vamos a la etiqueta Map veremos la ubicación de la imagen en el mapa.



Este caso es para ver la geolocalización de una imagen, si queres ver el mapa de todas las imágenes, vamos a la pestaña Images.



Vamos a tener información de todas las imágenes, ahora vamos a Map para ver todas las imágenes geolocalizadas, también en el mapa podemos hacer un click en cada punto de geolocalización para que nos muestre que imagen se encuentra en ese punto..



Más información