Power belongs to the people who take it

Cybercamp 2018 Online – 10. Chicken Dinner (Forense)

Sorry, this entry is only available in European Spanish. For the sake of viewer convenience, the content is shown below in the alternative language. You may click the link to switch the active language.

El siguiente reto de la CyberCamp 2018 que resolveremos es un reto de criptografia de nivel medio. Este reto es el número 11.
Aquí tenéis un enlace para poder descargaros los retos y probarlo vosotros mismos: RetosCyberCamp2018.zip

Enunciado

Se incauta a un sospechoso de terrorismo su equipo, dentro de éste se encuentran ficheros que se podrían considerar de vital importancia para continuar con la investigación, pero muchos de esos ficheros están cifrados y se sabe que mediante PGP simétrico.
Gracias a la investigación del sospechoso tus compañeros te han dado las siguientes pautas que sigue el sospechoso a la hora de crear sus contraseñas:

    • Son de longitud de 6 a 7 caracteres.
    • Sólo contienen letras minúsculas
    • Sólo se utilizan estas letras: eghotu
    • No se repite ninguna de las letras de la contraseña
    • Algunas de ellas contienen dos números entre estos: 0134

Tu trabajo será intentar descifrar el fichero gracias a la investigación realizada sobre el sospechoso y a los datos proporcionados para determinar si el contenido es de vital importancia para la investigación en curso.

Ficheros: medium_11.gpg

Solución

Tras leer el enunciado tenemos claro que habrá que hacerle fuerza bruta a fichero que se nos aporta. Lo primero será crear un diccionario que se ajuste a lo descrito en el enunciado. Para esto usaremos crunch:

#Son de longitud de 6 a 7 caracteres, se utilizan estas letras: eghotu (en minúscula), números entre estos: 0134 y no se repite ninguna de las letras de la contraseña
#Para eliminar las letras repetidas del diccionario: perl -ne 'print unless /([a-z]).*\1/'
crunch 6 7 eghotu0134 | perl -ne 'print unless /([a-z]).*\1/' > wordlist.txt

La ejecución de este comando nos crea un diccionario de 3391376 palabras que ocupará 26.7 MB

Ahora tenemos que hacerle fuerza bruta con el diccionario generado. Para esto encontramos el repositorio PGPCrack-NG (Github)
El comando seria:

cat wordlist.txt | ./PGPCrack-NG/PGPCrack-NG medium_11.gpg

La ejecución de este comando nos tardará aproximadamente 441 segundos

STARTTIME=$(date +%s);cat /tmp/wordlist.txt | ./PGPCrack-NG ../medium_11.gpg;echo "Time elapsed: $(($(date +%s)-STARTTIME))"

Es muy lento así que pensé en hacerme un script que fuera más rápida, pero sin complicarme mucho:

#!/bin/bash

fun_pgp () {
	gpg2 --batch -d --passphrase=$1 $pgpfile >outPGP$2 2>/dev/null
	len=$(wc -l outPGP$2 | cut -f 1 -d " ")
	if [ $len != 0 ]
		then
		kill $pid
		echo "[+] Password Found: $1"
		echo "[+] Output File: outPGP$2"
		exit
	fi
	rm outPGP$2

}

pgpfile=$1
i=1
pid=$$
while IFS='' read -r line || [[ -n "$line" ]]; do
    fun_pgp $line $i &
    i=$((i +1))       
    sleep 0.05
done < $2

La ejecución de este script nos obtendrá la clave en 99 segundos aprox.
Además el repositorio PGPCrack-NG no muestra tiempo de ejecución ni una barra de progreso o algo similar. Así que adorne un poco el script anterior y el resultado es el siguiente:
https://github.com/ironHackersDev/Cybercamp18/blob/master/11_brutePGP.sh

Como veis la clave obtenida es: eg1u03

Con esta clave obtenemos un fichero que será una imagen:

Parece que hay un cifrado en la imagen: https://www.dcode.fr/templars-cipher

FLAG:

ERESMUYGOLOSO
¿Me ayudas a compatirlo?

1 Comment

  1. Hugo Strange

    Podrias volver a subir los CTF al mega por favor.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

© 2024 ironHackers

Theme by Anders NorenUp ↑