Crackear la Contraseña de una Base de Datos KeePass KDBX

Kali LinuxBeginner
Practicar Ahora

Introducción

KeePass es un popular gestor de contraseñas de código abierto que te ayuda a gestionar tus contraseñas de forma segura. Almacena las contraseñas en un archivo de base de datos cifrado, normalmente con la extensión .kdbx. Aunque es muy seguro, la fortaleza de la protección de la base de datos depende en gran medida de la contraseña maestra elegida por el usuario.

En este laboratorio, te pondrás en el papel de un analista de seguridad para probar la fortaleza de una contraseña de base de datos KeePass. Aprenderás el proceso fundamental de cracking de contraseñas con fines éticos y educativos. Utilizaremos keepass2john, una herramienta del conjunto John the Ripper, para extraer el hash de la contraseña de un archivo .kdbx de ejemplo, y luego usaremos hashcat, una potente herramienta de recuperación de contraseñas, para crackearla utilizando un ataque de diccionario.

Esta experiencia práctica demostrará cómo los atacantes pueden explotar contraseñas débiles y subrayará la importancia de utilizar contraseñas maestras fuertes y complejas.

Crear una Base de Datos KeePass de Ejemplo con una Contraseña Sencilla

En este paso, crearemos una base de datos KeePass objetivo. Para realizar una prueba de cracking de contraseñas, primero necesitamos un archivo .kdbx con el que trabajar. Utilizaremos la aplicación KeePass para crear una nueva base de datos y protegerla con una contraseña sencilla y fácil de adivinar para fines de demostración.

Primero, inicia la aplicación KeePass escribiendo su nombre en la terminal.

keepass2

Esto abrirá la interfaz gráfica de usuario de KeePass. Ahora, sigue estos pasos para crear la base de datos:

  1. En la ventana de KeePass, ve al menú y haz clic en Archivo -> Nuevo....
  2. Aparecerá una ventana "Crear Nueva Base de Datos de Contraseñas". Haz clic en Aceptar para continuar.
  3. Se te pedirá que guardes el nuevo archivo de base de datos. Navega al directorio /home/labex/project, nombra el archivo MySecrets.kdbx y haz clic en Guardar.
  4. A continuación, aparecerá la ventana "Crear Clave Maestra". Aquí es donde estableces la contraseña maestra para la base de datos. Para este laboratorio, introduce password123 en el campo "Contraseña maestra" y repítela en el campo "Repetir contraseña". Haz clic en Aceptar.
  5. Aparecerá la ventana "Nueva Base de Datos de Contraseñas - Paso 2". Puedes mantener la configuración predeterminada. Haz clic en Aceptar.
  6. Tu nueva base de datos vacía está ahora creada y abierta. Opcionalmente, puedes añadir una entrada de ejemplo, pero no es necesario para este laboratorio.
  7. Finalmente, cierra la aplicación KeePass haciendo clic en Archivo -> Salir.

Ahora deberías tener un archivo llamado MySecrets.kdbx en tu directorio ~/project. Puedes verificar su existencia con el comando ls.

ls -l ~/project

Deberías ver MySecrets.kdbx listado en la salida.

Usar keepass2john para Extraer el Hash

En este paso, extraeremos el hash de la contraseña del archivo MySecrets.kdbx. Las herramientas de cracking de contraseñas como hashcat no funcionan directamente sobre el archivo de la base de datos. En su lugar, operan sobre un "hash", que es una representación criptográfica de la contraseña maestra.

Utilizaremos keepass2john, una utilidad incluida en el conjunto de cracking de contraseñas John the Ripper, para convertir la información de la clave de la base de datos KeePass a un formato que hashcat pueda entender.

Abre tu terminal y ejecuta el siguiente comando. Este comando lee el archivo MySecrets.kdbx y genera el hash correspondiente, que redirigimos y guardamos en un nuevo archivo llamado keepass.hash.

keepass2john ~/project/MySecrets.kdbx > ~/project/keepass.hash

Este comando no producirá ninguna salida visible en la terminal porque la salida ha sido redirigida al archivo keepass.hash. Para ver el contenido del archivo hash recién creado, utiliza el comando cat:

cat ~/project/keepass.hash

La salida será una única línea larga de texto que se parecerá a esto:

MySecrets:$keepass$*2*6000*0*b1b5b8a8a5b8a8a5b8a8a5b8a8a5b8a8*...*...

Esta cadena es el hash. Contiene toda la información necesaria para que hashcat intente crackear la contraseña, incluyendo el algoritmo de cifrado, la sal (salt) y la clave maestra cifrada.

Identificar el Modo Correcto de Hashcat para KeePass

En este paso, determinaremos el modo correcto que hashcat debe usar al crackear nuestro hash de KeePass. hashcat es una herramienta extremadamente versátil que soporta cientos de tipos diferentes de hashes, desde contraseñas de sistemas operativos hasta formatos específicos de aplicaciones.

Para que funcione correctamente, debemos indicar explícitamente a hashcat qué tipo de hash estamos proporcionando. Esto se hace especificando un modo numérico usando la bandera -m. Para encontrar el número de modo para KeePass, podemos buscar en la documentación de ayuda de hashcat.

Ejecuta el siguiente comando en tu terminal. Este canaliza la salida completa de ayuda de hashcat a grep, que luego filtra las líneas que contienen la palabra "keepass".

hashcat --help | grep -i keepass

La bandera -i en grep hace que la búsqueda no distinga entre mayúsculas y minúsculas. La salida te mostrará los modos relevantes:

13400 | KeePass 1 (AES/Twofish) / KeePass 2 (AES)             | Password Managers

De esta salida, podemos ver que el modo para las bases de datos KeePass 1 y 2 es 13400. Este es el número que necesitaremos en el paso final para lanzar nuestro ataque.

Preparar una Lista de Palabras para el Ataque

En este paso, prepararemos una lista de palabras para nuestro ataque de diccionario. Un ataque de diccionario (o ataque de lista de palabras) es un método en el que la herramienta de cracking prueba cada palabra de una lista precompilada como una posible contraseña. El éxito de este ataque depende completamente de si la contraseña correcta está incluida en la lista.

En escenarios del mundo real, los atacantes utilizan listas de palabras masivas que contienen millones o incluso miles de millones de contraseñas comunes. Para este laboratorio, crearemos una lista de palabras personalizada muy pequeña para asegurar que el proceso de cracking sea rápido y exitoso. Lo más importante es que incluiremos la contraseña correcta, password123, en nuestra lista.

Utiliza el editor de texto nano para crear un nuevo archivo llamado wordlist.txt.

nano ~/project/wordlist.txt

Una vez que nano se abra, escribe las siguientes contraseñas en el editor, cada una en una nueva línea:

password
123456
password123
qwerty
labex

Después de escribir las palabras, guarda el archivo y sal de nano presionando Ctrl+X, luego Y para confirmar, y finalmente Enter.

Ahora tenemos nuestra lista de palabras lista para que hashcat la utilice.

Lanzar el Ataque y Recuperar la Contraseña Maestra

En este paso final, uniremos todo y lanzaremos el ataque de cracking de contraseñas con hashcat. Tenemos el archivo hash (keepass.hash), el modo hash correcto (13400) y nuestra lista de palabras personalizada (wordlist.txt).

Ahora, ejecuta el siguiente comando en tu terminal para iniciar el ataque:

hashcat -m 13400 -a 0 ~/project/keepass.hash ~/project/wordlist.txt

Analicemos este comando:

  • hashcat: El programa que estamos ejecutando.
  • -m 13400: Especifica el modo hash para KeePass 2, que identificamos en un paso anterior.
  • -a 0: Especifica el modo de ataque. El modo 0 es un ataque "Straight" o de diccionario.
  • ~/project/keepass.hash: La ruta a nuestro archivo que contiene el hash objetivo.
  • ~/project/wordlist.txt: La ruta a nuestra lista de palabras.

hashcat se inicializará y comenzará a probar las contraseñas de tu lista de palabras. Dado que nuestra lista es muy corta y contiene la contraseña correcta, el proceso será muy rápido. Verás actualizaciones de estado y pronto el proceso finalizará.

Una vez que el ataque se complete, hashcat almacena las contraseñas encontradas en un archivo llamado "potfile". Para ver la contraseña crackeada, puedes ejecutar el mismo comando nuevamente con la bandera --show.

hashcat -m 13400 -a 0 ~/project/keepass.hash ~/project/wordlist.txt --show

Este comando mostrará instantáneamente el hash crackeado y su contraseña correspondiente:

MySecrets:$keepass$*2*6000*0*...:password123

La salida muestra claramente el hash original seguido de dos puntos y la contraseña recuperada: password123. ¡Felicidades, has crackeado con éxito la contraseña de la base de datos KeePass!

Resumen

En este laboratorio, realizaste con éxito un ataque de diccionario para recuperar la contraseña maestra de una base de datos KeePass KDBX.

Aprendiste un flujo de trabajo completo y práctico para la auditoría de contraseñas, que incluyó:

  1. Crear una base de datos KeePass de ejemplo con una contraseña débil.
  2. Utilizar keepass2john para extraer el hash de la contraseña en un formato adecuado para el cracking.
  3. Identificar el modo hash correcto (13400) en hashcat para bases de datos KeePass.
  4. Preparar una lista de palabras personalizada que contenga posibles contraseñas.
  5. Lanzar el ataque con hashcat y recuperar con éxito la contraseña.

Este ejercicio resalta un principio de seguridad crítico: la seguridad de una base de datos de contraseñas completa es tan fuerte como su contraseña maestra. El uso de contraseñas simples, comunes o fáciles de adivinar las hace vulnerables a ataques de diccionario, incluso cuando están protegidas por cifrado fuerte. Utiliza siempre contraseñas maestras largas, complejas y únicas para tus gestores de contraseñas.