Hace poco estuve analizando el gestor de contraseñas
KeePass, en su versión para
Windows para una situación de
pentesting que podría darse en una auditoría interna. Imagina la situación en la que llegas a comprometer una máquina y tras
buscar todas las passwords en el sistema, y
dumpear todo lo posible con
Mimikatz te das cuenta de que en la máquina hay un gestor de contraseñas que puede darte credenciales de sistemas remotos más que jugosas. Imaginando esa situación en la que un atacante compromete una máquina y tiene acceso a los procesos que se ejecutan en la máquina, podríamos esperar fácilmente a que el proceso
KeePass se encuentre en ejecución.
|
Figura 1: Volcar credenciales del proceso de KeePass con Meterpreter |
En este entorno es posible robarle las contraseñas de dos formas. La primera tan simple como robar los ficheros y esperar que se teclee en algún momento en esa máquina la
master password, pero si el proceso ya está en ejecución cuando lleguemos podríamos rascar las
passwords incluso 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. Llaman 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 los que la información queda almacenada antes de ser eliminada del portapapeles. Podemos considerar esto como un uso seguro. Una de las cosas que los usuarios de
KeePass suelen utilizar es el botón
“de los puntos suspensivos”. Este botón permite visualizar la contraseña en plano, lo cual a priori puede suponer una acción sin más.
|
Figura 2: KeePass en Widnows |
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 preciso 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 se puede hacer con
Metasploit de forma sencilla, y es una buena práctica para todo
pentester que llega a una máquina el buscar en todos los procesos posibles credenciales de esta forma, ya que para que los procesos se autentiquen en sistemas necesitan contar con los
hashes de las credenciales, con las
passwords o con identificadores de sesión válidos.
|
Figura 3: Volcado de memoria de un proceso con Meterpreter |
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
“*”.
|
Figura 4: Credenciales en el volcado de memoria |
Si el usuario no utiliza el botón
“de los puntos suspensivos” no parece haber
leak o desprotección temporal a simple vista, por lo que parece que la password no es recuperada hasta ese instante. 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.
|
Figura 5: Extracción de credenciales del fichero de volcado de memoria de Keepass |
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 - además de
poner segundos factores de autenticación a todas tus identidades -, pero en caso de que te encuentre en una auditoría controlando un equipo en el que está este proceso activo, hacer un volcado de la memoria
RAM del mismo te puede dar información sensible.
Autor: Pablo González Pérez (@pablogonzalezpe)
Escritor de los libros "Metasploit para Pentesters", "Ethical Hacking" y “Pentesting con Powershell”
Buenas,
ResponderEliminarMuchas gracias por la info Pablo!
Saludos Chema! Que tengas un buen dia! ;-)
Buenas,
ResponderEliminarMuchas gracias por la info Pablo!
Saludos Chema! Que tengas un buen dia! ;-)
En cuanto a Keepass, también está por ahí Keefarce (https://github.com/denandz/KeeFarce) que en teoría recupera credenciales de la memoria mediante inyección de DLL's. No lo he probado aún, pero no hace mención al botón de mostrar la contraseña en claro, con lo que si es así se convierte en más peligroso.
ResponderEliminarSobre las contraseñas en claro al mostrarlas en el control listview de la herramienta, en favor de Keepass decir que lo menciona en su documentación (http://keepass.info/help/base/security.html#secmemprot)
Esto es viejuno-viejuno... pero mira te ha dado para un post...
ResponderEliminarYa probaron keeferce? dumpea todo a un xml
ResponderEliminarNo termino de comprender que proceso mental lleva a alguien a publicar como Anónimo un comentario como ese.
ResponderEliminarSi no te gusta el blog, no lo leas, es fácil. Estoy seguro que el artículo ha despertado la curiosidad de mucha gente que hoy estarán buscando información sobre meterpreter, gestores de contraseñas, dumps de RAM.....
Si estás por encima de todo esto no pierdas el tiempo en leer, y mucho menos en comentar. Céntrate en tus habilidades y sácales provecho, y si tienes un blog puedes compartirlo con nosotros, seguramente estaremos dispuestos a leerlo y hacer crítica constructiva.
Saludos.
Muy bueno. Muchas Gracias. Y preguntar porque no habeis comentado nada sobre la muerte del fundador de Debian, Ian Murdock? Sois alergicos a Linux?. Un saludo
ResponderEliminarMuy bueno!! y al que comento sobre Debia: Che compiate el blog antes que lo de de baja... (yo ya me quede con mi copia personal)
ResponderEliminarHola Padawan. A que te refieres?. Un saludo.
ResponderEliminarPadawn, te refieres a http://ianmurdock.com/ ?
ResponderEliminarYo utilizo Keepass en modo portable. Lo que hice fue cambiar el nombre del ejecutable, con lo que en la lista de procesos en ejecución, aparece con ese otro nombre. ¿Es buena medida de seguridad para el caso expuesto o se puede saltar?
ResponderEliminarUn saludo
Una duda: si además de clave utilizamos un fichero, ¿sigue existiendo la posibilidad de obtener acceso a la bbdd?
ResponderEliminar