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

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

17 julio 2020

RETO # 14 – Mensajes Rápidos

Descripción del Reto: Uno de nuestros investigadores ha interceptado señales de comunicación entre 2 ciberdelincuentes en el cual se cree que mencionan información importante sobre sus planes. Tu misión es identificar el mensaje.

Nivel de dificultad: Fácil

Puntos asignados: 50

Formato de bandera: QMISSION{FLAG}

Archivo adjunto del reto: “01ES_MensajesRapidos.mp4”

Solucionario:

El reto consiste en identificar el mensaje oculto a través de un archivo de video “01ES_MensajesRapidos.mp4”, el cual al reproducirse proyecta cambios de tonalidades del color (Blanco y Negro) siendo estos cambios la codificación del mensaje oculto mediante código morse.>

Opción 1

Para esta opción realizaremos la decodificación de manera manual para cual utilizaremos lápiz, papel y paciencia, apoyándonos de la siguiente tabla:

Recordemos que para decodificar el mensaje en código morse es necesario identificar 3 factores importantes los cuales son los puntos,
líneas y pausas, ya una vez mencionado esto iniciamos la decodificación de manera manual la cual nos arroja los siguientes datos:

Opción 2

Para esta opción utilizaremos una aplicación para nuestro smartphone llamada “Morse Tools” la cual nos permite decodificar el mensaje utilizando nuestra cámara del dispositivo obteniendo como resultado la siguiente captura.

Como resultado obtenemos en la parte inferior izquierda el mensaje decodificado el cual es: “CIBERATAQUE”.

Flag: QMISSION{ CIBERATAQUE }

RETO # 15 – CryptoFile 1

Descripción del Reto: En una de nuestras investigaciones sobre un ataque a la infaestructura crítica de varias organizaciones importantes para el país, se logró identificar un ransomware que al parecer se encarga de cifrar únicamente archivos críticos pero no hemos logrado identificar los nombres de dichos archivos. Tu misión es identificar el nombre completo del archivo que ha sido cifrado (nombre + extensión).

Nivel de dificultad: Fácil

Puntos asignados: 50

Formato de bandera: QMISSION {FLAG}

Solucionario:

El reto consiste en identificar el nombre del archivo que fue cifrado y a su vez lograr descifrar el mensaje que contiene el archivo llamado “message.encrypted”, para lo cual nos entregan 2 archivos: 1. CryptoFile.jar 2. message.encrypted Tal parece que el archivo llamado “CryptoFile.jar” es el encargado de haber cifrado dicho archivo con lo cual si se logra entender su forma de cifrar la información puede ser posible recuperar dicho mensaje. Ahora procedemos a obtener el código fuente del archivo “CryptoFile.jar” para lo cual usaremos la herramienta “jd-GUI”

http://java-decompiler.github.io/

Una vez se obtienen las clases que componen dicho archivo procedemos a tratar de leer el código en busca de información útil que permita identificar su funcionamiento de cifrado. Al realizar un análisis mas detallado de cada clase se logran identificar las 2 clases principales del archivo “CryptoFile.jar” las cuales son: 1. CryptoUtilsTest.class 2. CryptoUtils.class De las cuales la clase “CryptoUtilsTest.class” contiene el “public static void main” lo que indica que es la primera clase en ejecutarse y en la cual se logra obtener la respuesta a la primera pregunta. ¿Cuál es el nombre del archivo que se cifró? R//: De acuerdo con la línea “File inputFile = new File (“PasswordFile.txt”);”, el nombre del archivo que fue cifrado es PasswordFile.txt.

 

Flag: QMISSION{PasswordFile.txt}

RETO # 16 – CryptoFile2

Descripción del Reto: Ahora que ya has descubierto el nombre del archivo cifrado necesitamos recuperar
el mensaje que contiene el archivo «message.encrypted». Tu misión es identificar el mensaje.

Nivel de dificultad: Fácil

Puntos asignados: 50

Formato de bandera: QMISSION{FLAG}

Archivo adjunto del reto:

Cryptofile.rar

Solucionario:

Una vez solucionada la primera parte del reto, ahora nos debemos enfocar en lograr identificar la llave o clave con la cual fue cifrado el archivo “PasswordFile.txt” y para ello nos enfocaremos en la segunda clase mencionada anteriormente “CryptoUtils.class” ya que en la clase principal “CryptoUtilsTest.class” se identifica un envío de parámetros a dicha clase mas exactamente a la función “encrypt()”, la cual recibe 4 valores (random, random, inputFile, encryptedFile).

Al observar la clase vemos que los parámetros que son recibidos en el método “encrypt” son enviados al método “doCrypto” el cual es el encargado de realizar todo el proceso de cifrado, pero antes recordemos que para cifrar un archivo o cierta información es necesario ingresar un passphrase ( llave, key o clave), con lo cual nos enfocamos en identificar dicho passphrase. Tal parece que la passphrase la almacena la variable “key”.

Y gracias a esto se logra identificar 2 formas de obtener dicho valor. 1. La manera más fácil es implementar un simple “System.out.print(key)” al momento que la variable “key” obtiene un valor. Ubicar la línea de tiempo a las 12:53:05 para identificar lo sucedido.

Ahora que hemos identificado el passphrase con el cual fue cifrado el archivo “PasswordFile.txt” procedemos a obtener el mensaje en texto plano mediante la ayuda una herramienta que permita descifrar archivos cómo por ejemplo:

http://aes.online-domain-tools.com/

Y así es como logramos descifrar el mensaje “QMISSION {JavaSiempreEsBueno} ” que contenía el archivo “PasswordFile.txt”. ¿Cuál es el mensaje que contenía el archivo que fue cifrado?

Flag: QMISSION{ JavaSiempre EsBueno }

Contacto