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
1118d70fde
commit
6d6f5dc915
@ -241,6 +241,7 @@
|
||||
- [Windows C Payloads](windows-hardening/windows-local-privilege-escalation/windows-c-payloads.md)
|
||||
- [Active Directory Methodology](windows-hardening/active-directory-methodology/README.md)
|
||||
- [Abusing Active Directory ACLs/ACEs](windows-hardening/active-directory-methodology/acl-persistence-abuse/README.md)
|
||||
- [BadSuccessor](windows-hardening/active-directory-methodology/acl-persistence-abuse/BadSuccessor.md)
|
||||
- [Shadow Credentials](windows-hardening/active-directory-methodology/acl-persistence-abuse/shadow-credentials.md)
|
||||
- [AD Certificates](windows-hardening/active-directory-methodology/ad-certificates/README.md)
|
||||
- [AD CS Account Persistence](windows-hardening/active-directory-methodology/ad-certificates/account-persistence.md)
|
||||
|
@ -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 anônimo 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 //`
|
||||
@ -72,7 +72,7 @@ Se você apenas tiver acesso a um ambiente AD, mas não tiver credenciais/sessõ
|
||||
- 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 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).
|
||||
- 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).
|
||||
- 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** 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)
|
||||
- **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)
|
||||
```bash
|
||||
./kerbrute_linux_amd64 userenum -d lab.ropnop.com --dc 10.10.10.10 usernames.txt #From https://github.com/ropnop/kerbrute/releases
|
||||
|
||||
@ -108,7 +108,7 @@ Invoke-PasswordSprayOWA -ExchHostname [ip] -UserList .\valid.txt -Password Summe
|
||||
Get-GlobalAddressList -ExchHostname [ip] -UserName [domain]\[username] -Password Summer2021 -OutFile gal.txt
|
||||
```
|
||||
> [!WARNING]
|
||||
> Você pode encontrar listas de nomes de usuários em [**este repositório do github**](https://github.com/danielmiessler/SecLists/tree/master/Usernames/Names) e neste ([**nomes de usuários estatisticamente prováveis**](https://github.com/insidetrust/statistically-likely-usernames)).
|
||||
> Você pode encontrar listas de nomes de usuários neste [**repositório do github**](https://github.com/danielmiessler/SecLists/tree/master/Usernames/Names) e neste ([**nomes de usuários estatisticamente prováveis**](https://github.com/insidetrust/statistically-likely-usernames)).
|
||||
>
|
||||
> No entanto, você deve ter o **nome das pessoas que trabalham na empresa** da etapa de reconhecimento que você deve ter realizado antes disso. Com o nome e sobrenome, você pode usar o script [**namemash.py**](https://gist.github.com/superkojiman/11076951) para gerar nomes de usuários válidos potenciais.
|
||||
|
||||
@ -118,7 +118,7 @@ Ok, então você sabe que já tem um nome de usuário válido, mas sem senhas...
|
||||
|
||||
- [**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.
|
||||
- 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
|
||||
@ -167,7 +167,7 @@ Em relação ao [**ASREPRoast**](asreproast.md), você agora pode encontrar todo
|
||||
- **Outras ferramentas automatizadas de enumeração AD são:** [**AD Explorer**](bloodhound.md#ad-explorer)**,** [**ADRecon**](bloodhound.md#adrecon)**,** [**Group3r**](bloodhound.md#group3r)**,** [**PingCastle**](bloodhound.md#pingcastle)**.**
|
||||
- [**Registros DNS do AD**](ad-dns-records.md), pois podem conter informações interessantes.
|
||||
- Uma **ferramenta com GUI** que você pode usar para enumerar o diretório é **AdExplorer.exe** do **SysInternal** Suite.
|
||||
- Você também pode pesquisar no banco de dados LDAP com **ldapsearch** para procurar credenciais nos campos _userPassword_ & _unixUserPassword_, ou até mesmo por _Description_. cf. [Senha no comentário do usuário AD em PayloadsAllTheThings](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Active%20Directory%20Attack.md#password-in-ad-user-comment) para outros métodos.
|
||||
- Você também pode pesquisar no banco de dados LDAP com **ldapsearch** para procurar credenciais nos campos _userPassword_ e _unixUserPassword_, ou até mesmo por _Description_. cf. [Senha no comentário do usuário AD em PayloadsAllTheThings](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Active%20Directory%20Attack.md#password-in-ad-user-comment) para outros métodos.
|
||||
- Se você estiver usando **Linux**, também pode enumerar o domínio usando [**pywerview**](https://github.com/the-useless-one/pywerview).
|
||||
- Você também pode tentar ferramentas automatizadas como:
|
||||
- [**tomcarver16/ADSearch**](https://github.com/tomcarver16/ADSearch)
|
||||
@ -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 até o 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 para DA ou decidir que nada pode ser feito.
|
||||
|
||||
### Kerberoast
|
||||
|
||||
@ -214,13 +214,13 @@ 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 muito chata e repetitiva (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 repetitiva e muito chata (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)
|
||||
|
||||
### Roubar Credenciais NTLM
|
||||
|
||||
Se você pode **acessar outros PCs ou compartilhamentos**, poderia **colocar arquivos** (como um arquivo SCF) que, se acessados de alguma forma, **dispararão uma autenticação NTLM contra você**, permitindo que você **roube** o **desafio NTLM** para quebrá-lo:
|
||||
Se você pode **acessar outros PCs ou compartilhamentos**, pode **colocar arquivos** (como um arquivo SCF) que, se acessados de alguma forma, **dispararão uma autenticação NTLM contra você**, permitindo que você **roube** o **desafio NTLM** para quebrá-lo:
|
||||
|
||||
{{#ref}}
|
||||
../ntlm/places-to-steal-ntlm-creds.md
|
||||
@ -247,7 +247,7 @@ Então, é hora de despejar todos os hashes na memória e localmente.\
|
||||
### Pass the Hash
|
||||
|
||||
**Uma vez que você tenha o hash de um usuário**, pode usá-lo para **impersonar** esse usuário.\
|
||||
Você precisa usar alguma **ferramenta** que **realize** a **autenticação NTLM usando** esse **hash**, **ou** você poderia criar um novo **sessionlogon** e **injetar** esse **hash** dentro do **LSASS**, para que quando qualquer **autenticação NTLM for realizada**, esse **hash será usado.** A última opção é o que o mimikatz faz.\
|
||||
Você precisa usar alguma **ferramenta** que **realize** a **autenticação NTLM usando** esse **hash**, **ou** você pode criar um novo **sessionlogon** e **injetar** esse **hash** dentro do **LSASS**, para que, quando qualquer **autenticação NTLM for realizada**, esse **hash será usado.** A última opção é o que o mimikatz faz.\
|
||||
[**Leia esta página para mais informações.**](../ntlm/index.html#pass-the-hash)
|
||||
|
||||
### Over Pass the Hash/Pass the Key
|
||||
@ -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 isso.
|
||||
Se você tem o **hash** ou **senha** de um **administrador local**, deve tentar **fazer login localmente** em outros **PCs** com ele.
|
||||
```bash
|
||||
# Local Auth Spray (once you found some local admin pass or hash)
|
||||
## --local-auth flag indicate to only try 1 time per machine
|
||||
@ -277,10 +277,10 @@ crackmapexec smb --local-auth 10.10.10.10/23 -u administrator -H 10298e182387f9c
|
||||
> [!WARNING]
|
||||
> Note que isso é bastante **barulhento** e o **LAPS** **mitigaria** isso.
|
||||
|
||||
### Abuso de MSSQL e Links Confiáveis
|
||||
### Abuso de MSSQL & Links Confiáveis
|
||||
|
||||
Se um usuário tiver privilégios para **acessar instâncias MSSQL**, ele poderá usá-las para **executar comandos** no host MSSQL (se estiver rodando como SA), **roubar** o **hash** NetNTLM ou até mesmo realizar um **ataque** de **relay**.\
|
||||
Além disso, se uma instância MSSQL for confiável (link de banco de dados) por uma instância MSSQL diferente. Se o usuário tiver privilégios sobre o banco de dados confiável, ele poderá **usar a relação de confiança para executar consultas também na outra instância**. Essas confianças podem ser encadeadas e, em algum momento, o usuário pode ser capaz de encontrar um banco de dados mal configurado onde pode executar comandos.\
|
||||
Além disso, se uma instância MSSQL for confiável (link de banco de dados) por uma instância MSSQL diferente. Se o usuário tiver privilégios sobre o banco de dados confiável, ele poderá **usar o relacionamento de confiança para executar consultas também na outra instância**. Essas confianças podem ser encadeadas e, em algum momento, o usuário pode ser capaz de encontrar um banco de dados mal configurado onde pode executar comandos.\
|
||||
**Os links entre bancos de dados funcionam até mesmo através de confianças de floresta.**
|
||||
|
||||
{{#ref}}
|
||||
@ -308,13 +308,13 @@ constrained-delegation.md
|
||||
|
||||
### 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 **GRAVAÇÃO** 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
|
||||
{{#endref}}
|
||||
|
||||
### Abuso de ACLs
|
||||
### Abuso de Permissões/ACLs
|
||||
|
||||
O usuário comprometido pode ter alguns **privilégios interessantes sobre alguns objetos de domínio** que podem permitir que você **mova** lateralmente/**escalone** privilégios.
|
||||
|
||||
@ -322,9 +322,9 @@ O usuário comprometido pode ter alguns **privilégios interessantes sobre algun
|
||||
acl-persistence-abuse/
|
||||
{{#endref}}
|
||||
|
||||
### Abuso do serviço de Spooler de Impressão
|
||||
### Abuso do serviço Spooler de Impressora
|
||||
|
||||
Descobrir um **serviço de Spooler ouvindo** dentro do domínio pode ser **abusado** para **adquirir novas credenciais** e **escalar privilégios**.
|
||||
Descobrir um **serviço Spool** escutando 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 transiçã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 mudança para outros computadores se torna possível.
|
||||
|
||||
{{#ref}}
|
||||
laps.md
|
||||
@ -355,7 +355,7 @@ laps.md
|
||||
ad-certificates/certificate-theft.md
|
||||
{{#endref}}
|
||||
|
||||
### Abuso de Modelos de Certificados
|
||||
### Abuso de Modelos de Certificado
|
||||
|
||||
Se **modelos vulneráveis** estiverem configurados, é possível abusar deles para escalar privilégios:
|
||||
|
||||
@ -367,7 +367,7 @@ ad-certificates/domain-escalation.md
|
||||
|
||||
### Despejando Credenciais de Domínio
|
||||
|
||||
Uma vez que você obtenha privilégios de **Administrador de Domínio** ou até mesmo melhores privilégios de **Administrador Empresarial**, você pode **despejar** o **banco de dados do domínio**: _ntds.dit_.
|
||||
Uma vez que você obtenha privilégios de **Administrador de Domínio** ou até mesmo melhores **Administradores de Empresa**, você pode **despejar** o **banco de dados do domínio**: _ntds.dit_.
|
||||
|
||||
[**Mais informações sobre o ataque DCSync podem ser encontradas aqui**](dcsync.md).
|
||||
|
||||
@ -424,7 +424,7 @@ diamond-ticket.md
|
||||
|
||||
### **Persistência de Conta de Certificados**
|
||||
|
||||
**Ter certificados de uma conta ou ser capaz de solicitá-los** é uma maneira muito boa de conseguir persistir na conta dos usuários (mesmo que ele mude a senha):
|
||||
**Ter certificados de uma conta ou ser capaz de solicitá-los** é uma maneira muito boa de poder persistir na conta dos usuários (mesmo que ele mude a senha):
|
||||
|
||||
{{#ref}}
|
||||
ad-certificates/account-persistence.md
|
||||
@ -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 Empresariais) 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 monitorada 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, falhar, 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)
|
||||
|
||||
@ -454,7 +454,7 @@ dsrm-credentials.md
|
||||
|
||||
### Persistência de ACL
|
||||
|
||||
Você poderia **dar** alguns **permissões especiais** a um **usuário** sobre alguns objetos de domínio específicos que permitirão que o usuário **escalone privilégios no futuro**.
|
||||
Você poderia **dar** algumas **permissões especiais** a um **usuário** sobre alguns objetos de domínio específicos que permitirão que o usuário **escalone privilégios no futuro**.
|
||||
|
||||
{{#ref}}
|
||||
acl-persistence-abuse/
|
||||
@ -509,7 +509,7 @@ A Microsoft vê a **Floresta** como o limite de segurança. Isso implica que **c
|
||||
|
||||
### Informações Básicas
|
||||
|
||||
Uma [**confiança de domínio**](<http://technet.microsoft.com/en-us/library/cc759554(v=ws.10).aspx>) é um mecanismo de segurança que permite que um usuário de um **domínio** acesse recursos em outro **domínio**. Ele essencialmente cria uma ligação entre os sistemas de autenticação dos dois domínios, permitindo que as verificações de autenticação fluam sem problemas. Quando os domínios configuram uma confiança, eles trocam e mantêm **chaves** específicas dentro de seus **Controladores de Domínio (DCs)**, que são cruciais para a integridade da confiança.
|
||||
Uma [**confiança de domínio**](<http://technet.microsoft.com/en-us/library/cc759554(v=ws.10).aspx>) é um mecanismo de segurança que permite que um usuário de um **domínio** acesse recursos em outro **domínio**. Ele essencialmente cria uma ligação entre os sistemas de autenticação dos dois domínios, permitindo que as verificações de autenticação fluam sem problemas. Quando os domínios configuram uma confiança, eles trocam e retêm **chaves** específicas dentro de seus **Controladores de Domínio (DCs)**, que são cruciais para a integridade da confiança.
|
||||
|
||||
Em um cenário típico, se um usuário pretende acessar um serviço em um **domínio confiável**, ele deve primeiro solicitar um ticket especial conhecido como um **TGT inter-realm** do DC de seu próprio domínio. Este TGT é criptografado com uma **chave** que ambos os domínios concordaram. O usuário então apresenta este TGT ao **DC do domínio confiável** para obter um ticket de serviço (**TGS**). Após a validação bem-sucedida do TGT inter-realm pelo DC do domínio confiável, ele emite um TGS, concedendo ao usuário acesso ao serviço.
|
||||
|
||||
@ -527,16 +527,16 @@ Em um cenário típico, se um usuário pretende acessar um serviço em um **dom
|
||||
|
||||
É importante notar que **uma confiança pode ser unidirecional ou bidirecional**. Na opção bidirecional, ambos os domínios confiarão um no outro, mas na relação de confiança **unidirecional**, um dos domínios será o **confiável** e o outro o **confiador**. No último caso, **você só poderá acessar recursos dentro do domínio confiador a partir do confiável**.
|
||||
|
||||
Se o Domínio A confiar no Domínio B, A é o domínio confiador e B é o confiável. Além disso, em **Domínio A**, isso seria uma **confiança de saída**; e em **Domínio B**, isso seria uma **confiança de entrada**.
|
||||
Se o Domínio A confiar no Domínio B, A é o domínio confiador e B é o confiável. Além disso, no **Domínio A**, isso seria uma **confiança de saída**; e no **Domínio B**, isso seria uma **confiança de entrada**.
|
||||
|
||||
**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 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 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 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 a 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.
|
||||
- **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.
|
||||
|
||||
#### Outras diferenças nas **relações de confiança**
|
||||
|
||||
@ -546,7 +546,7 @@ Se o Domínio A confiar no Domínio B, A é o domínio confiador e B é o confi
|
||||
### Caminho de Ataque
|
||||
|
||||
1. **Enumere** as relações de confiança
|
||||
2. Verifique se algum **principal de segurança** (usuário/grupo/computador) tem **acesso** aos recursos do **outro domínio**, talvez por entradas ACE ou por estar em grupos do outro domínio. Procure por **relações entre domínios** (a confiança foi criada para isso, provavelmente).
|
||||
2. Verifique se algum **principal de segurança** (usuário/grupo/computador) tem **acesso** a recursos do **outro domínio**, talvez por entradas ACE ou por estar em grupos do outro domínio. Procure por **relações entre domínios** (a confiança foi criada para isso, provavelmente).
|
||||
1. Kerberoast neste caso poderia ser outra opção.
|
||||
3. **Comprometa** as **contas** que podem **pivotar** entre domínios.
|
||||
|
||||
@ -568,7 +568,7 @@ Get-DomainForeignUser
|
||||
# Get groups inside a domain with users our
|
||||
Get-DomainForeignGroupMember
|
||||
```
|
||||
### Escalação de privilégios de floresta de filho para pai
|
||||
### Escalação de privilégios de floresta de Filho para Pai
|
||||
```bash
|
||||
# Fro powerview
|
||||
Get-DomainTrust
|
||||
@ -612,19 +612,19 @@ sid-history-injection.md
|
||||
|
||||
#### Explorar NC de Configuração gravável
|
||||
|
||||
Entender como o Contexto de Nomeação de Configuração (NC) pode ser explorado é crucial. O NC de Configuração serve como um repositório central para dados de configuração em um ambiente de Active Directory (AD). Esses dados são replicados para todos os Controladores de Domínio (DC) dentro da floresta, com DCs graváveis mantendo uma cópia gravável do NC de Configuração. Para explorar isso, é necessário ter **privilégios de SYSTEM em um DC**, preferencialmente um DC filho.
|
||||
Entender como o Contexto de Nomeação de Configuração (NC) pode ser explorado é crucial. O NC de Configuração serve como um repositório central para dados de configuração em ambientes Active Directory (AD). Esses dados são replicados para cada Controlador de Domínio (DC) dentro da floresta, com DCs graváveis mantendo uma cópia gravável do NC de Configuração. Para explorar isso, é necessário ter **privilégios de SYSTEM em um DC**, preferencialmente um DC filho.
|
||||
|
||||
**Vincular GPO ao site do DC raiz**
|
||||
|
||||
O contêiner de Sites do NC de Configuração inclui informações sobre todos os sites de computadores associados ao domínio dentro da floresta AD. Ao operar com privilégios de SYSTEM em qualquer DC, os atacantes podem vincular GPOs aos sites do DC raiz. Essa ação pode comprometer o domínio raiz manipulando políticas aplicadas a esses sites.
|
||||
O contêiner de Sites do NC de Configuração inclui informações sobre todos os sites de computadores associados ao domínio dentro da floresta AD. Ao operar com privilégios de SYSTEM em qualquer DC, os atacantes podem vincular GPOs aos sites do DC raiz. Essa ação potencialmente compromete o domínio raiz manipulando políticas aplicadas a esses sites.
|
||||
|
||||
Para informações detalhadas, pode-se explorar pesquisas sobre [Bypassing SID Filtering](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-4-bypass-sid-filtering-research).
|
||||
|
||||
**Comprometer qualquer gMSA na floresta**
|
||||
|
||||
Um vetor de ataque envolve direcionar gMSAs privilegiadas dentro do domínio. A chave KDS Root, essencial para calcular as senhas de gMSAs, é armazenada dentro do NC de Configuração. Com privilégios de SYSTEM em qualquer DC, é possível acessar a chave KDS Root e calcular as senhas para qualquer gMSA na floresta.
|
||||
Um vetor de ataque envolve direcionar gMSAs privilegiadas dentro do domínio. A chave raiz KDS, essencial para calcular as senhas de gMSAs, é armazenada dentro do NC de Configuração. Com privilégios de SYSTEM em qualquer DC, é possível acessar a chave raiz KDS e calcular as senhas para qualquer gMSA na floresta.
|
||||
|
||||
Análises detalhadas podem ser encontradas na discussão sobre [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).
|
||||
Uma análise detalhada pode ser encontrada na discussão sobre [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**
|
||||
|
||||
@ -711,26 +711,26 @@ https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-move
|
||||
### **Medidas Defensivas para Proteção de Credenciais**
|
||||
|
||||
- **Restrições de Administradores de Domínio**: Recomenda-se que os Administradores de Domínio só possam fazer login em Controladores de Domínio, evitando seu uso em outros hosts.
|
||||
- **Privilégios de Conta de Serviço**: Serviços não devem ser executados com privilégios de Administrador de Domínio (DA) para manter a segurança.
|
||||
- **Limitação Temporal de Privilégios**: Para tarefas que requerem privilégios de DA, sua duração deve ser limitada. Isso pode ser alcançado por: `Add-ADGroupMember -Identity ‘Domain Admins’ -Members newDA -MemberTimeToLive (New-TimeSpan -Minutes 20)`
|
||||
- **Privilégios de Conta de Serviço**: Os serviços não devem ser executados com privilégios de Administrador de Domínio (DA) para manter a segurança.
|
||||
- **Limitação Temporal de Privilégios**: Para tarefas que exigem privilégios de DA, sua duração deve ser limitada. Isso pode ser alcançado por: `Add-ADGroupMember -Identity ‘Domain Admins’ -Members newDA -MemberTimeToLive (New-TimeSpan -Minutes 20)`
|
||||
|
||||
### **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**
|
||||
|
||||
- **Desvio de Detecção do Microsoft ATA**:
|
||||
- **Bypass 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,67 @@
|
||||
# Abusando de ACLs/ACEs do Active Directory
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Visão Geral
|
||||
|
||||
Contas de Serviço Gerenciadas Delegadas (**dMSAs**) são um novo tipo de principal do AD introduzido com **Windows Server 2025**. Elas foram projetadas para substituir contas de serviço legadas, permitindo uma “migração” com um clique que copia automaticamente os Nomes de Principal de Serviço (SPNs), associações de grupo, configurações de delegação e até mesmo chaves criptográficas da conta antiga para a nova dMSA, proporcionando uma transição suave para as aplicações e eliminando o risco de Kerberoasting.
|
||||
|
||||
Pesquisadores da Akamai descobriram que um único atributo — **`msDS‑ManagedAccountPrecededByLink`** — informa ao KDC qual conta legada uma dMSA “sucede”. Se um atacante puder escrever esse atributo (e alternar **`msDS‑DelegatedMSAState` → 2**), o KDC construirá felizmente um PAC que **herda todos os SIDs da vítima escolhida**, permitindo efetivamente que a dMSA se passe por qualquer usuário, incluindo Administradores de Domínio.
|
||||
|
||||
## O que exatamente é uma dMSA?
|
||||
|
||||
* Construída sobre a tecnologia **gMSA**, mas armazenada como a nova classe AD **`msDS‑DelegatedManagedServiceAccount`**.
|
||||
* Suporta uma **migração opt-in**: chamar `Start‑ADServiceAccountMigration` vincula a dMSA à conta legada, concede à conta legada acesso de gravação a `msDS‑GroupMSAMembership` e altera `msDS‑DelegatedMSAState` = 1.
|
||||
* Após `Complete‑ADServiceAccountMigration`, a conta substituída é desativada e a dMSA se torna totalmente funcional; qualquer host que anteriormente usou a conta legada é automaticamente autorizado a obter a senha da dMSA.
|
||||
* Durante a autenticação, o KDC incorpora uma dica **KERB‑SUPERSEDED‑BY‑USER** para que clientes Windows 11/24H2 tentem novamente de forma transparente com a dMSA.
|
||||
|
||||
## Requisitos para atacar
|
||||
1. **Pelo menos um Windows Server 2025 DC** para que a classe LDAP dMSA e a lógica KDC existam.
|
||||
2. **Quaisquer direitos de criação de objeto ou gravação de atributo em uma OU** (qualquer OU) – por exemplo, `Create msDS‑DelegatedManagedServiceAccount` ou simplesmente **Create All Child Objects**. A Akamai descobriu que 91% dos inquilinos do mundo real concedem tais permissões “benignas” de OU a não administradores.
|
||||
3. Capacidade de executar ferramentas (PowerShell/Rubeus) de qualquer host associado ao domínio para solicitar tickets Kerberos.
|
||||
*Nenhum controle sobre o usuário vítima é necessário; o ataque nunca toca a conta alvo diretamente.*
|
||||
|
||||
## Passo a passo: escalonamento de privilégios BadSuccessor
|
||||
|
||||
1. **Localize ou crie uma dMSA que você controla**
|
||||
```bash
|
||||
New‑ADServiceAccount Attacker_dMSA `
|
||||
‑DNSHostName ad.lab `
|
||||
‑Path "OU=temp,DC=lab,DC=local"
|
||||
```
|
||||
|
||||
Como você criou o objeto dentro de uma OU que pode gravar, você possui automaticamente todos os seus atributos.
|
||||
|
||||
2. **Simule uma “migração concluída” em duas gravações LDAP**:
|
||||
- Defina `msDS‑ManagedAccountPrecededByLink = DN` de qualquer vítima (por exemplo, `CN=Administrator,CN=Users,DC=lab,DC=local`).
|
||||
- Defina `msDS‑DelegatedMSAState = 2` (migração concluída).
|
||||
|
||||
Ferramentas como **Set‑ADComputer, ldapmodify**, ou até mesmo **ADSI Edit** funcionam; não são necessários direitos de administrador de domínio.
|
||||
|
||||
3. **Solicite um TGT para a dMSA** — Rubeus suporta a flag `/dmsa`:
|
||||
|
||||
```bash
|
||||
Rubeus.exe asktgs /targetuser:attacker_dmsa$ /service:krbtgt/aka.test /dmsa /opsec /nowrap /ptt /ticket:<Machine TGT>
|
||||
```
|
||||
|
||||
O PAC retornado agora contém o SID 500 (Administrador) além dos grupos Administradores de Domínio/Administradores de Empresa.
|
||||
|
||||
## Coletar todas as senhas dos usuários
|
||||
|
||||
Durante migrações legítimas, o KDC deve permitir que a nova dMSA decifre **tickets emitidos para a conta antiga antes da transição**. Para evitar quebrar sessões ativas, ele coloca tanto as chaves atuais quanto as chaves anteriores dentro de um novo blob ASN.1 chamado **`KERB‑DMSA‑KEY‑PACKAGE`**.
|
||||
|
||||
Como nossa migração falsa afirma que a dMSA sucede a vítima, o KDC copia diligentemente a chave RC4‑HMAC da vítima para a lista de **chaves anteriores** – mesmo que a dMSA nunca tenha tido uma senha “anterior”. Essa chave RC4 não é salteada, portanto, é efetivamente o hash NT da vítima, dando ao atacante **capacidade de cracking offline ou “pass-the-hash”**.
|
||||
|
||||
Portanto, vincular em massa milhares de usuários permite que um atacante despeje hashes “em escala”, transformando **BadSuccessor em um primitivo de escalonamento de privilégios e comprometimento de credenciais**.
|
||||
|
||||
## Ferramentas
|
||||
|
||||
- [https://github.com/akamai/BadSuccessor](https://github.com/akamai/BadSuccessor)
|
||||
- [https://github.com/logangoins/SharpSuccessor](https://github.com/logangoins/SharpSuccessor)
|
||||
- [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)
|
||||
|
||||
## Referências
|
||||
|
||||
- [https://www.akamai.com/blog/security-research/abusing-dmsa-for-privilege-escalation-in-active-directory](https://www.akamai.com/blog/security-research/abusing-dmsa-for-privilege-escalation-in-active-directory)
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
@ -4,12 +4,18 @@
|
||||
|
||||
**Esta página é principalmente um resumo das técnicas de** [**https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-active-directory-acls-aces**](https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-active-directory-acls-aces) **e** [**https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges**](https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges)**. Para mais detalhes, consulte os artigos originais.**
|
||||
|
||||
## **Direitos GenericAll em Usuário**
|
||||
## BadSuccesor
|
||||
|
||||
{{#ref}}
|
||||
BadSuccesor.md
|
||||
{{#endref}}
|
||||
|
||||
## **Direitos GenericAll no Usuário**
|
||||
|
||||
Este privilégio concede a um atacante controle total sobre uma conta de usuário alvo. Uma vez que os direitos `GenericAll` são confirmados usando o comando `Get-ObjectAcl`, um atacante pode:
|
||||
|
||||
- **Alterar a Senha do Alvo**: Usando `net user <username> <password> /domain`, o atacante pode redefinir a senha do usuário.
|
||||
- **Kerberoasting Direcionado**: Atribua um SPN à conta do usuário para torná-la kerberoastable, depois use Rubeus e targetedKerberoast.py para extrair e tentar quebrar os hashes do ticket-granting ticket (TGT).
|
||||
- **Kerberoasting Direcionado**: Atribuir um SPN à conta do usuário para torná-la kerberoastable, em seguida, usar Rubeus e targetedKerberoast.py para extrair e tentar quebrar os hashes do ticket-granting ticket (TGT).
|
||||
```bash
|
||||
Set-DomainObject -Credential $creds -Identity <username> -Set @{serviceprincipalname="fake/NOTHING"}
|
||||
.\Rubeus.exe kerberoast /user:<username> /nowrap
|
||||
@ -19,7 +25,7 @@ Set-DomainObject -Credential $creds -Identity <username> -Clear serviceprincipal
|
||||
```bash
|
||||
Set-DomainObject -Identity <username> -XOR @{UserAccountControl=4194304}
|
||||
```
|
||||
## **Direitos GenericAll no Grupo**
|
||||
## **Direitos GenericAll em Grupo**
|
||||
|
||||
Esse privilégio permite que um atacante manipule as associações de grupo se tiver direitos `GenericAll` em um grupo como `Domain Admins`. Após identificar o nome distinto do grupo com `Get-NetGroup`, o atacante pode:
|
||||
|
||||
@ -44,7 +50,7 @@ Se um usuário tiver direitos de `WriteProperty` em todos os objetos de um grupo
|
||||
```bash
|
||||
net user spotless /domain; Add-NetGroupUser -UserName spotless -GroupName "domain admins" -Domain "offense.local"; net user spotless /domain
|
||||
```
|
||||
## **Auto (Auto-Membresia) em Grupo**
|
||||
## **Self (Auto-Membresia) em Grupo**
|
||||
|
||||
Esse privilégio permite que atacantes se adicionem a grupos específicos, como `Domain Admins`, por meio de comandos que manipulam diretamente a membresia do grupo. Usar a seguinte sequência de comandos permite a auto-adição:
|
||||
```bash
|
||||
@ -52,7 +58,7 @@ net user spotless /domain; Add-NetGroupUser -UserName spotless -GroupName "domai
|
||||
```
|
||||
## **WriteProperty (Auto-Membresia)**
|
||||
|
||||
Um privilégio semelhante, isso permite que atacantes se adicionem diretamente a grupos modificando as propriedades do grupo se tiverem o direito de `WriteProperty` sobre esses grupos. A confirmação e execução desse privilégio são realizadas com:
|
||||
Um privilégio semelhante, isso permite que atacantes se adicionem diretamente a grupos modificando as propriedades do grupo se tiverem o direito de `WriteProperty` nesses grupos. A confirmação e execução desse privilégio são realizadas com:
|
||||
```bash
|
||||
Get-ObjectAcl -ResolveGUIDs | ? {$_.objectdn -eq "CN=Domain Admins,CN=Users,DC=offense,DC=local" -and $_.IdentityReference -eq "OFFENSE\spotless"}
|
||||
net group "domain admins" spotless /add /domain
|
||||
@ -72,7 +78,7 @@ rpcclient -U KnownUsername 10.10.10.192
|
||||
```
|
||||
## **WriteOwner em Grupo**
|
||||
|
||||
Se um atacante descobrir que possui direitos de `WriteOwner` sobre um grupo, ele pode alterar a propriedade do grupo para si mesmo. Isso é particularmente impactante quando o grupo em questão é `Domain Admins`, pois mudar a propriedade permite um controle mais amplo sobre os atributos e a membresia do grupo. O processo envolve identificar o objeto correto via `Get-ObjectAcl` e, em seguida, usar `Set-DomainObjectOwner` para modificar o proprietário, seja por SID ou nome.
|
||||
Se um atacante descobrir que possui direitos de `WriteOwner` sobre um grupo, ele pode mudar a propriedade do grupo para si mesmo. Isso é particularmente impactante quando o grupo em questão é `Domain Admins`, pois mudar a propriedade permite um controle mais amplo sobre os atributos e a membresia do grupo. O processo envolve identificar o objeto correto via `Get-ObjectAcl` e, em seguida, usar `Set-DomainObjectOwner` para modificar o proprietário, seja por SID ou nome.
|
||||
```bash
|
||||
Get-ObjectAcl -ResolveGUIDs | ? {$_.objectdn -eq "CN=Domain Admins,CN=Users,DC=offense,DC=local" -and $_.IdentityReference -eq "OFFENSE\spotless"}
|
||||
Set-DomainObjectOwner -Identity S-1-5-21-2552734371-813931464-1050690807-512 -OwnerIdentity "spotless" -Verbose
|
||||
@ -124,7 +130,9 @@ Para identificar GPOs mal configurados, os cmdlets do PowerSploit podem ser enca
|
||||
|
||||
**OUs com uma Política Dada Aplicada**: Identificar unidades organizacionais (OUs) afetadas por uma política dada pode ser feito usando `Get-DomainOU`.
|
||||
|
||||
### Abusar GPO - New-GPOImmediateTask
|
||||
Você também pode usar a ferramenta [**GPOHound**](https://github.com/cogiceo/GPOHound) para enumerar GPOs e encontrar problemas neles.
|
||||
|
||||
### Abusar de GPO - New-GPOImmediateTask
|
||||
|
||||
GPOs mal configurados podem ser explorados para executar código, por exemplo, criando uma tarefa agendada imediata. Isso pode ser feito para adicionar um usuário ao grupo de administradores locais em máquinas afetadas, elevando significativamente os privilégios:
|
||||
```bash
|
||||
@ -149,13 +157,13 @@ Atualizações de GPO normalmente ocorrem a cada 90 minutos. Para acelerar esse
|
||||
|
||||
### Nos Bastidores
|
||||
|
||||
Ao inspecionar as Tarefas Agendadas para uma GPO específica, como a `Misconfigured Policy`, a adição de tarefas como `evilTask` pode ser confirmada. Essas tarefas são criadas através de scripts ou ferramentas de linha de comando com o objetivo de modificar o comportamento do sistema ou escalar privilégios.
|
||||
Ao inspecionar as Tarefas Agendadas para uma determinada GPO, como a `Misconfigured Policy`, a adição de tarefas como `evilTask` pode ser confirmada. Essas tarefas são criadas através de scripts ou ferramentas de linha de comando com o objetivo de modificar o comportamento do sistema ou escalar privilégios.
|
||||
|
||||
A estrutura da tarefa, conforme mostrado no arquivo de configuração XML gerado pelo `New-GPOImmediateTask`, descreve os detalhes da tarefa agendada - incluindo o comando a ser executado e seus gatilhos. Este arquivo representa como as tarefas agendadas são definidas e gerenciadas dentro das GPOs, fornecendo um método para executar comandos ou scripts arbitrários como parte da aplicação de políticas.
|
||||
|
||||
### Usuários e Grupos
|
||||
|
||||
As GPOs também permitem a manipulação de membros de usuários e grupos nos sistemas alvo. Ao editar diretamente os arquivos de política de Usuários e Grupos, os atacantes podem adicionar usuários a grupos privilegiados, como o grupo local `administrators`. Isso é possível através da delegação de permissões de gerenciamento de GPO, que permite a modificação dos arquivos de política para incluir novos usuários ou alterar as associações de grupos.
|
||||
As GPOs também permitem a manipulação de membros de usuários e grupos nos sistemas alvo. Ao editar os arquivos de política de Usuários e Grupos diretamente, os atacantes podem adicionar usuários a grupos privilegiados, como o grupo local `administrators`. Isso é possível através da delegação de permissões de gerenciamento de GPO, que permite a modificação dos arquivos de política para incluir novos usuários ou alterar a filiação a grupos.
|
||||
|
||||
O arquivo de configuração XML para Usuários e Grupos descreve como essas mudanças são implementadas. Ao adicionar entradas a este arquivo, usuários específicos podem receber privilégios elevados em sistemas afetados. Este método oferece uma abordagem direta para escalonamento de privilégios através da manipulação de GPO.
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user