Introducción a los retos de captura la bandera CTF, como método de entrenamiento ofensivo – Parte 1

Hola amigos, estoy de regreso con varios post que seguro les servirá a los que participaran en la competencia Capture The Flag CTF que se llevará a cabo en el 2° Congreso Internacional de Seguridad Informática organizado por la AGETIC, este año se realizará en Sucre – Bolivia para más información pueden consultar el siguiente enlace: https://www.cgii.gob.bo/eventos/cidsi2019/

La AGETIC ha publicado una plataforma https://ctf.cgii.gob.bo:9696/ en la cual podemos poner a prueba todas nuestras habilidades, sin embargo, a quienes participen por primera vez en esta competencia, algunos retos les pueden parecer complicados. Es por este motivo que elaboré esta guía para solucionar cada uno de los retos.

Para resolver los retos podemos utilizar las herramientas que se encuentran disponibles en la distribución KALI Linux, pueden descargar la máquina virtual para VirtualBox o VMware en el siguiente enlace: https://www.kali.org/downloads/

En la plataforma habilitada se muestran varios niveles con diferentes retos desde los mas sencillos hasta los más “complicados”. A continuación comenzaré a resolver cada uno de los retos con el mayor detalle posible.

A continuación pueden encontrar los enlaces a todos Posts relacionados:

Nivel 1

Para resolver los retos de hash del primer nivel es necesario definir que es un HASH, de acuerdo a Wikipedia un HASH no es más que una representación cifrada de una información que se desea resguardar.

Para generar un HASH existen diferentes algoritmos de cifrado entre los cuales tenemos:

Algoritmos asimétricos

Son aquellos que no poseen un algoritmo reverso para descifrar su contenido original

MD5

Longitud fija: 32 caracteres
Caracteres: 0 al 9, A a la Z mayúsculas y minúsculas

SHA

Longitud fija: 40 caracteres
Caracteres: 0 al 9, A a la Z mayúsculas y minúsculas

Algoritmos simétricos

Son aquellos que una vez cifrados poseen un algoritmo inverso que puede descifrar su contenido, por ejemplo:

BASE64

Longitud: variable
Caracteres: 0 al 9 A a la Z solo mayúsculas
Finaliza comúnmente en un igual “=” o doble igual “==”

BASE32

Longitud: variable
Caracteres: 2 al 7 A a la Z solo mayúsculas, no se toma en cuenta el 0 porque podría confundirse con la O mayúscula, el 1 podría confundirse con la letra I y el 8 podría confundirse con la letra B
Finaliza comúnmente con varios símbolos de igual “====”

CAESAR

Este es uno de los primeros algoritmos que aprenden los estudiantes en clases de criptografía, y consiste en tener 2 alfabetos y un número constante que nos indica cuantas posiciones se debe mover el alfabeto como indica la siguiente figura:

Otra alternativa es la de utilizar una herramienta automatizada como lo es “hash-identifier”, esta herramienta se encuentra pre-instalada en KALI linux

Con todo lo mencionado anteriormente ahora será muy sencillo poder resolver los retos del nivel 1:

Reto: Crackeando el hash

“Un amigo hacker está realizando un evaluación de seguridad (Ethical hacking), tuvo acceso a una base de datos de usuarios y si logra acceder con algún usuario podrá ganar privilegios y mantener muchos más accesos. Te pide ayuda para “romper” un hash, no actualizado por suerte. Si puedes ayudarlo, tu recompensa es la bandera (flag) que es el texto plano (sin encriptar) del hash 3cc31cd246149aec68079241e71e98f6”

Solución

Si realizamos un conteo de los caracteres vemos que posee una longitud de 32, eso nos indica que puede tratarse de un HASH MD5. La siguiente página puede ayudarnos a encontrar el valor del hash https://www.md5online.org/md5-decrypt.html, una vez en la página copiamos el hash en el cuadro de texto, seguidamente presionamos el botón con el texto “MD5 decrypt”

Reto: Crackeando el hash 2

“Estas de vacaciones en un hotel 5 estrellas. A un amigo tuyo se le ocurrió capturar tráfico con la herramienta wireshark y para la alegría del grupo pudo capturar el ingreso de un empleado a la intranet donde están las promociones para ganar noches gratis en el hotel. Lamentablemente el password parece estar “encriptado”, pero esto es fácil para ti, si lo descubres el password es la bandera. El “hash” capturado es : TG9zSW5mb3JtYXRpY29zTm9WYW5BbENpZWxvLVNvbkFsbWFjZW5hZG9zRW5MYU51YmU=”

Solución

Al revisar el hash vemos que termina en un símbolo “=”, otro detalle es que el hash incluye mayúsculas y minúsculas, esto nos indica que podría tratarse de un algoritmo base64. En la siguiente página podemos encontrar una herramienta para descifrar este hash: https://www.base64decode.org/
Base64 decode

Bandera: LosInformaticosNoVanAlCielo-SonAlmacenadosEnLaNube

Reto: Crackeando el hash 3

«Haciendo pruebas de captura de tráfico capturas lo que aparentemente es un hash: JRQVM2LEMFCXGTLVPFBW64TUMFIGC4TBKJSW233WMVZEK3CVONREIZKNMFXGK4TBKNSWO5LSME======”

Solución

Al revisar el hash vemos que termina en varios símbolos “=”, otro detalle es que el hash no incluye minúsculas, esto nos indica que podría tratarse de un algoritmo base32. En la siguiente página podemos encontrar una herramienta para descifrar este hash: https://emn178.github.io/online-tools/base32_decode.html

Bandera: LaVidaEsMuyCortaParaRemoverElUsbDeManeraSegura

Reto: Crackeando el hash 4

“Un amigo está haciendo un postgrado en seguridad de la información pero se faltó a la primera clase de criptografia y te pide ayuda para resolver su tarea que es decifrar el texto : YnIvqnRfPbegnFbaevrZvragenfNhaGratnfQvragrf”

Solución

A simple vista no tenemos una pista de que tipo de algoritmo se usó para generar este hash, pero un detalle importante es la parte en la que dice “…se faltó a la primera clase de criptografía…”. Uno de los primeros algoritmos que aprendemos en clases de criptografía es el algoritmo CAESAR. En la siguiente página podemos encontrar una herramienta para descifrar este hash: https://cryptii.com/pipes/caesar-cipher

Bandera: LaVidaEsCortaSonrieMientrasAunTengasDientes

Reto: Web site

“Ahora el reto será un poco más “difícil”. Uno de los programadores de la AGETIC quiso darte una ayuda y te dejo una pista del flag en el sitio del evento”
Link: https://www.cgii.gob.bo/eventos/cidsi2019/

Solución

Primero visitamos el enlace proporcionado con un navegador Firefox o Chrome, a continuación visualizamos el código cuente de la página (podemos presionar las teclas CTRL + U) una ves que estemos visualizando el código fuente buscamos la palabra flag o bandera (CTRL + F para acceder a la búsqueda en la página) finalmente encontraremos la bandera:

Bandera: 8ddeb2027a8c79b3c46510a6dcef9dda

Entradas relacionadas