#MundoHacker: Esteganografía, el arte de ocultar información sensible

Hace unos años fue muy sonado el caso de unos espías rusos (ES) que el FBI consiguió detener después de varios años de investigación. Los espías utilizaban para comunicarse fuentes públicas (blogs, periódicos, foros,…), en los que ofuscaban información “a la vista de todos” bajo técnicas de esteganografía.

james bond estego

Y al final los pillaron no porque el FBI fuera capaz de encontrar estas fuentes y descifrarlas, sino porque uno de los detenidos acabó señalando al resto, descubriendo entonces cinco años de comunicaciones que pudieron poco a poco recuperarse.

Cuento esto porque la esteganografía, bien usada, resulta prácticamente imposible de descubrir, e incluso entonces, si de nuevo se han utilizado técnicas avanzadas y cruzadas (diferentes estegos en diferentes fuentes necesarios para comprender el mensaje), posiblemente sea casi indescifrable. Así que abróchese el cinturón, que vamos a hablar de esteganografía en este nuevo capítulo de la serie #MundoHacker.

¿Qué es la esteganografía?

La esteganografía es el arte de ocultar información en algún otro elemento. No es algo que naciera de la informática, sino que lleva acompañando al hombre desde que éste vio necesario realizar este tipo de técnicas. Casos como el uso de animales o esclavos para enviar información confidencial entre reinos (se cortaba el pelo del animal/el pelo de la cabeza del esclavo, se escribía algo en la piel, y se esperaba a que éste creciera de nuevo), o ese experimento que todos hemos realizado de escribir algo con zumo de limón y esperar a que se seque, son ejemplos de técnicas utilizadas en la antigüedad que entran dentro de esta definición.

Para ello, se utilizan dos elementos, el mensaje (la información que queremos ocultar) y el camuflaje o tapadera (el elemento que hará de tapadera), una función estego (algún tipo de técnica para que el elemento oculto pase desapercibido dentro del camuflaje) y quizás algún tipo de clave necesaria para descifrarla.

estego

El camuflaje (con el mensaje oculto en su interior) viajará por un canal previsiblemente inseguro (una página web, o el camino entre dos reinos), pudiendo ser interceptado por algún otro receptor (llamado habitualmente guardián). Y el objetivo es que el guardián sea incapaz de, o bien darse cuenta de que el camuflaje tiene un mensaje oculto, o en caso de darse cuenta, que no pueda obtener el mensaje.

Una vez que llega a su destino, el receptor objetivo aplicará la estego-función y la estego-clave (si es que había), separando camuflaje de mensaje, y obteniendo así la información buscada.

estego ternaLa esteganografía (ES) tiene por tanto una terna en cuyo equilibrio radica la función para la que se ha desarrollado. Habitualmente, las técnicas de esteganografía que permiten ocultar mayor información (cantidad) son menos robustas y pasan menos desapercibidas (invisbilidad). Por contra, a mayor robustez, normalmente menor cantidad de información oculta.

Y por su idiosincrasia, obedece al principio de la negación plausible (que no haya manera, a no ser que se conozca la estego-función y la estego-clave, de que alguien pueda discernir que un elemento es camuflaje de un mensaje oculto, o simplemente ese elemento tiene ruido). Esto hace de la esteganografía una técnica muy valiosa tanto para los espías, como para activistas, militares e incluso terrorismo, ya que juega con la ventaja de que es más o menos invisible (difícil darse cuenta de su existencia), puede ser enviada por canales poco seguros (como internet) y resulta muy complicado demostrar ante un juez que estamos ante una comunicación oculta sin conocer los elementos que la forman.

¿Qué técnicas estego existen?

Aunque habitualmente solemos considerar la esteganografía como una técnica para ocultar información dentro de imágenes, lo cierto es que existen muchos otros tipos:

  • Esteganografía pura: No existe estego-clave, y por tanto, se presupone que el guardían es incapaz de reconocer una información oculta mediante estego de un mensaje normal. Se aplica entonces seguridad basada en la oscuridad, y el mejor ejemplo es el mini reto hacking que proponía hace un par de semanas, donde la imagen tenía oculta otra imagen que cualquiera podía obtener abriendo el camuflaje (la primera imagen) con un descompresor cualquiera.
  • Esteganografía de clave secreta: En este caso, la estego-función depende de una clave que deben conocer tanto el emisor como el receptor. Un ejemplo sencillo sería un texto oculto bajo otro texto generado aleatoriamente a partir de un capítulo de un libro que los dos (emisor y receptor) conozcan y una contraseña que dictará el cómo descifrar el mensaje camuflado.

Además, dentro de estas dos categorías, y atendiendo ya a los canales utilizados, podemos hablar de:

  • Esteganografía en texto: Ofuscar información en texto, de manera que algunas (o todas) las palabras del mismo, sirvan para descifrar el mensaje. Hay varias técnicas, pero la mayoría se basan en aplicar algún algoritmo que permita elegir diferentes estados (por ejemplo, un 0 o un 1) según diferentes palabras (coche = 0, gato=1), en un orden específico. Así, cuando en el texto aparezca por primera vez coche, entendemos que habrá un 0, y si en vez de coche apareciera gato, sería un 1. Seguiremos leyendo y poco a poco obtendremos el resto del mensaje oculto. De ahí que estas técnicas se suelan apoyar en generación de semántica (para dar sentido a las frases). Tenemos por ejemplo spammimic (EN), una herramienta muy antigua encargada de codificar mensajes en supuestos mensajes de spam (los típicos mensajes de spam que vemos en foros y blogs). Simplemente dices el mensaje a ocultar, y spammimic genera el texto de spam, que el emisor colocaría en una fuente conocida, y el receptor recuperaría para hacer el proceso contrario. Cualquier guardián que viera el mensaje solo vería un spam más, sin darse cuenta de que hay información oculta.
  • Esteganografía en sistemas operativos y ficheros: Consiste en ofuscar información apoyándose en las restricciones propias del canal utilizado. Un ejemplo muy utilizado hace algunos años y sencillo de aplicar era el de dividir el disco duro de un ordenador en bloques por ejemplo de 256, cuando Windows como mínimo permitía 512. Al hacerlo de esta manera, se le engañaba, por lo que para cada bloque, Windows utilizaba 256, y el emisor tenía otros 256 para ocultar información, que podía recuperar con herramientas específicas. También resulta bastante sencillo ofuscar información utilizando ADS en NTFS. En NTFS un fichero está construido por varios flujos (uno para los permisos del archivo, otro para datos del usuario,..). Herramientas como LADS o crucialADS permiten recopilar este tipo de archivos.
  • Esteganografía en formato de ficheros: Ofuscamos información en las limitaciones propias del fichero, o de los elementos de control de los sistemas encargados de leer el fichero. La más conocida y sencilla es la Técnica de Final de Fichero (EOF), que aprovecha el poco control a la hora de leer un fichero para ocultar información al final del mismo. La mayoría de sistemas solo leen la información necesaria, por lo que se puede agregar contenido adicional que pasará desapercibido.
  • Esteganografía hardware: Aprovechar, de nuevo, las limitaciones (o fallos de seguridad) de un elemento físico para ofuscar información dentro de él. Y aquí el mejor ejemplo es el uso de malware en BIOS (BadBIOS) que sacudió internet entera hace relativamente poco, para disgusto de los amantes de la conspiración mundial. Y el BadUSB de estos últimos días, que básicamente sigue el mismo principio.
  • Esteganografía en tecnologías web: Aprovechar la propia arquitectura del lenguaje de maquetado para ofuscar información. Como bien sabe, HTML no distingue entre mayúsuculas y minúsculas, por lo que para el navegador <br> sería lo mismo que <Br>, que <bR> o que <BR>. Y ahí tenemos varias alternativas distintas que funcionan de la misma manera.
  • Esteganografía en protocolos de comunicación: Semejante a las técnicas aplicadas en el formato de ficheros, pero con el formato de los protocolos (por ejemplo, ocultando información en cabeceras UDP).
  • Esteganografía en contenido multimedia: Tanto en imágenes como en sonido o vídeo. Las técnicas aplicadas en esteganografía de imágenes son muy parecidas a las aplicadas en sonido (basadas normalmente en ocultar información de poco peso en elementos muy pequeños del sistema de archivos multimedia, por ejemplo a nivel de pixeles en imágenes). En vídeo encontramos técnicas cruzadas de los dos anteriores, con algunas nuevas en las que interfiere movimientos específicos (guardar información cuando una zona cambie bruscamente de tonalidad) o en ejes críticos (subidas de volumen o espacios que cumplan x particularidad).

Llevo casi 1500 palabras escritas y únicamente he hecho un repaso de algunas tipologías estego. Si el tema le parece interesante, déjeme un comentario sobre qué conceptos quería que tratara en más profundidad y entonces prepararé uno o varios tutoriales específicos del tema.

 

Edit a día 28 de Abril del 2015: Un compañero ha hecho un vídeo (EN) explicando dos de las metodologías de ofuscación de información en ficheros que comentábamos en el artículo. Muy recomendable!

 

________

Realizar este tipo de artículos me lleva varias horas, y en algunos casos, gastos extra que habitualmente suplo de mi bolsillo, o gracias a esa comunidad de patronos que me apoyan realizando donaciones puntuales o periódicas.

Si le gustaría ver más de estos tutoriales y análisis por aquí. Si el contenido que realizo le sirve en su día a día, piense si merece la pena invitarme a lo que vale un café, aunque sea digitalmente.

hazme patrono pabloyglesias