Hackear KeePass: Extraiga la contraseña maestra de KeePass de la memoria usando esta herramienta

KeePass es un software de código abierto y de uso gratuito. Es un compañero de confianza para los usuarios de Windows, Linux y Mac OS X, así como para los usuarios de dispositivos móviles. Sin embargo, un agujero de seguridad recientemente encontrado ha llamado la atención sobre el programa, lo que demuestra que ni siquiera los sistemas más seguros son inmunes a la posibilidad de tener problemas de seguridad.

Este fallo de seguridad, al que se le ha asignado el identificador CVE-2023-32784, hace posible que la contraseña maestra del usuario se descargue de la memoria incluso cuando el espacio de trabajo del usuario está cerrado o el programa ya no está activo. La contraseña maestra es la clave principal que se puede utilizar para desbloquear la base de datos de contraseñas del usuario. Un actor hostil podría extraer la contraseña maestra de texto sin formato de un volcado de memoria. Las versiones de KeePass 2.x anteriores a la 2.54 incluyen esta vulnerabilidad. Esta vulnerabilidad está muy extendida en las versiones de KeePass 2.x. Es posible que se trate de un volcado del proceso de KeePass, pero también podría ser un archivo de intercambio, un archivo de hibernación o incluso un volcado de RAM de todo el sistema. El hecho de que el carácter inicial de la contraseña no se pueda reconstruir es el único consuelo menor en esta situación.

Un investigador con el nombre de vdohney creó una herramienta de prueba de concepto y le dio el apodo adecuado “KeePass Master Password Dumper” para llamar la atención sobre este problema. Este programa proporciona una demostración clara de cómo se puede recuperar la contraseña maestra de la memoria de KeePass con la excepción del primer carácter. Esto se puede hacer sin necesidad de ejecutar el código en la máquina a la que se dirige, y se puede hacer incluso si el espacio de trabajo está bloqueado o si KeePass ya no está funcionando.

Al ingresar contraseñas, KeePass 2.X utiliza un cuadro de texto creado específicamente para él llamado SecureTextBoxEx. Este cuadro de texto se utiliza no solo para la inserción de la contraseña maestra, sino también en otras ubicaciones en KeePass, como los cuadros de edición de contraseñas (lo que significa que el ataque también puede usarse para recuperar el contenido de otros cuadros de edición de contraseñas).

La vulnerabilidad que se aprovecha aquí es el hecho de que se forma una cadena sobrante en la memoria para cada carácter que se ingresa. Debido a la forma en que opera .NET, una vez que se ha creado una instancia de este, es muy difícil eliminarlo. Por ejemplo, cuando se ingresa la palabra “Contraseña”, dejará atrás las siguientes cadenas: •a, ••s, •••s, ••••w, •••••o, ••••••r, •••••••d. El programa de prueba de concepto examina el volcado para encontrar estos patrones y sugiere un carácter posible para usar en cada ubicación de la contraseña.

La confiabilidad de este ataque es susceptible de cambiar según la forma en que se escribió la contraseña, así como la cantidad de contraseñas que se ingresaron en una sola sesión. Sin embargo, parece que la forma en que .NET CLR crea estas cadenas implica que es probable que estén bien ordenadas en la memoria. Esto es cierto incluso si se utilizan numerosas contraseñas para una sola sesión o si hay errores en las contraseñas. Por lo tanto, si se ingresaron tres contraseñas distintas, tiene buenas posibilidades de obtener tres opciones para cada lugar de carácter en esa secuencia. Esto le permite recuperar las tres contraseñas si se ingresaron.

¿Deberías preocuparte por esto?
Depende del modelo de amenaza que elija. Este descubrimiento no empeora significativamente su condición si su máquina ya está infectada con malware que está operando en segundo plano con los derechos de su usuario. Por otro lado, a diferencia de KeeTheft y KeeFarce, no es necesario ningún tipo de inyección de proceso u otra ejecución de código para que el malware sea sigiloso y esquive el software antivirus. Esto puede simplificar las cosas para el malware.

Podría ser un problema si tiene una sospecha razonable de que alguien podría acceder a su computadora y realizar un examen forense. Incluso si KeePass está completamente cerrado o protegido, aún es posible que se vuelva a descubrir la contraseña maestra. Esta es la peor situación posible.

Si tiene una máquina limpia y utiliza el cifrado de disco completo con una contraseña segura, debería estar bien. Debido a este descubrimiento, será imposible que alguien robe sus credenciales de forma remota a través de Internet.