
Post-Exploitation-Toolkit zur Erfassung von Anmeldedaten, das sich in Passwort-Manager und Windows-Dienstprogramme einschleust, um Zugangsdaten mittels DLL-Proxying, COM-Hijacking und AppDomainManager-Injection zu sammeln.
ThievingFox ist eine Sammlung von Post-Exploitation-Werkzeugen, um Anmeldeinformationen aus verschiedenen Passwortmanagern und Windows-Dienstprogrammen zu sammeln. Jedes Modul nutzt eine spezifische Methode zur Injektion in den Zielprozess und hakt dann interne Funktionen, um Anmeldeinformationen zu sammeln.
Der begleitende Blogbeitrag ist hier zu finden.
Rustup muss installiert sein; befolgen Sie die Anweisungen hier: https://rustup.rs/
Das Paket mingw-w64 muss installiert sein. Auf Debian kann dies wie folgt erfolgen:
apt install mingw-w64
Sowohl die x86- als auch die x86_64-Windows-Ziele für Rust müssen installiert sein:
rustup target add x86_64-pc-windows-gnu
rustup target add i686-pc-windows-gnu
Mono und Nuget müssen ebenfalls installiert sein; Anweisungen finden Sie hier: https://www.mono-project.com/download/stable/#download-lin
Nach dem Hinzufügen der Mono-Repositorien kann Nuget mit apt installiert werden:
apt install nuget
Schließlich müssen Python-Abhängigkeiten installiert werden:
pip install -r client/requirements.txt
ThievingFox funktioniert mit python >= 3.11.
Rustup muss installiert sein; befolgen Sie die Anweisungen hier: https://rustup.rs/
Sowohl die x86- als auch die x86_64-Windows-Ziele für Rust müssen installiert sein:
rustup target add x86_64-pc-windows-msvc
rustup target add i686-pc-windows-msvc
Die .NET-Entwicklungsumgebung muss ebenfalls installiert sein. Navigieren Sie in Visual Studio zu Extras > Tools und Features abrufen > ".NET-Desktopentwicklung" installieren.
Schließlich müssen Python-Abhängigkeiten installiert werden:
pip install -r client/requirements.txt
ThievingFox funktioniert mit python >= 3.11
HINWEIS: Auf einem Windows-Host muss msbuild im PATH verfügbar sein, um das KeePass-Modul zu verwenden. Dies kann erreicht werden, indem der Client innerhalb einer Visual Studio-Entwickler-Powershell ausgeführt wird (Extras > Befehlszeile > Entwickler-Powershell).
Alle Module wurden auf den folgenden Windows-Versionen getestet:
| Windows-Version |
|---|
| Windows Server 2022 |
| Windows Server 2019 |
| Windows Server 2016 |
| Windows Server 2012R2 |
| Windows 10 |
| Windows 11 |
[!VORSICHT] Module wurden nicht auf anderen Versionen getestet und werden voraussichtlich nicht funktionieren.
[!VORSICHT] Obwohl ich versucht habe sicherzustellen, dass diese Werkzeuge die Stabilität der Zielanwendungen nicht beeinträchtigen, sind Inline-Hooking und Bibliotheksinjektion unsicher und können zu einem Absturz oder einer Instabilität der Anwendung führen. Sollte dies der Fall sein, sollte die Verwendung des Moduls
cleanupauf dem Ziel ausreichen, um sicherzustellen, dass beim nächsten Start der Anwendung keine Injektion/Hooking durchgeführt wird.
ThievingFox enthält 3 Hauptmodule: poison, cleanup und collect.
Für jede in den Befehlszeilenparametern angegebene Anwendung ruft das Modul poison die ursprüngliche Bibliothek ab, die gekapert werden soll (für COM-Entführung und DLL-Proxying), kompiliert eine Bibliothek, die den Eigenschaften der ursprünglichen DLL entspricht, lädt sie auf das Ziel hoch und ändert bei Bedarf die Registrierung, um die COM-Entführung durchzuführen.
Um den Kompilierungsprozess aller Bibliotheken zu beschleunigen, wird ein Cache in client/cache/ verwaltet.
--mstsc, --rdcman und --mobaxterm haben eine spezifische Option, bzw. --mstsc-poison-hkcr, --rdcman-poison-hkcr und --mobaxterm-poison-hkcr. Wenn eine dieser Optionen angegeben wird, ersetzt die COM-Entführung den Registrierungsschlüssel in der HKCR-Struktur, sodass alle Benutzer betroffen sind. Standardmäßig sind nur alle derzeit angemeldeten Benutzer betroffen (alle Benutzer mit einer HKCU-Struktur).
--keepass und --keepassxc haben spezifische Optionen: --keepass-path, --keepass-share und --keepassxc-path, --keepassxc-share, um den Installationspfad dieser Anwendungen anzugeben, falls es nicht der Standardpfad ist. Dies ist für andere Anwendungen nicht erforderlich, da COM-Entführung verwendet wird.
Das KeePass-Modul erfordert, dass Visual C++ Redistributable auf dem Ziel installiert ist.
Mehrere Anwendungen können gleichzeitig angegeben werden, oder das Flag --all kann verwendet werden, um alle Anwendungen zu targetieren.
[!WICHTIG] Denken Sie daran, den Cache zu leeren, wenn Sie den Parameter
--tempdirändern, da der Verzeichnisname in nativen DLLs eingebettet ist.
$ 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]
options:
-h, --help show this help message and exit
-hashes HASHES, --hashes HASHES
LM:NT hash
-aesKey AESKEY, --aesKey AESKEY
AES key to use for Kerberos Authentication
-k Use kerberos authentication. For LogonUI, mstsc and consent modules, an anonymous NTLM authentication is performed, to retrieve the OS version.
-dc-ip DC_IP, --dc-ip DC_IP
IP Address of the domain controller
-no-pass, --no-pass Do not prompt for password
--tempdir TEMPDIR The name of the temporary directory to use for DLLs and output (Default: ThievingFox)
--keepass Try to poison KeePass.exe
--keepass-path KEEPASS_PATH
The path where KeePass is installed, without the share name (Default: /Program Files/KeePass Password Safe 2/)
--keepass-share KEEPASS_SHARE
The share on which KeePass is installed (Default: c$)
--keepassxc Try to poison KeePassXC.exe
--keepassxc-path KEEPASSXC_PATH
The path where KeePassXC is installed, without the share name (Default: /Program Files/KeePassXC/)
--keepassxc-share KEEPASSXC_SHARE
The share on which KeePassXC is installed (Default: c$)
--mstsc Try to poison mstsc.exe
--mstsc-poison-hkcr Instead of poisonning all currently logged in users' HKCU hives, poison the HKCR hive for mstsc, which will also work for user that are currently not
logged in (Default: False)
--consent Try to poison Consent.exe
--logonui Try to poison LogonUI.exe
--rdcman Try to poison RDCMan.exe
--rdcman-poison-hkcr Instead of poisonning all currently logged in users' HKCU hives, poison the HKCR hive for RDCMan, which will also work for user that are currently not
logged in (Default: False)
--mobaxterm Try to poison MobaXTerm.exe
--mobaxterm-poison-hkcr
Instead of poisonning all currently logged in users' HKCU hives, poison the HKCR hive for MobaXTerm, which will also work for user that are currently not
logged in (Default: False)
--all Try to poison all applications
Für jede in den Befehlszeilenparametern angegebene Anwendung entfernt das Modul cleanup zunächst die Poisoning-Artefakte, die die Zielanwendung zwingen, die Hooking-Bibliothek zu laden. Anschließend versucht es, die auf den entfernten Host hochgeladenen Bibliotheken zu löschen.
Für Anwendungen, die das Poisoning sowohl der HKCU- als auch der HKCR-Struktur unterstützen, werden unabhängig davon beide bereinigt.
Mehrere Anwendungen können gleichzeitig angegeben werden, oder das Flag --all kann verwendet werden, um alle Anwendungen zu bereinigen.
Es werden keine extrahierten Anmeldeinformationen auf dem entfernten Host gelöscht.
[!WICHTIG] Wenn die Zielanwendung während der Ausführung des Moduls
cleanupin Gebrauch ist, können die auf dem Ziel abgelegten DLLs nicht gelöscht werden. Das Modulcleanupwird jedoch die Konfiguration rückgängig machen, die die Injektion ermöglicht, was sicherstellen sollte, dass beim nächsten Start der Anwendung keine Injektion durchgeführt wird. Dateien, die vonThievingFoxnicht gelöscht werden können, werden protokolliert.
$ python3 client/ThievingFox.py cleanup -h
usage: ThievingFox.py cleanup [-h] [-hashes HASHES] [-aesKey AESKEY] [-k] [-dc-ip DC_IP] [-no-pass] [--tempdir TEMPDIR] [--keepass] [--keepass-share KEEPASS_SHARE]
[--keepass-path KEEPASS_PATH] [--keepassxc] [--keepassxc-path KEEPASSXC_PATH] [--keepassxc-share KEEPASSXC_SHARE] [--mstsc] [--consent] [--logonui]
[--rdcman] [--mobaxterm] [--all]
target
positional arguments:
target Target machine or range [domain/]username[:password]@<IP or FQDN>[/CIDR]
options:
-h, --help show this help message and exit
-hashes HASHES, --hashes HASHES
LM:NT hash
-aesKey AESKEY, --aesKey AESKEY
AES key to use for Kerberos Authentication
-k Use kerberos authentication. For LogonUI, mstsc and consent modules, an anonymous NTLM authentication is performed, to retrieve the OS version.
-dc-ip DC_IP, --dc-ip DC_IP
IP Address of the domain controller
-no-pass, --no-pass Do not prompt for password
--tempdir TEMPDIR The name of the temporary directory to use for DLLs and output (Default: ThievingFox)
--keepass Try to cleanup all poisonning artifacts related to KeePass.exe
--keepass-share KEEPASS_SHARE
The share on which KeePass is installed (Default: c$)
--keepass-path KEEPASS_PATH
The path where KeePass is installed, without the share name (Default: /Program Files/KeePass Password Safe 2/)
--keepassxc Try to cleanup all poisonning artifacts related to KeePassXC.exe
--keepassxc-path KEEPASSXC_PATH
The path where KeePassXC is installed, without the share name (Default: /Program Files/KeePassXC/)
--keepassxc-share KEEPASSXC_SHARE
The share on which KeePassXC is installed (Default: c$)
--mstsc Try to cleanup all poisonning artifacts related to mstsc.exe
--consent Try to cleanup all poisonning artifacts related to Consent.exe
--logonui Try to cleanup all poisonning artifacts related to LogonUI.exe
--rdcman Try to cleanup all poisonning artifacts related to RDCMan.exe
--mobaxterm Try to cleanup all poisonning artifacts related to MobaXTerm.exe
--all Try to cleanup all poisonning artifacts related to all applications
Für jede in den Befehlszeilenparametern angegebene Anwendung ruft das Modul collect die Ausgabedateien auf dem entfernten Host ab, die im Verzeichnis C:\Windows\Temp\<tempdir> gespeichert sind und der Anwendung entsprechen, und entschlüsselt sie. Die Dateien werden vom entfernten Host gelöscht und die abgerufenen Daten werden in client/ouput/ gespeichert.
Mehrere Anwendungen können gleichzeitig angegeben werden, oder das Flag --all kann verwendet werden, um Protokolle von allen Anwendungen zu sammeln.
$ python3 client/ThievingFox.py collect -h
usage: ThievingFox.py collect [-h] [-hashes HASHES] [-aesKey AESKEY] [-k] [-dc-ip DC_IP] [-no-pass] [--tempdir TEMPDIR] [--keepass] [--keepassxc] [--mstsc] [--consent]
[--logonui] [--rdcman] [--mobaxterm] [--all]
target
positional arguments:
target Target machine or range [domain/]username[:password]@<IP or FQDN>[/CIDR]
options:
-h, --help show this help message and exit
-hashes HASHES, --hashes HASHES
LM:NT hash
-aesKey AESKEY, --aesKey AESKEY
AES key to use for Kerberos Authentication
-k Use kerberos authentication. For LogonUI, mstsc and consent modules, an anonymous NTLM authentication is performed, to retrieve the OS version.
-dc-ip DC_IP, --dc-ip DC_IP
IP Address of the domain controller
-no-pass, --no-pass Do not prompt for password
--tempdir TEMPDIR The name of the temporary directory to use for DLLs and output (Default: ThievingFox)
--keepass Collect KeePass.exe logs
--keepassxc Collect KeePassXC.exe logs
--mstsc Collect mstsc.exe logs
--consent Collect Consent.exe logs
--logonui Collect LogonUI.exe logs
--rdcman Collect RDCMan.exe logs
--mobaxterm Collect MobaXTerm.exe logs
--all Collect logs from all applications
| Anwendung | Injektionsmethode |
|---|
| KeePass.exe | AppDomainManager-Injektion |
| KeePassXC.exe | DLL-Proxying |
| LogonUI.exe (Windows-Anmeldebildschirm) | COM-Entführung |
| consent.exe (Windows-UAC-Popup) | COM-Entführung |
| mstsc.exe (Standard-Windows-RDP-Client) | COM-Entführung |
| RDCMan.exe (Sysinternals-RDP-Client) | COM-Entführung |
| MobaXTerm.exe (RDP-Client eines Drittanbieters) | COM-Entführung |