sábado, 29 de diciembre de 2018

Criptografía (CXX): Reto 24

Otro reto de dificultad media sobre criptografía. En esta ocasión se ve involucrado un criptosistema clásico muy relacionado con el código morse.

Como siempre, se admiten soluciones en forma de comentarios a esta entrada. Pasado un tiempo iré proporcionando pistas para su resolución, un máximo de tres, y posteriormente actualizaré este post con la solución.

Reto 24: "Morse".

Para descifrar el contenido del archivo asociado al reto y así obtener la solución necesitarás la clave: U0FNVUVM.

Dificultad:
Tipo:           Criptografía.

Recursos:   reto24.wav.

******** 30/12/2018
Pista 1:     Si sabes o averiguas quién es la persona que aparece en la imagen que ilustra este post entonces también sabrás el criptosistema involucrado en este reto. ¿Es la clave que se proporciona adecuada para este último?, ¿estará codificada de alguna manera?. La clave también tiene mucho que ver con el código morse.

******** 02/01/2019
Pista 2:    Una vez decodificado el código morse del audio enseguida se reconoce y, por tanto, se confirma el criptosistema empleado. Lo anterior se puede hacer de forma manual o mediante algún software especializado, lo que es mucho más cómodo y rápido.
A partir del criptograma y con la clave que se proporciona en el enunciado decodificada, disponer los caracteres del criptograma en sus correspondientes columnas y revertir la transposición realizada de las mismas es inmediato, por lo que sólo estamos a un paso de obtener el texto en claro. 

******** 05/01/2019
Pista 3:     Si has revertido la fase de transposición, es posible obtener el texto en claro a partir de la disposición de los caracteres del criptograma antes de dicha fase mediante un análisis de frecuencias, lo que se puede realizar manualmente, pero también es una buena idea dejárselo a un software especializado.

******** 19/01/2019
Solución.

******** PRÓXIMO RETO
Reto 25:   "El tamaño sí importa (II)".

jueves, 20 de diciembre de 2018

Criptografía (CXIX): Solución Reto Cybercamp "La orden del Temple"

En este post la solución a otro de los retos de criptografía de Cybercamp 2018 Online.

Este reto tiene el título "La orden del Temple" y mi valoración sobre su dificultad es: .

Su enunciado dice lo siguiente:


Se incauta a un sospechoso de terrorismo su equipo, dentro de éste se encuentran ficheros que se podrían considerar de vital importancia para continuar con la investigación, pero muchos de esos ficheros están cifrados y se sabe que mediante PGP simétrico.

Gracias a la investigación del sospechoso tus compañeros te han dado las siguientes pautas que sigue el sospechoso a la hora de crear sus contraseñas:

- Son de longitud de 6 a 7 caracteres.
- Sólo contienen letras minúsculas.
- Sólo se utilizan estas letras: eghotu.
No se repite ninguna de las letras de la contraseña.
- Algunas de ellas contienen dos números entre estos: 0134.

Tu trabajo será intentar descifrar el fichero gracias a la investigación realizada sobre el sospechoso y a los datos proporcionados para determinar si el contenido es de vital importancia para la investigación en curso.

Solución: Reto muy parecido a dos de los últimos de los que he tratado en este blog ("Really???" y "BAPHOMET", respectivamente), pero intentaré aportar alguna novedad en su resolución.

Como recurso asociados al reto nos dan el archivo medium_11.gpg, pero: ¿Qué tipo de archivo es?. Aunque el enunciado del reto y su extensión nos dan una pista muy importante, utilizo 'TrID', una utilidad para averiguar el tipo de fichero a partir de su firma:
Por lo que deduzco que se trata de un mensaje cifrado con clave simétrica PGP.

Como primer paso para intentar 'crackear' la contraseña con la que descifrar el mensaje que contiene el archivo asociado al reto (medium_11.gpg) obtengo el hash correspondiente al mismo. Para ello utilizo 'John the Ripper', de la siguiente manera:
Ahora, como segundo paso, genero el diccionario con la pautas seguidas por el sospechoso a la hora de crear sus contraseñas, o, al menos, algo parecido :). Para ello utilizo el siguiente script de python:

import wordlist

f = open('diccionario.txt','w')

generator = wordlist.Generator('eghotu0134')

for entrada in generator.generate(6,7):
    f.write(entrada+'\n')

f.close()
Con el archivo hash (medium_11.hash) y el diccionario (diccionario.txt) así obtenidos, ejecuto 'john' para obtener la contraseña:

john --wordlist=diccionario.txt medium_11.hash
Parece que la contraseña con la que descifrar el mensaje que contiene el archivo asociado al reto (medium_11.gpg) es "eg1u03".

El siguiente paso consiste en descifrar el mensaje:
Al abrir el fichero descifrado (medium_11) con un editor hexadecimal o el Bloc de notas vemos que se trata de una archivo de imagen .png:
Y ya el último paso consiste en decodificar los caracteres del alfabeto templario que figuran en la imagen. Para ello utilizo una herramienta online especializada:
Por tanto, la Flag es: ERESMUYGOLOSO.

sábado, 15 de diciembre de 2018

Criptografía (CXVIII): Solución Reto 23

El  enunciado del reto de criptografía que puse en este post era el siguiente:

"En una memoria USB incautada a un sospechoso se ha encontrado el archivo asociado al reto. Parece que ese fichero contiene una imagen que podría, a su vez, contener una clave que el sospechoso habría recibido para acceder a un servicio en la nube, pero el archivo está protegido mediante una contraseña.

En la memoria USB incautada se ha encontrado una lista de contraseñas en claro que el sospechoso utiliza para proteger su información, pero ninguna de ellas ha servido para acceder al fichero asociado al reto, y tampoco al servicio en la nube. Sin embargo, todas estas contraseñas siguen un mismo patrón:

- Son de longitud 8.
- Cada una de las contraseñas esta formada por cuatro caracteres y por cuatro dígitos.
- Los caracteres utilizados están siempre en mayúsculas y se corresponden con los siguientes: BHMP. En una misma contraseña no se repite ningún carácter.
- Los dígitos utilizados son los siguientes: 0347. En una misma contraseña no se repite ningún dígito.


El acceso al servicio en la nube es vital para continuar con la investigación. ¿Puedes acceder a la imagen que contiene el archivo asociado al reto y obtener así la clave que ésta contiene?".

Solución: Decía en la primera pista que puse para intentar ayudar a resolver este reto que aunque por el contexto de éste es muy fácil deducir la contraseña del archivo reto23.zip, si no nos damos cuenta de cuál es dicha clave podemos generar un diccionario con las permutaciones de los 4 cuatro caracteres y 4 dígitos dados (BHMP0347).

Pare ello utilizo 'pydictor',una herramienta programada en python para construir diccionarios para ataques de fuerza bruta, de la siguiente manera:
Tal y como se ve en la figura anterior y también decía en la citada primera pista, como se trata de permutaciones de 8 elementos (P8), el diccionario obtenido (diccionario.txt) tiene P= 8! = 40.320 entradas.

Lo siguiente que tenemos que hacer para 'crackear' la contraseña del archivo zip asociado al reto es obtener el hash correspondiente al mismo. Para ello utilizo 'John the Ripper', de la siguiente manera:
A partir de los dos archivos así obtenidos (diccionario.txt y reto23.hash) ejecuto john y obtengo la contraseña:
john --wordlist=diccionario.txt reto23.hash
Por tanto, la contraseña del archivo reto23.zip es "B4PH0M37", ya decía que no era muy difícil deducirla :).

Una vez conseguida la contraseña extraemos la imagen (reto23.png) que contiene el archivo zip.

A la vista de esta imagen enseguida reconozco caracteres correspondientes al alfabeto templario (ya conté en un post de este blog la historia, sea cierta o no, que ha inspirado este reto y en el que hablé del cifrado templario).

Utilizando una herramienta online para ello, obtengo el texto en claro correspondiente:
Es decir, ahora tenemos los siguientes caracteres:

OZXOZEVVH:
   QZXIFVHWVNLOZB

¿Qué puede significar esto?. Pues bien, parece claro que se trata de un texto cifrado, pero: ¿Cuál es el criptosistema que se ha empleado?. La segunda y tercera pistas que puse para intentar ayudar a resolver este reto nos dan la clave para deducirlo, ya que la imagen parece ser el reflejo en un espejo de la que sirve para ilustrar los posts de este reto:
Y el criptosistema de sustitución monoalfabética simple al que también se le conoce como "método de espejo" es el Atbash.

Utilizando otra herramienta online, obtengo el siguiente texto en claro:
Por tanto, la solución a este reto es: JACQUESDEMOLAY, el último Gran maestre de la orden del temple.

******** PRÓXIMO RETO
Reto 24: "Morse".

viernes, 7 de diciembre de 2018

Criptografía (CXVII): Solución Reto Atenea "Really???"

En este post la solución al sexto reto de "Criptografía y Esteganografía" de la plataforma ATENEA del CCN-CERT con desafíos de seguridad.

En concreto, este sexto reto tiene el título de "Really???" y tras su resolución se obtienen 425 puntos (Dificultad: ).

Su enunciado dice lo siguiente:


Durante el estudio del disco duro del ordenador de un sospechoso se ha encontrado un fichero cifrado mediante PGP. Al no encontrarse ninguna clave privada dentro del equipo se sospecha que dicho fichero esté cifrado mediante cifrado simétrico.

Por otro lado, todas las contraseñas obtenidas de varias cuentas del sospechoso (a partir de la investigación de su equipo) tienen las siguientes características:

- Son de longitud 6 o 7.
- Sólo contienen letras minúsculas.
- Sólo se utilizan estas letras: qwertyiopnmjk.
- No se repite ninguna de las letras de la contraseña.
- Algunas de ellas contiene únicamente un número entre estos: 013.

Ninguna de esas contraseñas ha servido para descifrar el fichero, pero quizás haya sido cifrado con una contraseña con estas mismas características.

No sabemos si el contenido del fichero es relevante para la investigación, pero sólo hay una forma de averiguarlo...
Pista! La lengua materna del dueño del equipo es el inglés
Solución: Parece claro que lo primero que debemos hacer es crearnos un diccionario de contraseñas que cumplan las características indicadas en el enunciado. Además, la pista que se nos proporciona parece indicarnos que para ello deberíamos partir de algún diccionario de passwords en inglés. El más conocido de estos último es 'rockyou'.

Por tanto, para obtener el diccionario con el que realizar el ataque de fuerza bruta utilizamos 'Grep' (una utilidad que busca en uno o más archivos de entrada las líneas que contienen una coincidencia con un patrón específico), de la siguiente manera:
Lo siguiente que tenemos que hacer para 'crackear' la contraseña con la que descifrar el mensaje que contiene el archivo asociado al reto (message.asc) es obtener el hash correspondiente al mismo. Para ello utilizamos 'John the Ripper', de la siguiente manera:
A partir de los dos archivos así obtenidos (diccionario.txt y message.hash) ejecutamos john y, si tenemos suerte, obtendremos la contraseña:

john --wordlist=diccionario.txt message.hash
Bueno, parece que ha habido suerte y que la contraseña es "monkey3".

Una vez conseguida la contraseña desciframos el mensaje:
Y obtenemos un fichero de texto (message.txt).

A la vista del contenido de ese archivo, sospecho que tiene información oculta y que para ello se ha utilizado la herramienta de esteganografía 'SNOW'. Intentamos recuperar la información escondida:
Buscamos en 'Google' los ingredientes de la receta anterior a ver que obtenemos:
La bebida en cuestión es el grog, y, conforme al fichero txt que contiene la receta, la solución al reto es: groggrog (recordar que hay que introducirla con formato flag{md5}).

jueves, 6 de diciembre de 2018

Criptografía (CXVI): Reto 23

Otro reto de dificultad media sobre criptografía. En esta ocasión se ven involucrados dos criptosistemas clásicos y una historia  muy curiosa (https://es.wikipedia.org/wiki/Baphomet), sea o no cierta.

Como siempre, se admiten soluciones en forma de comentarios a esta entrada. Pasado un tiempo iré proporcionando pistas para su resolución, un máximo de tres, y posteriormente actualizaré este post con la solución.

Reto 23: "BAPHOMET".

En una memoria USB incautada a un sospechoso se ha encontrado el archivo asociado al reto. Parece que ese fichero contiene una imagen que podría, a su vez, contener una clave que el sospechoso habría recibido para acceder a un servicio en la nube, pero el archivo está protegido mediante una contraseña.

En la memoria USB incautada se ha encontrado una lista de contraseñas en claro que el sospechoso utiliza para proteger su información, pero ninguna de ellas ha servido para acceder al fichero asociado al reto, y tampoco al servicio en la nube. Sin embargo, todas estas contraseñas siguen un mismo patrón:

- Son de longitud 8.
- Cada una de las contraseñas esta formada por cuatro caracteres y por cuatro dígitos.
- Los caracteres utilizados están siempre en mayúsculas y se corresponden con los siguientes: BHMP. En una misma contraseña no se repite ningún carácter.
- Los dígitos utilizados son los siguientes: 0347. En una misma contraseña no se repite ningún dígito.

El acceso al servicio en la nube es vital para continuar con la investigación. ¿Puedes acceder a la imagen que contiene el archivo asociado al reto y obtener así la clave que ésta contiene?.

Dificultad:
Tipo:           Criptografía.

Recursos:   reto23.zip.

******** 08/12/2018
Pista 1:     Aunque por el contexto del reto es muy fácil deducir la contraseña del archivo .zip asociado al reto, si no nos damos cuenta de cuál es dicha clave podemos generar un diccionario con las permutaciones de los 4 cuatro caracteres y 4 dígitos dados (BHMP0347). Como se trata de permutaciones de 8 elementos (P8), este diccionario tendrá P8 = 8! = 40.320 entradas. A partir de ahí 'John the Ripper' puede ser de utilidad.

******** 09/12/2018
Pista 2:     Si has accedido ya a la imagen que contiene el archivo .zip asociado al reto habrás observado que ésta parece ser el reflejo en un espejo de la imagen original, es decir, de la que ha servido para ilustrar este post.

******** 13/12/2018
Pista 3:     ¿A qué criptosistema clásico de sustitución monoalfabética se le conoce también como "método de espejo"?.

******** 15/12/2018
Solución.

******** PRÓXIMO RETO
Reto 24:   "Morse".