
Ferramenta ofensiva de extração e análise de GPO que aproveita e enriquece dados do BloodHound
GPOHound é uma ferramenta para extrair e analisar Objetos de Política de Grupo (GPOs) extraídos do compartilhamento SYSVOL.
Ela fornece um formato estruturado e formalizado para ajudar a descobrir configurações incorretas, configurações inseguras e caminhos de escalonamento de privilégios em ambientes Active Directory.
A ferramenta se integra ao banco de dados Neo4j do BloodHound, usando-o como uma fonte semelhante a LDAP para informações do Active Directory, enquanto também o enriquece ao adicionar novos relacionamentos (arestas) e propriedades de nós com base na análise.
git clone "https://github.com/cogiceo/GPOHound"
cd GPOHound
pip install .
pipx install "git+https://github.com/cogiceo/GPOHound"
Você precisa configurar o APOC do Neo4j para o enriquecimento de dados do BloodHound:
Se você estiver usando a instalação padrão do Neo4j, pode habilitar o APOC copiando o arquivo jar do APOC para a pasta de plugins e então reiniciar o Neo4j:
cp /var/lib/neo4j/labs/apoc-* /var/lib/neo4j/plugins/
neo4j restart
Se você estiver instalando o Neo4j com "Docker Compose", adicione a variável de ambiente NEO4J_PLUGINS=["apoc"]:
neo4j:
image: neo4j:latest
environment:
- NEO4J_PLUGINS=["apoc"]
Para mais detalhes ou métodos alternativos de instalação, consulte a Documentação oficial do APOC.
Para visualizar os relacionamentos e propriedades adicionados pelo GPOHound, você pode importar as consultas personalizadas do arquivo customqueries.json para o BloodHound. Por padrão, este arquivo está localizado em ~/.config/bloodhound/customqueries.json.
Comece baixando o conteúdo do SYSVOL do controlador de domínio.
Baixar o SYSVOL completo:
gpohound sysvol --dc $DC_HOST -d $DOMAIN -u $USER -p $PASSWORD
Baixar apenas os GPOs:
gpohound sysvol --dc $DC_HOST -d $DOMAIN -u $USER -p $PASSWORD --gpos
Baixar com exclusões:
gpohound sysvol --dc $DC_HOST -u $USER -p $PASSWORD --exclude '/Policydefinitions/','/scripts/' --max-size 100
Recupere todos os dados necessários do LDAP:
gpohound ldap --dc $DC_HOST -d $DOMAIN -u $USER -p $PASSWORD
Para o enriquecimento de dados do BloodHound, você deve coletar dados do BloodHound usando um coletor como bloodhound.py ou SharpHound.exe e importar os dados coletados para a interface do BloodHound.
Arquivos de exemplo do GPOHound estão disponíveis em example.zip. Extraia-os com unzip example.zip.
Consulte CONFIG.md para instruções sobre como personalizar valores e configurações padrão.
gpohound --neo4j-user $USER --neo4j-pass $PASS dump
gpohound --neo4j-user $USER --neo4j-pass $PASS analysis
gpohound parse "gpos/sysvols/$DOMAIN/Policies/{31B2F340-016D-11D2-945F-00C04FB984F9}/MACHINE/Registry.pol"
gpohound dump
gpohound dump --list
gpohound dump --guid 31B2F340-016D-11D2-945F-00C04FB984F9
gpohound dump --policies scripts psscripts
gpohound dump --search 'VNC.*Server' --show
gpohound analysis
gpohound analysis --affected
gpohound analysis --trustee 'SRV01.SEVENKINGDOMS.LOCAL'
gpohound analysis --trustee 'SRV01.SEVENKINGDOMS.LOCAL' --list
gpohound analysis --trustee 'SRV01.SEVENKINGDOMS.LOCAL' --dump
gpohound analysis --enrich
gpohound analysis --enrich-ce
[!IMPORTANTE]
- Condições como filtros de segurança, filtros WMI e direcionamento em nível de item não são interpretadas.
- Conflitos de GPO não são simulados, para evitar perder configurações válidas.
sAMAccountNameTrustees privilegiados padrão, bem como contas de serviço com SIDs começando com S-1-5-8, são excluídos da análise.
| Grupo | Aresta |
|---|
| Administrators | AdminTo |
| Remote Desktop Users | CanRDP |
| Distributed COM Users | ExecuteDCOM |
| Remote Management Users | CanPSRemote |
| Backup Operators | CanPrivEsc |
| Print Operators | CanPrivEsc |
| Network Configuration Operators | CanPrivEsc |
| Análise | Propriedade |
|---|
| Grupo "Everyone" inclui "Anonymous Logon" | — |
| Assinatura de sessão do servidor SMB não está habilitada | smbSigningEnabled: false |
| Assinatura de sessão do servidor SMB não é obrigatória | smbSigningRequired: false |
| Autenticação NTLMv1 é suportada | NTLMv1Support: true |
| Senha padrão de logon automático do Windows | — |
| Credenciais VNC (Genérico: RealVNC, TightVNC, TigerVNC, etc.) | *VNC*PASS* (vários) |
| Senhas armazenadas do FileZilla | — |
| Senha de proxy do PuTTY | — |
| Credenciais armazenadas do TeamViewer | — |
| Sessões salvas do WinSCP | — |
| Senha armazenada do Picasa | — |
| Privilégio | Descrição | Aresta |
|---|
| SeDebugPrivilege | Permite que o usuário depure e interaja com qualquer processo | CanPrivEsc |
| SeBackupPrivilege | Concede acesso a arquivos confidenciais | CanPrivEsc |
| SeRestorePrivilege | Ignora permissões de objeto durante a restauração | CanPrivEsc |
| SeAssignPrimaryTokenPrivilege | Permite a personificação de token para escalonamento de SYSTEM | CanPrivEsc |
| SeImpersonatePrivilege | Permite a criação de processos no contexto de outro usuário | CanPrivEsc |
| SeTakeOwnershipPrivilege | Permite que os usuários assumam a propriedade de objetos do sistema | CanPrivEsc |
| SeTcbPrivilege | Concede a capacidade de atuar como parte do SO | CanPrivEsc |
| SeCreateTokenPrivilege | Permite a criação de tokens de autenticação | CanPrivEsc |
| SeLoadDriverPrivilege | Autoriza o carregamento/descarregamento de drivers | CanPrivEsc |
| SeManageVolumePrivilege | Concede privilégios de gerenciamento de volume ou disco | CanPrivEsc |
| SeEnableDelegationPrivilege | Permite que contas de computador e usuário sejam confiáveis para delegação |