Latest Tweets

Una al Mes: Silicon Valley Episodio 1 CTF Write-Up

1: Obtención del archivo con las credenciales.

Descargamos una imagen del disco de Gilfoyle desde cualquiera de los dos enlaces propuestos. Rápidamente pensamos en utilizar Volatilty para analizar dicha imagen. Primero descomprimimos el archivo descargado y luego pedimos a Volatility que nos dé información sobre la imagen, para poder escoger el mejor perfil a utilizar:

 

Obtención de información sobre la imagen del disco de Gilfoyle.

Según el enunciado del reto, debemos encontrar un archivo con las credenciales (encriptadas) de acceso a la web http://34.247.69.86/siliconvalley/episodio1/login.php . Como se comenta que se ha producido un corte eléctrico, podríamos pensar que tal vez ese documento estuviera en uso en el momento del corte. Así que empezamos enumerando procesos que estuvieran en ejecución para luego filtrar aquellos que puedan ser más interesantes (navegadores web, procesadores de texto, programas de anillo de claves, etc.). Para ello usamos Volatility con el primer perfil propuesto en el comando anterior:

volatility -f GILFOYLE-HELLDD.raw –profile=Win7SP1x64 pslist

Entre todos los procesos listados, observamos que LibreOffice y Firefox estaban en ejecución:

Procesos interesantes ejecutados por el usuario.

Empezamos con LibreOffice; usamos de nuevo Volatility para listar aquellos archivos abiertos por el proceso con PID 2340 que estuvieran ubicados en el directorio del usuario (Users). El primero de la lista parece muy prometedor: info.odt:

Volcamos el archivo info.odt a disco para analizarlo con mayor detenimiento:

Volcado del archivo info.odt a disco.

Abrimos el documento con LibreOffice y observamos que, efectivamente, podría muy bien ser el documento con las credenciales cifradas.

2: Descifrando las credenciales

A priori, el contenido del documento parecer utilizar el abecedario de Base-64. Intentamos decodificarlo, pero sin éxito. Lo que sorprende es que el documento parece estar segmentado en grandes bloques de texto independientes, y se puede ver claramente una repetición de dichos bloques. En una parte del documento observamos una separación de párrafo después del carácter “:”. Justo antes y después de dicho caracter observamos lo que podría ser un par de MD5s encerrados entre corchetes:

Posibles MD5s encerrados entre corchetes.

Lo que obtenemos bien podría ser el usuario y el password generado con MD5 que estamos buscando. Probamos suerte directamente pegando estos valores en la web http://md5decrypt.net:

Rompiendo el MD5 (usuario de la web).

Rompiendo el MD5 (password de la web).

Ya tenemos las credenciales; podemos validarnos en la web y proseguir con el reto.

3: Obtención del número de la casa

Tras validarnos en la web con las credenciales Gilfoyle:Satan, obtenemos una nueva URL:

Nueva URL tras validarnos con éxito en la web.

Accedemos a la misma y obtenemos una imagen JPG:

La nueva URL nos lleva hasta una imagen JPEG.

Descargamos la imagen a disco. Antes de proceder con técnicas de stego, obtenemos toda la meta-información posible sobre la imagen. Nos da por pensar: “ey, esto parece una fotografía tomada del archivo de denuncia, tal vez tengamos suerte y tengamos la geolocalización de la cámara donde se tomó la misma…”; así que nos centramos en el campo XMP/IPTC de la imagen y buscamos la localización:

Copiamos y pegamos estas coordenadas en Google Maps. En lugar de un número de casa, Google nos devuelve un código Plus (https://plus.codes/):

Casi lo tenemos; en lugar de un número, Google nos devuelve un Plus Code.

Basta con pulsar sobre la casa que está en la calle indicada por el código Google Plus para obtener su número, el 2126:

Ya tenemos el posible número de la casa, el 2126.

Generamos el MD5 de dicho número:

echo -n “2126”|md5sum
3b92d18aa7a6176dd37d372bc2f1eb71 –

La flag es, pues: UAM{3b92d18aa7a6176dd37d372bc2f1eb71}

 

@disbauxes

Toni Castillo Girona