
Инструментарий для сбора учетных данных после эксплуатации, который внедряется в менеджеры паролей и утилиты Windows для захвата учетных данных с помощью проксирования DLL, перехвата COM и внедрения AppDomainManager.
ThievingFox — это набор инструментов для пост-эксплуатации, предназначенных для сбора учётных данных из различных менеджеров паролей и утилит Windows. Каждый модуль использует определённый метод внедрения в целевой процесс, а затем перехватывает внутренние функции для сбора учётных данных.
Сопроводительную статью в блоге можно найти здесь
Необходимо установить Rustup, следуйте инструкциям здесь : https://rustup.rs/
Пакет mingw-w64 должен быть установлен. На Debian это можно сделать с помощью :
apt install mingw-w64
Для Rust необходимо установить обе цели Windows x86 и x86_64:
rustup target add x86_64-pc-windows-gnu
rustup target add i686-pc-windows-gnu
Mono и Nuget также должны быть установлены; инструкции доступны здесь : https://www.mono-project.com/download/stable/#download-lin
После добавления репозиториев Mono Nuget можно установить с помощью apt :
apt install nuget
Наконец, необходимо установить зависимости Python :
pip install -r client/requirements.txt
ThievingFox работает с python >= 3.11.
Необходимо установить Rustup, следуйте инструкциям здесь : https://rustup.rs/
Для Rust необходимо установить обе цели Windows x86 и x86_64:
rustup target add x86_64-pc-windows-msvc
rustup target add i686-pc-windows-msvc
Также должна быть установлена среда разработки .NET. В Visual Studio перейдите в Tools > Get Tools And Features > Install ".NET desktop development"
Наконец, необходимо установить зависимости Python :
pip install -r client/requirements.txt
ThievingFox работает с python >= 3.11
ПРИМЕЧАНИЕ : На хосте Windows для использования модуля KeePass msbuild должен быть доступен в PATH. Это можно сделать, запустив клиент из Visual Studio Developper Powershell (Tools > Command Line > Developper Powershell)
Все модули были протестированы на следующих версиях Windows :
| Версия Windows |
|---|
| Windows Server 2022 |
| Windows Server 2019 |
| Windows Server 2016 |
| Windows Server 2012R2 |
| Windows 10 |
| Windows 11 |
[!ПРЕДУПРЕЖДЕНИЕ] Модули не тестировались на других версиях и, как ожидается, не будут работать.
| Приложение | Метод внедрения |
|---|---|
| KeePass.exe | AppDomainManager Injection |
| KeePassXC.exe | DLL Proxying |
| LogonUI.exe (Экран входа в Windows) | COM Hijacking |
| consent.exe (Всплывающее окно UAC в Windows) | COM Hijacking |
| mstsc.exe (Стандартный RDP-клиент Windows) | COM Hijacking |
| RDCMan.exe (RDP-клиент Sysinternals) | COM Hijacking |
| MobaXTerm.exe (Сторонний RDP-клиент) | COM Hijacking |
[!ПРЕДУПРЕЖДЕНИЕ] Хотя я старался, чтобы эти инструменты не влияли на стабильность целевых приложений, встроенное перехватывание (inline hooking) и внедрение библиотек небезопасны и могут привести к сбою или нестабильной работе приложения. Если это произойдёт, использование модуля
cleanupна цели должно быть достаточным, чтобы при следующем запуске приложения внедрение/перехватывание не выполнялось.
ThievingFox содержит 3 основных модуля : poison, cleanup и collect.
Для каждого приложения, указанного в параметрах командной строки, модуль poison извлекает оригинальную библиотеку, которая будет захвачена (для COM Hijacking и DLL Proxying), компилирует библиотеку, соответствующую свойствам оригинальной DLL, загружает её на сервер и при необходимости изменяет реестр для выполнения COM Hijacking.
Для ускорения процесса компиляции всех библиотек поддерживается кеш в client/cache/.
--mstsc, --rdcman и --mobaxterm имеют специальные опции, соответственно --mstsc-poison-hkcr, --rdcman-poison-hkcr и --mobaxterm-poison-hkcr. Если указана одна из этих опций, COM Hijacking заменяет ключ реестра в кусте HKCR, что означает, что будут затронуты все пользователи. По умолчанию затрагиваются только все пользователи, вошедшие в систему в данный момент (все пользователи, имеющие куст HKCU).
--keepass и --keepassxc имеют специальные опции --keepass-path, --keepass-share, а также --keepassxc-path, --keepassxc-share, чтобы указать, где установлены эти приложения, если это не стандартный путь установки. Для других приложений это не требуется, поскольку используется COM Hijacking.
Модуль KeePass требует установки Visual C++ Redistributable на целевой системе.
Можно указать несколько приложений одновременно или использовать флаг --all для атаки на все приложения.
[!ВАЖНО] Не забудьте очистить кеш, если вы когда-либо измените параметр
--tempdir, так как имя каталога встраивается внутрь нативных DLL.
$ 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