Translated ['src/windows-hardening/active-directory-methodology/adws-enu

This commit is contained in:
Translator 2025-07-28 12:12:53 +00:00
parent 2c51e79d57
commit 7983cd0ebf
3 changed files with 155 additions and 57 deletions

View File

@ -260,6 +260,7 @@
- [Ad Certificates](windows-hardening/active-directory-methodology/ad-certificates.md)
- [AD information in printers](windows-hardening/active-directory-methodology/ad-information-in-printers.md)
- [AD DNS Records](windows-hardening/active-directory-methodology/ad-dns-records.md)
- [Adws Enumeration](windows-hardening/active-directory-methodology/adws-enumeration.md)
- [ASREPRoast](windows-hardening/active-directory-methodology/asreproast.md)
- [BloodHound & Other AD Enum Tools](windows-hardening/active-directory-methodology/bloodhound.md)
- [Constrained Delegation](windows-hardening/active-directory-methodology/constrained-delegation.md)

View File

@ -0,0 +1,106 @@
# Active Directory Web Services (ADWS) Enumeração & Coleta Stealth
{{#include ../../banners/hacktricks-training.md}}
## O que é ADWS?
Active Directory Web Services (ADWS) está **habilitado por padrão em todos os Controladores de Domínio desde o Windows Server 2008 R2** e escuta na porta TCP **9389**. Apesar do nome, **nenhum HTTP está envolvido**. Em vez disso, o serviço expõe dados no estilo LDAP através de uma pilha de protocolos de estrutura .NET proprietários:
* MC-NBFX → MC-NBFSE → MS-NNS → MC-NMF
Como o tráfego está encapsulado dentro desses frames SOAP binários e viaja por uma porta incomum, **a enumeração através do ADWS é muito menos provável de ser inspecionada, filtrada ou assinada do que o tráfego clássico LDAP/389 & 636**. Para os operadores, isso significa:
* Recon mais furtivo As equipes azuis frequentemente se concentram em consultas LDAP.
* Liberdade para coletar de **hosts não-Windows (Linux, macOS)** através de um túnel 9389/TCP por meio de um proxy SOCKS.
* Os mesmos dados que você obteria via LDAP (usuários, grupos, ACLs, esquema, etc.) e a capacidade de realizar **escritas** (por exemplo, `msDs-AllowedToActOnBehalfOfOtherIdentity` para **RBCD**).
> NOTA: O ADWS também é usado por muitas ferramentas GUI/PowerShell do RSAT, então o tráfego pode se misturar com a atividade administrativa legítima.
## SoaPy Cliente Python Nativo
[SoaPy](https://github.com/logangoins/soapy) é uma **reimplementação completa da pilha de protocolos ADWS em Python puro**. Ele cria os frames NBFX/NBFSE/NNS/NMF byte a byte, permitindo a coleta de sistemas semelhantes ao Unix sem tocar no runtime .NET.
### Principais Recursos
* Suporta **proxy através de SOCKS** (útil a partir de implantes C2).
* Filtros de busca detalhados idênticos ao LDAP `-q '(objectClass=user)'`.
* Operações de **escrita** opcionais ( `--set` / `--delete` ).
* Modo de saída **BOFHound** para ingestão direta no BloodHound.
* Flag `--parse` para embelezar timestamps / `userAccountControl` quando a legibilidade humana é necessária.
### Instalação (host do operador)
```bash
python3 -m pip install soapy-adws # or git clone && pip install -r requirements.txt
```
## Stealth AD Collection Workflow
O seguinte fluxo de trabalho mostra como enumerar **objetos de domínio e ADCS** através do ADWS, convertê-los para JSON do BloodHound e caçar caminhos de ataque baseados em certificado tudo a partir do Linux:
1. **Tunnel 9389/TCP** da rede alvo para sua máquina (por exemplo, via Chisel, Meterpreter, SSH dynamic port-forward, etc.). Exporte `export HTTPS_PROXY=socks5://127.0.0.1:1080` ou use `--proxyHost/--proxyPort` do SoaPy.
2. **Coletar o objeto de domínio raiz:**
```bash
soapy ludus.domain/jdoe:'P@ssw0rd'@10.2.10.10 \
-q '(objectClass=domain)' \
| tee data/domain.log
```
3. **Coletar objetos relacionados ao ADCS do NC de Configuração:**
```bash
soapy ludus.domain/jdoe:'P@ssw0rd'@10.2.10.10 \
-dn 'CN=Configuration,DC=ludus,DC=domain' \
-q '(|(objectClass=pkiCertificateTemplate)(objectClass=CertificationAuthority) \\
(objectClass=pkiEnrollmentService)(objectClass=msPKI-Enterprise-Oid))' \
| tee data/adcs.log
```
4. **Converter para BloodHound:**
```bash
bofhound -i data --zip # produces BloodHound.zip
```
5. **Faça o upload do ZIP** na interface do BloodHound e execute consultas cypher como `MATCH (u:User)-[:Can_Enroll*1..]->(c:CertTemplate) RETURN u,c` para revelar caminhos de escalonamento de certificado (ESC1, ESC8, etc.).
### Escrevendo `msDs-AllowedToActOnBehalfOfOtherIdentity` (RBCD)
```bash
soapy ludus.domain/jdoe:'P@ssw0rd'@dc.ludus.domain \
--set 'CN=Victim,OU=Servers,DC=ludus,DC=domain' \
msDs-AllowedToActOnBehalfOfOtherIdentity 'B:32:01....'
```
Combine isso com `s4u2proxy`/`Rubeus /getticket` para uma cadeia completa de **Delegação Constrangida Baseada em Recurso**.
## Detecção e Fortalecimento
### Registro Verboso do ADDS
Ative as seguintes chaves de registro nos Controladores de Domínio para expor buscas caras / ineficientes provenientes do ADWS (e LDAP):
```powershell
New-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\NTDS\Diagnostics' -Name '15 Field Engineering' -Value 5 -Type DWORD
New-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\NTDS\Parameters' -Name 'Expensive Search Results Threshold' -Value 1 -Type DWORD
New-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\NTDS\Parameters' -Name 'Search Time Threshold (msecs)' -Value 0 -Type DWORD
```
Eventos aparecerão sob **Directory-Service** com o filtro LDAP completo, mesmo quando a consulta chegou via ADWS.
### Objetos Canary SACL
1. Crie um objeto fictício (por exemplo, usuário desativado `CanaryUser`).
2. Adicione um ACE de **Auditoria** para o principal _Everyone_, auditado em **ReadProperty**.
3. Sempre que um atacante realizar `(servicePrincipalName=*)`, `(objectClass=user)` etc., o DC emite **Event 4662** que contém o SID do usuário real mesmo quando a solicitação é proxy ou se origina do ADWS.
Exemplo de regra pré-construída do Elastic:
```kql
(event.code:4662 and not user.id:"S-1-5-18") and winlog.event_data.AccessMask:"0x10"
```
## Resumo de Ferramentas
| Propósito | Ferramenta | Notas |
|-----------|------------|-------|
| Enumeração ADWS | [SoaPy](https://github.com/logangoins/soapy) | Python, SOCKS, leitura/escrita |
| Ingestão do BloodHound | [BOFHound](https://github.com/bohops/BOFHound) | Converte logs do SoaPy/ldapsearch |
| Comprometimento de Certificado | [Certipy](https://github.com/ly4k/Certipy) | Pode ser proxy através do mesmo SOCKS |
## Referências
* [SpecterOps Make Sure to Use SOAP(y) An Operators Guide to Stealthy AD Collection Using ADWS](https://specterops.io/blog/2025/07/25/make-sure-to-use-soapy-an-operators-guide-to-stealthy-ad-collection-using-adws/)
* [SoaPy GitHub](https://github.com/logangoins/soapy)
* [BOFHound GitHub](https://github.com/bohops/BOFHound)
* [Microsoft MC-NBFX, MC-NBFSE, MS-NNS, MC-NMF specifications](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-nbfx/)
{{#include ../../banners/hacktricks-training.md}}

View File

@ -1,87 +1,78 @@
# BloodHound & Outras Ferramentas de Enumeração AD
# BloodHound & Outras Ferramentas de Enumeração do Active Directory
{{#include ../../banners/hacktricks-training.md}}
{{#ref}}
adws-enumeration.md
{{#endref}}
> NOTA: Esta página agrupa algumas das utilidades mais úteis para **enumerar** e **visualizar** relacionamentos do Active Directory. Para coleta através do canal stealthy **Active Directory Web Services (ADWS)**, consulte a referência acima.
---
## AD Explorer
[AD Explorer](https://docs.microsoft.com/en-us/sysinternals/downloads/adexplorer) é da Sysinternal Suite:
[AD Explorer](https://docs.microsoft.com/en-us/sysinternals/downloads/adexplorer) (Sysinternals) é um **visualizador e editor de AD** avançado que permite:
> Um visualizador e editor avançado de Active Directory (AD). Você pode usar o AD Explorer para navegar facilmente em um banco de dados AD, definir locais favoritos, visualizar propriedades e atributos de objetos sem abrir caixas de diálogo, editar permissões, visualizar o esquema de um objeto e executar pesquisas sofisticadas que você pode salvar e reexecutar.
* Navegação GUI da árvore de diretórios
* Edição de atributos de objetos e descritores de segurança
* Criação / comparação de snapshots para análise offline
### Snapshots
### Uso rápido
O AD Explorer pode criar snapshots de um AD para que você possa verificá-lo offline.\
Ele pode ser usado para descobrir vulnerabilidades offline ou para comparar diferentes estados do banco de dados AD ao longo do tempo.
1. Inicie a ferramenta e conecte-se a `dc01.corp.local` com quaisquer credenciais de domínio.
2. Crie um snapshot offline via `File ➜ Create Snapshot`.
3. Compare dois snapshots com `File ➜ Compare` para identificar desvios de permissão.
Você precisará do nome de usuário, senha e direção para se conectar (qualquer usuário AD é necessário).
Para tirar um snapshot do AD, vá em `File` --> `Create Snapshot` e insira um nome para o snapshot.
---
## ADRecon
[**ADRecon**](https://github.com/adrecon/ADRecon) é uma ferramenta que extrai e combina vários artefatos de um ambiente AD. As informações podem ser apresentadas em um **relatório** Microsoft Excel **especialmente formatado** que inclui visualizações resumidas com métricas para facilitar a análise e fornecer uma visão holística do estado atual do ambiente AD alvo.
```bash
# Run it
.\ADRecon.ps1
[ADRecon](https://github.com/adrecon/ADRecon) extrai um grande conjunto de artefatos de um domínio (ACLs, GPOs, trusts, templates de CA …) e produz um **relatório Excel**.
```powershell
# On a Windows host in the domain
PS C:\> .\ADRecon.ps1 -OutputDir C:\Temp\ADRecon
```
## BloodHound
---
From [https://github.com/BloodHoundAD/BloodHound](https://github.com/BloodHoundAD/BloodHound)
## BloodHound (visualização gráfica)
> BloodHound é uma aplicação web Javascript de página única, construída sobre [Linkurious](http://linkurio.us/), compilada com [Electron](http://electron.atom.io/), com um banco de dados [Neo4j](https://neo4j.com/) alimentado por um coletor de dados em C#.
[BloodHound](https://github.com/BloodHoundAD/BloodHound) usa teoria dos grafos + Neo4j para revelar relacionamentos de privilégio ocultos dentro do AD local e do Azure AD.
BloodHound usa teoria dos grafos para revelar as relações ocultas e muitas vezes não intencionais dentro de um ambiente Active Directory ou Azure. Atacantes podem usar BloodHound para identificar facilmente caminhos de ataque altamente complexos que, de outra forma, seriam impossíveis de identificar rapidamente. Defensores podem usar BloodHound para identificar e eliminar esses mesmos caminhos de ataque. Tanto equipes azuis quanto vermelhas podem usar BloodHound para obter uma compreensão mais profunda das relações de privilégio em um ambiente Active Directory ou Azure.
Assim, [Bloodhound ](https://github.com/BloodHoundAD/BloodHound) é uma ferramenta incrível que pode enumerar um domínio automaticamente, salvar todas as informações, encontrar possíveis caminhos de escalonamento de privilégios e mostrar todas as informações usando gráficos.
BloodHound é composto por 2 partes principais: **ingestors** e a **aplicação de visualização**.
Os **ingestors** são usados para **enumerar o domínio e extrair todas as informações** em um formato que a aplicação de visualização entenderá.
A **aplicação de visualização usa neo4j** para mostrar como todas as informações estão relacionadas e para mostrar diferentes maneiras de escalar privilégios no domínio.
### Instalação
Após a criação do BloodHound CE, todo o projeto foi atualizado para facilitar o uso com Docker. A maneira mais fácil de começar é usar sua configuração pré-configurada do Docker Compose.
1. Instale o Docker Compose. Isso deve estar incluído na instalação do [Docker Desktop](https://www.docker.com/products/docker-desktop/).
2. Execute:
### Implantação (Docker CE)
```bash
curl -L https://ghst.ly/getbhce | docker compose -f - up
# Web UI ➜ http://localhost:8080 (user: admin / password from logs)
```
3. Localize a senha gerada aleatoriamente na saída do terminal do Docker Compose.
4. Em um navegador, navegue até http://localhost:8080/ui/login. Faça login com o nome de usuário **`admin`** e uma **`senha gerada aleatoriamente`** que você pode encontrar nos logs do docker compose.
### Coletores
Após isso, você precisará alterar a senha gerada aleatoriamente e terá a nova interface pronta, a partir da qual você pode baixar diretamente os ingestors.
* `SharpHound.exe` / `Invoke-BloodHound` variante nativa ou PowerShell
* `AzureHound` enumeração do Azure AD
* **SoaPy + BOFHound** coleta do ADWS (veja o link no topo)
### SharpHound
#### Modos comuns do SharpHound
```powershell
SharpHound.exe --CollectionMethods All # Full sweep (noisy)
SharpHound.exe --CollectionMethods Group,LocalAdmin,Session,Trusts,ACL
SharpHound.exe --Stealth --LDAP # Low noise LDAP only
```
Os coletores geram JSON que é ingerido através da interface do BloodHound.
Eles têm várias opções, mas se você quiser executar o SharpHound de um PC conectado ao domínio, usando seu usuário atual e extrair todas as informações, você pode fazer:
```
./SharpHound.exe --CollectionMethods All
Invoke-BloodHound -CollectionMethod All
```
> Você pode ler mais sobre **CollectionMethod** e a sessão de loop [aqui](https://support.bloodhoundenterprise.io/hc/en-us/articles/17481375424795-All-SharpHound-Community-Edition-Flags-Explained)
Se você deseja executar o SharpHound usando credenciais diferentes, pode criar uma sessão CMD netonly e executar o SharpHound a partir daí:
```
runas /netonly /user:domain\user "powershell.exe -exec bypass"
```
[**Saiba mais sobre Bloodhound em ired.team.**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-active-directory-with-bloodhound-on-kali-linux)
---
## Group3r
[**Group3r**](https://github.com/Group3r/Group3r) é uma ferramenta para encontrar **vulnerabilidades** no Active Directory associadas à **Política de Grupo**. \
Você precisa **executar group3r** a partir de um host dentro do domínio usando **qualquer usuário do domínio**.
[Group3r](https://github.com/Group3r/Group3r) enumera **Group Policy Objects** e destaca configurações incorretas.
```bash
group3r.exe -f <filepath-name.log>
# -s sends results to stdin
# -f send results to file
# Execute inside the domain
Group3r.exe -f gpo.log # -s to stdout
```
---
## PingCastle
[**PingCastle**](https://www.pingcastle.com/documentation/) **avalia a postura de segurança de um ambiente AD** e fornece um bom **relatório** com gráficos.
Para executá-lo, pode-se executar o binário `PingCastle.exe` e ele iniciará uma **sessão interativa** apresentando um menu de opções. A opção padrão a ser utilizada é **`healthcheck`** que estabelecerá uma **visão geral** do **domínio**, e encontrará **configurações incorretas** e **vulnerabilidades**.
[PingCastle](https://www.pingcastle.com/documentation/) realiza uma **verificação de saúde** do Active Directory e gera um relatório em HTML com pontuação de risco.
```powershell
PingCastle.exe --healthcheck --server corp.local --user bob --password "P@ssw0rd!"
```
{{#include ../../banners/hacktricks-training.md}}