Bypasseando la protección de Grub en un disco cifrado con LUKS – PoC

Buenas a todos. En esta entrada os enseñaré cómo me las apañé para arreglar un estropicio que yo mismo me hice por no seguir los pasos al pie de la letra e ir un poco a lo loco.

Estaba poniendo un poco de protección adicional a mi portátil siguiendo los pasos de la entrada Ataque y Defensa de mi buen amigo Grub de @Hurd4n0 añadiendo una contraseña para, desde Grub, no poder modificar el script de arranque ni iniciar ningún Sistema Operativo a no ser que se tuviera un usuario autenticado. Pues bien, llegué a la parte de hashear las contraseñas con el comando “grub-mkpasswd-pbkdf2” pero olvidé cambiar el inicio de la línea del archivo /etc/grub.d/40_custom de “password”“password_pbkdf2” para que me lo interpretara como un hash, así que toda la contraseña hasheada me la interpretaba como una contraseña en texto plano. Reinicié el portátil ilusionado yo porque ya tenía un portátil un poco más seguro, pero no fue poca mi sorpresa cuando descubrí que ninguno de los usuarios con sus respectivas contraseñas funcionaba por lo dicho anteriormente, no las interpretaba como un hash sino como texto plano. No sabía dónde meterme, sinceramente. Me había cavado mi propia tumba y me había imposibilitado acceder a mi propio ordenador, pero a mí me gusta saltarme las reglas y bypassear cosas, así que ni corto ni perezoso empecé a buscar la manera de cómo volver a tener acceso a mi ordenador de forma normal.

Se me ocurrió utilizar un booteable y reinstalar el Grub de nuevo, tirando todo lo que tenía anteriormente, pero (sin saber si funcionaría, eso lo probaré en otra ocasión) me pareció demasiado fácil, y eso no era bypassear nada, así que lo descarté por completo. Seguí pensando, el login estaba nada más iniciar el ordenador así que no tenía acceso a nada, ni a una mísera consola. Así que retomé la idea del booteable pero no para reinstalar el Grub, sino para bypassearlo desde dentro. Antes de empezar, decir que si la BIOS tiene protección con contraseña, este método no serviría a no ser que se tuviera dicha contraseña o se pudiera bypassear dicha autenticación. Partamos de la base de que en mi portátil no tengo puesta contraseña a la BIOS (algo pendiente ahora que me acabo de dar cuenta).

Pues bien, nada más encenderlo empecé a pulsar F2 como un loco y me saltó el menú de la BIOS, desde donde cambié que me iniciara desde el pendrive que previamente había introducido. Guardamos cambios y salimos, e iniciamos el Live desde el pendrive.

Captura1.png
Aquí tenemos nuestro bonito Kali 2016.2 en Live

A continuación listamos los discos que tenemos con sus respectivas particiones con “fdisk -l”

Captura2-1.png

Seguidamente empezamos a crear directorios donde montar las particiones, y empezamos a montarlas. Y aquí vino mi peor momento, porque mi disco duro lo tengo cifrado y así me lo dijo el comando “mount”, y no sabía si iba a poder montarlo. Suponía que sí, pero quién sabe, paranoias que me entran en el momento. Así que busqué en Google cómo montar una partición cifrada y me topé con este artículo de ElBinario donde lo explica a la perfección, y nada, pues hice lo que me decía “cryptsetup open –type luks /dev/sda3 cifrado”, introduje la contraseña y ya casi lo tenía. Captura4-1.png

Ya solo me faltaba montarlo en el /mnt/part3 que me había creado, así que como sigue diciendo el artículo, lo monté desde /dev/mapper y listo.

Captura4-2.png

Después de eso accedí a dicha partición y busqué qué hacía el comando “update-grub” que era el que actualizaba el archivo de configuración de Grub, y yo quería toquetear ese archivo de configuración, porque cambiar el archivo /etc/grub.d/40_custom que se modifica para poner la contraseña a Grub no sirve de nada si no se hace un “update-grub” así que tenía que modificar el archivo de configuración directamente, y buscando en el archivo /etc/default/grub vi que dicho archivo era el /boot/grub/grub.cfg así que feliz fui a buscarlo. Pero, cómo no, en /boot no había nada.

Captura3-1.png
Aquí buscamos qué hace el comando “update-grub”
Captura4-3.png
Y aquí vemos vacío /boot

Eso de nuevo fue fallo mío, porque no caí en que al haberme hecho una instalación con LVM Cifrado, se hacía aparte una partición para el arranque, que en mi caso correspondía con el /dev/sda2 que había montado en /mnt/part2 así que fui para allá y encontré mi ansiado archivo en /mnt/part2/grub/grub.cfg. Ya solo me quedaba buscar dónde estaba la parte que correspondía al archivo 40_custom con las credenciales y modificarlo.

Captura5-1.png
Parte del archivo grub.cfg correspondiente a las credenciales especificadas en el 40_custom

Pues ahí tenía mi bonito archivo de configuración de Grub, mal configurado valga la redundancia. Así que simplemente cambié la contraseña a 1234 para poder acceder ya por fin a mi ordenador (contraseña que no debéis poner, esto era solo para acceder en el momento, en cuanto inicié sesión la cambié de nuevo) y por fin tuve acceso de nuevo a mi ordenador (si no no podría estar escribiendo esta entrada ahora mismo).

Y hasta aquí la entrada. Espero que os sirva por si en algún momento os veis en el mismo apuro que yo. Cualquier duda no dudéis en dejarme un comentario o contactar conmigo desde la pestaña de Contacto de la parte superior del blog.

Un saludo

AlDr0id

 

Esteganografía en Linux

En esta entrada vamos a retomar de nuevo la Esteganografía pero esta vez empleando para ello un SO Linux.

Para comenzar vamos a hablar de la herramienta de Esteganografía por excelencia para Linux: Steghide. Es una herramienta manejable desde la terminal, y tiene la capacidad tanto de ocultar archivos como de extraerlos de nuevo. Además Steghide permite cifrar el contenido al ocultarlo. Se puede obtener fácilmente desde los repositorios oficiales de tu distribución (yo la instalé con sudo apt-get install steghide en 1 minuto), o si no desde http://steghide.sourceforge.net/download.php se puede descargar. La herramienta soporta como camuflajes archivos JPEG, BMP, WAV y AU.

A la hora de ocultar un archivo, este es comprimido y (si el usuario lo elige) cifrado con la contraseña que le asignemos. El algoritmo por defecto es AES (o Rijndael) de 128 bits, pero tenemos la libertad de elegir otros (pasándole el argumento “encinfo”). Una vez está el contenido comprimido (en caso de elegir que se cifre, el siguiente paso se hace en base a la contraseña que le hayamos asignado) elige unas posiciones del archivo pseudo-aleatorias y en ellas introduce la codificación del archivo. Para llevar a cabo este proceso, la sintaxis sería: “steghide embed -ef [archivo a ocultar] -cf [archivo que servirá de camuflaje] -sf [nombre del nuevo archivo a crear]”. Al introducirlo, a continuación nos preguntará si queremos establecer una contraseña. En caso de querer agregar la contraseña desde un primer momento, podemos agregar “-p [contraseña]” a lo anterior. Para extraer el archivo la sintaxis es “steghide extract -sf [archivo que contiene aquello que está oculto) -xf [archivo nuevo a crear con lo extraído]”. A continuación pedirá la contraseña (la tenga o no) y podremos obtener el archivo. De nuevo si queremos indicar la contraseña a la hora de lanzar la herramienta emplearemos “-p [contraseña]” y ya.

Otra forma podría ser empleando la técnica EOF, de una forma muy sencilla además. Para ocultar por ejemplo un archivo comprimido llamado “oculto.rar” en una imagen llamada “foto.jpg” y obtener un nuevo archivo llamado “nuevo.jpg” (Es importante que el nuevo archivo tenga la extensión del archivo que emplearemos de camuflaje. Después veremos por qué).Para llevarlo a cabo lanzamos “cat foto.jpg oculto.rar > nuevo.jpg” y obtendremos la nueva foto “nuevo.jpg” que a priori es exactamente igual que la inicial. El único cambio que hay a simple vista es el tamaño (que aumentará en proporción al tamaño del archivo que hayamos ocultado). Además, si abrimos la imagen inicial y luego el nuevo archivo con un editor hexadecimal (Yo utilizo bless, disponible en los repositorios de tu distribución favorita) podremos comprobar que al final de lo que se supone que era la imagen inicial hay más información: el archivo oculto. La explicación de qué lleva a cabo esta técnica la tenéis en mi anterior entrada, y responde a por qué debe llevar la misma extensión que el archivo camuflaje. Aunque la realización fuera para un S.O. Windows, los tres primeros párrafos que son la parte de explicación teórica son los mismos para ambos.

Esta técnica se puede llevar a cabo también lanzando “cat oculto.rar >> foto.jpg” (Es importante el “>>” y no usar el “>” de antes porque lo que queremos es añadir al final del archivo y no sustituirlo). Esta forma modifica el archivo camuflaje inicial, no crea uno nuevo.

Para obtener de nuevo el archivo oculto bastaría con abrir el archivo que contenga el camuflaje con el archivo oculto con un editor hexadecimal y copiar la parte correspondiente al archivo oculto en un nuevo fichero, y guardarlo con la extensión correspondiente. Para encontrar la parte correspondiente a ese archivo simplemente tendremos que buscar la cabecera del archivo (en este caso hemos ocultado un rar así que habría que buscar la cabecera “Rar!” y copiar lo que haya desde ahí hasta el final.

De igual manera a como vimos en la entrada de Esteganografía en ficheros comprimidos podemos también ocultar archivos dentro de un comprimido. También cambiaríamos el valor de la cabecera del archivo a ocultar a 0x00. El único cambio es que ahora al abrirlo con el explorador de archivos muestra un error, pero una persona corriente no sospecharía de dicho error, pensaría que el archivo está corrupto o algo, e intentaría recuperarlo con “rar r archivo.rar”. Esto crearía un nuevo comprimido con los archivos que haya detectado dentro del rar que se creía corrupto. Por supuesto, el archivo que queríamos ocultar no deja ni rastro en ese nuevo comprimido. Igualmente, si directamente extraemos el comprimido con “rar x archivo.rar” sin repararlo, saldría un error en la terminal pero extraería sin ningún problema todos los archivos a excepción del que hemos querido ocultar, que de nuevo no quedará ni rastro de él.

AlDr0id

Saltando el bloqueo de pantalla en Android mediante ADB

Hola de nuevo. En esta entrada veremos de una forma muy sencilla cómo saltar el bloqueo de pantalla en un dispositivo Android. Lo voy a enfocar desde mi propia experiencia, ya que es esta la que me ha llevado a elaborar la entrada.

Hace relativamente poco llegó a mis manos una tablet, de la cual el dueño no recordaba el patrón de desbloqueo por llevar bastante tiempo sin usarla, y claro, “tú que eres informático y sabes, desbloquéame la tablet que no me acuerdo de la contraseña”. Total, que me encuentro con dicha tablet en mis manos y un patrón que bypassear.

Ya había tenido experiencia antes quitando patrones y contraseñas de bloqueo en Android por propio hobby así que pensé que sería tarea fácil, pero anteriormente lo había llevado a cabo con mi antiguo móvil, que estaba rooteado y ofrecía un amplio abanico de posibilidades que en este caso no tuve disponibles. Pregunté al dueño de la tablet que si estaba rooteada, y él me dijo “¿rutequé?”. No, no lo estaba. Mi primer impulso fue probar a entrar al modo recovery, y para saber la combinación de botones introduje la marca de la tablet en Google (Google es tu enemigo en cuanto a privacidad, pero tu mejor amigo en búsqueda de información) y ahí lo obtuve: Power + VolUp. Además había varios tutoriales en Youtube de cómo entrar al modo recovery, no tenía pérdida. Sin embargo, no funcionó, y a día de hoy que estoy escribiendo la entrada, que aún no he devuelto la tablet (pero sshh, que quiero probar más formas de intentar bypassear el bloqueo) soy incapaz de acceder al recovery ni estando 5 minutos pulsando los dichosos botones.

La razón por la que quería acceder al recovery es porque cuando comencé a jugar con mi antiguo móvil a quitarle el bloqueo de pantalla encontré un zip que podías usar como si fueras a flashear una rom al teléfono, y te permitía acceder a todo el sistema de archivos. Aquí os dejo el zip y la clave de cifrado es:

!1XqdZ_QyGfYsDJdOfZWEifaiA6lCqbzDR6v_OyBUIw0

El método empleado accediendo por el recovery y el que usé en este caso es el mismo, lo único en lo que difiere es la forma en la que accedes al sistema de archivos. Es decir, que si conseguís acceder al recovery y ejecutar el zip desde ahí, solo tendríais que borrar el fichero que indico casi al final de la entrada.

Como no fui capaz de acceder al recovery, no me quedó otra que probar con la tablet encendida, a ver si conectándola por cable al ordenador e intentando acceder mediante adb conseguía algo. Aquí quiero resaltar la importancia de tener un cable en buen estado para llevar a cabo este tipo de tareas, porque al principio estuve probando con un cable que según la posición conectaba o no (de esos que todos tenemos) y si no estabas todo el rato apretándolo solo cargaba la tablet pero el ordenador no lo reconocía. Cabe destacar también que empleé un SO Windows 7 para realizar esta tarea. Cuando cambié de cable el ordenador sí me indicó que había conectado un dispositivo USB pero que le era desconocido, así que busqué los drivers de Android para Windows 7 y me encontré con el proyecto en GitHub de koush que es más conocido por ser el creador de ClockworkMod. El enlace directo para la descarga del driver está aquí, es el que se encuentra abajo del todo en su proyecto de GitHub.

Tras instalar dicho driver ya reconoció la tablet y para mi sorpresa (grata sorpresa) la tablet tenía el modo depuración activado, algo que me facilitó enormemente el trabajo. Únicamente tuve que ejecutar desde el cmd el adb.exe que aparece en el GitHub anterior con el parámetro “shell” y me abrió una bonita shell con privilegios de root con la que poder jugar sin límite. Como ya sabía a lo que iba, me fui directamente al directorio /data/system que es donde se guardan los archivos que contienen el bloqueo por patrón y PIN (gesture.key) y por contraseña (password.key). Solo tuve que borrar el gesture.key porque el bloqueo era por patrón, y al realizar cualquier patrón en la pantalla de bloqueo se desbloquearía al instante.

Y hasta aquí llega la entrada de hoy, de nuevo cualquier duda preguntad sin miedo, que la idea es que todos aprendamos con estas entradas y mejoremos cada día.

Un saludo

AlDr0id

Esteganografía en ficheros comprimidos (Windows)

En esta entrada vamos a aprender cómo podemos ocultar información dentro de un fichero comprimido, pudiendo así ocultar uno o varios archivos que se encuentren en su interior.
Obviamente podemos ocultar archivos en un fichero comprimido mediante la técnica EOF que vimos en la anterior entrada, pero es conveniente siempre en todos los campos conocer varias formas de hacer las cosas.

Vamos a empezar hablando de los ficheros .zip. Se puede manipular un fichero .zip modificando su codificación con un editor hexadecimal, modificando el archivo tras el Text String “PK” penúltimo, donde aparecen los nombres de los archivos que hay dentro, sobreescribiendo en la parte hexadecimal los nombres con “0” (cero) para que no aparezcan como visibles los archivos dentro del comprimido al abrirlo con el explorador de archivos.

1
Comenzamos teniendo un archivo comprimido con estos tres ficheros
2
Aquí está la parte del archivo que tenemos que modificar
3
Cambiamos a cero el valor hexadecimal del nombre del archivo a ocultar

Sin embargo, esta forma de ocultación es muy poco útil, dado que descomprimiendo el fichero obtendríamos los archivos visibles y archivos de tipo indeterminado que corresponden a los que queremos ocultar, puesto que lo que se extrae es la codificación del archivo en sí, no los datos del índice final del comprimido.

4
Observamos que al extraer el archivo comprimido, el fichero que queríamos ocultar se ve con un tipo indeterminado

Además, si abrimos el comprimido con Winrar nos aparece aquel que hayamos ocultado solo que con un tipo indeterminado como hemos dicho antes. Pero esta pega tiene dos soluciones:

  1. Cifrar el archivo a la hora de realizar la compresión para así proteger los archivos (aquí ya hablamos de Cifrado y Criptografía, no de Esteganografía). Al cifrarlo con la compresión de 7zip no se ocultan los nombres de los archivos, sin embargo sí el contenido, pero sin embargo al comprimirlo con Winrar y especificar la opción “Cifrar nombres de archivo” cuando seteamos la contraseña, evitamos que se pueda acceder a los nombres de archivos además del contenido.
  2. Comprimirlo en formato .rar, ya que su estructura es distinta y es posible ocultar totalmente el archivo incluso extrayendo el contenido. Para ello, con un editor hexadecimal, modificamos en este caso la cabecera de los archivos. En un fichero .rar hay dos cabeceras, la del archivo en sí (de la que hablamos en la entrada anterior), que tiene un valor hexadecimal de 0x73 y se encuentra en el byte número 10 del archivo, y la de cada archivo, con un valor de 0x74 que se encuentra 30 bytes antes del nombre de cada archivo. En este caso, lo que hay que hacer es cambiar el valor del byte de la cabecera del archivo (el 0x74) al valor nulo (0x00), y de este modo al abrirlo con Winrar no nos detecta el archivo que hemos ocultado puesto que la cabecera no está y Winrar no lo detecta como ningún tipo de archivo, y lo mismo ocurre al extraerlo, no se extrae puesto que Winrar no lo detecta.
5
Comenzamos con el mismo contenido del comprimido pero esta vez con la extensión .rar
6
Modificamos el byte de cabecera del archivo a ocultar a cero, y observamos que al abrir el comprimido con Winrar no nos detecta el archivo oculto
7
Tampoco nos extrae el archivo oculto al extraer con Winrar

Si por el contrario lo extraemos con 7zip obtendremos solo los archivos que mantienen la cabecera y no hemos querido ocultar, con la desventaja de que al extraerlo nos tira un error porque “detecta información adicional”, el/los archivos que queremos ocultar. También ocurre que si el archivo que queremos ocultar y del cual borramos el byte de cabecera no está al final del archivo en la codificación, 7zip no extraerá más que los archivos que hay hasta ese “código sin identificar” del archivo que queremos ocultar, por tanto no obteniendo todos los archivos que se esperan se sospecharía de que algo estuviera escondido.

8
Al extraer con 7zip vemos que solo aparecen los archivos que había antes del fichero que queríamos ocultar, en este caso solo fichero de texto, y además nos aparece el error de que hay información sin determinar al final del archivo

Por tanto lo ideal para llevar a cabo esta técnica, en caso de que queramos hacerlo lo más indetectable posible, es hacer que el/los archivos que queramos ocultar estén al final del comprimido (si está ordenado alfabéticamente, la solución puede ser cambiar sus nombres por “zzz” o algo por el estilo). Al igual que en la entrada anterior, hay que tener en cuenta el tamaño del fichero comprimido y de los archivos a ocultar. Es decir, si en nuestro comprimido queremos ocultar un vídeo de 200MB y en ese comprimido tenemos además un fichero de texto de 2KB y un archivo de audio de 4 MB, va a resultar raro que el comprimido ocupe por ejemplo 199MB si alguien que abre el archivo o lo extrae observa que los archivos que tiene ocupan 4MB y 2KB. Por tanto, si queremos ocultar un vídeo así, sería conveniente ocultarlo en un comprimido con películas o archivos de gran tamaño para así hacerlo lo más indetectable posible.

De nuevo cualquier duda estamos aquí para resolverla.

Un saludo

AlDr0id

Esteganografía con técnica EOF (End Of File) (Windows)

Después de un largo tiempo sin subir entradas seguimos con la serie de entradas sobre Esteganografía. En esta y en la siguiente vamos a hablar sobre Esteganografía en formato de ficheros. Esta vez para ocultar la información nos vamos a valer de la forma en que son leídos los archivos.

Cada archivo tiene una cabecera o “header” en inglés, y una marca de final de fichero o “end of file”. Cuando por ejemplo un visor de fotos abre una imagen con extensión “.jpg”, mira que al comienzo del archivo esté la cabecera correcta que para los archivos jpg es “ÿØÿà” y va leyendo toda la información del archivo hasta que llega a la marca de final de fichero, que en este caso es “ÿÙ”.

12
En caso de que la cabecera fuera la de un .png que en este caso es sencilla, es “PNG”, pues leería el archivo hasta encontrar la marca de final de fichero, que en este caso sería “|END”. Y así con todos los ficheros, ya sean de audio, ejecutables, vídeo… Teniendo cada uno una cabecera y final de fichero distintos. De esto nos vamos a aprovechar en esta entrada para ocultar la información que queramos, haciéndola a priori indetectable si tenemos en cuenta los pros y los contras que explicaremos al final.

Para esta técnica vamos a emplear la consola de comandos, y lo ideal sería que tuviéramos ambos archivos (el que vamos a ocultar [archivo-oculto], y dónde lo vamos a ocultar [archivo-camuflaje]) en el mismo directorio. Para llevarlo a cabo tenemos que introducir “copy /b archivo-camuflaje + archivo-oculto archivo-final” y con esto lo que hacemos es copiar bit a bit lo que contienen ambos archivos, con archivo-camuflaje primero que será el que se vea a simple vista, y obtener archivo-final. Se puede llevar a cabo también con “type archivo-oculto >> archivo-camuflaje” con el único cambio de que aquí modificamos el archivo-camuflaje inicial y no creamos un archivo-final.

3
Comenzamos teniendo un archivo comprimido y una imagen
4
En el archivo comprimido tenemos un fichero de texto

5

6

7
Tras lanzar el comando, observamos el nuevo fichero creado
8
Observamos el final de fichero del .jpg y justo después vemos PK, que es la cabecera del .zip, y a continuación todo el archivo comprimido
14
Aquí lanzamos el comando de la segunda forma que habíamos descrito

Para obtener los archivos basta con abrir el archivo que tiene la información oculta con un editor hexadecimal (para más comodidad, también sirve el bloc de notas pero es menos visual) y copiar lo que haya al final del archivo y corresponda al archivo oculto, y crear un nuevo archivo con esa información y renombrarlo con la extensión correspondiente.

9

10
Copiamos y pegamos en un nuevo fichero el contenido del final, lo correspondiente al archivo comprimido

11

13
Y tras guardarlo y darle la extensión que le corresponde, volvemos a tener el archivo del principio

Para que esta técnica sea lo más indetectable posible, hay que tener en cuenta que el tamaño del archivo-final va a aumentar proporcionalmente al tamaño del archivo-oculto que añadamos a él. Por ello, si queremos ocultar una foto de 3MB, elegiremos por ejemplo como archivo-camuflaje un vídeo de 120MB y no un archivo de Word de 20KB.

Como siempre, cualquier duda no dudéis en preguntarla. Aquí estamos para ayudar en todo lo necesario.

Un saludo y hasta la próxima entrada

AlDr0id

“Ave Maria” de Trithemius

Hola de nuevo. En esta nueva entrada, la cual será breve y concisa, trataremos la técnica esteganográfica del Ave Maria de Trithemius.

Para comenzar hablaremos un poco de quién es este Trithemius: Johannes Trithemius fue un abad que vivió en el siglo XV en Alemania. Es considerado por muchos como el creador de la Esteganografía, por su obra “Esteganografía” publicada en 1500 en la que trataba esta técnica que vamos a ver a continuación. Hizo importantes trabajos acerca de la codificación de mensajes, por lo que esta técnica se podría considerar también como una forma de cifrado, pero aquí la veremos en el sentido de la ocultación de información. Para que veáis que esto de la Esteganografía no es algo que hayáis visto por primera vez leyendo en internet, cabe destacar que la técnica que vamos a tratar aparece en la película española “El día de la bestia” ya que es el método que emplean para decodificar el mensaje, y para los aficionados a la lectura les gustará saber que en “El péndulo de Foucault” de Umberto Eco, en el capítulo 19 el texto Templario que descifran se lleva a cabo también mediante esta técnica.

Y ahora vamos a hablar de lo que realmente nos interesa, que es la técnica en sí:

Consiste en codificar un texto empleando distintos alfabetos, en los cuales cada letra correponde a una palabra o grupo de palabras, relacionadas con una oración, de tal modo que cuando se codificaba el mensaje parecía que lo que estaba escrito era una gran oración y no que hubiera un mensaje oculto. Obviamente si el texto era muy extenso, aparte de que la longitud del texto con el mensaje oculto era muy grande, se podría percibir la repetición de palabras que podrían dar lugar a sospechas.

AveMariaTrithemius
Aquí tenemos uno de los alfabetos que se emplean

La seguridad actual de esta técnica es muy baja, pero siempre se puede tener como base para poder desarrollar otras técnicas mejores a lo largo del tiempo.

Y para finalizar aquí os dejo este enlace a una herramienta desarrollada por Hecky, del cual he aprendido la mayor parte de lo que sé sobre Esteganografía, así que os recomiendo que le echéis un vistazo a la herramienta y la probéis, y a toda su página en general. La herramienta codifica y decodifica mensajes mediante esta técnica del Ave Maria de Trithemius, para así hacer menos costosa la ocultación y descubrimiento de la información oculta.

Muchas gracias por leer esta entrada, y nos vemos en la siguiente.

AlDr0id

Esteganografía en sistemas operativos y ficheros (Windows)

Buenas de nuevo a todos. En esta entrada nos adentraremos en técnicas esteganográficas ya algo más avanzadas. Comenzaremos a trabajar con técnicas llevadas a cabo ya en un ordenador para la ocultación de información y archivos en el mismo. Estas primeras entradas se llevarán a cabo bajo un SO Windows 7.

Para comenzar hablaremos de una técnica pero solo dejándola en la teoría, sin ejecutar ningún ejemplo práctico. Esta técnica se aprovecha de la limitación del sistema de archivos basándose en la forma que ocupan espacio los archivos en los sistemas de almacenamiento según el filesystem con el que esté formateado. Esto es el espacio que se ocupa de cada bloque. Por ejemplo el sistema de archivos FAT16 emplea bloques de 32 KB, algo que se continúa empleando en FAT32, y el formato ext2 que se emplea en Linux tiene un tamaño de bloque modificable al crear el sistema de archivos, desde los 512 bytes hasta los 4KB. Esto hace que al copiar un archivo dentro, como los archivos no tienen un tamaño exactamente igual a un número exacto de bloques, queden bloques sin ocuparse completamente pero reservados para dicho archivo, lo que permitiría ocultar información dentro de ellos sin que fuera leída por el sistema debido a la fragmentación interna.

Vamos a explicar un poco qué es esto de la fragmentación interna. Se podría decir que es la división en bloques de la que hemos hablado anteriormente, de mayor o menor tamaño dichos bloques. Esto hace que los bloques sean de tamaño fijo. Por tanto, la fragmentación interna se basa en que un archivo que no ocupa un bloque completo porque su tamaño no llega a ocupar por completo el último bloque que contiene su información, se ” apropia” del bloque ya que el sistema de archivos no admite divisiones más pequeñas que las de los bloques en los que se divide, por tanto el espacio que queda libre dentro del bloque que no es el archivo puede servir para ocultar dicha información. Es un poco enrevesado pero tiene muy fácil explicación si lo comparamos con algo más corriente. Imaginad que tenemos una jarra de un litro de agua, y vasos de 400ml. Si comenzamos a llenar vasos (los bloques de datos) con ese litro de agua (el archivo) llenaremos dos vasos por completo y un vaso lo llenaremos hasta los 200ml, quedando 200ml libres (el espacio que queda libre en el bloque) y por tanto en ese espacio podemos meter por ejemplo aceite hasta llenar el vaso (información a ocultar).

Esta técnica parece muy útil y a priori indetectable, pero sin embargo no todo son buenas noticias. Esto tiene la pega de que si luego el archivo se copia a otro lugar, la información ocultada no se copiaría puesto que no forma parte del archivo sino del bloque que lo contiene y además el archivo se podría copiar a otro sistema de archivos distinto con la consecuente reorganización de los bloques, cosa que por otra parte es una ventaja a la hora de que la información ocultada no sea sustraída. La información oculta se pierde igualmente si el fichero aumenta de tamaño debido a la reorganización de bloques, por tanto para ocultar información se deberán escoger archivos que no varíen de lugar y tamaño. Esto es, básicamente, que si quieres ocultar de este modo información no lo hagas en un archivo que vayas a pasar del ordenador a un pendrive y no lo hagas en un archivo que vayas a modificar.

El modo que voy a citar ahora es para valientes, y realmente poco recomendable pero aun así existe por tanto lo citaré. Esta forma de ocultar información dentro del sistema de archivos es borrándola. Es algo arriesgado pero si se usa con cuidado puede resultar eficaz. Esto se basa en que cuando borramos un archivo, solo se eliminan los enlaces a los bloques que el archivo ocupaba, marcándose estos como libres y por tanto objeto de sobreescritura, pero si dicha sobreescritura no se lleva a cabo, los datos permanecen intactos y recuperables con software de recuperación de datos, que lo que hacen es escanear el sistema de archivos y recuperar aquellos bloques que no estén sobreescritos. Recalco la parte de que es realmente poco recomendable, pero si estáis seguros de que no vais a tocar la parte del sistema de archivos donde se encuentran los bloques que queréis ocultar y de los que habéis borrado los enlaces, adelante porque nadie se espera que para ocultar información la borres.

Y por último, y ya entrando en algo más práctico, hablaremos de cómo emplear los ADS (Alternate Data Stream) o Flujos Alternativos de Datos para darle este uso esteganográfico que pretendemos. Primero hablaremos muy brevemente del uso de los ADS. Son característicos del sistema de archivos NTFS, y sirven para almacenar metadatos en un fichero, asociando uno o varios archivos de cualquier extensión al archivo inicial, sea cual sea también su extensión, por tanto se puede ocultar información sin necesidad de crear un archivo nuevo. Es notable decir que estos flujos son invisibles en el explorador de archivos (esto ya os va gustando más eh?) y ahora explicaremos cómo llevarlo a cabo y cómo descubrirlos también.

La forma de llevarlo a cabo es escribiendo en la consola de comandos “type archivo1.xxx>archivo2.yyy:archivoOculto.xxx” ocultando así enlazándolo con el archivo2, el archivo1 elegido, y usando como contraseña (por llamarlo así, realmente es el nombre de la ruta hasta el archivo oculto) archivoOculto. Y para obtener ese archivo oculto escribimos “more<archivo2.yyy:archivoOculto.xxx”. Veámoslo en un ejemplo práctico:
Inicio

 

 

 

En esta imagen observamos que tenemos una foto y un documento de texto, ocultaremos el txt en la foto.

 

 

 

 

Nudo

 

Introducimos el comando con los parámetros antes mencionados.

Aquí empleamos también dir /r, que es el comando que nos permite ver ese enlace que existe y observando que el enlace (la contraseña como la hemos llamado antes) se llama Probando.

Desenlace

 

Ahora para obtener el texto antes oculto, introducimos el comando también mencionado. Para mayor claridad, borramos el archivo de texto que contenía el “Hola Mundo!” y observamos que sigue apareciendo el mensaje oculto, y por último observamos que en el explorador de archivos únicamente aparece la foto, ningún archivo más.

Tenemos que tener en cuenta un aspecto importante del comando more y es que daña la información al mostrarla por consola. Con esto hay que tener cuidado ya que cuando únicamente ocultamos texto no hay problema ya que no se modificará la información (por eso hemos puesto este ejemplo) pero si queremos ocultar por ejemplo una imagen o un archivo de audio (o cualquier otro), aparte de que por pantalla se mostrará la codificación del archivo (probad a abrir una imagen con el bloc de notas y disfrutad del festival de símbolos), esa codificación estará dañada y si la copiamos para extraer el archivo no saldrá que está dañado y no nos permitirá abrirlo. Para solventar esto se emplearán otras técnicas que veremos en entradas posteriores.

Y hasta aquí esta parte, gracias y cualquier duda no dudéis en preguntar

AlDr0id

Tipos de Esteganografía

Hola de nuevo. En esta entrada comenzaremos a explicar parte de los distintos tipos de Esteganografía que hay a la hora de ocultar información.

Para comenzar haremos distinción entre dos tipos:

Esteganografía pura: No emplea estego-clave por lo que se presupone que el guardián no puede distinguir si es un mensaje normal o información oculta. Aquí encontramos por ejemplo la imagen que dejé en la entrada de introducción, la cual ocultaba por la técnica EOF un archivo comprimido, que comentaremos más adelante, y por tanto no requería de ninguna contraseña, solo saber cómo revertir la estego-función.

Esteganografía de clave secreta: Se necesita una clave que tanto emisor como receptor deben conocer, aquí por ejemplo podemos encontrar el programa jphs que permite ocultar archivos en una imagen en formato jpg añadiendo además una contraseña para revelar la información.

Y profundizando un poco más podemos encontrar más tipos concretos:

Esteganografía en texto: Consiste en ocultar información en un texto como su nombre indica, de forma que algunas o todas las palabras de dicho texto sirvan para descifrar el mensaje, como por ejemplo un algoritmo que en base a las palabras que aparezcan codifique distintas letras (si aparece casa = a, si aparece caballo = b…), como spammimic que genera un mensaje de spam con el mensaje oculto de forma que sea imperceptible a simple vista si no se emplea el algoritmo a la inversa, por tanto se puede enviar dicho mensaje por correo, y cualquier persona que lo intercepte lo interpretará como spam y lo descartará, excepto la persona que conozca cómo obtener la información del mensaje. También se puede llevar a cabo dando a notas musicales el valor de una letra y codificar así mensajes, una forma muy original de ocultar información

Musicales
En esta imagen se muestra cómo codificar letras en forma de notas musicales

Otra forma de ocultar información en un texto es mediante un Código Abierto, textos que aparentemente no entrañan ningún secreto ya que pueden tratar de cualquier tema, pero que si se sabe cómo interpretarlo, se puede extraer la información de este. Hay distintos procedimientos para llevar a cabo este tipo de Esteganografía:

  • Señales o pistas: como su nombre indica, son ciertas palabras que aparecen en un texto para avisar a alguien de una acción que debe realizar. Aquí encontramos el ejemplo del capítulo de los Simpson en el cual Homer lee un artículo del periódico y descubre que, si no recuerdo mal, leyendo la primera letra de cada párrafo se encontraba con un mensaje de su madre que le decía que fuera a medianoche a un lugar.

  • Cifradores nulos o Null ciphers: consiste en emplear un algoritmo de ocultación a las letras de las palabras que se desea esconder distribuyéndolas por todo el texto de una manera concreta. Un ejemplo de esto son los acrósticos, poemas en verso que seleccionando la letra de inicio, la del medio o la del final de un verso de forma vertical obtenemos la información deseada. Esta técnica se ha visto en textos en periódicos como en mayo de 2003 que Federico Trillo, entonces Ministro de Defensa, ocultó el siguiente mensaje acusando al Estado Mayor de la Defensa de un accidente aéreo ocurrido recientemente:

    CifradorNulo

  • Código en jerga: consiste en sustituir símbolos o expresiones por otras no conocidas o no comunes y que solo conozcan un determinado número de personas que lo usen. Está a caballo entre criptografía y esteganografía. Un ejemplo es el “Tora! Tora! Tora!” que empleó la armada japonesa para atacar Pearl Harbor.

  • Rejillas: es similar a los Null ciphers pero sin un patrón determinado. Consiste en ocultar la información de forma que para descubrirla haya que emplear la llamada “rejilla” para obtenerla. Un ejemplo para explicarlo son las clases pobres de Gran Bretaña en el siglo XIX que hacían agujeros a las letras del periódico de modo que al recuperar las letras se recuperaba el mensaje que la persona que había agujerado las letras había codificado. Otros modos de emplear la plantilla podía ser ir girándola cada vez que se obtenía una letra o una pista, como el mapa de Piratas del Caribe que podemos ver en la siguiente imagen:mapaPDC

 

Y aquí terminamos la Esteganografía en texto. En siguientes entradas continuaremos con los distintos tipos de Esteganografía que quedan.

Gracias y hasta la próxima entrada!

AlDr0id

Introducción a la Esteganografía

Comenzamos con las entradas sobre Esteganografía, basándome en la información que recopilé y empleé en la charla que di el pasado viernes 26 de febrero en la Facultad de Informática de la Universidad Complutense de Madrid. Próximamente subiré el vídeo de la charla para que podáis verla.

Para comenzar, definiremos la Esteganografía como la ocultación de información en un canal encubierto con el propósito de prevenir la detección de un mensaje oculto. Sobra decir que se oculta en un objeto. No debemos, por tanto, confundirlo con la Criptografía, que se podría decir que oculta información desde el punto de vista en el que no sabemos de qué se trata si no tenemos la clave para descifrar la información (importante emplear cifrar y descifrar, y no encriptar y desencriptar ya que son una mala traducción del inglés).

Y ahora un poco de historia. No nace con la informática ni mucho menos, ya que lleva siendo usada desde hace miles de años para trasladar mensajes de forma segura, como por ejemplo el uso de animales o esclavos para enviar información confidencial entre reinos cortando el pelo del animal o el pelo de la cabeza del esclavo, para después grabar algo en la piel, y esperar a que este creciera de nuevo para enviarlo al otro reino. Cuando llegaba allí se le cortaba el pelo de nuevo y se descubría el mensaje. Otro ejemplo es el experimento de escribir algo en un papel con zumo de limón y esperar a que se seque, para después aplicar el calor de una llama sobre el papel (sin quemarlo, obviamente) provocando la combustión del ácido cítrico para que vuelva a aparecer el mensaje que habíamos escrito.

Ejemplo de cómo descubrir el mensaje oculto del experimento mencionado anteriormente

La Esteganografía es una téncica muy valiosa para espías, activistas, militares e incluso terroristas desgraciadamente, ya que si no se conoce la estego-función y la estego-clave (si la hay) es extremadamente difícil determinar si un elemento es camuflaje de un mensaje o si simplemente es algo irrelevante (de lo que hablaremos a continuación).

Elementos del proceso de ocultación mediante Esteganografía

A la hora de ocultar la información, se emplean varios elementos: el mensaje y el camuflaje en el que irá dicho mensaje, la función estego (que es la técnica que se emplea para que el elemento oculto pase desapercibido) y en algunos casos una clave para descifrar la información (uniendo por tanto Esteganografía y Criptografía).

El proceso es el siguiente:

  • El camuflaje o estego-objeto (con el mensaje oculto en su interior) viajará por un canal previsiblemente inseguro (por ejemplo una página web, o el camino entre dos reinos del ejemplo del principio), pudiendo ser interceptado por algún otro receptor (llamado guardián) distinto al que va dirigido el mensaje.

  • El objetivo es que el guardián sea incapaz de, o bien darse cuenta de que el camuflaje guarda un mensaje oculto, o en caso de darse cuenta, que no pueda obtener el mensaje.

  • Una vez llega a su destino, el receptor aplicará la estegofunción  de forma inversa y la estegoclave (si es que la había), separando el camuflaje del mensaje, y obteniendo así la información buscada.

    estego
    Aquí podemos observar un esquema de la transmisión de información oculta mediante Esteganografía

Normalmente se cumple una terna en la que si se mantiene el equilibrio la función de ocultar la información se cumplirá. A mayor cantidad de información la técnica es menos robusta y los estego-objetos no pasan tan desapercibidos, y por el contrario a mayor robustez menor cantidad de información puede ser ocultada normalmente. Por ejemplo, basándonos en el tamaño del archivo, si una imagen ocupa 2MB y al ocultar la información pasa a ocupar 20MB, saltará a la vista que esa imagen oculta algo. Esto puede deberse por ejemplo a que hayamos ocultado información mediante la Técnica EOF (End Of File) que veremos más adelante, pudiendo por ejemplo ocultar un fichero comprimido en una imagen, aumentando así el tamaño del archivo sin modificar la imagen que se visualiza.

estego-terna
Aquí podemos observar la terna antes mencionada, en la que cuanto más te acercas a los extremos más te separas de otro, cumpliéndose lo explicado

Y para finalizar la entrada, sin aún haber explicado ninguna técnica más en profundidad, os dejo una imagen que oculta algo, de una forma que he explicado en el párrafo de arriba. Si alguien se anima a investigar (porque así es como más se aprende) y a obtener lo que quiera que esté oculto en dicha imagen, que comparta una captura de pantalla o una foto del contenido en un comentario, o vía Twitter, Telegram o mandándome un e-mail. Todo esto lo podéis encontrar en la sección de Contacto del blog.

Muchas gracias y hasta la próxima entrada.

AlDr0id