Ir al contenido principal

Criptografía (CLXXVIII): Solución Reto NeverLAN CTF 2020 "Crypto Hole"

En mi opinión, los retos de la categoría 'Crypto' de la edición de 2020 de la competición NeverLAN CTF presentan como media un nivel de dificultad muy bajo, pero creo que dicho nivel es adecuado teniendo en cuenta, como dije en el post anterior, que esta competición está orientada a estudiantes de secundaria.

En esta entrada pongo la solución al desafío que creo que es un poco más complicado de resolver que el resto, cuyo título es "Crypto Hole", y que mezcla diferentes tipos de criptosistemas. A este reto en concreto yo le asignaría un nivel de dificultad medio (☆☆):
Descargo el archivo comprimido asociado al reto (A_ffine_Cipher_here_3.zip) y extraigo los archivos que contiene con la contraseña que se indica, "NeverLANCTF".

Uno de ellos, "chal.txt", contiene el siguiente criptograma: "whzzdvyk: HmcxWGD0iKTI&OAmgv". Por el nombre del archivo .zip se puede sospechar que el texto en claro ha sido cifrado utilizando el llamado cifrado afín y pruebo a descifrarlo mediante la fuerza bruta utilizando una herramienta 'on-line':
Y parece que he obtenido la contraseña ("password: AfvqPZW0bDMB&HTfzo") para extraer los ficheros contenidos en el archivo comprimido "Two is better than one.zip" y pasar así al siguiente nivel.

Nótese que como la constante de decimación (a) es 1 también podríamos haber obtenido la password del archivo utilizando la fuerza bruta con el cifrado César:
Una vez extraídos los ficheros contenidos en el archivo comprimido "Two is better than one.zip", en el archivo "chal.txt" correspondiente a ese nivel se ve otro criptograma: "PASTNRQXX78DRDVI6KBD3SDFXXXXXXSWO". Desconozco qué criptosistema concreto se ha empleado para cifrar el texto en claro, pero creo que está claro que es de transposición y por el nombre del archivo .zip se puede sospechar que se trata de una transposición columnar doble, pero desconozco cuál es la clave utilizada. En muchos retos de esta competición, cuando se ve involucrada una clave, ésta suele ser "NEVERLANCTF" o algo similar, por lo que voy a probar a descifrar el criptograma utilizando una herramienta 'on-line' e introduciendo como clave la indicada o alguna similar:
Y, efectivamente, parece que he obtenido la contraseña ("PASSWORDV78DTNRI6KBD3SDFQXXXXXXXX"), sin la cadena "PASSWORD" inicial ni los caracteres "X" finales, para extraer los ficheros contenidos en el archivo comprimido "I'm on the fence with this one.zip" y pasar así al siguiente nivel.

Vale, supongamos que no hubiera podido inferir la clave empleada, ¿Podría haber hecho algo para obtener la password del archivo .zip que se esconde en el criptograma?. En ese caso se me ocurre que podría utilizar un ataque de fuerza bruta por diccionario, de la siguiente manera:

1.- Creo un diccionario utilizando los grupos de caracteres del critograma que formarían parte de la clave (los grupos correspondientes a caracteres, tres o menos, no resaltados en color rojo en "PASTNRQXX78DRDVI6KBD3SDFXXXXXXSWO"), es decir:  "TNR", "Q", "78D", "V", "I6K", "BD3" y "SDF". Para ello utilizo la herramienta "pydictor", de la siguiente manera:
Y ahora realizo el ataque de fuerza bruta utilizando el software "fcrakzip" y el diccionario generado:
Una vez extraídos los ficheros contenidos en el archivo comprimido "I'm on the fence with this one.zip", en el archivo "chal.txt" correspondiente a ese nivel se ve otro criptograma: "pw:Ea8oasod SA5egBlvsrVSvwr". En esta ocasión, por el nombre del archivo .zip se puede sospechar que se trata de un cifrado rail fence.  Para descifrar el criptograma utilizo una herramienta 'on-line':
parece que he obtenido la contraseña ("password:·VSEAS5aevg8Bwlovr") para extraer los ficheros contenidos en el archivo comprimido "Salad Time.zip" y pasar así al siguiente nivel.

Una vez extraídos los ficheros contenidos en el citado archivo .zip, en el archivo "chal.txt" correspondiente a ese nivel se ve otro criptograma: "knppwjor: cQGuVCd$TyOUPppXUnPX". Por el nombre del archivo .zip se puede sospechar que se trata del cifrado César, pero no consigo  descifrar el criptograma con la herramienta 'on-line' que he utilizado anteriormente.

Investigo por Internet y repaso las herramientas que suelo utiliza para resolver los retos de criptografía, y entre estas últimas encuentro el cifrado de César con clave ('Keyed Caesar'):
Es decir, se trata de una variante del cifrado César en la que no se utiliza el alfabeto estándar, sino que se usa uno en el que se escribe primero una palabra o frase que utilizaremos como clave (omitiendo los caracteres repetidos) y se completa ésta con el resto de caracteres del alfabeto estándar, es decir, los no utilizados en la palabra o frase que nos sirve de clave.

Intento el descifrado utilizando esa herramienta 'on-line' y, como he hecho también antes, con "NEVERLANCTF" como clave:
creo que he obtenido la contraseña ("password: gTLvCGk$HyRVSssXVaSX") para extraer los ficheros contenidos en el archivo comprimido "ROTten.zip" y pasar así al siguiente nivel.

Una vez extraídos los ficheros contenidos en el citado archivo .zip, en el archivo "chal.txt" correspondiente a ese nivel se ve otro criptograma: "cnffjbeq: r1Lqe*mkBBloS6EE%u5s". Por el nombre del archivo .zip se puede sospechar que se trata de un cifrado ROT13. Intento el descifrado utilizando una herramienta 'on-line':
parece que he obtenido la contraseña ("password: e1Ydr*zxOOybF6RR%h5f") para extraer los ficheros contenidos en el archivo comprimido "Viginere Equivent E.zip" y pasar así al siguiente nivel.

Una vez extraídos los ficheros contenidos en el citado archivo .zip, en el archivo "chal.txt" correspondiente a ese nivel se ve otro criptograma: "tewwasvh: jM7FTDP#DR5TM!&tfXBg". Por el nombre del archivo .zip se puede sospechar que se trata de un cifrado de Vigenère. Sin embargo, hay una cosa que no me cuadra mucho, ya que entiendo que la primera cadena del criptograma, "tewwasvh", se debería corresponder con la cadena "password" en el texto en claro, y ésto, como este sistema de cifrado es de sustitución simple polialfabética, sólo sería posible si el tercer y cuarto caracteres de la clave utilizada fuera el mismo y en concreto "E". En cualquier caso, intento el descifrado utilizando una herramienta 'on-line' especifica para este criptosistema:
parece que he obtenido la contraseña ("password: fI7BPZL#ZN5PI!&pbTXc") para extraer los ficheros contenidos en el archivo comprimido "Easy One.zip" y pasar así al siguiente nivel.

Nótese que, como la clave utilizada en el cifrado tiene un único carácter ("E", ahora entiendo el nombre del archivo .zip, "Viginere Equivent E.zip", y que esta letra sea la última de dicho nombre), en este caso el cifrado realizado sería equivalente a un cifrado César con un desplazamiento de cuatro caracteres:
Una vez extraídos los ficheros contenidos en el archivo "Easy One.zip", en el archivo "chal.txt" correspondiente a ese nivel se ve otro criptograma: "cGFzc3dvcmQ6IHZ4d0BadGV0I1pmQm5ZVnhKMUlN". Ni idea de cuál es el criptosistema empleado, pero por el título del archivo .zip no puede ser muy difícil. Por los caracteres empleados puede tratarse de código base64, por lo que utilizo una herramienta 'on-line' para decodificarlo (creo que a veces, como es el caso, se confunde la codificación con la criptografía, pero en fin...):
Una vez extraídos los ficheros contenidos en el archivo "Message indigestion.zip" utilizando la clave que se ve en la figura anterior, en el archivo "chal.txt" correspondiente a ese nivel se ve otro criptograma: "1f82cdf9195b31244721c6026587fb78". Por el nombre del archivo .zip, "Message indigestion", se puede sospechar que se trata de un hash MD5, lo que se ve reforzado por que, además, tiene 32 caracteres hexadecimales. Para obtener la password para pasar de nivel utilizo una herramienta 'on-line':
parece que he obtenido la contraseña ("password23") para extraer los ficheros contenidos en el archivo comprimido "for SHA dude" y pasar así al siguiente nivel.

Una vez extraídos los ficheros contenidos en el citado archivo .zip, en el archivo "chal.txt" correspondiente a ese nivel se ve otro criptograma: "57fc022fb8dbf1640e732c40e835f74e637526d8"Por el nombre del archivo .zip no me cabe ninguna duda de que se trata de un hash SHA. Para obtener la password para pasar de nivel utilizo la misma herramienta 'on-line' que la que he usado en el nivel anterior:
parece que he obtenido la contraseña ("applez14") para extraer los ficheros contenidos en el archivo comprimido "ONE more TIME" y pasar así al siguiente nivel.

Una vez extraídos los ficheros contenidos en el citado archivo .zip, en el archivo "chal.txt" correspondiente a ese nivel se ve un texto en claro más otro criptograma: "This is our world now...
Vvvyzshm fj tzylfvegn ehz ksh qwrwxs nlcecsagrv ubmdp qgvv momt sny lsdjk osmy grhc xoxk zgprjr... Ks pzij, lecv'w yrsv ctsz nbx w rhi kyea dmvr lqox{yyyiv0gLakvr}". Por el nombre del archivo .zip se puede sospechar que se trata de un cifrado 'one-time pad' (OTP) y, si es así, para descifrar el criptograma necesio una contraseña igual de larga que él.

Tras buscar en 'Google' el texto en claro "This is our world now..." enseguida veo que hay un párrafo del "Manifiesto Hacker" que empieza precisamente así:
A partir de ese texto cojo un número de caracteres de longitud igual o mayor que el criptograma, para que me sirvan como clave en el descifrado, y utilizo una herramienta 'on-line':
Por tanto la solución a este reto sería: flag{crypt0sRphun}.

Comentarios

Entradas populares de este blog

Criptografía (I): cifrado Vigenère y criptoanálisis Kasiski

Hace unos días mi amigo Iñaki Regidor ( @Inaki_Regidor ), a quien dedico esta entrada :), compartió en las redes sociales un post titulado "Criptografía: el arte de esconder mensajes"  publicado en uno de los blogs de EiTB . En ese post se explican ciertos métodos clásicos para cifrar mensajes , entre ellos el cifrado de Vigenère , y , al final del mismo, se propone un reto consistente en descifrar un mensaje , lo que me ha animado a escribir este post sobre el método Kasiski  para atacar un cifrado polialfabético ( conociendo la clave descifrar el mensaje es muy fácil, pero lo que contaré en este post es la forma de hacerlo sin saberla ). El mensaje a descifrar es el siguiente: LNUDVMUYRMUDVLLPXAFZUEFAIOVWVMUOVMUEVMUEZCUDVSYWCIVCFGUCUNYCGALLGRCYTIJTRNNPJQOPJEMZITYLIAYYKRYEFDUDCAMAVRMZEAMBLEXPJCCQIEHPJTYXVNMLAEZTIMUOFRUFC Como ya he dicho el método de Vigenère es un sistema de sustitución polialfabético , lo que significa que, al contrario que en un sistema de

Criptografía (XXIII): cifrado de Hill (I)

En este post me propongo explicar de forma comprensible lo que he entendido sobre el cifrado de Hill , propuesto por el matemático Lester S. Hill , en 1929, y que se basa en emplear una matriz como clave  para cifrar un texto en claro y su inversa para descifrar el criptograma correspondiente . Hay tres cosas que me gustan de la criptografía clásica, además de que considero que ésta es muy didáctica a la hora de comprender los sistemas criptográficos modernos: la primera de ellas es que me "obliga" a repasar conceptos de matemáticas aprendidos hace mucho tiempo y, desgraciadamente, olvidados también hace demasiado tiempo, y, por consiguiente, que, como dice  Dani , amigo y coautor de este blog, me "obliga" a hacer "gimnasia mental"; la segunda es que, en la mayoría de las ocasiones, pueden cifrarse y descifrase los mensajes, e incluso realizarse el criptoanálisis de los criptogramas, sin más que un simple lápiz y papel, es decir, para mi es como un pasat

¿Qué significa el emblema de la profesión informática? (I)

Todas o muchas profesiones tienen un emblema que las representa simbólicamente y en el caso de la  informática: " es el establecido en la resolución de 11 de noviembre de 1977  para las titulaciones universitarias superiores de informática, y  está constituido por una figura representando en su parte central  un  núcleo toroidal de ferrita , atravesado por  hilos de lectura,  escritura e inhibición . El núcleo está rodeado por  dos ramas : una  de  laurel , como símbolo de recompensa, y la otra, de  olivo , como  símbolo de sabiduría. La  corona  será la  de la casa real  española,  y bajo el escudo se inscribirá el acrónimo de la organización. ". Veamos los diferentes elementos tomando como ejemplo el emblema del COIIE/EIIEO (Colegio Oficial de Ingenieros en Informática del País Vasco/ Euskadiko Informatikako Ingeniarien Elkargo Ofiziala ) . Pero no sólo el COIIE/EIIEO adopta el emblema establecido en dicha resolución, sino que éste se adopta también como im