Blog Blog

Humans vs KeePass vs Humans

May 20, 2025
Humans vs KeePass vs Humans

En el ultimo año "Google Password Manager" -un software para administrar contraseñas privada- ha logrado posicionarse como una de las primeras opciones de usuarios a nivel mundial para gestionar sus accesos a redes sociales, programas, softwares, etc... El software de Google se caracteriza principalmente por ser un Password Manager robusto, versátil y sencillo de utilizar para los usuarios finales solo con su cuenta de correo, esto sin embargo no quita que aun se utilicen alternativas gratuitas en producción, inclusive existen empresas que utilizan programas sin costo para administrar las claves de acceso a su información, lo cual no es un error siempre que se implementen medidas correctas de protección y de una masterkey robusta.

En este post analizaremos y descubriremos de manera empírica una forma de explotar un archivo .kdbx (archivo que almacena credenciales o contraseñas del programa "KeePass") para poder aplicarlo en nuestras pruebas de penetración, en CTF's , máquinas de prueba, etc... Esta manera de explotación nos servirá para evaluar la complejidad de una masterkey que no necesariamente debe la contraseña tener una entropía gigante para ser una buena contraseña de uso personal.

Método con KeePass antiguo

La primera forma aplica para aquellas versiones de KeePass no actualizadas, con estas versiones se puede utilizar keepass2john:

1keepass2john database_old.kdbx > hash_kdbx_old
2Ejemplo de salida:
3$keepass$*2*100000*0*36c1b27ee73ab987d4f76330ae22d91b2cf8341832b118ae532faefc71fa1c5e*8cd7d38e010a3cce065bfcd69c4f3ccbb4318d58436f063fb8ee4f1a7fd323a8*758ed74daa44027c1fc29fa0039af3e0*31c6c1caf044b519c98068ad92a2711e72349783ad60301ecb3209ef1a0ec715*d587dcaf78693bf1b4669fa3d8f2029398164bdc70bdf2e8456ad74b35287d26

Este comando crea en principio un hash listo para ser crackeado e iterarse dentro de hashcat o nuestro programa de crackeo de preferido.

1$ hashcat -m 13400 hash_kdbx_old wordlist.txt
2$ hashcat -m 13400 hash_kdbx_old --show
  • -m : Indicamos el modo para que hashcat identifica que tipo de hash le estamos pasando a descifrar.

Método con KeePass 2

Podemos llegar a pensar que si hacemos lo mismo con versiones actuales de KeePass podemos volver hashear la contraseña, sin embargo keepass2john no soporta este nuevo tipo de formato "40000" de KeePass, dando un paso adelante y tratando de renovar la manera en que podemos obtener contraseña en texto plano encontramos un repositorio de GitHub que utiliza una técnica sencilla pero bien aplicada que itera posibles contraseñas de un diccionario dado hacia a un archivo .kdbx, aprovechándose de keepassxc como dependencia que es la versión para consola de Keepass.

Esta herramienta básicamente lo que hace es automatizarnos el proceso de escribir contraseña por contraseña en el inicio de sesión de keepass. Podemos hacer un stop aquí y analizar el código que realmente no es difícil de entender incluso para un principiante.

https://github.com/r3nt0n/keepass4brute

1$ sudo apt install keepassxc -y
2$ chmod +x keepass_bruteforce.sh

Esto primero instala el keepass para consola (en caso no lo tengas), luego le damos permiso de ejecución al archivo que hemos creado en base al repositorio o también si clonamos el repositorio podemos darle permisos de ejecución.

1$ ./keepass_bruteforce.sh recovery.kdbx rockyou.txt

Con este comando podemos finalmente poner en marcha el script.

Esto si bien es cierto puede durar mucho ya que las iteraciones no son exponenciales, sino que se iteran con moderación.

Esto si bien está siendo utilizado con el diccionario rockyou.txt aun puede ser utilizable con diccionarios personalizados según el comportamiento del target, puedes analizar los patrones de contraseñas que hayan tenido haciendo más optimizado el diccionario, como por ejemplo si intuyes que las contraseñas usualmente utilizan o terminan con "!" combinado de Mayúsculas y Minúsculas puedes crear un diccionario con estas características, o si las contraseñas tienen la inicial de la persona y luego su apellido seguido de algunos caracteres aleatorios puedes también crear un diccionario personalizado.

Es importante resaltar que cuando uno crea una contraseña propia no necesariamente tiene que tener un nivel de aleatoriedad con caracteres exageradamente variados ya que eso nos dificultará el hecho de acordarnos de la misma contraseña, por el contrario se debe crear una contraseña con algo poco esperado, fácil de recordar y además personalizada como por ejemplo: miperrotienepulgasyQu3@

Como podemos ver tenemos que hay muchas contraseñas que contienen la palabra "miperro" , pero no la que hemos creado.

Espero este articulo les sirva de ayuda para poder aplicarlo en sus máquinas (guiño), como dato curioso estos posts y los que haré en el futuro serán contemporáneos con algunas explotaciones que se muestran en las máquinas de la plataforma Hack The Box. (̶◉͛‿◉̶)

Referencias

https://hashcat.net/forum/archive/index.php?thread-10838.html
https://www.digitalinformationworld.com/2024/11/2024-study-36-use-password-managers-79.html
https://explodingtopics.com/blog/password-stats

Tags:

kdbx bypass, keepass bypass, keepass brute force, keepass password cracking, keepass2john tutorial, extract keepass hash, hashcat keepass, crack keepass database, decrypt kdbx file, keepass hash extraction, bruteforce keepass 2025, keepass 2 bruteforce, keepass 2 bypass, keepass vulnerability, keepass vuln hack the box, kdbx abuse.

Raúl Zavaleta

Raúl Zavaleta

Entusiasta y eterno estudiante de ciberseguridad.