Whatsapp
Retos (CTF) – Cyber.Co 2020 – Comando Conjunto Cibernético – Parte 4

Retos (CTF) – Cyber.Co 2020 – Comando Conjunto Cibernético – Parte 4

21 julio 2020

RETO # 17 – Un problema muy majo

Descripción del Reto: Hemos interceptado un documento .docm y según dicen nuestros expertos hay un mensaje oculto, pero desafortunadamente no hemos podido encontrar nada, quizás tu tengas más suerte.

Nivel de dificultad: Fácil

Puntos asignados: 50

Formato de bandera: QMISSION{FLAG}

Archivo adjunto del reto:

Documento.docm

Solucionario:

El reto consiste en encontrar la flag que se esconde un documento .docm, este es un formato de documento que indica que tiene los Macros incrustados, lo que significa que viene con ciertas características programadas para automatizar tareas, para el reto se nos da: Documento.docm Lo primero que tenemos que hacer es abrir el archivo, el cual es posible abrir mediante Word.

Cuando ya está abierto notifica que los macros de Word del ordenador en donde se está ejecutando no tienen esta característica habilitada, en caso de no aparecer esta advertencia significa que el ordenador si los tiene habilitados, para resolver el reto se necesita más información sobre los macros que tiene el reto, para ello se va a la pestaña de Vista, Macros y ver macros.

Cuando se inspecciona esta pestaña aparecen todos los macros que tenga habilitado el sistema y los que tenga el archivo.

Dentro de los macros basta con una simple inspección para notar un macro que se llama “Flag” con la descripción “Quizás aquí esté la
flag… quien sabe” a lo que se procede a ejecutar el macro.

Pero el macro no hace nada, entonces se recurre a inspeccionar el contenido del macro en la opción modificar macro.

En esta opción permite ver el mismo escrito que está en el texto, con unas leves diferencias.

Se ve que hay unos fragmentos que están codificados en diferentes bases y se procede a decodificarlos
01010001 01001101 01001001 01010011 (Binario)
123 111 117 116 (Octal)
7B6D3463723073 (Hexadecimal)
L53TA4TEPU====== (Base32)
Decodificación
01010001 01001101 01001001 01010011 = QMIS

123 111 117 116 = SION

Flag: QMISSION{m4cr0s_w0rd}

RETO # 18 – ¿y la clave?

Descripción del Reto: Durante un hallazgo encontramos un archivo desconocido, algunos expertos en la materia aseguran que este archivo tiene protección con contraseña, obviamente no sabemos cual es la clave, lo que si sabemos es que usaron una contraseña muy común a nivel mundial.

Nivel de dificultad: Fácil

Puntos asignados: 200

Formato de bandera: QMISSION{FLAG}

Solucionario:

Para resolver el reto primero se debe identificar qué tipo de archivo es y para ello se usa la herramienta HxD

Con esta herramienta se puede analizar las cabeceras del archivo e identificar que es un .rar y cuando se intenta extraer el contenido
pide una contraseña, la cual no se tiene, pero en la descripción del reto explica que la contraseña es una muy usada, entonces se requiere hacer un ataque de diccionario, para ello se usa la herramienta John the ripper.

Por ello primero en una máquina Kali linux se extrae el hash con el comando: rar2john File.rar Y se almacena en un archivo en este caso “hash.txt”, cuando se tiene el hash almacenado con el comando john [nombre de donde se guardó el hash] y automáticamente empieza a usar un diccionario por defecto hasta extraer la clave del .rar que en este caso “football”.

Finalmente se obtiene la flag almacenada en el archivo la cual es:

Flag: QMISSION{ cracking_ brute_force }

RETO # 19 – Adivina

Descripción del Reto: Para el reto nos dan un archivo .jar el cual simplemente genera ventanas emergentes, que piden adivinar un numero de 1 a 1’000.000, y cuando ingresamos un numero cualquiera, regresa el mismo código tipo flag, no estamos seguros de que sea una flag válida, nuestros expertos están seguros que existe un código válido dentro del aplicativo.

Nivel de dificultad: Fácil

Puntos asignados: 50

Formato de bandera: QMISSION{FLAG}

Archivo adjunto del reto:

Adivina

Solucionario:

En el reto solamente se entrega un archivo ejecutable .jar el cual despliega una ventana emergentes que pide un numero del 1 a 1’000.000.

Cuando se ingresa cualquier número el programa lanza una ventana emergente explicando que no era el número correcto y retornando una flag la cual es falsa.

Para hacer el reversing de una aplicación .jar primero se descarga el decompilador JD-GUI de la página
http://java-decompiler.github.io/>

Dando un vistazo rápido al código, se puede notar que simplemente tiene la clase main y unos métodos que simplemente codifican y decodifican el mensaje que sale en texto plano ya que los mensajes emergentes no están dentro del sistema.

En la clase main existe un condicional que es el encargado de definir si la respuesta es correcta o no lo es, para este punto existen 2 formas de resolver el reto:

Opción 1 Con el decompilador es posible tomar nuevamente el código y compilarlo cambiando las líneas del condicional para que sea cual sea el número que se ingrese retorne la flag,
para ese caso se usa netbeans.

Simplemente moviendo de posición las líneas del condicionado por las de acertaste es posible obtener la flag.

Opción 2 Es posible obtener la flag analizando qué parámetros se están enviando para formar la flag en el
método respuesta_r

Como se observa para el procesamiento de la flag solo se utilizan los 3 primeros parámetros que se envían al método, para este caso solo se están
utilizando cadena2, cadena3 y cadena5 ● cadena2 = «01010001 01001101 01001001 01010011 01010011 01001001 01001111 01001110»; ● cadena3 = «7b73316d706c335f723376»; ● cadena5 = «M3JzM19qNHY0fQ==»;
Y cuando se las decodifica se obtiene la flag: ● cadena2 = QMISSION ● cadena3 = {s1mpl3_r3v ● cadena5 = 3rs3_j4v4} Cuando se unen las cadenas finalmente se obtiene la flag correcta:

Flag: QMISSION{ s1mpl3_r3v3rs3_j4v4 }

RETO # 20 – ! Solo una línea ¡

Descripción del Reto:Durante una interceptación a un computador logramos ver que unos terroristas ofuscaban sus mensajes mediante un algoritmo muy corto en un sistema de tipo Linux, logramos tener acceso al algoritmo y al mensaje ofuscado, pero no tuvimos suerte regresando el mensaje a la normalidad, así que te encomendamos esta tarea.

Nivel de dificultad: Fácil

Puntos asignados: 150

Formato de bandera: QMISSION{FLAG}

Archivo adjunto del reto:

script.sh

Solucionario:

Para este archivo se nos da un archivo llamado script.sh y también la salida que fue generada de dicho script,
el reto nos da una pista diciendo que se ejecutó en un sistema Linux, por ello lo abrimos para entender cómo está funcionando por dentro.

Como su nombre lo indica es una aplicación que hace múltiples cifrados y codificaciones en una sola línea y nuestra labor pide que hagamos el proceso inverso para con la salida encontrar lo que ingresaron, para este caso se debe proceder de derecha a izquierda, para ello vamos a escribir otra.

Por ahora lo único que necesitamos es un script que imprima la salida para ir despejando de a poco, y se debe empezar de derecha a izquierda.

Para el script de cifrado se va a referir como script1 y para el de descifrar script2, entonces en script1 al final se le agrega un letra ñ entonces lo primero que debemos hacer es eliminar esta letra.

Posteriormente se vuelve a invertir la cadena de texto mediante el comando rev

Luego se le agregó el signo = al cual se le había retirado con el comando sed ‘s/$/=/’

Ya con esto se decodifica el archivo que estaba en base64 y ya está casi completa la flag.

Finalmente se obtiene la flag rompiendo el rot13 desde consola.

Flag: QMISSION{ reverse_in_bash }

Contacto