
Kit di raccolta credenziali post-sfruttamento che si inietta nei gestori di password e nelle utility di Windows per catturare credenziali tramite DLL proxying, COM hijacking e AppDomainManager injection.
ThievingFox è una raccolta di strumenti di post-exploitation per raccogliere credenziali da vari gestori di password e utilità Windows. Ogni modulo sfrutta un metodo specifico di iniezione nel processo target, e poi aggancia funzioni interne per raccogliere le credenziali.
Il post del blog associato può essere trovato qui
Rustup deve essere installato, segui le istruzioni disponibili qui : https://rustup.rs/
Il pacchetto mingw-w64 deve essere installato. Su Debian, questo può essere fatto usando :
apt install mingw-w64
Entrambi i target x86 e x86_64 di Windows devono essere installati per Rust:
rustup target add x86_64-pc-windows-gnu
rustup target add i686-pc-windows-gnu
Anche Mono e Nuget devono essere installati, le istruzioni sono disponibili qui : https://www.mono-project.com/download/stable/#download-lin
Dopo aver aggiunto i repository Mono, Nuget può essere installato usando apt :
apt install nuget
Infine, le dipendenze Python devono essere installate :
pip install -r client/requirements.txt
ThievingFox funziona con python >= 3.11.
Rustup deve essere installato, segui le istruzioni disponibili qui : https://rustup.rs/
Entrambi i target x86 e x86_64 di Windows devono essere installati per Rust:
rustup target add x86_64-pc-windows-msvc
rustup target add i686-pc-windows-msvc
Anche l'ambiente di sviluppo .NET deve essere installato. Da Visual Studio, vai su Strumenti > Ottieni strumenti e funzionalità > Installa "Sviluppo desktop .NET"
Infine, le dipendenze Python devono essere installate :
pip install -r client/requirements.txt
ThievingFox funziona con python >= 3.11
NOTA : Su un host Windows, per utilizzare il modulo KeePass, msbuild deve essere disponibile nel PATH. Questo può essere ottenuto eseguendo il client da una PowerShell per sviluppatori di Visual Studio (Strumenti > Riga di comando > PowerShell per sviluppatori)
Tutti i moduli sono stati testati sulle seguenti versioni di Windows :
| Windows Version |
|---|
| Windows Server 2022 |
| Windows Server 2019 |
| Windows Server 2016 |
| Windows Server 2012R2 |
| Windows 10 |
| Windows 11 |
[!CAUTION] I moduli non sono stati testati su altre versioni, e ci si aspetta che non funzionino.
[!CAUTION] Anche se ho cercato di assicurarmi che questi strumenti non influiscano sulla stabilità delle applicazioni target, l'hooking in linea e l'iniezione di librerie non sono sicuri e potrebbero causare un crash o rendere l'applicazione instabile. Se dovesse accadere, l'uso del modulo
cleanupsul target dovrebbe essere sufficiente per garantire che la prossima volta che l'applicazione viene avviata, non venga eseguita alcuna iniezione/hooking.
ThievingFox contiene 3 moduli principali : poison, cleanup e collect.
Per ogni applicazione specificata nei parametri della riga di comando, il modulo poison recupera la libreria originale che verrà dirottata (per il dirottamento COM e il proxy DLL), compila una libreria che corrisponde alle proprietà della DLL originale, la carica sul server e modifica il registro se necessario per eseguire il dirottamento COM.
Per velocizzare il processo di compilazione di tutte le librerie, viene mantenuta una cache in client/cache/.
--mstsc, --rdcman, e --mobaxterm hanno un'opzione specifica, rispettivamente --mstsc-poison-hkcr, --rdcman-poison-hkcr, e --mobaxterm-poison-hkcr. Se una di queste opzioni viene specificata, il dirottamento COM sostituirà la chiave di registro nell'hive HKCR, il che significa che tutti gli utenti saranno interessati. Per impostazione predefinita, sono interessati solo tutti gli utenti attualmente connessi (tutti gli utenti che hanno un hive HKCU).
--keepass e --keepassxc hanno opzioni specifiche, --keepass-path, --keepass-share, e --keepassxc-path, --keepassxc-share, per specificare dove sono installate queste applicazioni, se non è il percorso di installazione predefinito. Questo non è richiesto per altre applicazioni, poiché viene utilizzato il dirottamento COM.
Il modulo KeePass richiede che il Visual C++ Redistributable sia installato sul target.
È possibile specificare più applicazioni contemporaneamente, oppure è possibile utilizzare il flag --all per colpire tutte le applicazioni.
[!IMPORTANT] Ricorda di pulire la cache se mai modifichi il parametro
--tempdir, poiché il nome della directory è incorporato all'interno delle DLL native.
$ 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
argomenti posizionali:
target Macchina target o intervallo [dominio/]utente[:password]@<IP o FQDN>[/CIDR]
opzioni:
-h, --help mostra questo messaggio di aiuto ed esci
-hashes HASHES, --hashes HASHES
Hash LM:NT
-aesKey AESKEY, --aesKey AESKEY
Chiave AES da utilizzare per l'autenticazione Kerberos
-k Utilizza l'autenticazione Kerberos. Per i moduli LogonUI, mstsc e consent, viene eseguita un'autenticazione NTLM anonima, per recuperare la versione del sistema operativo.
-dc-ip DC_IP, --dc-ip DC_IP
Indirizzo IP del controller di dominio
-no-pass, --no-pass Non chiedere la password
--tempdir TEMPDIR Il nome della directory temporanea da utilizzare per DLL e output (Predefinito: ThievingFox)
--keepass Prova ad avvelenare KeePass.exe
--keepass-path KEEPASS_PATH
Il percorso in cui è installato KeePass, senza il nome della condivisione (Predefinito: /Program Files/KeePass Password Safe 2/)
--keepass-share KEEPASS_SHARE
La condivisione su cui è installato KeePass (Predefinito: c$)
--keepassxc Prova ad avvelenare KeePassXC.exe
--keepassxc-path KEEPASSXC_PATH
Il percorso in cui è installato KeePassXC, senza il nome della condivisione (Predefinito: /Program Files/KeePassXC/)
--keepassxc-share KEEPASSXC_SHARE
La condivisione su cui è installato KeePassXC (Predefinito: c$)
--mstsc Prova ad avvelenare mstsc.exe
--mstsc-poison-hkcr Invece di avvelenare gli hive HKCU di tutti gli utenti attualmente connessi, avvelena l'hive HKCR per mstsc, che funzionerà anche per gli utenti che non sono attualmente connessi (Predefinito: False)
--consent Prova ad avvelenare Consent.exe
--logonui Prova ad avvelenare LogonUI.exe
--rdcman Prova ad avvelenare RDCMan.exe
--rdcman-poison-hkcr Invece di avvelenare gli hive HKCU di tutti gli utenti attualmente connessi, avvelena l'hive HKCR per RDCMan, che funzionerà anche per gli utenti che non sono attualmente connessi (Predefinito: False)
--mobaxterm Prova ad avvelenare MobaXTerm.exe
--mobaxterm-poison-hkcr
Invece di avvelenare gli hive HKCU di tutti gli utenti attualmente connessi, avvelena l'hive HKCR per MobaXTerm, che funzionerà anche per gli utenti che non sono attualmente connessi (Predefinito: False)
--all Prova ad avvelenare tutte le applicazioni
Per ogni applicazione specificata nei parametri della riga di comando, il cleanup prima rimuove gli artefatti di avvelenamento che costringono l'applicazione target a caricare la libreria di hooking. Poi, tenta di eliminare le librerie che sono state caricate sull'host remoto.
Per le applicazioni che supportano l'avvelenamento sia degli hive HKCU che HKCR, entrambi vengono puliti indipendentemente.
È possibile specificare più applicazioni contemporaneamente, oppure è possibile utilizzare il flag --all per pulire tutte le applicazioni.
Non pulisce le credenziali estratte sull'host remoto.
[!IMPORTANT] Se l'applicazione target è in uso mentre il modulo
cleanupviene eseguito, le DLL che vengono rilasciate sul target non possono essere eliminate. Ciononostante, il modulocleanupripristinerà la configurazione che abilita l'iniezione, il che dovrebbe garantire che la prossima volta che l'applicazione viene avviata, non venga eseguita alcuna iniezione. I file che non possono essere eliminati daThievingFoxvengono registrati.
$ 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
argomenti posizionali:
target Macchina target o intervallo [dominio/]utente[:password]@<IP o FQDN>[/CIDR]
opzioni:
-h, --help mostra questo messaggio di aiuto ed esci
-hashes HASHES, --hashes HASHES
Hash LM:NT
-aesKey AESKEY, --aesKey AESKEY
Chiave AES da utilizzare per l'autenticazione Kerberos
-k Utilizza l'autenticazione Kerberos. Per i moduli LogonUI, mstsc e consent, viene eseguita un'autenticazione NTLM anonima, per recuperare la versione del sistema operativo.
-dc-ip DC_IP, --dc-ip DC_IP
Indirizzo IP del controller di dominio
-no-pass, --no-pass Non chiedere la password
--tempdir TEMPDIR Il nome della directory temporanea da utilizzare per DLL e output (Predefinito: ThievingFox)
--keepass Prova a pulire tutti gli artefatti di avvelenamento relativi a KeePass.exe
--keepass-share KEEPASS_SHARE
La condivisione su cui è installato KeePass (Predefinito: c$)
--keepass-path KEEPASS_PATH
Il percorso in cui è installato KeePass, senza il nome della condivisione (Predefinito: /Program Files/KeePass Password Safe 2/)
--keepassxc Prova a pulire tutti gli artefatti di avvelenamento relativi a KeePassXC.exe
--keepassxc-path KEEPASSXC_PATH
Il percorso in cui è installato KeePassXC, senza il nome della condivisione (Predefinito: /Program Files/KeePassXC/)
--keepassxc-share KEEPASSXC_SHARE
La condivisione su cui è installato KeePassXC (Predefinito: c$)
--mstsc Prova a pulire tutti gli artefatti di avvelenamento relativi a mstsc.exe
--consent Prova a pulire tutti gli artefatti di avvelenamento relativi a Consent.exe
--logonui Prova a pulire tutti gli artefatti di avvelenamento relativi a LogonUI.exe
--rdcman Prova a pulire tutti gli artefatti di avvelenamento relativi a RDCMan.exe
--mobaxterm Prova a pulire tutti gli artefatti di avvelenamento relativi a MobaXTerm.exe
--all Prova a pulire tutti gli artefatti di avvelenamento relativi a tutte le applicazioni
Per ogni applicazione specificata nei parametri della riga di comando, il modulo collect recupera i file di output sull'host remoto memorizzati in C:\Windows\Temp\<tempdir> corrispondenti all'applicazione, e li decifra. I file vengono eliminati dall'host remoto e i dati recuperati vengono archiviati in client/ouput/.
È possibile specificare più applicazioni contemporaneamente, oppure è possibile utilizzare il flag --all per raccogliere i log da tutte le applicazioni.
$ 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
argomenti posizionali:
target Macchina target o intervallo [dominio/]utente[:password]@<IP o FQDN>[/CIDR]
opzioni:
-h, --help mostra questo messaggio di aiuto ed esci
-hashes HASHES, --hashes HASHES
Hash LM:NT
-aesKey AESKEY, --aesKey AESKEY
Chiave AES da utilizzare per l'autenticazione Kerberos
-k Utilizza l'autenticazione Kerberos. Per i moduli LogonUI, mstsc e consent, viene eseguita un'autenticazione NTLM anonima, per recuperare la versione del sistema operativo.
-dc-ip DC_IP, --dc-ip DC_IP
Indirizzo IP del controller di dominio
-no-pass, --no-pass Non chiedere la password
--tempdir TEMPDIR Il nome della directory temporanea da utilizzare per DLL e output (Predefinito: ThievingFox)
--keepass Raccogli i log di KeePass.exe
--keepassxc Raccogli i log di KeePassXC.exe
--mstsc Raccogli i log di mstsc.exe
--consent Raccogli i log di Consent.exe
--logonui Raccogli i log di LogonUI.exe
--rdcman Raccogli i log di RDCMan.exe
--mobaxterm Raccogli i log di MobaXTerm.exe
--all Raccogli i log da tutte le applicazioni
| Applicazione | Metodo di Iniezione |
|---|
| KeePass.exe | Iniezione AppDomainManager |
| KeePassXC.exe | Proxy DLL |
| LogonUI.exe (Schermata di accesso di Windows) | Dirottamento COM |
| consent.exe (Popup UAC di Windows) | Dirottamento COM |
| mstsc.exe (Client RDP predefinito di Windows) | Dirottamento COM |
| RDCMan.exe (Client RDP di Sysinternals) | Dirottamento COM |
| MobaXTerm.exe (Client RDP di terze parti) | Dirottamento COM |