jueves, 1 de mayo de 2014

Fuerza bruta mediante diccionario a cifrados GPG

   En archivos cifrados de forma simétrica (con una contraseña) en gpg podemos proceder a su desfrizado diréctamente poniendo:

gpg DocumentoCifrado.gpg

   Pero si no conocemos/recordamos la clave, podemos automatizar un proceso de pruebas para que intente pasar todas las claves contenidas en un diccionario sobre el archivo cifrado, y con un poco de suerte, recuperar la clave.  Para hacer todo este proceso automático, comparto con vosotros el script para Bash que he creado:


#!/bin/bash
#Dictionary attack to gpg encrypted file
#Color definition
colorbase="\E[0m"
rojo="\033[1;31m"
verdefluo="\033[1;32m"
naranja="\033[0;33m"

#User variables. You must change DICT and FILE variables
DICT="/pentest/passwords/wordlists/rockyou.txt"
FILE="prueba.txt.gpg"

#Program variables. DO NOT TOUCH
TOTAL=$(wc -l < $DICT)
CONT="1"
PERCENT="0"

#Loop to probe all the words in dictionary against the gpg encrypted file
for word in $(cat $DICT)
   do
      echo "$word" | gpg --batch --passphrase-fd 0 --decrypt-files $FILE
      if [ "$?" == "0" ]
         then
            clear
            echo -e ""$verdefluo"\n\nPassword is: $word\n\n"$colorbase""
            exit 0
         else
            clear
            echo -e ""$rojo" $CONT/$TOTAL  -  "$colorbase""$naranja"$PERCENT%"$colorbase""$rojo"  -  ERROR  -  $word"$colorbase""
            let CONT=$CONT+1
            let PERCENT=$CONT*100/$TOTAL

            #Control if the dictionary ends
            if [ "$CONT" == "$TOTAL" ]
               then
                  echo -e ""$rojo"\n\n -- TERMINATED --    Password not found   :(\n"$colorbase""
                  exit 1
            fi
      fi
done
   Una vez copiado el contenido del script en vuestro equipo, lo guardamos como 'gpg-crack.sh' y damos permisos de ejecución:
chmod +x gpg-crack.sh
   Antes de ejecutar el script, teneis que cambiar las variables DICT y FILE por las que correspondan en vuestro caso.  Una vez configuradas estas variables, ejecutamos con:
./gpg-crack.sh
   Y el proceso mostrará algo como:


   La imagen muestra, en el primer término, la palabra por la que el script se llega probando de las palabras totales que contiene el diccionario, que en este caso son: 14.344.391, el porcentaje representado como un entero, el error derivado de que la contraseña no coincide con la del .gpg y la palabra exacta a la que se llega probando, 'princess' en este caso.

   Si la contraseña de cifrado está contenida en el diccionario que utilicemos, llegará un momento en el que el script mostrará por pantalla que ha tenido éxito:


BONUS:
Os dejo una buena colección de diccionarios para trabajar con el script:
https://downloads.skullsecurity.org/passwords/



No hay comentarios:

Publicar un comentario