Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
KeeFarceReborn — Una DLL independiente que exporta bases de datos en texto claro una vez inyectada en el proceso de KeePass. | Kitploit
Herramientas/GitHubGitHub/d3lb3/keefarcereborn
Ataques de ContraseñasGeneración de PayloadsExfiltración de DatosPost-ExplotaciónRed TeamingGeneración de Shellcode
GitHubd3lb3/keefarcereborn

KeeFarceReborn

Una DLL independiente que exporta bases de datos en texto claro una vez inyectada en el proceso de KeePass.

Ver Repositorio
2993523hace 3 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

KeeFarce Reborn

Un DLL independiente que exporta bases de datos en texto claro una vez inyectado en el proceso de KeePass.

Muy inspirado en los grandes proyectos KeeFarce, KeeThief y KeePassHax.

¿Otra herramienta de extracción de KeePass, por qué?

Hace unos años, @denandz publicó KeeFarce, la primera herramienta ofensiva diseñada para extraer bases de datos de KeePass en texto claro. Funciona inyectando un DLL en el proceso en ejecución y luego recorre el heap usando ClrMD para encontrar los objetos necesarios e invocar el método de exportación integrado de KeePass mediante reflexión. Su única desventaja en ese momento era que había que dejar varios archivos en el objetivo (el DLL de extracción + el DLL de ClrMD + el inyector + un DLL de arranque).

Un año después, @tifkin_ y @harmj0y publicaron un análisis en profundidad de las técnicas ofensivas dirigidas a KeePass (aunque ya no está disponible en el blog de harmj0y, los artículos se pueden encontrar en Wayback Machine: parte 1, parte 2). Esto resultó en la publicación de KeeThief, una herramienta capaz de descifrar la clave maestra de KeePass (incluso cuando se utilizan métodos de autenticación alternativos). Funcionó tan bien que los desarrolladores de KeePass añadieron un parámetro para mitigar esta técnica (se puede deshabilitar editando el archivo de configuración de KeePass si el usuario tiene los derechos suficientes, algo bastante común).

Estas herramientas se convirtieron rápidamente en mi opción preferida durante las pruebas de penetración, pero pronto quedaron obsoletas porque sus técnicas de inyección (es decir, el famoso grupo de API Win32 de VirtualAllocEx, WriteProcessMemory, CreateRemoteThread, WriteProcessMemory, etc.) ahora disparan la detección de inmediato. @snovvcrash abordó este problema haciendo un fork de KeeThief (ahora en un repositorio privado, pero aún accesible aquí) para mejorar el mecanismo de inyección con D/Invoke, escribiendo un gran artículo que detalla el proceso que siguió. Si bien demostró la viabilidad de mantener KeeThief, me resulta difícil implementar nuevas técnicas de inyección con regularidad, ya que el código de KeeThief está estrechamente vinculado a su inyector.

@holly-cracker también publicó KeePassHax, que viene como un único DLL y solo usa reflexión para descifrar la clave maestra de KeePass. Inspirado por este trabajo, decidí hacer lo mismo con KeeFarce y escribir mi propia herramienta de extracción de KeePass con las siguientes características:

  • Autosuficiente ⇒ no requiere interacción con el código del inyector para funcionar.
  • Solo usa librerías integradas de .NET (sin ClrMD) ⇒ mejor compatibilidad + un DLL de un solo archivo facilita el proceso de inyección.
  • Exporta la base de datos (como KeeFarce) ⇒ no es necesario recuperar el .kdbx ni usar una compilación personalizada de KeePass para ingresar la clave maestra recuperada.

KeeFarce Reborn también proporciona un DLL de plugin para KeePass para que KeePass se inyecte a sí mismo sin preocuparse por inyectores.

Compilación

Como el código se basa únicamente en .NET Framework sin dependencias externas, debería compilar fácilmente en Visual Studio 2015 y versiones posteriores.

Ejemplo de uso

KeeFarce Reborn no incluye un inyector para cargar el DLL en el proceso de KeePass. Esto es deliberado, ya que los inyectores quedan obsoletos cada pocos meses; tendrás que usar el tuyo propio. Las siguientes partes muestran dos formas típicas de realizar la inyección.

Hacer que KeePass inyecte KeeFarce Reborn como plugin

Requisito previo: acceso de escritura al directorio de plugins de KeePass.

KeePass cuenta con un marco de plugins para proporcionar funcionalidades adicionales a los usuarios. Funciona cargando un DLL en el proceso de KeePass, lo que permite a los desarrolladores de plugins realizar acciones dentro del dominio de aplicación de KeePass.

Como resultado, podemos abusar de esta funcionalidad para cargar KeeFarce Reborn como plugin, ¡sin siquiera tener que usar un inyector externo! Solo necesitas compilar el proyecto KeeFarceRebornPlugin y copiar el DLL en el directorio de plugins (ubicado en la raíz de KeePass, es decir, "C:\Program Files\KeePass Password Safe 2\Plugins" para una instalación global).

Para que el proyecto compile correctamente, deberás copiar la versión del ensamblado KeePass.exe objetivo en el directorio KeeFarceRebornPlugin, o usar el PLGX si quieres que el plugin resultante sea compatible con cualquier versión de KeePass.

La próxima vez que se inicie KeePass y se desbloquee una base de datos, el DLL se cargará y se realizará la inyección. Si KeePass ya se está ejecutando, deberás esperar a su próximo reinicio para que ocurra la inyección (o forzar el reinicio tú mismo).

⚠️ Una vez que un plugin está cargado, el archivo DLL estará protegido contra escritura hasta que KeePass se cierre. Tenlo en cuenta para asegurarte de no dejar plugins maliciosos detrás durante las evaluaciones.

Si no tienes acceso de escritura al directorio de plugins de KeePass, puedes echar un vistazo al artículo de Quarkslab que demuestra cómo cargar plugins con menos privilegios a través de la caché de plugins.

Realizar inyección de shellcode

Requisito previo: KeePass en ejecución + una base de datos desbloqueada por el usuario + derechos suficientes para inyectar en el proceso de KeePass.

Como personalmente me resulta más fácil inyectar shellcode de forma sigilosa que un DLL en un proceso remoto, lo primero que suelo hacer es generar un shellcode independiente de la posición a partir de nuestro DLL. Parece que el proyecto donut de @odzhan y @TheWover se adapta perfectamente a nuestras necesidades.

Compilamos donut desde un commit en la rama dev, ya que corrige un problema en la gestión del dominio de aplicación que nos impediría realizar reflexión en el dominio predeterminado.

git clone https://github.com/TheWover/donut/
cd donut
git checkout 9d781d8da571eb1499122fc0e2d6e89e5a43603c

Podemos compilar fácilmente desde el x64 Native Tools Command Prompt de Visual Studio con la utilidad nmake:

nmake -f Makefile.msvc

Generar el shellcode es tan simple como:

.\donut.exe "C:\KeeFarceReborn\KeePassReborn\bin\Release\KeeFarceReborn.dll" -c KeeFarceReborn.Program -m Main -e 1

  [ Donut shellcode generator v0.9.3
  [ Copyright (c) 2019 TheWover, Odzhan

  [ Instance type : Embedded
  [ Module file   : "C:\KeeFarceReborn\KeePassReborn\bin\Release\KeeFarceReborn.dll"
  [ Entropy       : None
  [ File type     : .NET DLL
  [ Class         : KeeFarceReborn.Program
  [ Method        : Main
  [ Target CPU    : x86+amd64
  [ AMSI/WDLP     : continue
  [ Shellcode     : "loader.bin"
Descargar herramienta