Upload
wilfredo-gonzales-chomba
View
16
Download
0
Embed Size (px)
Citation preview
SEGURIDAD EN SISTEMAS LINUX. MÓDULO 4: CRIPTOGRAFÍA.
PRACTICANDO LA ESTEGANOGRAFÍA EN EL SIGLO XXI...
1. Introducción.
La esteganografía es el arte de escribir de forma oculta. Esta palabra, de origen griego, proviene de los términos esteganos (secreto, oculto) y graphos (escritura), es decir, escritura oculta. La esteganografía y la criptografía persiguen el mismo fin: enviar mensajes de forma secreta, pero ambas disciplinas son diferentes. En la criptografía se trata de ocultar el significado de un mensaje, mientras que en la esteganografía se trata de ocultar el mensaje en sí, que además puede estar cifrado, o no.
El uso de la esteganografía data de hace miles de años, y ya Herodoto (485 a.c. 425 a.c.) narra cómo Demeratus, rey de Esparta utilizó la esteganografía para avisara a su ciudad de un próximo ataque de Xerxes, rey de los persas. En aquellos tiempos se escribía sobre tablillas enceradas, marcándolas con un punzón... Demeratus hizo grabar un mensaje directamente en la madera de las tablillas y luego las hizo cubrir de cera, de manera que parecieran “tablas en blanco” sin utilizar...
Desde la antigüedad hasta hoy, la esteganografía se ha utilizado constantemente, y el único límite que ha tenido es el de la imaginación humana... ejemplos por todos conocidos son la tinta invisible, los mensajes escondidos en dobles fondos, o los microfilms escondidos en el tubo de pasta de dientes de un superespía...
Hoy, la esteganografía cobra sentido de nuevo, ya que es posible ocultar información relevante en ficheros que aparentemente tienen sólo otros contenidos, como los ficheros gráficos o de sonido. Pero no nos quedemos aquí, expliquemos por qué es esto posible, veamos cómo se puede hacer teóricamente y pongámoslo en la práctica...
2. Esteganografía digital.
Hay gran variedad de tipos de ficheros de ordenador, pero en el fondo, el contenido de todos ellos es el mismo: una sucesión de bits (ceros y unos). Las diferencias que existen entre los ficheros hay que verlas desde un punto de vista más alto, desde un nivel de abstracción mayor y radica en el significado que contienen los bits.
Los distintos tipos de ficheros organizan su contenido de forma diferente, para poder almacenar un tipo de información distinta... así tenemos ficheros que contienen texto, imágenes, datos de contabilidad, documentos complejos, sonido, hojas de cálculo, vídeo, planos, páginas de Internet, etc... Hoy en día se puede guardar cualquier tipo de información en un fichero.
La esteganografía digital trata de esconder los datos de un fichero (bits) dentro de otro fichero (que contiene más bits). O sea, que de lo que trata esta disciplina es de “esconder bits dentro de un montón de bits”. Pero claro, si modificamos un fichero añadiéndole más bits escondidos... estaremos
www.estudiaenlinea.es Joaquín J. Domínguez Torrecilla. Página 1.
SEGURIDAD EN SISTEMAS LINUX. MÓDULO 4: CRIPTOGRAFÍA.
PRACTICANDO LA ESTEGANOGRAFÍA EN EL SIGLO XXI...
modificando el contenido del fichero y la información que éste almacena... y ese cambio será visible... ¿o quizás no?
La esteganografía moderna trata de esconder bits dentro de un fichero, pero sin que un observador que disponga del fichero final pueda sospechar que dicho fichero, además del significado evidente que contiene, almacena otra información oculta...
3. ¿Cómo se puede ocultar una serie de bits en otra serie de bits?
El tipo de fichero que se desea esconder no es relevante en absoluto, puede ser cualquiera. Nos da igual que sea un pdf, un ejecutable, o un archivo de sonido... ¡al fin y al cabo se esconderán los bits que lo componen! Otra cuestión muy diferente es de qué tipo es el fichero “anfitrión”, el que va a guardar la información secreta... ya que al hacerlo no debemos destruir el contenido original del fichero.
La cuestión es ¿cómo podemos ocultar una serie de bits en un fichero? Tenemos dos opciones:
1. Añadir los bits del fichero a ocultar a un fichero ya existente. Esta opción supone aumentar el tamaño del fichero ocultador, sumándole el tamaño del fichero oculto.
Para hacerlo, si no queremos que el engaño sea visible, debemos conseguir que el fichero ocultador siga pareciendo normal. Por lo tanto, sólo podremos insertar bits ocultos en huecos del fichero ocultador. Los huecos pueden ser creados artificialmente... por ejemplo, en un fichero ejecutable podemos abrir un hueco de 100 bytes y antes del hueco colocar un salto incondicional al byte justamente posterior al hueco. Pero no todos los tipos de ficheros admiten huecos...
Esta técnica se usa sobre todo con ficheros ejecutables. Sin embargo, hay que tener cuidado de que el porcentaje de huecos no sea muy elevado, ya que podría resultar evidente que el tamaño del fichero es demasiado grande para lo que hace el programa...
Este sistema tiene como gran desventaja que los huecos artificiales en el código pueden ser fácilmente descubiertos por un analizador de código apropiado que los detecte, con lo que el sistema no es muy seguro.
2. Modificar los bits de un fichero ya existente, en función de los bits a ocultar, de forma que después podamos recuperar los bits ocultos. En términos telecofrikis, podríamos decir que es como “modular” un fichero portador con un fichero de datos.
La desventaja de este sistema es obvia: modifica el contenido del fichero original. Pero si lo pensamos bien, eso quizás no sea un problema...
www.estudiaenlinea.es Joaquín J. Domínguez Torrecilla. Página 2.
SEGURIDAD EN SISTEMAS LINUX. MÓDULO 4: CRIPTOGRAFÍA.
PRACTICANDO LA ESTEGANOGRAFÍA EN EL SIGLO XXI...
Este sistema se utiliza con ficheros de imágenes (mapas de bits) o con ficheros de sonido. En estos tipos de archivo, se almacenan digitalizados valores que en sí son analógicos. De tal manera, por ejemplo, que un fichero de mapa de bits almacena, para cada punto de la pantalla, un valor numérico que representa una referencia del color exacto de dicho punto. En el caso del sonido, almacenan, para cada instante, el valor numérico que representa el tono exacto del sonido.
Como un fichero de imágenes puede codificar millones de colores, si variamos la referencia del color de un pixel en una unidad, entre más de 17 millones de valores, la diferencia de color es inapreciable por el ojo humano. Lo mismo ocurre con los ficehros de sonido: Si en un instante variamos la referencia del tono de sonido en una unidad, frente a los millones de valores posibles, la diferencia del tono no será apreciable por el oído humano.
Es decir, por este sistema, se consigue que el fichero resultante aparentemente no tenga nada raro, es un fichero perfectamente normal, sin nada destacable. Sólo si un atacante dispusiera de la imagen original, además de la imagen con el archivo oculto, podría detectar los cambios a nivel binario.
Pero una de las máximas de este sistema es que los ficheros “ocultadores” originales NUNCA deben ser transmitidos y es mejor ni siquiera guardar copia de ellos. Si no se tiene la imagen original para compararla con la imagen esteganografiada... ¡Es casi imposible detectar que esta última oculta algo!
La única debilidad de este sistema radica en la posibilidad de que el atacante conozca el algoritmo esteganográfico. Si así fuera, podría ejecutar el algoritmo inverso sobre archivos de imagen o de sonido, en busca de “información secreta”. Si bien este ataque es estadísticamente muy complejo si el algoritmo esteganografiador es suficientemente bueno, ya que las posibilidades de ocultación son enormes.
www.estudiaenlinea.es Joaquín J. Domínguez Torrecilla. Página 3.
SEGURIDAD EN SISTEMAS LINUX. MÓDULO 4: CRIPTOGRAFÍA.
PRACTICANDO LA ESTEGANOGRAFÍA EN EL SIGLO XXI...
Veamos un resumen de todo lo explicado en la siguiente tabla:
TIPOS DE ESTEGANOGRAFÍA DIGITAL.
Añadir los bits del fichero a ocultar a un fichero ya existente.
Modificar los bits de un fichero ya existente, en función de los bits a
ocultar.
Características
➔ Se puede ocultar cualquier tipo de fichero.➔ Los ficheros a ocultar pueden ser previamente encriptados.➔ Es posible la esteganografía recursiva (un fichero oculto dentro de un fichero, que a su
vez está oculto dentro de un fichero, que a su vez está oculto dentro de un fichero...)
➔ Como ficheros ocultadores se suelen usar ejecutables.
➔ Como ficheros ocultadores se suelen usar imágenes y sonido.
Ventajas ➔ No se modifica el contenido del fichero ocultador
➔ El fichero resultante es perfectamente normal, lógico y coherente.
➔ No se aumenta el tamaño del fichero ocultador.
➔ Sin conocer el algoritmo esteganografiador, es casi imposible ni siquiera detectar que el fichero resultante esconde algo.
➔ Conociendo el algoritmo ocultador, es estadísticamente muy difícil obtener el fichero oculto. (Si el algoritmo está bien diseñado).
➔ Es bastante resistente frente a ataques.
Inconvenientes
➔ Si un atacante consiguiera el fichero ocultador original y el fichero ocultador con la información añadida, podría obtener la información oculta fácilmente.
➔ Hay que crear huecos artificiales donde esconder la información oculta.
➔ Aumenta el tamaño del fichero ocultador.
➔ Es fácilmente detectable. (Se pueden encontrar los trozos de código inútil).
➔ Es débil frente a ataques.
➔ Modifica el contenido original del fichero ocultador.
www.estudiaenlinea.es Joaquín J. Domínguez Torrecilla. Página 4.
SEGURIDAD EN SISTEMAS LINUX. MÓDULO 4: CRIPTOGRAFÍA.
PRACTICANDO LA ESTEGANOGRAFÍA EN EL SIGLO XXI...
4. La Esteganografía Digital en la práctica
Todo esto es muy bonito y muy interesante... ¿pero cómo lo podemos aplicar? Evidentemente hay dos maneras... Puedes implementar tus propios algoritmos esteganográficos para ocultar la información (pero este recurso está limitado a unos pocos...), o también puedes utilizar programas esteganográficos ya existentes.
Voy a explicar aquí la utilización de un programa de esteganografía sumamente sencillo. Se llama steghide y funciona bajo linux. Hay otras aplicaciones para linux y para las plataformas Windows... Al final encontrarás enlaces a algunas de ellas.
Steghide es un paquete disponible en el repositorio de Debian Etch. Se instala con el comando:
prompt# aptget install steghide
Una vez hecho esto, ya estará disponible como un comando más del sistema.
Para hacer una demostración, he escogido varios ficheros:
✔ He elegido ocultar la hoja de datos técnicos del punto de acceso Linksys WAP54G, en formato pdf. Es el fichero WPA54G.pdf.
✔ Como fichero “ocultador”, he elegido una preciosa foto de la escultura que hay en Córodba en mitad del río, llamada estatua.jpg.
✔ He ocultado la hoja de cálculo en la imagen, usando steghide, obteniendo el fichero esteganografiado estatua2.jpg. Aparentemente contiene sólo la fotografía de la estatua en el río, aunque internamente incluye también el fichero pdf.
Para esteganografiar, hay que ejecutar el comando steghide indicando el archivo a ocultar, el archivo ocultador y el nombre del archivo esteganografiado resultante. Al ejecutar, el programa pide una contraseña (a la que llama salvoconducto).
prompt$ steghide embed ef WAP54G.pdf cf estatua.jpg sf estatua2.jpg
Para invertir el proceso, hay que ejecutar el comando steghide, indicando el nombre del archivo esteganografiado y un nombre del archivo para el “secreto” extraído. Al ejecutar, el programa pide la contraseña. Si no es correcta, no extraerá la información oculta.
prompt$ steghide extract sf estatua2.jpg xf WAP54G.pdf
www.estudiaenlinea.es Joaquín J. Domínguez Torrecilla. Página 5.
SEGURIDAD EN SISTEMAS LINUX. MÓDULO 4: CRIPTOGRAFÍA.
PRACTICANDO LA ESTEGANOGRAFÍA EN EL SIGLO XXI...
A continuación muestro las consolas relativas a los dos procesos:
Pantalla1: Proceso de “esteganografiar”: oculta el fichero “WPA54G.pdf” dentro del fichero “estatua.jpg”, produciendo el fichero “estatua2.jpg”. (Se usó como contraseña “estudiaenlinea”).
Pantalla2: Proceso de “desesteganografiar”: Obtiene el fichero “WAP54G.pdf” a partir del fichero “estatua2.jpg”. (Se usó como contraseña “estudiaenlinea”).
www.estudiaenlinea.es Joaquín J. Domínguez Torrecilla. Página 6.
SEGURIDAD EN SISTEMAS LINUX. MÓDULO 4: CRIPTOGRAFÍA.
PRACTICANDO LA ESTEGANOGRAFÍA EN EL SIGLO XXI...
Y por si quedara duda, os muestro las dos imágenes, la original y la que tiene el fichero oculto... ¿Cuál es cuál?
www.estudiaenlinea.es Joaquín J. Domínguez Torrecilla. Página 7.
SEGURIDAD EN SISTEMAS LINUX. MÓDULO 4: CRIPTOGRAFÍA.
PRACTICANDO LA ESTEGANOGRAFÍA EN EL SIGLO XXI...
5. Archivos incluidos en esta práctica.
Adjunto a este documento incluyo los siguientes ficheros:
✔ WAP54G.pdf. Es el fichero pdf que se oculta.
✔ estatua.jpg. Es el fichero “portador”, antes de incluir la información oculta.
✔ estatua2.jpg. Es el fichero esteganografiado, es decir es la imagen con el fichero oculto incluido. A partir de él se puede obtener el fichero WAP54G.pdf ejecutando el comando descrito anteriormente y usando como contraseña “estudiaenlinea”.
6. Enlaces interesantes sobre el tema.
✔ http://steghide.sourceforge.net/ Página oficial de Seteghide. (In English).
✔ http://steghide.sourceforge.net/documentation/manpage_es.php Documentación de Setghide. (En castellano).
✔ http://www.fbi.gov/hq/lab/fsc/backissu/july2004/research/2004_03_research01.htm Impresionante documento del FBI que explica la esteganografía en general y la digital en particular. Muy bueno. (In English).
✔ http://www.nakasoft.net/_about.htm Página oficial de NakaSoft, creadores de Xiao Steganography, aplicación esteganográfica para Windows. Es Freeware. (En castellano).
• http://www.nakasoft.net/xiao/esp/ Página de Xiao Steganography. Incluye el programa y vídeos explicativos.
✔ http://lifehacker.com/software/encryption/hidefilesinjpegimages207905.php Explica cómo hacer esteganografía con WinRar, si bien ,se consiguen ficheros muy débiles frente a ataques. (In English).
✔ http://openstego.sourceforge.net/ Página principal de OpenStego, utilidad esteganográfica para Linux y Windows. Es Freeware. (In English).
• http://www.dragonjar.org/openstegosolucionlibreparaesteganografia.xhtml Tutorial de OpenStego. (En castellano).
✔ http://www.invisiblesecrets.com/ Página principal del software “Invisible Secrets”, para plataformas Windows. Es de pago. (In English).
www.estudiaenlinea.es Joaquín J. Domínguez Torrecilla. Página 8.