Información blog

Linux, tutoriales, noticias, sistemas, redes y seguridad informática, entre otras cosas.

miércoles, 9 de septiembre de 2015

Aplicando la esteganografía en Linux

Hoy vengo con algo que lleva bastante tiempo rondándome en la cabeza pero que siempre he ido dejando debido a que me parecía algo complejo; hasta hoy. Se trata de nada más ni nada menos que la esteganografía. Muchos probablemente os quedéis extrañados con dicho nombre, lo cual es comprensible ya que es un concepto que aunque en sí es conocido, su nombre no lo es tanto. Este concepto se basa en la ocultación de un mensaje u objeto dentro de otro, haciendo que la gente se fije en la parte más vistosa cuando el autentico mensaje u objeto está oculto dentro de éste.
Portada_esteganografia
Esto puede parecer enrevesado pero en realidad es algo que se lleva haciendo desde largos siglos atrás como por ejemplo en el caso de un científico del siglo XV, el cual escondía los mensajes dentro de un huevo duro con cascara incluida; el secreto consistía que preparaba un tinta especial basada en una onza de alumbre y una pinta de vinagre, la cual traspasaba la cascara y no dejaba rastro alguno en ésta, teniendo que pelar la cascara para poder leer el mensaje. Otra aplicación más "conocida" fuera del ámbito de la ocultación, suele ser la ocultación de un texto dentro de otro... Para aquello se pone un texto normal e inofensivo pero si uno se fija bien, podrá ver que si lee de arriba a abajo la primera letra de cada línea, verá un mensaje oculto; un mensaje muy simple y exagerado podría ser:
Texto_oculto

Ahora bien, muchos diréis... ¿Qué importancia o relevancia puede tener esto en el ámbito informático? Si bien es cierto que lo que acabo de hacer se puede hacer perfectamente escribiéndolo a mano o en un word, este concepto de ocultación también puede ser aplicado a objetos, o en este caso a archivos. Es decir que podríamos por ejemplo enviar un word camuflado en una imagen, haciendo que la gente solo viese la imagen sin percibir el archivo oculto. Este tipo de método suele ser bastante común a la hora de intentar establecer comunicaciones seguras en las cuales fluye información delicada que queremos que pase (o al menos lo intente) inadvertida.

Aunque había leído ya hace tiempo algo al respecto a nivel teórico, no había intentado llevarlo a práctica pensando que era un concepto complicado de aplicar, pero afortunadamente existen diversas herramientas que nos pueden hacer la tarea en muy pocos pasos. Existen distintos métodos de esteganografía, tales como la sustitución del último bit, la modificación de píxels en imágenes o la agregación e un archivo "contenedor" al archivo original... Este último es el más usado debido a su facilidad de implementación y su validez para cualquier tipo de archivo, si bien las herramientas de estegoanálisis suelen detectar con facilidad  este encubrimiento; aún así esta opción es la más popular de todas y por ello me centraré en ésta.

Buscando algunas aplicaciones que pudiesen realizar dicha tarea en Linux me he fijado en una que me ha llamado especialmente la atención por ser muy sencilla de usar, pues se basa en una interfaz muy simple e intuitiva para que cualquiera la pueda usar sin tener que recurrir a complejos comandos y/o procedimientos; dicha aplicación se llama Openstego.

Dicho software no está instalado por defecto ni incluido en repositorio alguno con lo que habrá que descargarlo en la página oficial http://www.openstego.com/. Para simplificar la instalación, en este caso he recurrido al comando wget con el fin de emular la descarga desde la consola; en este caso sería un paquete amd64:

  1. wget https://github.com/syvaidya/openstego/releases/download/openstego-0.6.1/openstego_0.6.1-1_amd64.deb
Al ser un paquete .deb únicamente habría que recurrir al gestor de paquetes de Debian, denominado dpkg, el cual se usa combinando el comando dpkg junto con el parámetro -i, seguido del nombre del paquete a instalar:

  1. dpkg -i openstego_0.6.1-1_amd64.deb

Como bien he dicho antes, lo que vamos a hacer es encubrir un archivo con otro que hará de "contenedor", con lo que se requerirían tener en nuestro poder dos archivos distintos; por ejemplo un texto y una imagen.  En mi caso he optado por una imagen de tux y un mensaje almacenado en un .txt.

Texto_e_imagen

Con los dos ficheros en nuestro poder únicamente habría que abrir la aplicación y poner como fichero original texto.txt y como fichero de "encubrimiento" la imagen Tux-G2.png. Con respecto al fichero de salida, únicamente habría que decir el nombre del fichero que se creará como resultado de dicha unión... Algo como lo mostrado a continuación:

Openstego_GUI

En mi caso he optado por un nombre muy sencillo: nuevo.png, cuyo aspecto será el mismo que el de la imagen que hemos usado; con la diferencia de que su tamaño será mayor que el de la imagen original, ya que al fin y al cabo hemos unido el texto con la imagen.

Si luego quisiésemos extraer el mensaje de la imagen, únicamente habría que entrar en la aplicación de nuevo y acceder a la sección "Extract Data", en la cual simplemente habría que poner la imagen que contiene el mensaje oculto en su interior y especificar después el directorio en el que se quiere almacenar el mensaje extraído.

Extraer_mensaje

Obviamente este método de ocultación no es perfecto y como he dicho el mensaje original puede ser extraído con facilidad por herramientas de estegoanálisis... La ventaja que tiene este método es que el mensaje puede pasar inadvertido ante ojos "no expertos", con lo que es un método de traspaso de información muy útil dependiendo del ámbito en el que se quiera usar. Aún así, siempre es recomendable cifrar el mensaje original con algún cifrado como GPG para añadir una capa de seguridad adicional a nuestro mensaje (es importante no confundir cifrado con esteganografía) y así dificultar la lectura de éste en caso de ser extraído de nuestro "contenedor".

Espero que os resulte útil.

Saludos.

No hay comentarios :

Publicar un comentario