CybexCTF Writeup (Beep Boop, Potencial/Intensidad & Unsafe Behaviour)

En este post voy a tratar los retos que he presentado para el CTF comunitario de Cybex, empecemos!

Esteganografía

Beep Boop

  • The FBI has found this strange audio with a list of weird things inside the computer of a suspect of stealing a dog. They think this won’t be a great problem, but they don’t know they are dealing with a well-known cybercriminal.

  • Hint 1: Stay out of the Deep dangers of the cyberworld. (Haciendo referencia al programa que se debe usar al principio: DeepSound)

  • Hint 2: Not everything is graphically watchable with your eyes. (Haciendo refierencia a que se debe investigar en una foto la cual contiene más archivos.)

  • Flag: CYBEX{mR_R0b0T_FtW!}

  • Dificultad: Medio

  • Archivos: hellofriend.wav & weird.txt | BeepBoop.7z

Este reto está escrito en inglés para ayudar a llegar a la conclusión de que se está haciendo referencia a la serie “Mr Robot”.

Para empezar, si hacemos una búsqueda en google sobre Mr Robot, esteganografía (y Deep si cogiéramos la pista) llegaríamos a artículos o vídeos como este.

Tras descargar la herramienta, vemos que nos pide una contraseña, aquí es cuando john, deepsound2john y la lista “extraña” entran en acción.

Primero utilizaremos deepsound2john para hashear el wav y posteriormente poder crackearlo con john.

$ /usr/share/john/deepsound2john.py hellofriend.wav 
hellofriend.wav:$dynamic_1529$bbfe6bb6e1deb87f3a09ca2964e227cb15179959

Una vez tenemos el hash, lo mandamos a john y en escasos segundos tendremos la contraseña. (Se podría haber “adivinado” al ver que es bastante distinta a las demás de la lista.)

hellofriend.wav:ER280652

Teniendo la contraseña podemos entrar en deepsound y extraer los archivos:

$ ls
image01.jpg  image02.jpg  image03.png  image04.png  image06.jpg  image07.png

Aquí entra en juego el análisis simultáneo de muchas imágenes, en el que hay que pensar de manera crítica e ir “a lo seguro”.

# exiftool *
======== image01.jpg
ExifTool Version Number         : 11.80
File Name                       : image01.jpg
Directory                       : .
File Size                       : 354 kB
File Modification Date/Time     : 

<-- data -->

Datemodify                      : 2020-02-12T20:13:59+01:00
Comment                         : CYBEX{h4hA_n0T_th4T_EaSY}
Warning                         : [minor] Trailer data after PNG IEND chunk
Image Size                      : 540x277
Megapixels                      : 0.150
    6 image files read

Aquí encontramos lo que parece una flag,

CYBEX{h4hA_n0T_th4T_EaSY}

pero no es legítima. Si seguimos buscando podemos ver que en la última foto hay cosillas inusuales.

Si investigamos los carácteres legibles…

$ strings image07.png
<-- data -->
If<c
If you read this means we are under terrible circumstances, please be careful. czNjcjN0cDRzc3cwckQhKg==
9JP'8MIfxr
<-- data -->

¡Tenemos una contraseña! czNjcjN0cDRzc3cwckQhKg== : s3cr3tp4ssw0rD!*

< Imagen normal >

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             JPEG image data, EXIF standard
12            0xC             TIFF image data, little-endian offset of first image directory: 8
1210          0x4BA           Copyright string: "Copyright (c) 1998 Hewlett-Packard Company"

< Imagen modificada >

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             PNG image, 540 x 277, 8-bit colormap, non-interlaced
1029          0x405           Zlib compressed data, best compression
94181         0x16FE5         PNG image, 540 x 277, 8-bit colormap, non-interlaced
95055         0x1734F         Zlib compressed data, best compression
187948        0x2DE2C         Zip archive data, encrypted at least v1.0 to extract, compressed size: 33, uncompressed size: 21, name: flag.txt
188141        0x2DEED         End of Zip archive, footer length: 22

Podemos ver que dentro de esta imagen hay otra imagen y un zip que contiene un archivo llamado “flag.txt”.

Si lo extraemos e introducimos la contraseña que vimos anteriormente:

$ binwalk -e image07.png 

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             PNG image, 540 x 277, 8-bit colormap, non-interlaced
1029          0x405           Zlib compressed data, best compression
94181         0x16FE5         PNG image, 540 x 277, 8-bit colormap, non-interlaced
95055         0x1734F         Zlib compressed data, best compression
187948        0x2DE2C         Zip archive data, encrypted at least v1.0 to extract, compressed size: 33, uncompressed size: 21, name: flag.txt
188141        0x2DEED         End of Zip archive, footer length: 22

$ cd _image07.png.extracted/
$ ls
1734F  1734F.zlib  2DE2C.zip  405  405.zlib  flag.txt
$ unzip 2DE2C.zip 
Archive:  2DE2C.zip
[2DE2C.zip] flag.txt password: s3cr3tp4ssw0rD!*
replace flag.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename: y
 extracting: flag.txt                
$ cat flag.txt 
CYBEX{mR_R0b0T_FtW!}

Criptografía

Potencial / Intensidad

  • Hacienda ha abierto una investigación contra uno de los mayores cómicos de la actualidad en España. Te han pedido que descifres el mensaje que han encontrado en su portátil, junto a unos ejemplares en pdf del “Hola”.

  • Flag: CYBEX{l4_r3s1st3nc14_m0l4}

  • Archivos: mensaje.enc | PotencialPartidoIntensidad.7z

Este reto lo quise ambientar en el programa “La Resistencia”, y se trataba de un texto de 512 carácteres en el que se podían distinguir frases dichas en el programa por el presentador.

Si nos fijamos, vemos que hay letras en minúscula y mayúscula, sin seguir un patrón de principio de palabra, pero sí encontramos que todos los segmentos miden 8 carácteres.

Si probamos a pasar las minúsculas a 0s y las mayúsculas a 1s vemos que nos queda un mensaje coherente si lo desciframos:

< mensaje.enc a binario >

010100000110100101110001011101011110100100100000011100000110000101100111011000010010000001101100011000010010000001100101011100110111010001100001011101000111010101100001001011000010000001111010011011110111001001110010011011110010111000001010000010100100001101011001010000100100010101011000011110110110110000110100010111110111001000110011011100110011000101110011011101000011001101101110011000110011000100110100010111110110110100110000011011000011010001111101

< binario a texto >

Piqué paga la estatua, zorro.

CYBEX{l4_r3s1st3nc14_m0l4}

Web

Unsafe behaviour

  • Un amigo me ha dicho que ha desarrollado un login imbatible y me ha pasado esta web. Parece bastante segura, ¿sabrías colarte?. Te aviso, mi amigo es muy troll.

  • Flag: CYBEX{Cl13nT_s1D3_v4l1D4TIOn}

  • Archivos: clientside.7z

En este reto intento demostrar cómo la validación de datos en el lado del cliente es muy insegura.

Para pasar el reto debemos aplicar un breakpoint en la línea en la que se valida el usuario y la contraseña:

Cuando el breakpoint salte, podemos pedirle al navegador que nos de la resolución de la ofuscación del usuario.

Con esto, sabemos que el usuario es “admin”, y la contraseña “hunter2”. Si entramos con estas credenciales vemos que visita hiddenflag.html y vuelve a index.html. Si abrimos la pestaña de red e investigamos el comportamiento tras pulsar el login vemos la flag: