
Kit de herramientas de recolección de credenciales post-explotación que se inyecta en gestores de contraseñas y utilidades de Windows para capturar credenciales mediante proxy de DLL, secuestro de COM e inyección de AppDomainManager.
ThievingFox es una colección de herramientas de post-explotación para recopilar credenciales de varios gestores de contraseñas y utilidades de Windows. Cada módulo utiliza un método específico de inyección en el proceso objetivo, y luego engancha funciones internas para recopilar credenciales.
La publicación del blog acompañante se puede encontrar aquí
Rustup debe estar instalado, siga las instrucciones disponibles aquí: https://rustup.rs/
El paquete mingw-w64 debe estar instalado. En Debian, esto se puede hacer usando:
apt install mingw-w64
Ambos objetivos de Windows x86 y x86_64 deben estar instalados para Rust:
rustup target add x86_64-pc-windows-gnu
rustup target add i686-pc-windows-gnu
Mono y Nuget también deben estar instalados, las instrucciones están disponibles aquí: https://www.mono-project.com/download/stable/#download-lin
Después de agregar los repositorios de Mono, Nuget se puede instalar usando apt:
apt install nuget
Finalmente, las dependencias de Python deben estar instaladas:
pip install -r client/requirements.txt
ThievingFox funciona con python >= 3.11.
Rustup debe estar instalado, siga las instrucciones disponibles aquí: https://rustup.rs/
Ambos objetivos de Windows x86 y x86_64 deben estar instalados para Rust:
rustup target add x86_64-pc-windows-msvc
rustup target add i686-pc-windows-msvc
El entorno de desarrollo .NET también debe estar instalado. Desde Visual Studio, navegue a Tools > Get Tools And Features > Install ".NET desktop development"
Finalmente, las dependencias de Python deben estar instaladas:
pip install -r client/requirements.txt
ThievingFox funciona con python >= 3.11
NOTA: En un host Windows, para usar el módulo KeePass, msbuild debe estar disponible en el PATH. Esto se puede lograr ejecutando el cliente desde una Consola de Desarrollador de Visual Studio (Tools > Command Line > Developper Powershell)
Todos los módulos han sido probados en las siguientes versiones de Windows:
| Versión de Windows |
|---|
| Windows Server 2022 |
| Windows Server 2019 |
| Windows Server 2016 |
| Windows Server 2012R2 |
| Windows 10 |
| Windows 11 |
[!CAUTION] Los módulos no han sido probados en otras versiones, y se espera que no funcionen.
| Aplicación | Método de Inyección |
|---|---|
| KeePass.exe | AppDomainManager Injection |
| KeePassXC.exe | DLL Proxying |
| LogonUI.exe (Pantalla de inicio de sesión de Windows) | COM Hijacking |
| consent.exe (Ventana emergente de UAC de Windows) | COM Hijacking |
| mstsc.exe (Cliente RDP predeterminado de Windows) | COM Hijacking |
| RDCMan.exe (Cliente RDP de Sysinternals) | COM Hijacking |
| MobaXTerm.exe (Cliente RDP de terceros) | COM Hijacking |
[!CAUTION] Aunque traté de asegurar que estas herramientas no afecten la estabilidad de las aplicaciones objetivo, el hooking inline y la inyección de librerías no son seguros y esto podría resultar en un bloqueo o inestabilidad de la aplicación. Si ese fuera el caso, usar el módulo
cleanupen el objetivo debería ser suficiente para asegurar que la próxima vez que se inicie la aplicación, no se realice ninguna inyección/hooking.
ThievingFox contiene 3 módulos principales: poison, cleanup y collect.
Para cada aplicación especificada en los parámetros de línea de comandos, el módulo poison recupera la biblioteca original que va a ser secuestrada (para COM hijacking y DLL proxying), compila una biblioteca que coincida con las propiedades de la DLL original, la sube al servidor y modifica el registro si es necesario para realizar COM hijacking.
Para acelerar el proceso de compilación de todas las bibliotecas, se mantiene una caché en client/cache/.
--mstsc, --rdcman y --mobaxterm tienen una opción específica, respectivamente --mstsc-poison-hkcr, --rdcman-poison-hkcr y --mobaxterm-poison-hkcr. Si se especifica una de estas opciones, el COM hijacking reemplazará la clave de registro en el hive HKCR, lo que significa que todos los usuarios se verán afectados. Por defecto, solo los usuarios actualmente conectados se ven afectados (todos los usuarios que tienen un hive HKCU).
--keepass y --keepassxc tienen opciones específicas, --keepass-path, --keepass-share, y --keepassxc-path, --keepassxc-share, para especificar dónde están instaladas estas aplicaciones, si no es la ruta de instalación predeterminada. Esto no es necesario para otras aplicaciones, ya que se usa COM hijacking.
El módulo KeePass requiere que Visual C++ Redistributable esté instalado en el objetivo.
Se pueden especificar múltiples aplicaciones a la vez, o se puede usar la bandera --all para apuntar a todas las aplicaciones.
[!IMPORTANT] Recuerde limpiar la caché si alguna vez cambia el parámetro
--tempdir, ya que el nombre del directorio está incrustado dentro de las DLL nativas.
$ python3 client/ThievingFox.py poison -h
usage: ThievingFox.py poison [-h] [-hashes HASHES] [-aesKey AESKEY] [-k] [-dc-ip DC_IP] [-no-pass] [--tempdir TEMPDIR] [--keepass] [--keepass-path KEEPASS_PATH]
[--keepass-share KEEPASS_SHARE] [--keepassxc] [--keepassxc-path KEEPASSXC_PATH] [--keepassxc-share KEEPASSXC_SHARE] [--mstsc] [--mstsc-poison-hkcr]
[--consent] [--logonui] [--rdcman] [--rdcman-poison-hkcr] [--mobaxterm] [--mobaxterm-poison-hkcr] [--all]
target
positional arguments:
target Target machine or range [domain/]username[:password]@<IP or FQDN>[/CIDR]