Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
profilehound — ProfileHound - Raccoglitore OpenGraph di BloodHound per profili utente memorizzati su macchine di dominio. Prendi decisioni informate sul saccheggio di segreti identificando profili utente attivi sulle macchine di dominio. | Kitploit
Strumenti/GitHubGitHub/m4lwhere/profilehound
OSINT (Open Source Intelligence)RicognizioneMovimento LateraleRaccolta InformazioniPost-ExploitPenetration TestingRed Teaming
GitHubm4lwhere/profilehound

profilehound

ProfileHound - Raccoglitore OpenGraph di BloodHound per profili utente memorizzati su macchine di dominio. Prendi decisioni informate sul saccheggio di segreti identificando profili utente attivi sulle macchine di dominio.

Vedi Repository
163944 mesi faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
root@kitploit:~
    ____             _____ __     __  __                      __
   / __ \_________  / __(_) /__  / / / /___  __  ______  ____/ /
  / /_/ / ___/ __ \/ /_/ / / _ \/ /_/ / __ \/ / / / __ \/ __  /
 / ____/ /  / /_/ / __/ / /  __/ __  / /_/ / /_/ / / / / /_/ /
/_/   /_/   \____/_/ /_/_/\___/_/ /_/\____/\__,_/_/ /_/\__,_/

ProfileHound

ProfileHound è uno strumento post-elevazione progettato per aiutare a individuare e raggiungere obiettivi di red-teaming, localizzando i profili utente di dominio sulle macchine. Utilizza il formato OpenGraph di BloodHound per creare un nuovo arco chiamato HasUserProfile, che determina se un profilo utente esiste su un computer. Questo arco consente agli operatori di prendere decisioni informate su quali computer colpire per estrarre segreti.

Questo strumento richiede accesso amministrativo alla condivisione C$ sulle macchine target per enumerare i profili utente.

Un enorme ringraziamento a Remi Gascou (@podalirius) per i suoi strumenti ShareHound e bhopengraph. Volevo da tempo costruire uno strumento per raccogliere questi dati e l'uso di queste librerie mi ha permesso di concentrarmi sulla costruzione invece che sulla "plumbing".

[!WARNING] ProfileHound è in fase iniziale di sviluppo e non tutte le modalità di raccolta sono ancora implementate. Usare con cautela in ambienti di produzione; ci si assume il rischio dell'uso di questo strumento.

Perché?

Gli obiettivi post-sfruttamento in Active Directory si sono spostati dai dati memorizzati on-premise verso applicazioni SaaS e il cloud. Per dimostrare il valore nella sicurezza offensiva, dobbiamo mostrare come l'accesso a questi servizi possa essere compromesso. In molti casi, questi servizi sono utilizzati solo da determinati gruppi o utenti, come HR, Finanza, ecc. In alcuni scenari, certe applicazioni SaaS possono essere accessibili solo da macchine specifiche.

L'arco HasSession di BloodHound è ottimo, ma è utile solo quando un utente ha effettuato l'accesso a una macchina. Se un utente non è loggato al momento della raccolta dati, può essere difficile trovare quale computer possa contenere segreti per facilitare un ulteriore sfruttamento. I profili utente possono contenere una quantità significativa di informazioni preziose all'interno di DPAPI, credenziali memorizzate nella cache, chiavi SSH, chiavi cloud e altro ancora – questi non richiedono una sessione utente attiva per essere accessibili.

Esempio di Edge HasUserProfile

ProfileHound utilizza il formato OpenGraph di BloodHound per costruire un nuovo arco nel grafo chiamato HasUserProfile, che determina se un profilo utente esiste su una macchina del dominio. Questo può aiutare gli operatori a concentrarsi sulle macchine dove un utente o un gruppo di alto valore ha un profilo.

L'arco HasUserProfile contiene proprietà per la data di creazione del profilo e la data dell'ultima modifica. Queste informazioni aiutano a determinare:

  • Se un profilo è attivamente utilizzato (accesso effettuato negli ultimi giorni)
  • Se il profilo è stato utilizzato per anni (probabilmente contiene molti segreti!)

Esempio di Proprietà dell'Edge HasUserProfile

Questo arco ha anche proprietà per i timestamp di creazione e modifica del profilo, permettendo query Cypher specifiche per trovare profili utente attivi o di lunga durata su macchine specifiche.

Installazione

Installa ProfileHound usando pipx (a meno che tu non ami l'inferno delle dipendenze):

root@kitploit:~
pipx install profilehound

Per utilizzare la versione bleeding edge, puoi installare dal sorgente:

root@kitploit:~
pipx install git+https://github.com/m4lwhere/profilehound.git

Docker

Per un approccio containerizzato, costruisci l'immagine ed esegui lo strumento con:

root@kitploit:~
docker build -t profilehound .
docker run --rm profilehound --help
docker run --rm -v ${PWD}:/profilehound profilehound --auth-user alice --auth-password whiteRabbit --auth-domain sccm.lab --dns 192.168.57.10 --auth-dc-ip 192.168.57.10

Utilizzo

Ad esempio, per eseguire con un account di amministratore del dominio sccm.lab\alice con password whiteRabbit:

root@kitploit:~
$ profilehound --auth-user alice --auth-password whiteRabbit --auth-domain sccm.lab --target 192.168.57.0/27
    ____             _____ __     __  __                      __
   / __ \_________  / __(_) /__  / / / /___  __  ______  ____/ /
  / /_/ / ___/ __ \/ /_/ / / _ \/ /_/ / __ \/ / / / __ \/ __  /
 / ____/ /  / /_/ / __/ / /  __/ __  / /_/ / /_/ / / / / /_/ /
/_/   /_/   \____/_/ /_/_/\___/_/ /_/\____/\__,_/_/ /_/\__,_/    v0.1.1
@m4lwhere

BloodHound CE OpenGraph collector for user profiles stored on domain machines.

[12/30/25 11:58:05] INFO     Loaded 32 targets
[12/30/25 11:58:08] INFO     Successful authentication on 192.168.57.10 (192.168.57.10) as sccm.lab\alice
                    INFO     Successfully connected to share \\192.168.57.10\C$ as sccm.lab\alice
                    INFO     Enumerating profiles in \\192.168.57.10\C$\Users\...
                    INFO         vagrant:    S-1-5-21-3016982856-3796307652-1246469985-1000  created:2025-11-07      modified:2025-11-07
                    INFO     Found 1 domain profile(s) for 192.168.57.10
                    INFO     Successful authentication on 192.168.57.11 (192.168.57.11) as sccm.lab\alice
[12/30/25 11:58:09] INFO     Successfully connected to share \\192.168.57.11\C$ as sccm.lab\alice
                    INFO     Enumerating profiles in \\192.168.57.11\C$\Users\...
                    INFO         administrator:      S-1-5-21-3016982856-3796307652-1246469985-500   created:2025-11-07      modified:2025-11-07
                    INFO         alice:      S-1-5-21-3016982856-3796307652-1246469985-1112  created:2025-12-28      modified:2025-11-07
                    INFO         eve:        S-1-5-21-3016982856-3796307652-1246469985-1116  created:2025-12-27      modified:2025-11-07
                    INFO     Found 3 domain profile(s) for 192.168.57.11
                    INFO     Successful authentication on 192.168.57.12 (192.168.57.12) as sccm.lab\alice
                    INFO     Successfully connected to share \\192.168.57.12\C$ as sccm.lab\alice
                    INFO     Enumerating profiles in \\192.168.57.12\C$\Users\...
                    INFO         alice:      S-1-5-21-3016982856-3796307652-1246469985-1112  created:2025-12-28      modified:2025-12-28
                    INFO         franck:     S-1-5-21-3016982856-3796307652-1246469985-1117  created:2025-12-27      modified:2025-11-07
                    INFO         sccm-sql:   S-1-5-21-3016982856-3796307652-1246469985-1121  created:2025-11-07      modified:2025-11-07
                    INFO     Found 3 domain profile(s) for 192.168.57.12
                    INFO     Successful authentication on 192.168.57.13 (192.168.57.13) as sccm.lab\alice
                    INFO     Successfully connected to share \\192.168.57.13\C$ as sccm.lab\alice
                    INFO     Enumerating profiles in \\192.168.57.13\C$\Users\...
                    INFO         alice:      S-1-5-21-3016982856-3796307652-1246469985-1112  created:2025-12-26      modified:2025-12-28
                    INFO         sccm-account-da:    S-1-5-21-3016982856-3796307652-1246469985-1119  created:2025-12-26      modified:2025-11-07
                    INFO     Found 2 domain profile(s) for 192.168.57.13
[12/30/25 11:59:27] INFO     Found 4 machines with profiles
                    INFO     Exported OpenGraph intel to profilehound_20251230-115805.json

Questo ha creato un file chiamato profilehound_20251230-115805.json nella directory corrente. Questo file può essere importato direttamente in BHCE trascinandolo nell'interfaccia utente di BloodHound. Verrà automaticamente analizzato e correlato ai nodi tramite SID. Il nuovo arco HasUserProfile verrà creato per mostrare la relazione tra l'utente e il profilo.

ProfileHound stamperà inoltre un breve riepilogo statistico sulla console una volta completato:

root@kitploit:~
╭───────────────────────── General Summary ──────────────────────────────╮
│        ProfileHound Statistics                                         │
│  Total Targets with Profiles    4                                      │
│  Total Unique Profiles (Users)  7                                      │
│  Average Profiles per Target    2.25                                   │
╰────────────────────────────────────────────────────────────────────────╯
       Top Connected Users
┏━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ User          ┃ Machine Count ┃
┡━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ alice         │ 3             │
│ vagrant       │ 1             │
│ administrator │ 1             │
│ eve           │ 1             │
│ franck        │ 1             │
└───────────────┴───────────────┘
     Top Populated Machines
┏━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Machine       ┃ Profile Count ┃
┡━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ 192.168.57.11 │ 3             │
│ 192.168.57.12 │ 3             │
│ 192.168.57.13 │ 2             │
│ 192.168.57.10 │ 1             │
└───────────────┴───────────────┘
                       Oldest User Profiles
┏━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ User            ┃ Machine         ┃ Created    ┃ Last Modified ┃
┡━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ vagrant         │ DC.sccm.lab     │ 2025-11-07 │ 2025-11-07    │
│ sccm-sql        │ MSSQL.sccm.lab  │ 2025-11-07 │ 2025-11-07    │
│ administrator   │ MECM.sccm.lab   │ 2025-11-07 │ 2025-11-07    │
│ sccm-account-da │ CLIENT.sccm.lab │ 2025-12-26 │ 2025-11-07    │
│ alice           │ CLIENT.sccm.lab │ 2025-12-26 │ 2025-12-28    │
└─────────────────┴─────────────────┴────────────┴───────────────┘
                Longest Lived Profiles (Created -> Modified)
┏━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ User          ┃ Machine         ┃ Age (Days) ┃ Created    ┃ Last Modified ┃
┡━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ alice         │ CLIENT.sccm.lab │ 1.8        │ 2025-12-26 │ 2025-12-28    │
│ alice         │ MSSQL.sccm.lab  │ 0.0        │ 2025-12-28 │ 2025-12-28    │
│ sccm-sql      │ MSSQL.sccm.lab  │ 0.0        │ 2025-11-07 │ 2025-11-07    │
│ administrator │ MECM.sccm.lab   │ 0.0        │ 2025-11-07 │ 2025-11-07    │
│ vagrant       │ DC.sccm.lab     │ 0.0        │ 2025-11-07 │ 2025-11-07    │
└───────────────┴─────────────────┴────────────┴────────────┴───────────────┘
                     Top 5 Machines to Focus On (Hubs)
┏━━━━━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Machine         ┃ Score ┃ Reason                                         ┃
┡━━━━━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ MECM.sccm.lab   │ 4.5   │ Ha 3 profili, potenziale hub di movimento laterale │
│ MSSQL.sccm.lab  │ 4.5   │ Ha 3 profili, potenziale hub di movimento laterale │
│ CLIENT.sccm.lab │ 3.5   │ Ha 2 profili, potenziale hub di movimento laterale │
│ DC.sccm.lab     │ 1.0   │ Ha 1 profilo, potenziale hub di movimento laterale │
└─────────────────┴───────┴────────────────────────────────────────────────┘

Come Funziona

ProfileHound utilizza la condivisione C$ per enumerare i profili utente su una macchina del dominio in \\<target>\C$\Users\. Legge il file NTUSER.DAT dell'utente per determinare se l'utente è un account di dominio o locale, recuperando il SID dai metadati del file. Ad esempio, raccoglie tutte le directory utente in \\<target>\C$\Users\ e poi itera su ciascuna directory per trovare il file NTUSER.DAT in \\<target>\C$\Users\<username>\NTUSER.DAT. Se il file NTUSER.DAT è di proprietà di un SID noto, cerca di trovare il SID dell'utente leggendo la sua directory DPAPI (es. \\<target>\C$\Users\<username>\AppData\Roaming\Microsoft\Protect\<SID>).

Poiché accediamo alla condivisione C$, abbiamo bisogno di un account amministrativo per autenticarci sulla macchina target. ProfileHound utilizzerà le credenziali fornite per autenticarsi. Se stai usando un account di dominio, puoi usare l'opzione --auth-domain per specificare il dominio. Se stai usando un account locale, puoi usare l'opzione --smb-local-auth.

Per impostazione predefinita, ProfileHound si ferma dopo un fallimento di autenticazione SMB di dominio per ridurre il rischio di blocco dell'account. Se alcuni endpoint dovessero rifiutare l'autenticazione di dominio e desideri continuare la scansione degli altri target, usa --smb-ignore-failed-domain-auth.

Se ProfileHound si ferma durante la raccolta dati SMB dopo aver già trovato dei profili, tenterà di esportare i risultati parziali di OpenGraph prima di uscire.

I timestamp di creazione e ultima modifica del file NTUSER.DAT vengono raccolti e possono essere utilizzati per determinare se il profilo è attivo. Questa correlazione viene gestita tramite query Cypher sulle proprietà dell'arco; esempi sotto.

È interessante notare che se il file NTUSER.DAT è stato modificato prima della data di creazione, è probabile che il profilo sia stato creato ma non utilizzato in modo tangibile. Questa condizione esiste perché il file NTUSER.DAT viene copiato dal profilo C:\Users\Default quando viene creato un nuovo profilo utente, mantenendo la stessa data di modifica anche se la data di creazione è successiva. Per questo motivo, possiamo essere ragionevolmente certi che quel profilo specifico non conterrà segreti.

Selezione dei Target

ProfileHound utilizza la libreria ShareHound di @podalirius_ per enumerare i target. Se non vengono fornite opzioni --target o --target-file, ProfileHound enumera i target connettendosi a LDAP per raccogliere automaticamente tutti i nomi FQDN delle macchine nel dominio.

Query Divertenti

Ci sono molte conclusioni potenti che possiamo trarre da questi dati, che ci dicono dove concentrare la nostra attenzione. Tutte queste query possono essere importate in BloodHound trascinando il file ProfileHound_Cypher_Queries.zip nell'interfaccia utente di BloodHound usando il pulsante Importa nella pagina Query Salvate. Ecco alcuni esempi:

Trova tutti gli Archi di Profilo Utente

Questa è una query semplice che troverà tutti i profili utente nel grafo.

root@kitploit:~
MATCH p=(u:User)-[:HasUserProfile]->(c:Computer)
RETURN p

Trova Profili Utente per Nome del Gruppo

Questa trova tutti i profili utente che sono membri del gruppo "Administrators" del dominio.

root@kitploit:~
MATCH p=(g:Group)<-[:MemberOf*1..]-(u:User)-[:HasUserProfile]->(c:Computer)
WHERE toLower(g.samaccountname) = "administrators"
RETURN p

Trova Profili Utente Attivi negli Ultimi 3 Giorni

Questa trova tutti i profili utente che sono stati modificati negli ultimi 3 giorni. Aiuta a determinare dove un profilo utente potrebbe essere la macchina principale di un utente e contenere buon bottino.

root@kitploit:~
WITH 3 as active_days
MATCH p = (u:User)-[e:HasUserProfile]-(c:Computer)
WHERE e.profileModified > (datetime().epochseconds - (active_days * 86400))
RETURN p

Profili Utente Attivi in un Gruppo Specifico (Potente)

Questa è una query estremamente potente per localizzare profili utente specifici utilizzati negli ultimi 3 giorni per membri di un gruppo specifico.

root@kitploit:~
WITH 3 as active_days, "administrators" as group_name
MATCH p = (g:Group)<-[:MemberOf*1..]-(u:User)-[e:HasUserProfile]-(c:Computer)
WHERE e.profileModified > (datetime().epochseconds - (active_days * 86400)) AND toLower(g.samaccountname) = group_name
RETURN p

Rimuovi Profili Utente Non Utilizzati

Questa rimuove tutti i profili utente in cui il file NTUSER.DAT è stato modificato prima della data di creazione. Indica che il profilo è stato creato ma non utilizzato in modo tangibile. Questa condizione esiste perché il file NTUSER.DAT viene copiato dal profilo C:\Users\Default quando viene creato un nuovo profilo utente, mantenendo la stessa data di modifica anche se la data di creazione è successiva.

root@kitploit:~
match p = (u:User)-[e:HasUserProfile]-(c:Computer)
where e.profileCreated < e.profileModified
return p

Crediti

Semplicemente non sarebbe stato possibile senza le librerie ShareHound e bhopengraph di Remi Gascou (@podalirius).

Miglioramenti Futuri

L'obiettivo principale di questo strumento è determinare quali macchine hanno maggiori probabilità di contenere segreti per utenti specifici. I miglioramenti futuri includeranno:

  • Implementare SCCMHunter di @garrettfoster13 come libreria per migliorare la raccolta dati.
    • Usare la funzione get_lastlogon per creare archi HasUserProfile sulle macchine.
    • Usare la funzione get_puser per associare gli utenti di dominio come proprietari primari del dispositivo per macchine specifiche.
  • Implementare la correlazione della proprietà del dispositivo Azure AD da AzureHound.
    • Sembra già raccolta come oggetto AZDeviceOwner in .data.owners[owner.DeviceOwner.onPremisesSecurityIdentifier]
  • Usare ShareHound per cercare file sensibili nei profili corrispondenti e inserirli nel grafo.
  • Analizzare il file NTUSER.DAT per programmi recenti, documenti e attività del browser.
Scarica lo strumento