Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
profilehound — ProfileHound - Coletor OpenGraph do BloodHound para perfis de usuário armazenados em máquinas do domínio. Tome decisões informadas sobre roubo de segredos identificando perfis de usuário ativos em máquinas do domínio. | Kitploit
Ferramentas/GitHubGitHub/m4lwhere/profilehound
OSINT (Inteligência de Fontes Abertas)ReconhecimentoMovimento LateralColeta de InformaçõesPós-ExploraçãoTestes de PenetraçãoRed Teaming
GitHubm4lwhere/profilehound

profilehound

ProfileHound - Coletor OpenGraph do BloodHound para perfis de usuário armazenados em máquinas do domínio. Tome decisões informadas sobre roubo de segredos identificando perfis de usuário ativos em máquinas do domínio.

Ver Repositório
16394há 4 mesesRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
root@kitploit:~
    ____             _____ __     __  __                      __
   / __ \_________  / __(_) /__  / / / /___  __  ______  ____/ /
  / /_/ / ___/ __ \/ /_/ / / _ \/ /_/ / __ \/ / / / __ \/ __  /
 / ____/ /  / /_/ / __/ / /  __/ __  / /_/ / /_/ / / / / /_/ /
/_/   /_/   \____/_/ /_/_/\___/_/ /_/\____/\__,_/_/ /_/\__,_/

ProfileHound

ProfileHound é uma ferramenta pós-escalada para ajudar a encontrar e atingir objetivos de red teaming, localizando perfis de usuários de domínio em máquinas. Ela usa o formato BloodHound OpenGraph para construir uma nova aresta chamada HasUserProfile, que determina se um perfil de usuário existe em um computador. Essa aresta permite que operadores tomem decisões informadas sobre quais computadores mirar para saquear segredos.

Esta ferramenta requer acesso administrativo ao compartilhamento C$ nas máquinas alvo para enumerar perfis de usuário.

Um enorme agradecimento a Remi Gascou (@podalirius) pelas ferramentas ShareHound e bhopengraph. Eu queria construir uma ferramenta para coletar esses dados há um tempo e usar essas bibliotecas me permitiu focar em construir em vez de conectar canos.

[!WARNING] ProfileHound está em estágios iniciais de desenvolvimento e nem todos os modos de coleta foram implementados ainda. Use com cautela em ambientes de produção, você assume o risco de usar esta ferramenta.

Por quê?

Os objetivos pós-exploração no Active Directory mudaram de dados armazenados localmente para aplicações SaaS e nuvem. Para provar valor em segurança ofensiva, precisamos demonstrar como o acesso a esses serviços pode ser comprometido. Em muitos casos, esses serviços são usados apenas por certos grupos ou usuários, como RH, Finanças, etc. Em alguns cenários, certas aplicações SaaS só podem ser acessadas de máquinas específicas.

A aresta HasSession do BloodHound é ótima, mas só é útil quando um usuário está logado em uma máquina. Se um usuário não estiver logado no momento da coleta de dados, pode ser difícil encontrar qual computador pode conter segredos para facilitar explorações adicionais. Perfis de usuário podem conter uma quantidade significativa de inteligência valiosa dentro de DPAPI, credenciais em cache, chaves SSH, chaves de nuvem e muito mais — esses não exigem uma sessão de usuário ativa para acessar.

Exemplo da aresta HasUserProfile

ProfileHound usa o formato OpenGraph do BloodHound para construir uma nova aresta de grafo chamada HasUserProfile, que determina se existe um perfil de usuário em uma máquina do domínio. Isso pode ajudar operadores a focar em máquinas onde um usuário ou grupo de alto valor possui um perfil.

A aresta HasUserProfile contém propriedades para a data de criação e última modificação do perfil. Essas informações ajudam a determinar:

  • Se um perfil está ativamente em uso (logado nos últimos dias)
  • Se o perfil foi usado por anos (provavelmente contém muitos segredos!)

Exemplo de propriedades da aresta HasUserProfile

Esta aresta também possui propriedades para os timestamps de criação e modificação do perfil, permitindo consultas Cypher específicas para encontrar perfis de usuário ativos ou de longo prazo em máquinas específicas.

Instalação

Instale ProfileHound usando pipx (a menos que você goste do inferno das dependências):

root@kitploit:~
pipx install profilehound

Para usar a versão mais recente (bleeding edge), você pode instalar a partir do código fonte:

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

Docker

Para usar uma abordagem containerizada, construa a imagem e execute a ferramenta com o seguinte:

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

Uso

Por exemplo, para executar usando uma conta de Administrador de Domínio sccm.lab\alice com senha whiteRabbit:

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

Coletor OpenGraph do BloodHound CE para perfis de usuário armazenados em máquinas do domínio.

[12/30/25 11:58:05] INFO     Carregados 32 alvos
[12/30/25 11:58:08] INFO     Autenticação bem-sucedida em 192.168.57.10 (192.168.57.10) como sccm.lab\alice
                    INFO     Conectado com sucesso ao compartilhamento \\192.168.57.10\C$ como sccm.lab\alice
                    INFO     Enumerando perfis em \\192.168.57.10\C$\Users\...
                    INFO         vagrant:    S-1-5-21-3016982856-3796307652-1246469985-1000  criado:2025-11-07      modificado:2025-11-07
                    INFO     Encontrado(s) 1 perfil(is) de domínio para 192.168.57.10
                    INFO     Autenticação bem-sucedida em 192.168.57.11 (192.168.57.11) como sccm.lab\alice
[12/30/25 11:58:09] INFO     Conectado com sucesso ao compartilhamento \\192.168.57.11\C$ como sccm.lab\alice
                    INFO     Enumerando perfis em \\192.168.57.11\C$\Users\...
                    INFO         administrator:      S-1-5-21-3016982856-3796307652-1246469985-500   criado:2025-11-07      modificado:2025-11-07
                    INFO         alice:      S-1-5-21-3016982856-3796307652-1246469985-1112  criado:2025-12-28      modificado:2025-11-07
                    INFO         eve:        S-1-5-21-3016982856-3796307652-1246469985-1116  criado:2025-12-27      modificado:2025-11-07
                    INFO     Encontrado(s) 3 perfil(is) de domínio para 192.168.57.11
                    INFO     Autenticação bem-sucedida em 192.168.57.12 (192.168.57.12) como sccm.lab\alice
                    INFO     Conectado com sucesso ao compartilhamento \\192.168.57.12\C$ como sccm.lab\alice
                    INFO     Enumerando perfis em \\192.168.57.12\C$\Users\...
                    INFO         alice:      S-1-5-21-3016982856-3796307652-1246469985-1112  criado:2025-12-28      modificado:2025-12-28
                    INFO         franck:     S-1-5-21-3016982856-3796307652-1246469985-1117  criado:2025-12-27      modificado:2025-11-07
                    INFO         sccm-sql:   S-1-5-21-3016982856-3796307652-1246469985-1121  criado:2025-11-07      modificado:2025-11-07
                    INFO     Encontrado(s) 3 perfil(is) de domínio para 192.168.57.12
                    INFO     Autenticação bem-sucedida em 192.168.57.13 (192.168.57.13) como sccm.lab\alice
                    INFO     Conectado com sucesso ao compartilhamento \\192.168.57.13\C$ como sccm.lab\alice
                    INFO     Enumerando perfis em \\192.168.57.13\C$\Users\...
                    INFO         alice:      S-1-5-21-3016982856-3796307652-1246469985-1112  criado:2025-12-26      modificado:2025-12-28
                    INFO         sccm-account-da:    S-1-5-21-3016982856-3796307652-1246469985-1119  criado:2025-12-26      modificado:2025-11-07
                    INFO     Encontrado(s) 2 perfil(is) de domínio para 192.168.57.13
[12/30/25 11:59:27] INFO     Encontradas 4 máquinas com perfis
                    INFO     Exportado intel OpenGraph para profilehound_20251230-115805.json

Isso criou um arquivo chamado profilehound_20251230-115805.json no diretório atual. Este arquivo pode ser importado diretamente no BHCE arrastando e soltando o arquivo na interface do BloodHound. Ele será automaticamente analisado e correlacionará nós via SID. A nova aresta HasUserProfile será criada para mostrar o relacionamento entre o usuário e o perfil.

O ProfileHound também imprimirá um pequeno resumo de estatísticas no console quando concluído:

root@kitploit:~
╭───────────────────────── Resumo Geral ──────────────────────────────╮
│        Estatísticas do ProfileHound                                  │
│  Total de Alvos com Perfis    4                                      │
│  Total de Perfis Únicos (Usuários)  7                                │
│  Média de Perfis por Alvo    2.25                                    │
╰────────────────────────────────────────────────────────────────────────╯
       Usuários Mais Conectados
┏━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Usuário       ┃ Contagem de Máq ┃
┡━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ alice         │ 3             │
│ vagrant       │ 1             │
│ administrator │ 1             │
│ eve           │ 1             │
│ franck        │ 1             │
└───────────────┴───────────────┘
     Máquinas Mais Populadas
┏━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Máquina       ┃ Contagem de Perfis ┃
┡━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ 192.168.57.11 │ 3             │
│ 192.168.57.12 │ 3             │
│ 192.168.57.13 │ 2             │
│ 192.168.57.10 │ 1             │
└───────────────┴───────────────┘
                       Perfis de Usuário Mais Antigos
┏━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Usuário         ┃ Máquina         ┃ Criado     ┃ Última Modif. ┃
┡━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ 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    │
└─────────────────┴─────────────────┴────────────┴───────────────┘
                Perfis de Vida Mais Longa (Criado -> Modificado)
┏━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Usuário       ┃ Máquina         ┃ Idade (Dias)┃ Criado     ┃ Última Modif. ┃
┡━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ 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 Máquinas para Focar (Hubs)
┏━━━━━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Máquina         ┃ Pontuação ┃ Razão                                      ┃
┡━━━━━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ MECM.sccm.lab   │ 4.5   │ Tem 3 perfis, potencial hub de movimento lateral│
│ MSSQL.sccm.lab  │ 4.5   │ Tem 3 perfis, potencial hub de movimento lateral│
│ CLIENT.sccm.lab │ 3.5   │ Tem 2 perfis, potencial hub de movimento lateral│
│ DC.sccm.lab     │ 1.0   │ Tem 1 perfil, potencial hub de movimento lateral │
└─────────────────┴───────┴────────────────────────────────────────────────┘

Como Funciona

O ProfileHound usa o compartilhamento C$ para enumerar perfis de usuário em uma máquina do domínio em \\<target>\C$\Users\. Ele lerá o arquivo NTUSER.DAT do usuário para determinar se o usuário é uma conta de domínio ou local, recuperando o SID dos metadados do arquivo. Por exemplo, ele reunirá todos os diretórios de usuário em \\<target>\C$\Users\ e então percorrerá cada diretório para encontrar o arquivo NTUSER.DAT em \\<target>\C$\Users\<username>\NTUSER.DAT. Se o arquivo NTUSER.DAT pertencer a um SID conhecido, ele tentará encontrar o SID do usuário lendo o diretório DPAPI (ex: \\<target>\C$\Users\<username>\AppData\Roaming\Microsoft\Protect\<SID>).

Como estamos acessando o compartilhamento C$, precisamos de uma conta administrativa para autenticar na máquina alvo. O ProfileHound usará as credenciais fornecidas para autenticar na máquina alvo. Se você estiver usando uma conta de domínio, pode usar a opção --auth-domain para especificar o domínio. Se estiver usando uma conta local, pode usar a opção --smb-local-auth.

Por padrão, o ProfileHound para após uma falha de autenticação de domínio SMB para reduzir o risco de bloqueio de conta. Se alguns endpoints devem rejeitar a autenticação de domínio e você deseja continuar escaneando os alvos restantes, use --smb-ignore-failed-domain-auth.

Se o ProfileHound parar durante a coleta de dados SMB depois que os perfis já foram encontrados, ele tentará exportar os resultados parciais do OpenGraph antes de sair.

Os horários de criação e última modificação do arquivo NTUSER.DAT são coletados e podem ser usados para determinar se o perfil está ativo. Essa correlação é tratada dentro de consultas Cypher nas propriedades da aresta; exemplos estão abaixo.

É interessante notar que, se o arquivo NTUSER.DAT foi modificado antes da data de criação, é provável que o perfil tenha sido criado, mas não usado de forma tangível. Essa condição existe porque o arquivo NTUSER.DAT é copiado do perfil C:\Users\Default quando um novo perfil de usuário é criado, mantendo a mesma data de modificação mesmo que a data de criação seja posterior. Por causa disso, podemos ter confiança razoável de que esse perfil específico não conterá nenhum segredo.

Selecionando Alvos

O ProfileHound usa a biblioteca ShareHound do @podalirius_ para enumerar alvos. Se nenhuma opção --target ou --target-file for fornecida, o ProfileHound enumerará alvos conectando-se ao LDAP para reunir todos os FQDNs de máquinas no domínio automaticamente.

Consultas Divertidas

Há muitas conclusões poderosas que podemos obter desses dados, indicando onde devemos focar nossa atenção. Todas essas consultas podem ser importadas no BloodHound arrastando e soltando o arquivo ProfileHound_Cypher_Queries.zip na interface do BloodHound usando o botão Importar na página Consultas Salvas. Aqui estão alguns exemplos:

Encontrar Todas as Arestas de Perfil de Usuário

Esta é uma consulta simples que encontrará todos os perfis de usuário no grafo.

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

Encontrar Perfis de Usuário por Nome de Grupo

Isso encontrará todos os perfis de usuário que são membros do grupo "Administradores" do domínio.

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

Encontrar Perfis de Usuário Ativos nos Últimos 3 Dias

Isso encontrará todos os perfis de usuário que foram modificados nos últimos 3 dias. Isso ajuda a determinar onde um perfil de usuário pode ser a máquina principal do usuário e ter um bom saque.

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

Perfis de Usuário Ativos em um Grupo Específico (Poderoso)

Esta é uma consulta extremamente poderosa para localizar perfis de usuário específicos usados nos últimos 3 dias para membros de um grupo específico.

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

Remover Perfis de Usuário Não Utilizados

Isso removerá quaisquer perfis de usuário onde o arquivo NTUSER.DAT foi modificado antes da data de criação. Isso indica que o perfil foi criado, mas não usado de forma tangível. Essa condição existe porque o arquivo NTUSER.DAT é copiado do perfil C:\Users\Default quando um novo perfil de usuário é criado, mantendo a mesma data de modificação mesmo que a data de criação seja posterior.

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

Créditos

Isso simplesmente não seria possível sem as bibliotecas ShareHound e bhopengraph de Remi Gascou (@podalirius).

Melhorias Futuras

O foco desta ferramenta é determinar quais máquinas têm maior probabilidade de conter segredos para usuários específicos. Melhorias futuras incluirão:

  • Implementar o SCCMHunter de @garrettfoster13 como biblioteca para melhorar a coleta de dados.
    • Usar a função get_lastlogon para criar arestas HasUserProfile em máquinas.
    • Usar a função get_puser para associar usuários de domínio como proprietários primários de dispositivos para máquinas específicas.
  • Implementar a correlação de propriedade de dispositivos do Azure AD a partir do AzureHound.
    • Isso parece já ser coletado como um objeto AZDeviceOwner em .data.owners[owner.DeviceOwner.onPremisesSecurityIdentifier]
  • Usar o ShareHound para vasculhar arquivos sensíveis em perfis correspondentes e ingerir no grafo.
  • Minerar o arquivo NTUSER.DAT em busca de programas recentes, documentos e atividade de navegador.
Baixar ferramenta