Esteganografía con Python y Matroschka.

      Esteganografía y cifrado de imágenes y mensajes con el apoyo de Matroschka.

Siendo un tema bastante extenso, en donde existen múltiples formas, herramientas, técnicas y métodos para poder dejar mensajes o contenido oculto en un cierto modo en el que el receptor se dé cuenta de que hay algo escondido en ese contenido. La Esteganografía permite escribir (y esconder obviamente) mensajes o imágenes en archivos de cualquier tipo, de esta manera el archivo contenedor funcionará igual y lucirá tal cual como siempre, olvidando el detalle de que pueden contener información oculta, y que puede ser extraída.

Aquí es donde aparece Matroschka, está siendo una herramienta de línea de comandos es utilizada para esconder texto en imágenes y cifrar los archivos finales, además que todo esto lo hace en los bits o pixeles menos significativos en la imagen, además de que escrita en python.

¿Qué necesitarás para esto?

  • Una distro para pentesting o alguna otra plataforma Unix que contenga Python 2.7 o superior, aquí se usará Parrot OS 3.1

Instalación

Esta herramienta podrás conseguirla en los repositorios de GitHub, visitando el siguiente enlace: https://github.com/qbektrix/Matroschka

NOTA: Un requisito para poder hacer uso de esta herramienta es contar con “Pillow” que es  una librería que trabaja con Python, permitiéndole trabajar con imágenes.  Para instalarlo basta con correr el comando “pip Install Pillow”. En caso de que este no funcione, se puede usar “pip Install    – -upgrade pip “:1

Terminado, solo se descarga mediante git-clone:

2

Al acabar, crearemos un .txt mediante “pico” con el comando “pico (nombre del archivo.txt)», en donde agregaremos algún texto, que será el que vendrá oculto con la imagen:

3

Ahora, La descarga de GitHub  residirá en el directorio “/root/Matroschka/”, dentro, iniciamos la herramienta con el comando “python matroschka.py –h” para iniciarla y ver el modo de uso y opciones de configuración:

4

Vemos que los parámetros de configuracion son fáciles de usar, donde:

  • -h      o    –hide: Indica que se va a ocultar contenido en otro archivo.
  • -o       u    –open: Indica que se va a sacar información de un archivo cifrado con Matroschka,

Para hacer nuestra primera prueba, se hará uso del .txt antes creado y una imagen en formato .bmp o .png

Jpej o .Gif no son recomendables para trabajar con Matroschka.

La imagen puedes conseguirla en donde quieras o puede hacer uso de una en el directorio “/resources/” dentro del dir de Matroschka, dentro habrá varias imágenes en estos formatos.

Teniendo el .txt y la imagen, ejecutamos el siguiente comando dentro del dir de Matroschka:

python matroschka.py  –hide   –m MikeNav  –k HackingMexico /root/message.txt  /root/Dowloads/nombre_de_la_imagen.png”

Donde:

  • -hide: Indicamos la función de ocultar contenido.
  • -m: Mac Password para el archivo.
  • -k: Hashing Key.

Al final aparece un mensaje indicando que el contenido en la imagen  fue cifrado con éxito:

5

La protección funciona de esta forma:

El cifrado hace uso del HMAC-SHA256, que es un código de autenticación de mensajes en clave hash, es por esto que la MAC password que se estableció trabajará en conjunto con este código para que tanto como este password y el otro estén cifrados con clave hash. Mientras que el mensaje estará cifrado/protegido mediante XTEA, que es en algoritmo de cifrado que hará que se “cuele” con los pixeles y bits de la imagen

Ahora, el mensaje está oculto en la imagen, y este solo se mostrará cuando se ingresen la contraseña y key otorgados al momento del cifrado.  De lo contrario, si se busca extraer el mensaje de la imagen, solo se obtendrán errores o ningún archivo de salida, gracias al método anti-debugging usado por Matroschka.

Extracción de contenido oculto.

El proceso de descifrado toma lugar, al comparar el password y Key proporcionados con el Hash que esta en el mensaje oculto.

Siendo bastante similar al proceso de cifrado, sacar el contenido solo es cuestión de cambiar los parámetros de uso del comando, siendo este asi:

“python Matroschka.py –open –m (Mac Password) –k (Hashing Key) /root/Downloads/”nombre_de_la_imagen.png”

Al proporcionar el password y el key de validación, se descifrará el contenido, así mostrándolo asi en la terminal:

6

Vemos que nos encontramos con un HMAC, siendo este un módulo que trabaja en la librería “hashlib”  de Python, esto con la finalidad de realizar autenticación en base al  Key-Hashing.

Siguiendo los mismos pasos, podemos conseguir ocultar imágenes en otras.  Usando la misma sintaxis, esconderemos una imagen mediante el cifrado con Matroschka, solo basta con cambiar el directorio de las imágenes, aquí se escogió una imagen con extensión .png, será la que estará escondida, y la de extensión .bmp será la que la contendrá, mostrando la imagen en la que se guarda el contenido oculto:

7

Para extraerla, se usará la misma sintaxis, la diferencia es que solo mostrar  el Message-Digest del HMAC de autenticación en la terminal de comandos, y  se visualizará la imagen oculta:

8

Este contenido fue escrito con fines educativos.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *