EsteganografíaProgramación

Steghide Brute Force Tool

Colaborador: Vasco

Buenos días hackers, en la entrada de hoy veremos el script que utilizó nuestro compañero Alberto en su entrada CTF Civil War para obtener una de las flags, hablo de Steghide Brute Force Tool.

A quienes os gusten los CTF o la esteganografía ya conoceréis la herramienta Steghide, ésta nos da la posibilidad de ocultar un archivo dentro de una imagen o audio o por el contrario, extraer la información oculta dentro de un archivo.

En ocasiones dicha información oculta está protegida por una contraseña, Steghide nos permite indicar ésta si la conocemos, pero en caso de no tenerla, no dispone de la opción para pasarle un diccionario y realizar un ataque de fuerza bruta para obtener dicha contraseña y por consiguiente la información oculta.

Con el inconveniente antes mencionado, me propuse hacer un script que nos permita pasar un diccionario y en caso de éxito, nos muestre la contraseña válida y la información extraída. Esto es sencillo de hacer mediante un bucle que recorre cada una de las password contenidas en el diccionario y las comprueba con la opción propia de Steghide antes mencionada de pasar una única password.

En la captura anterior se puede ver la función encargada de realizar lo descrito anteriormente. Le pasamos dos argumentos:

  • ifile : es el “input file”, el archivo que contiene la información oculta.
  • dicc : diccionario que vamos a usar.

Explicando un poco las lineas mas importantes de la función:

  • With open(dicc, ‘r’) as passFile : abre el diccionario en modo lectura.
  • for line in passFile.readlines() : por cada linea del archivo (password).
  • password = line.strip(‘\n’) : elimina el retorno de carro.
  • r = commands.getoutput(«steghide extract -sf %s -p %s -xf %s» % (ifile, password, ofile)) : mediante la librería “commands” podemos asignar la salida del comando ejecutado a una variable para comprobarla posteriormente.
  • If not “no puede extraer” in r : si no se encuentra el texto “no puede extraer” en la salida del comando, significa que hemos tenido éxito.
  • Mediante los dos print siguientes mostramos la salida del comando y la contraseña válida.
  • With open(ofile, ‘r’) as outfile : abrimos el archivo que estaba oculto para leer su contenido y mostrarlo por pantalla.

 

Una vez explicado el código pasamos a verlo en funcionamiento. Decir que además de la opción del diccionario, también he añadido las opciones principales de la herramienta Steghide como son:

  • Obtener información del archivo.
  • Extraer la información oculta indicando la contraseña (en caso de que la conozcamos).

En la captura anterior tenemos la ayuda de Steghide Brute Force, hay 3 opciones principales:

  • -i (info) : obtener información general del archivo.

  • -e (extract) : extraer la información oculta del archivo indicando la password.

  • -b (brute) : ataque por fuerza bruta con diccionario.

Como se puede ver, hay mas parámetros a usar dependiendo de la opción elegida exceptuando el parámetro -f (file) que, como es de suponer, es obligatoria.

 

A continuación las capturas de éstas tres opciones con sus correspondientes parámetros.

 

Opción info: es la misma salida que veríamos si ejecutamos Steghide directamente. Nos muestra información general del archivo (nombre, tipo, tamaño) y nos da la opción de mostrar los datos ocultos, aunque si tiene contraseña y no la conocemos no será posible.

 

Opcion extract: muestra la respuesta de Steghide (linea verde) y a continuación la información que contiene el archivo oculto.

 

Opcion brute: lo primero que muestra es una barra de progreso para saber el porcentaje de passwords del diccionario que ha probado. Una vez obtiene la password válida, al igual que en la opción anterior, muestra la respuesta de Steghide, contraseña válida y el contenido del archivo oculto.

 

En la siguiente captura se muestran unos ejemplos de uso en caso de que escribamos algo mal en el comando.

En este caso el error es haber introducido la opción brute (-b) y la opción info (-i) a la vez. Solo es posible indicar una de las tres opciones antes vistas de cada vez.

 

Y con esto termina la entrada de hoy, espero que os haya gustado y sea de utilidad el script.

Un saludo, vasco.

5 comentarios en “Steghide Brute Force Tool

  1. Muy buenas conejos,
    Yo tengo una duda, y es que he utilizado este script y con el diccionario rockyou salta un error al encontrarse con las comillas simples y se cancela el proceso. Sabéis a que es debido?
    Saludos.

    1. Me ocurre exactamente lo mismo:

      # python steg_brute.py -b -d /usr/share/wordlists/rockyou.txt -f /tmp/3.jpg

      [i] Searching…
      sh: 1: Syntax error: Unterminated quoted string |

      [+] Information obtained with password: asdfghjkl;’

  2. Hola.

    Que diferencia hay con hacerlo con bash, con un for recorriendo el diccionario y probando la pass??

    Un saludo

    1. Buenas! Realmente no hay una gran diferencia, el script sería muy muy parecido y además dependes de un programa externo al script (Steghide). Un saludo y gracias por leernos!!

Los comentarios están cerrados.