
Kit de collecte d'identifiants post-exploitation qui s'injecte dans les gestionnaires de mots de passe et les utilitaires Windows pour capturer des identifiants via du proxy DLL, du détournement COM et une injection AppDomainManager.
ThievingFox est une collection d'outils de post-exploitation pour récupérer des identifiants depuis divers gestionnaires de mots de passe et utilitaires Windows. Chaque module utilise une méthode spécifique d'injection dans le processus cible, puis intercepte des fonctions internes pour collecter les identifiants.
L'article de blog associé se trouve ici
Rustup doit être installé, suivez les instructions disponibles ici : https://rustup.rs/
Le paquet mingw-w64 doit être installé. Sur Debian, cela peut se faire avec :
apt install mingw-w64
Les cibles Windows x86 et x86_64 doivent être installées pour Rust :
rustup target add x86_64-pc-windows-gnu
rustup target add i686-pc-windows-gnu
Mono et Nuget doivent également être installés, les instructions sont disponibles ici : https://www.mono-project.com/download/stable/#download-lin
Après avoir ajouté les dépôts Mono, Nuget peut être installé via apt :
apt install nuget
Enfin, les dépendances Python doivent être installées :
pip install -r client/requirements.txt
ThievingFox fonctionne avec python >= 3.11.
Rustup doit être installé, suivez les instructions disponibles ici : https://rustup.rs/
Les cibles Windows x86 et x86_64 doivent être installées pour Rust :
rustup target add x86_64-pc-windows-msvc
rustup target add i686-pc-windows-msvc
L'environnement de développement .NET doit également être installé. Depuis Visual Studio, naviguez vers Outils > Obtenir des outils et fonctionnalités > Installer "Développement .NET desktop".
Enfin, les dépendances Python doivent être installées :
pip install -r client/requirements.txt
ThievingFox fonctionne avec python >= 3.11
NOTE : Sur un hôte Windows, pour utiliser le module KeePass, msbuild doit être disponible dans le PATH. Cela peut être réalisé en exécutant le client depuis un Visual Studio Developer PowerShell (Outils > Ligne de commande > Developer PowerShell)
Tous les modules ont été testés sur les versions Windows suivantes :
| Version Windows |
|---|
| Windows Server 2022 |
| Windows Server 2019 |
| Windows Server 2016 |
| Windows Server 2012R2 |
| Windows 10 |
| Windows 11 |
[!CAUTION] Les modules n'ont pas été testés sur d'autres versions, et ils sont susceptibles de ne pas fonctionner.
| Application | Méthode d'injection |
|---|---|
| KeePass.exe | Injection AppDomainManager |
| KeePassXC.exe | Proxying DLL |
| LogonUI.exe (Écran de connexion Windows) | Détournement COM |
| consent.exe (Pop-up UAC Windows) | Détournement COM |
| mstsc.exe (Client RDP par défaut Windows) | Détournement COM |
| RDCMan.exe (Client RDP Sysinternals) | Détournement COM |
| MobaXTerm.exe (Client RDP tiers) | Détournement COM |
[!CAUTION] Bien que j'aie essayé de garantir que ces outils n'affectent pas la stabilité des applications ciblées, l'interception (hooking) en mémoire et l'injection de bibliothèques sont dangereuses et peuvent entraîner un crash ou une instabilité de l'application. Si cela devait arriver, l'utilisation du module
cleanupsur la cible devrait suffire pour garantir que la prochaine fois que l'application sera lancée, aucune injection/interception ne sera effectuée.
ThievingFox contient 3 modules principaux : poison, cleanup et collect.
Pour chaque application spécifiée dans les paramètres de la ligne de commande, le module poison récupère la bibliothèque originale qui va être détournée (pour le détournement COM et le proxying DLL), compile une bibliothèque qui correspond aux propriétés de la DLL d'origine, la télécharge sur le serveur, et modifie le registre si nécessaire pour effectuer le détournement COM.
Pour accélérer le processus de compilation de toutes les bibliothèques, un cache est conservé dans client/cache/.
--mstsc, --rdcman et --mobaxterm ont une option spécifique, respectivement --mstsc-poison-hkcr, --rdcman-poison-hkcr et --mobaxterm-poison-hkcr. Si l'une de ces options est spécifiée, le détournement COM remplacera la clé de registre dans la ruche HKCR, ce qui signifie que tous les utilisateurs seront impactés. Par défaut, seuls les utilisateurs actuellement connectés sont impactés (tous les utilisateurs ayant une ruche HKCU).
--keepass et --keepassxc ont des options spécifiques, --keepass-path, --keepass-share et --keepassxc-path, --keepassxc-share, pour spécifier où ces applications sont installées, si ce n'est pas le chemin d'installation par défaut. Ce n'est pas nécessaire pour les autres applications, car le détournement COM est utilisé.
Le module KeePass nécessite que le Visual C++ Redistributable soit installé sur la cible.
Plusieurs applications peuvent être spécifiées à la fois, ou le drapeau --all peut être utilisé pour cibler toutes les applications.
[!IMPORTANT] N'oubliez pas de vider le cache si vous changez le paramètre
--tempdir, car le nom du répertoire est intégré dans les DLL natives.
$ 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]