Sitio personal de Ariel M. Liguori De Gottig

Sunday, January 11

Mini-Tutorial de Esteganografía/Estegoanálisis. Técnica Sustitutiva LSB by Alfonso Muñoz

Les dejo este mini-tutorial que halle en unos de mis blogs predilectos :-), espero que les sirva tanto como a mi.

Fuente: Un informático del lado del mal
FASE 3 - Parte Esteganografía

Estimados "malignos", hace aproximadamente un mes. Chema y yo coincidimos en el CIBSI2007, donde presentaba oficialmente (más o menos) mis impresiones sobre mi herramienta estegoanalítica beta StegSecret. Chema me comentó que le resultaría muy interesante publicar algún que otro tutorial sobre esteganografía/estegoanálisis, ya que a "sus chicos..." les gustan las sensaciones nuevas ;)

Aprovechando el Reto Hacking V se introdujo una pequeña imagen con información oculta de forma secuencial en los LSB (Least Significant Bit) de cada pixel de la imagen, para probar un poco al personal y como escusa para introducir este mini-tutorial.

Empezemos con un mini-tutorial introductorio sobre esteganografía/estegoanálisis y técnicas sustitutivas LSB aplicadas a ficheros BMP, sin base matemática, de momento, en un futuro (maligno mediante) más...

El término Esteganografía se define como la ciencia y/o arte de ocultar una información dentro de otra, que haría la función de “tapadera” (estegomedio o cubierta). En la criptografía, en cambio, no se oculta la existencia del mensaje sino que se hace ilegible para quien no esté al tanto de un determinado secreto (la clave). En actualidad, es muy interesante la combinación de ambas.

El término Estegoanálisis se define como la ciencia que estudia la detección (ataques pasivos) y/o anulación (ataques activos) de información oculta en distintas tapaderas, así como la posibilidad de localizar la información útil dentro de la misma (existencia y tamaño).

Dependiendo del proceso empleado para ocultar la información, su recuperación puede ser inviable, correspondiendo su inversión a la ciencia del criptoanálisis. Piensese, por ejemplo, en el cifrado de una información utilizando un algoritmo criptográfico “seguro” (¿?) y la utilización de un PRNG (Pseudo-Random Number Generator) para seleccionar las posiciones donde se ocultara la información dentro de un estegomedio dado al aplicar una técnica sustitutiva, por ejemplo, LSB.

El estegoanálisis en casos muy concretos se convierte en una tarea trivial, pero en general, es un tema complejo y de difícil aplicación, principalmente por el número enorme de medios de información que existen (cantidad) y por la variedad de técnicas esteganográficas en estos medios.

En este mini-tutorial introductorio voy a centrar la atención en el estegomedio más utilizado: las imágenes digitales, y especialmente, los ficheros BMP por su sencillez.

Una de las técnicas más antiguas y difundidas es la técnica de sustitución LSB (Least Significant Bit). Esta técnica se basa en dos principios simples:

a) La modificación de los bits menos significativos de la codificación de los pixeles de una imagen no introduce un "ruido visual", en general, suficiente para levantar sospechas a una persona que vea una imagen que contiene información oculta.

b) La información almacenada "naturalmente" en los LSB es aleatoria, con lo que su modificación para introducir información oculta no proporcionaría pistas adicionales a un analista.

La primera afirmación a), en general, se cumple, pero la segunda es falsa, más adelante veremos porqué.

Existen distintas maneras de aplicar una técnica sustitutiva LSB dependiendo del estegomedio elegido, en un formato BMP, en general, en la codificación de los pixeles de la imagen, en un fichero GIF, por ejemplo, a los indices que apuntan a la paleta de colores, en un formato JPEG a los coeficientes cuantificados DCTs, etc, etc.

En el Reto V escogimos el formato BMP (cuando hablo de BMP me refiero aquí al Windows BMP) por ser, en general, un formato sin compresión con lo cual permitiría a cualquiera que intentará detectar la información oculta acceder directamente a la codificación de los pixeles. Además, la información se ocultó en el 1erLSB de cada octeto de la zona de los pixeles, con lo que más fácil imposible....

Es posible utilizar cualquier bit de la codificación de un pixel para ocultar una información, pero el ruido introducido, por ejemplo, visual, el bastante notorio para los bits de mayor peso.
[Inserción/Extracción de información]

La cabecera de los ficheros BMP: Tipo (2 byte) + Tamaño Archivo (4 bytes) + Reservado (4 bytes) + Distancia a los pixeles (4 bytes), incluye información para posicionarnos en la codificación de los pixeles de la imagen. Dependiendo de la resolución de la imagen, los pixeles pueden estar codificados de diferentes formas: 1,4,8,16,24,32 bits/pixel.

Por ejemplo, en una resolución típica, de 24 bits/pixel, cada pixel de la imagen se representa con 3 octetos, en este caso uno para el nivel de rojo, otro para el nivel de verde y otro para el nivel de azul, escala RGB.

La codificación de los pixeles es importante a la hora de decidir como ocultar un información, porque esto puede ayudar a dificultar la detección a un potencial estegoanalísta. Es más, puede engañar a algoritmos de detección muy precisos.

En general, la técnica sustitutiva LSB se puede aplicar a los pixeles de la forma que se desee y en el orden que se quiera.

De forma secuencial, pseudoaleatoria, mezcladas, etc. Por ejemplo, en una imagen de 24 bits/pixel (3 octetos), podríamos ocultar en ciertos pixeles sólo información en su octeto de Rojo, en otros en el de azul, etc.

[Consideraciones mínimas de seguridad]

Hace unos años se demostró que la aplicación de un técnica sustitutiva LSB sobre los pixeles de una imagen, independientemente de como se seleccione los pixeles, deja rastros traceables, mayores cuanto mayor sea el mensaje oculto.

A lo largo de la joven historia del estegoanálisis, algunos ataques han mostrado su validez, unos mejores otros peores.

Uno muy clásico son los ataques Visuales que mediante filtrados alertan visualmente de la presencia de información oculta, (aunque depende de la imagen) presenta resultados notorios, por ejemplo, cuando una imagen almacena información oculta aplicando LSB de forma secuencial sobre alguna zona de pixeles de la imagen. De hecho, aunque la información almacenada es muy pequeña si haceis un ataque Visual (LSB-0) con StegSecret a la imagen del RetoV, observareis a bajo a la izquierda un "pequeño patrón".

Por cierto, os lanzo una pregunta facil-facil, ¿si modificamos los LSB al principio del fichero BMP porqué al hacer el ataque Visual vemos modificaciones en la parte de abajo de la imagen y no en la de arriba como debería ser?

Aunque necesitaría un post, por cada uno, para explicarlos medianamente, en general, los algoritmos estegoanalíticos más famosos son los algoritmos estadísticos/estimadores, que se centran en la detección de información oculta con una cierta técnica de ocultación más o menos sofisticada. Existen otros tipos de algoritmos nuevos más prometedores.. pero esto en otra ocasión.

Voy a comentar brevemente 2 algortimos estadísticos/estimadores (ver StegSecret).


El ataque ChiSquare, se basa en estudiar las frecuencias de una pareja de valores y aplicarles un test estadístico chiSquare.

Dado unas condiciones de partida, analizando como se parecen los valores de la pareja se puede estimar la probabilidad de modificación de bits de la imagen, y en consecuencia detectar la presencia de información oculta, y estimar el tamaño de la información enmascarada. Es útil, por ejemplo, para una detección de LSB secuencial o LSB pseudoaleatorio cuando hay más de un 97% de ocupación(aprox) de la cubierta. Dependiendo de como se eliga los valores de la pareja y en que zona de la imagen se aplique el ataque ChiSquare puede tener éxito en su detección o no...

El ataque RS (RS viene del nombre de clasificación de grupos de pixels, R=Regular, S=Singular) es un ataque muy preciso para la detección de mensajes ocultados de forma pseudoaleatoria. Precisión, en torno, a modificaciones de 0'003 bits/pixel.

Cualquiera de estos ataques se pueden aplicar a distintos formatos gráficos y con diferentes codificaciones. Tipicamente, se puede ver su utilidad en imágenes RGB. En general, yo no recomiendo utilizar imágenes para ocultar información, en un futuro justificaré más porqué...

De todas formas, si un usuario lo desea existen unas recomendaciones mínimas de seguridad a cumplir:

a) La elección de la cubierta es muy importante, única por cada transmisión. Se recomienda imágenes de alta resolución (imágenes escaneadas o tomadas con cámaras digitales) o imágenes en escala de grises.

Por ejemplo, la imágen utilizada para el Reto V es una mala imagen. Al ser un imagen con amplias zonas de colores uniformes la sustitución LSB es apreciable en la imagen original. ¿Os habiais dado cuenta?.

b) Si aplicamos una técnica sustitutiva (existen otras, todo a su tiempo) a menor información ocultada menor es la probabilidad que las alteraciones producidas permitan a un analista detectar la presencia de información oculta. Basicamente esto se puede hacer de dos maneras:

b1) Ocultando menos información. Esto se puede hacer de multiples formas, y no necesariamente usando compresión. Existen procedimientos muy útiles de matrices de codificación, etc.... (hablaremos en un futuro).

b2) Distribuyendo una información en más de una cubierta. Por ejemplo, StegPage.

Y hasta aquí este breve tutorial.

Me gustaría, aprovechar y comentar unas cuestiones mínimas sobre StegSecret relacionadas con comentarios de gente en Internet que he estado leyendo y, que son erróneas.

En primer lugar, StegSecret es una herramienta de detección (estegoanálisis) con lo cual no se tiene que comparar con herramientas de ocultación (esteganografía)... En segundo lugar, StegSecret implementa, en general, dos tipos de procedimientos. Detección de herramientas esteganográficas concretas que dejan rastros traceables, por ejemplo, EOF y LSB. Y por otro lado, algoritmos visuales y estadísticos que se centran en técnicas de ocultación (no en herramientas concretas que la utilizan), por tanto es genérico. Se centran en LSB secuencial y pseudoaleatorio.

Leyendo por ahí, veo que la gente no ha comprendido muy bien que es una técnica EOF. Asique lo indico rapidamente. Existen multitud de formatos de ficheros que si añades una información al final del mismo, esto no altera su funcionamiento. Pobrad a añadir información a un: .exe, .doc, .ppt, .wav, .mp3, .jpg, .png, .gif, .bmp, etc, etc.

Un técnica muy tontorrona pero que es más o menos difícil de automatizar su detección, en StegSecret, por ejemplo, se analiza la estructura de ciertos formátos gráficos para detectar esta presencia de información, independientemente de la herramienta de ocultación que la haya puesto.

Bueno dicho lo dicho, espero que haya sido útil este minitutorial, no muy básico y nos veremos en un futuro.... o no.

Alfonso Muñoz
http://stegsecret.sourceforge.net/

0 comentarios: