02 abril, 2017

Solución al reto "There is more than meets the eye"

Hola a todo@s

La semana pasada os dejábamos con un nuevo reto, esta vez orientado a forense, nadie ha sido capaz de superar el reto, os dejamos con la solución al mismo:




A continuación se detalla cómo se podría resolver el reto “Thereis more tan meetstheeye”.  La resolución no tiene por qué seguir el orden indicado en los siguientes apartados.

Nota: Se ha utilizado un SO Windows aunque bien podría haberse usado cualquier otro SO (aunque pierde un poco la “gracia” ya que ha sido diseñado para Windows).



La evidencia está en formato Raw por lo que se puede optar por analizar la imagen directamente con algún programa como Autopsy, FtkImager, Encase, etc o montar la unidad y explorar los archivos.


 



Dentro habrá el siguiente contenido



A simple vista sólo hay 2 imágenes, 1 pdf y un ejecutable. Si vemos la imagen con algún otro programa como FTK veremos cómo hay un archivo llamado 1.bat que figura como borrado. Además más adelante también nos centraremos en el resto de la partición no utilizada.



Al recuperar el archivo 1.bat veremos que no es muy legible.

Si nos fijamos en la unidad montada, vemos como con un dir /r vemos un fichero que no nos aparecía anteriormente. La opción /r muestra las “secuencias alternativas de datos”, es decir los ADS que puedan estar asociados a los ficheros.
 


Al abrir el ADS empirestate.bak (E:\>notepadempirestate.jpg:empirestate.bak) vemos que dentro hay una cadena en base64

 

Si convertimos esta cadena de base64 a Texto veremos algo como:
 
# Conf
D:\Data\DB\.Secret\masterkey_Ryker.key 
File=*.key   


Si nos fijamos en la otra imagen a priori no veremos gran cosa.

PDF

Si abrimos el PDF veremos un anuncio de la SecAdminCONference 2016. Al revisar las propiedades del documento veremos que en Palabras clave nos aparece el nombre del reto, por lo que es posible que haya información oculta.

Al revisar con detalle la imagen (en los strings o metadatos poco más veréis) hay 3 mensajes:

1.       En la parte superior, entre los dos documentos, hay un texto con las letras en el mismo color que el fondo. Ésta por encima de las imágenes por lo que al seleccionar todo el texto puede pasar “desapercibido” pero si nos fijamos al pasar el cursor por esa posición se aprecia como el cursor cambia del puntero a la selección de Texto.

El texto dice:
First, hash the name given by gps coordinate
2.       A continuación (esto es más fácil de observar) nos fijamos en que en las letras de las bases del concurso hay letras en un gris oscuro. Si juntamos el texto nos queda:

Then add the hash of the same image

3.       Por último en la imagen del logo de CyberCamp se aprecia la palabra MD5 junto al año 2016.


Con esta información, y al juntar las dos frases, podemos estar seguros de que hay más información oculta en al menos una de las imágenes.

Imágenes

Una de las imágenes contenía el ADS y revisando los strings y cabeceras no parece que haya más. Así que nos centramos en la otra imagen.

Por la pista obtenida en el pdf, sabemos que estamos buscando unas coordenadas GPS, las cuales se aprecian fácilmente al hacer un strings de la imagen



Si revisamos a dónde nos llevan dichas coordenadas (yo he usado la página http://www.coordenadas-gps.com/ pero se podría haber usado cualquier otra) obtenemos “La Giralda”.

Cómo se indicaba en el mensaje, primero tenemos que calcular el hash (MD5) del nombre que nos dan las coordenadas GPS y a continuación añadir el hash (MD5) de la misma imagen.



Podemos calcular el MD5 de La Giralda en cualquier página, el resultado es: 1871c828abe2e1b939bf3579a17bddd6

A continuación calculamos el hash de la imagen  b4ccc08769c869f1e81e5603a2724f63




Si juntamos ambos hashes en el orden indicado tenemos una clave:

1871c828abe2e1b939bf3579a17bddd6b4ccc08769c869f1e81e5603a2724f63


Ejecutable

Es momento de echar un vistazo al ejecutable. Al ejecutarlo (previa revisión de qué no contiene ningún virus) podemos ver que se trata de un simple juego de match cards.

Si nos pasamos el juego nos muestra un mensaje para que nos centremos en el reto


Revisando con un strings del ejecutable podemos ver varias rutas y cadenas que nos asocian al ejecutable como código Visual Basic.

Aquí se podría optar por analizar el código del programa con herramientas como Ida, ollydbg, etc. Pero no hace falta tanto, ya que una vez identificado que se trata de un ejecutable generado con Visual Basic, se puede optar por utilizar un decompilador de Visual Basic.

Yo he usado JustDecompile de Telerik pero podríais haber usado algún otro.

A continuación, analizando el código se aprecia con facilidad las funcionalidades “semi-ocultas” de la aplicación. Es posible que si al jugar al juego le dieseis por casualidad a la tecla “c”, “s” o “d” podríais haber intuido que el programa hacía algo al presionarlas.

Nos centramos en la función Form1_KeyUP



Al analizar el código vemos cómo el programa hacía lo siguiente:
·         Si se presiona la S, comprueba si el fichero 1.bat existe. Si existe lo ejecuta, establece la ruta temporal del usuario, lee un fichero en temp y obtiene el primer carácter de su contenido. A continuación solicita una contraseña y procede a cifrar el contenido de otro archivo temporal con dicha contraseña.
Por último establece una ruta destino y copia el contenido en Temp del fichero cifrado en la ruta calculada nombrando al fichero a.txt

·         Si se presiona la D, comprueba que exista el fichero 1.bat y hace un base64 del contenido y luego un xor con una contraseña presente en base64, sobrescribiendo el 1.bat. A continuación lo borra, por ello al recuperar dicho fichero no es muy legible.

Si optamos por recuperar el 1.bat podríamos ejecutar el siguiente código en visual basic.

DimstrCodeKeyAsString
DimfileCAsString = My.Computer.FileSystem.ReadAllText("1.bat")
Dimdecrypt_textAsString

strCodeKey = InputBox("Please enter your password", "XOr Encryption")
decrypt_text = XORDecryption(strCodeKey, fileC)

Dimdata2() AsByte
data2 = System.Convert.FromBase64String(decrypt_text)
Dim Cadena AsString = System.Text.ASCIIEncoding.ASCII.GetString(data2)
MsgBox(Cadena)

El 1.bat no hace mucho:
1.       Lee el ADS y busca una cadena en el contenido después de convertirlo de Base64 a Texto.
2.       Obtiene el nombre de la unidad dónde está y calcula la siguiente unidad y lo deja en el fichero temporal WNT002.txt
3.       Deja en el fichero temporal WNT001.txtel contenido del fichero cuya ruta estaba en el ADS.

Podemos deducir que de esta forma “simulada” se ha realizado la exfiltración, obteniendo el contenido del fichero especificado en el ADS y cifrado con una contraseña (si, ya la tenemos de los pasos previos).

Ahora nos falta recuperar dicho fichero.

Partición Oculta

Aquí es posible que hayamos llegado sin realizar algunos de los pasos previos. Por ejemplo, si al principio nos hubiésemos fijado en que había espacio en el disco que no pertenecía a la partición inicial y que podría contener información. Sino, al analizar el código habremos deducido que puede existir una partición más.

Vamos a utilizar la herramientaTestdisk para esta parte, analizando toda la imagen, no la partición montada.

Al hacer un quickscan ya vemos cómo hay algo que no está del todo bien en la geometría del disco pero no tiene mucha importancia.



Además nos muestra dos particiones. Hemos encontrado la partición ST0RAGE que no nos aparecía al montar la imagen. Se trata de una partición borrada, pero procederemos a ver que hay dentro





Cómo podemos ver en la imagen anterior, está el fichero a.txt que se supone que contiene la clave que buscamos para la resolución del reto. Además está el ejecutable RawCopy que se intentó utilizar en el 1.bat.

Recuperamos el fichero a.txt y basándonos en las funciones de descifrado presentes en el código que hemos decompilado podemos proceder a descifrar el archivo. La contraseña (256bits) es la que hemos sacado previamente al juntar los dos hashes MD5.

Una vez descifrado el fichero tendremos la clave:

You know you're one bad day away from being me.
Solución y reto cortesía de David Escudero.
 

0 comentarios:

Publicar un comentario