18 jul 2011

Cinco horas con guessit: El "legendary mode" para pasar el reto del #wgsbd2

Buenas a todos, la pasada semana al igual que muchos de vosotros dediqué un par de tardes que tenía libres a jugar con el genial CTF que los chicos de Security By Default tenían preparado para el evento Campus Party de Valencia 2011, #wgsbd2 (Felicidades, habéis hecho un trabajo excepcional). Dentro del CTF había una prueba sobre criptografía titulada "guessit" en la que proporcionaban un fichero de texto con contenido cifrado, nada más. En ese texto se daba por supuesto que se indicarían los "token" necesarios para pasar la prueba.

Tras darle unos minutos vueltas y vueltas a la cabeza sobre que tipo de cifrado se habría aplicado al texto, me cité con @hecky en el IRC que tenemos en Flu Project, para hacer un "brainstorm" en toda regla. Minutos más tarde habíamos sacado dos cosas claras, había una gran cantidad de puntos en este texto, una fecha (2010) y parecían repetirse ciertos patrones, además de algunas palabras destacables como "IPAJCAO".

En este punto sugerí a hecky que podría ser interesante verificar la frecuencia de aparición de los símbolos en el texto, para ver si podríamos encontrar una correspondencia entre esos símbolos que se repetían con frecuencia y las letras del alfabeto español, utilizando la siguiente tabla, en la que se pueden apreciar la frecuencia en la que en el idioma Castellano se utilizan las letras:

 

Esta idea dio que pensar a hecky, y me dijo...:

-¿Y si se trata de una conversión a una disposición de teclado diferente a la nuestra como Dvorak?

Yo, cabezón como de costumbre (:P), pensé que habría sido demasiado sencillo el reto pues, asi que descarté esta posibilidad e intenté generar mi propio diccionario de traducción. Para ello, desarrollé una herramienta en .Net que obtenía un listado con todas las letras que aparecen en un texto, y devolvía el nº de veces que aparecían, ordenados de menor a mayor:

Una vez obtenido el listado, la herramienta te permite asociar a cada letra encontrada en el texto, su equivalencia en lenguaje de salida. Por lo que uno a uno fui sustituyendo del símbolo de más apariciones al menos por las letras que aparecen en castellano con más frecuencia (tal y como se mostró en la gráfica anterior), descartando el símbolo "espacio":

Y el resultado tras convertir las letras:

¡Bien! Había obtenido los primeros resultados, se veían varias palabras en claro, y algunas que se intuían, lo que me vino perfecto para saber qué símbolos se correspondían con qué letra de nuestro alfabeto.

Así que abrí una hoja de excel, y fui probando distintas combinaciones de letras, hasta que llegué a la siguiente combinación que me hizo ver la luz:

  • N > E
  • U > F
  • Â > á
  • X > B
  • ¡ > c
  • u > f
  • k > v
  • d > h
  • x > b
  • ' > q
  • i > g
  • l > p
  • m > m
  • e > d
  • j > c
  • g > u
  • n > l
  • y > t
  • b > n
  • p > r
  • c > i
  • o > s
  • r > o
  • a > a
  • . > e
Dando lugar al siguiente texto que se podía leer prácticamente de manera clara:
Afer Oábado se celebró la entrega de premios Bitácoras 2010 en el evento inter"ue al que Oecuritf Bf Eefault estaba nominado en la categorca de -Mehor blog de seguridad informática- hunto con -Gn informático en el Eado Eel Mal- f TriptópolisvFinalmente ¡¡ hemos ganado !!w desconocemos los porcentahes de votos pero estamos seguros que la votación ha tenido que ser muf muf reñida f quew aunque suene a tópicow los tres blogs finalistas (f bastantes mas que no llegaron a la final) han hecho méritos mas que suficientes como para ganar con husticia el premiovBos ha hecho muchcsima ilusión ganar este premiow primero porque llegar a la final supone que vosotrosw los que nos leéisw habéis tenido el detalle de invertir vuestro tiempo en votarnos lo que implica un reconocimiento a nuestra humilde labor (IPAJCAO !!!)w f segundo porque un hurado multidisciplinar ha hu;gado como valioso nuestro trabahovIracias a todos los que hacéis de ObE lo que esw gracias a ti que te tomas la molestia de leernosw -Petuitearnos-w recomendarnosw que a veces aportas dehando un comentariow que cuando coincidimos en algún sitio te tomas la molestia en saludar f comentar algún post vvv IPAJCAO !Iracias a toda la gente aportó su sabidurca enviándonos contribuciones que dieron (mucho) mas valor a este blogvIracias a la gente que nos concedió parte de su valioso tiempo f se dehó entrevistar por nosotrosvIracias a todos los compañeros que también escribcs blogs de los que aprendemos dca a dcavF por supuestow gracias a Bitacorasvcom por seguir año a añow premiando la labor de la comunidad blog hispanavLor últimow queremos decirte algoSOube el volumen de tus altavoces f pulsa plafv Jon cariño de parte del equipo de ObE para ti S

¡Sí! se trataba del post que publicó SbD tras conseguir llevarse el premio Bitácoras 2010 :) Tenía la información. Ahora faltaba lo ¿sencillo?...¿dónde está el token?

En este momento volví a contactar con Hecky, ¡lo tenemos!, ¿cómo sacamos el token?. Tras varios minutos de conversación se une al IRC, cafeb, el cual nos confirma que el cifrado se había hecho (como Hecky comentó en un inicio) con Dvorak, y nos facilitó ésta herramienta online, que automatizaba el proceso (momento de auto-puñalamaniento). Pero ahora eso nos daba igual, ¿dónde está el token?.

Tras varias horas y algunas decenas de pruebas de hecky, cafeb, robe (que se unió a la fiesta) y un servidor, conseguimos llegar al token :) Eso sí, unas horas antes habíamos probado ese mismo token y no nos había funcionado, aún no sabemos porqué.

Y efectivamente, como ya ironizaba por twitter, la respuesta era un texto del famoso post, pero cifrado a Klingon.... digo a dvorak, en concreto, la URL.

Al final aprendí de este genial día varias cosas muy importantes, la primera, hacer caso a Hecky, que es un crack :P, la segunda, antes de desarrollar algo comprueba si alguien ya lo ha hecho por tí, ahorrarás tiempo, aunque eso sí, aprenderás mucho menos y finalmente, que siempre el que sigue, la consigue ;)

Estas fueron Mis Cinco horas con Guessit. Espero que hayáis disfrutado tanto como yo de este reto.

Saludos!

4 comentarios:

  1. xDDD Deberia publicar su codigo fuente juanan para ver como hacerlo en .NET :PY ademas mi error, por que crei que era eso pero no lo investigue =( Y mas aun que yo ya tenia un script para eso jajaja...Pero stolethehash me tenia muy entretenido :PSaludos ;)

    ResponderEliminar
  2. Buenas @hecky, un dia de estos publico el fuente y la tool, cuando corrija algunos errores y comente el codigoUn abrazo, nos vemos en España :)

    ResponderEliminar
  3. jajaja nos vemos en España?? xDD Eso estaria cool!!! Pero para que suceda pasaran muchos años en lo que tengo Ca$h :PSaludos juanan Y excelente post me hizo reir jeje

    ResponderEliminar
  4. [...] Resolución de Juan Antonio del CTF GUESSIT del #wgsbd2 Cinco horas con guessit: El “legendary mode” para pasar el reto del #wgsbd2 [...]

    ResponderEliminar