27 ago 2017

PoshKPBrute, capaz de romper contraseñas de Keepass con diccionario

Cuanto mayor complejidad es la complejidad de las contraseñas, más difícil es recordarlas, lo que ha hecho que en los últimos años los "gestores de contraseñas" hayan ganado una gran popularidad entre los usuarios, gestores como LastPass o el software de código abierto KeePass.

KeePass es una de las mejores aplicaciones para administrar nuestras contraseñas. Este software crea una base de datos donde guardar todas nuestras contraseñas de manera que, recordando tan solo la contraseña maestra, podamos consultarlas todas ellas cuando necesitemos iniciar sesión. KeePass es una aplicación gratuita, segura y de código abierto, lo que nos da muchas garantías a la hora de confiarla nuestras contraseñas, al contrario que al hacerlo a empresas privadas, como LastPass.

Sin embargo, por muy segura que sea, las bases de datos de esta aplicación (igual que prácticamente todo tipo de software) son vulnerables a ataques de fuerza bruta, y, además, existe un script para PowerShell creado especialmente para este fin: PoshKPBrute.

PoshKPBrute, el script que puede revelar todas tus contraseñas guardadas en KeePass

PoshKPBrute es un sencillo script escrito para PowerShell pensado especialmente para romper la contraseña maestra de las bases de datos de Keepass 2.34, aunque perfectamente puede funcionar con las últimas versiones de este software. Este script está diseñado para buscar la clave de la base de datos mediante técnicas de fuerza bruta y, una vez conseguida, volcar todas las contraseñas en la pantalla, así como información sobre la clave maestra utilizada.

Este script es de código abierto, y podemos encontrarlo, junto a una breve documentación, en GitHub. Junto al script podemos descargar un completo diccionario de claves (más de 8 MB de texto plano) que será el que se cargue al programa para empezar a romper la seguridad de la base de datos.

Este script tiene el defecto de ser bastante lento y, aunque es capaz de probar hasta 500 contraseñas por segundo, si la base de datos utiliza una clave bastante compleja es muy probable que tardemos varias horas, o días, en romper su seguridad.

PoshKPBrute solo requiere de 3 parámetros para funcionar:
  • binpath - ruta al binario de KeePass.
  • pwdpath - ruta al diccionario de contraseñas.
  • targetfile - ruta a la base de datos a romper.
Así, para empezar el ataque, simplemente debemos ejecutar un comando como el siguiente en la consola de PowerShell para que el script empiece a funcionar:

./crack-keepassfile.ps1 -binpath "C:\program files (x86)\KeePass2x" 
-pwdfile "c:\pwdlist.txt" -targetfile "c:\TEST.kdbx"
PoshKPBrute - Contraseñas KeePass
Si la consola de PowerShell no nos deja ejecutar script por la política de ejecución, podemos cambiar este permiso simplemente ejecutando "Set-ExecutionPolicy Unrestricted".

Fuente: RedesZone | hazzy.techanarchy.net

Suscríbete a nuestro Boletín

5 comentarios:

  1. La forma correcta de configurar KeePass es definir "transform rounds" (la cantidad de transformaciones sobre la clave) equivalente a 1 segundo o más (en File > Database settings). Por defecto, si no me equivoco, es de 1 seg, lo que quiere decir que en la misma maquina este PoshKPBrute script estaría probando una clave por segundo, 86400 x día, con lo cual cualquier intento de bruteforce se hace fútil.

    ResponderBorrar
    Respuestas
    1. Efectivamente, por defecto son 6.000 iteraciones. Si lo marcas en un segundo, la cantidad pasa a 10.846.464 iteraciones. Si bien es un buena opción tb está el tema de que la apertura de la BD tomará ese tiempo.
      De todos modos haré algunas pruebas y luego aviso.

      Borrar
    2. He probado con más iteraciones y efectivamente la tool funciona igual. Con un diccionario grande tarda más obviamente pero sigue siendo efectivo. La solución es tener pass más largas (que no estén en diccionarios) y/o utilizar 2FA con un Key Provider.

      Borrar
    3. Efectiva con cuantas iteraciones? Con las que toman 1 segundo en descifrar la BD? Si podemos probar apenas 1 combinación por segundo, para encontrar una clave como "vjjk3p" como en el dibujo, la herramienta debería tardar (26 + 10) ^ 6 / 86400 / 365 = 69 años. Con múltiples cores y threads este tiempo se reduciría proporcionalmente, pero igual estaría en el orden de varios años.

      Y a fines prácticos un delay de 1 segundo en descifrar la BD una sola vez por sesión es insignificante.

      Borrar
  2. No funciona el script

    >> Falta la llave de cierre '}' en el bloque de instrucciones.
    >> En C:\Users\b0x\Desktop\PoshKPBrute-master\crack-keepassfile.ps1: 239 Carácter: 1
    >> + <<<< )
    >> + CategoryInfo : ParserError: (CloseBraceToken:TokenId) [], ParseException
    >> + FullyQualifiedErrorId : MissingEndCurlyBrace

    ResponderBorrar

Gracias por dejar un comentario en Segu-Info.

Gracias por comentar!