Usa correctamente tu gestor de contraseñas o exponla

Hace poco estuve analizando el gestor de contraseñas KeePass, en su versión para Windows. Imaginando la situación en la que un atacante compromete tu máquina y tiene acceso a los procesos que se ejecutan en la máquina, podríamos caer fácilmente en que el proceso KeePass se encuentra en ejecución. Este proceso puede llamar, y mucho, la atención de un atacante. Por esta razón decidí ver qué se podía rascar de la memoria RAM.

En primer lugar realicé sin más un volcado del proceso simulando previamente una intrusión con una Meterpreter. Tras tomar el control de la máquina y ejecutando un “ps” se puede obtener un listado de los procesos que se ejecutan en el equipo. Llama la atención varias, pero poniendo los ojos sobre el KeePass.exe se pueden hacer varias cosas. Lo primero es hablar del script process_memdump, con el que se puede conseguir un volcado del proceso y almacenarlo en un fichero. Metasploit almacena en el home del usuario la información obtenida. En este caso la ruta sería /root/.msf4/logs/scripts/process_memdump. 

Desde el punto de vista del usuario de KeePass podemos utilizarlo de diferentes formas. La forma más segura es la utilización de los atajos que el gestor proporciona:
CTRL+B nos permite copiar el usuario.
CTRL+C nos permite copiar la contraseña.
CTRL+V permite copiar y pegar el usuario y contraseña en el formulario siempre y cuando tengamos a este como segunda ventana activa después del propio KeePasss.

El gestor proporciona unos segundos en el que la información queda almacenada antes de ser eliminada del portapapeles. Podemos considerar esto como un uso algo más seguro. Una de las cosas que los usuarios de KeePass suelen utilizar es el botón “de los puntos suspensivos”. Este botón permite al usuario visualizar la contraseña en plano, lo cual a priori puede suponer una acción sin más. 


En la imagen anterior se puede visualizar como la contraseña se ve en texto plano. Esto es gracias a que se pulsa el botón “de los tres puntos suspensivos”. En ese instante la contraseña se encuentra alojada en memoria, en texto plano y dentro del ámbito del proceso. Debido a esto, si realizamos un volcado de memoria del proceso en cuestión podremos tener acceso a la contraseña. Esto es debido a una mala práctica por parte del usuario. Además, la contraseña quedará en RAM por un tiempo indeterminado. 


Al realizar la siguiente búsqueda sobre el volcado del proceso empezamos a visualizar información de la entrada en el gestor. Podemos ver información como el nombre de usuario, la dirección URL dónde aplicar contraseña o el nombre de la entrada. La contraseña se encuentra oculta mediante “*”. Si el usuario no utiliza el botón “de los puntos suspensivos” no habrá leak o desprotección. Tras realizar algunas pruebas con ello, se puede llegar a esta conclusión. En el caso de que el usuario pulse dicho botón, el valor en plano de la contraseña se aloja en la RAM. Es cierto que no se almacena junto al resto de información, pero está dentro del proceso, tal y como puede visualizarse en la siguiente imagen.


Es cierto que la contraseña se muestra repetidas veces y que no hay una referencia por la que realizar la búsqueda, pero se encuentra. Si se lleva a cabo la prueba sin haber utilizado el botón de mostrar la contraseña, no se almacenaría la contraseña en plano. Ha sido una prueba curiosa. Ni mucho menos quiere decir que KeePass sea inseguro, es aconsejable utilizar un gestor de contraseñas como éste, pero un mal uso del gestor puede provocar una pequeña exposición en memoria RAM de información sensible. Lógicamente, para poder aprovecharse de esto se debe tener algún tipo de acceso, físico o remoto, como en el ejemplo se proponía.