
GPOHound — Updated!
Ferramenta ofensiva de extração e análise de GPO que aproveita e enriquece dados do BloodHound
GPOHound
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.
Funcionalidades
Extração
- Extrai GPOs em um formato JSON estruturado ou em árvore
- Lida com múltiplos domínios
- Resolve nomes de GPO com GUIDs de GPO
- Filtra a saída por arquivos de GPO, GUIDs de GPO e domínios
- Pesquisa em pares chave/valor usando regex
Análise
- Agrupa configurações por objeto impactado (ex.: Grupos Locais, Registro)
- Detecta membros adicionados a grupos locais privilegiados
- Detecta configurações inseguras de registro, credenciais armazenadas e direitos de privilégio
- Suporta descriptografia de credenciais VNC e senhas GPP
- Encontra domínios, contêineres e UOs afetados por GPOs
- Obtém GPOs aplicados a um usuário, computador, UO, contêiner ou domínio específico
- Enriquece os dados do BloodHound com relacionamentos e propriedades
Instalação
Instalar com pip
git clone "https://github.com/cogiceo/GPOHound"
cd GPOHound
pip install .
Instalar com pipx
pipx install "git+https://github.com/cogiceo/GPOHound"
Configurar APOC para Neo4j
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
jardo 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.
Adicionar Consultas do BloodHound
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.
Pré-requisitos
Extração do SYSVOL
Comece baixando o conteúdo do SYSVOL do controlador de domínio.
-
Baixar o
SYSVOLcompleto: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
Extração LDAP
Recupere todos os dados necessários do LDAP:
gpohound ldap --dc $DC_HOST -d $DOMAIN -u $USER -p $PASSWORD
BloodHound
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.
Uso
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
Analisar
gpohound parse "gpos/sysvols/$DOMAIN/Policies/{31B2F340-016D-11D2-945F-00C04FB984F9}/MACHINE/Registry.pol"
Extrair
gpohound dump
gpohound dump --list
gpohound dump --guid 31B2F340-016D-11D2-945F-00C04FB984F9
gpohound dump --policies scripts psscripts
gpohound dump --search 'VNC.*Server' --show
Análise
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
Análise e enriquecimento atuais
[!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.
Grupos Locais
- Detecção de usuários atribuídos a grupos locais privilegiados durante o logon
- Detecção de grupos locais privilegiados internos renomeados.
- Detecção de trustees adicionados a grupos locais privilegiados usando "Variáveis de Processo de Preferência" (ex.: %ComputerName%, %DomainName%)
- Detecção de trustees abusáveis usando sequestro de
sAMAccountName - Detecção de quaisquer trustees adicionados a grupos locais privilegiados:
| 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 |
Registro
| 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 | — |
Direitos Privilegiados
Trustees 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.