[Steganography] imagen dedsec #HackTheFDI

Voy a mostrar como resolví el reto de esteganografía de la imagen de dedsec que tantos problemas de cabeza ha dado.

stego_img_web

La imagen que te daban para el reto es la siguiente:

dedsec-sf

Lo primero que hice al bajarme la imagen fue hacer un strings [img], y un hexdump -C [img] para ver si salia alguna string interesante o que la imagen tuviera otro fichero dentro, pero no vi nada.

Luego subí la imagen a TinEye para buscar la imagen original y descargármela para comprobar las diferencias entre ellas con el comando:

compare -compose src output.png

Abrimos output.png

stegoimg_diff

Con el resultado obtenido podemos ver que existen diferencias en la imagen pero en este caso no devuelve la flag.

Lo siguiente que pruebo es steghide con el flag info, primero con una imagen que creo yo aleatoria y luego con la imagen descargada del reto para ver si la reconoce.

stegoimg_steginfo

Como se puede ver la imagen del reto es detectada por steghide, por lo que para sacar la contraseña del fichero necesitamos crear un diccionario y hacer fuerza bruta.

Para ello usé un programa que había creado hace tiempo en python que a través de un diccionario hace fuerza bruta al fichero.

#!/usr/bin/env python
import sys
import commands

if __name__ == '__main__':
    if len(sys.argv) == 3:
        filename = sys.argv[1]
        wordlist = sys.argv[2]
    else:
        print "Usage: {0} <filename> <wordlist>".format(sys.argv[0])
        sys.exit()

    f = open(wordlist, 'r')
    lines = f.readlines();
    found = False
    cont = 1
    for line in lines:
        if line.strip().isalnum():
            output = commands.getoutput("steghide extract -sf " + filename.strip() + " -p " + line.strip())
            if output.find("steghide") == -1:
                print "Password found: ", line
                found = True
                break

    if not found:
        print "Password not found"

Link en github del programa

Ahora nos queda generar diccionarios, en un principio cree un diccionario con crunch.

$ crunch 1 5 -o wordlist.txt

Esto genera un diccionario con todas las combinaciones de letras minúsculas de 1 a 5 caracteres pero no tuve éxito.

Luego usé el programa brutescrape que es un web scraper el cual genera diccionarios de las palabras que obtiene de las páginas que incluyas en el fichero sites.scrape, en este caso use todas las páginas que tenía referentes al torneo HackTheFDI, pero tampoco obtuve resultados.

Leyendo bien la página del reto, daban una pista (o eso me imaginé), que decía así: “Sitara es un crack, siempre le gusta jugar con lo oculto en su arte” por lo que me fui a la wiki del juego Watch Dogs 2 al perfil del jugador Sitara, y me hice un diccionario otra vez con el programa brutescrape.

$ echo “http://watchdogs.wikia.com/wiki/Sitara_Dhawan” > sites.scrape

$ python brutescrape.py

stegoimg_brutescrape

Esto nos genera un diccionario en el fichero passwordList.txt con 1913 palabras, lo malo es que muchas palabras tienen coma al final o dos puntos o punto y coma o caracteres raros que steghide no admite para las contraseñas, por lo que toca crearse un comando en bash para que elimine todos estos caracteres y sustituya las tildes.

$ cat passwordList.txt | tr -d “:” | tr -d “,” | tr -d “.” | tr -d “;” | tr -d “-” | tr -d “_” | tr -d “\[” | tr -d “\]” | tr -d “+” | tr -d “\(” | tr -d “\)” | tr -d “#” | tr -d “\/” | tr -d “?” | tr -d “¿” | tr -d “\“” | tr -d “\”” | tr á a | tr é e | tr í i | tr ó o | tr ú u | tr -d “-” | tr -d “_” | tr -d “\[” | tr -d “\]” | tr -d “+” | tr -d “\(” | tr -d “\)” | tr -d “#” | tr -d “\/” > final_wordlist.txt

Ahora que ya tenemos el nuevo diccionario creado solo queda pasárselo al programa que hice brute_steghide.py.

$ python brute_steghide.py imagen_watch_dogs.jpg brutescrape/final_wordlist.txt

stegoimg_done

Y ahí tenemos la flag: YhZasvbZ

Esta entrada fue publicada en CTF, HackTheFDI, Steganography. Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

w

Conectando a %s