hacktricks/windows-hardening/active-directory-methodology/external-forest-domain-one-way-outbound.md

7.8 KiB

Domínio Externo da Floresta - Apenas de Saída (Unidirecional)

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

Nesse cenário, seu domínio está confiando alguns privilégios a um principal de domínios diferentes.

Enumeração

Confiança de Saída

# Notice Outbound trust
Get-DomainTrust
SourceName      : root.local
TargetName      : ext.local
TrustType       : WINDOWS_ACTIVE_DIRECTORY
TrustAttributes : FOREST_TRANSITIVE
TrustDirection  : Outbound
WhenCreated     : 2/19/2021 10:15:24 PM
WhenChanged     : 2/19/2021 10:15:24 PM

# Lets find the current domain group giving permissions to the external domain
Get-DomainForeignGroupMember
GroupDomain             : root.local
GroupName               : External Users
GroupDistinguishedName  : CN=External Users,CN=Users,DC=DOMAIN,DC=LOCAL
MemberDomain            : root.io
MemberName              : S-1-5-21-1028541967-2937615241-1935644758-1115
MemberDistinguishedName : CN=S-1-5-21-1028541967-2937615241-1935644758-1115,CN=ForeignSecurityPrincipals,DC=DOMAIN,DC=LOCAL
## Note how the members aren't from the current domain (ConvertFrom-SID won't work)

Ataque à Conta de Confiança

Quando um domínio ou floresta do Active Directory estabelece uma confiança de um domínio B para um domínio A (B confia em A), uma conta de confiança é criada no domínio A, chamada B. Chaves de confiança Kerberos, derivadas da senha da conta de confiança, são usadas para criptografar TGTs entre reinos, quando os usuários do domínio A solicitam tickets de serviço para serviços no domínio B.

É possível obter a senha e o hash da conta de confiança de um Controlador de Domínio usando:

Invoke-Mimikatz -Command '"lsadump::trust /patch"' -ComputerName dc.my.domain.local

O risco ocorre devido à conta de confiança B$ estar habilitada, o Grupo Primário de B$ é Domain Users do domínio A, qualquer permissão concedida a Domain Users se aplica a B$, e é possível usar as credenciais de B$ para autenticar-se no domínio A.

{% hint style="warning" %} Portanto, a partir do domínio de confiança é possível obter um usuário dentro do domínio confiável. Esse usuário não terá muitas permissões (provavelmente apenas Domain Users), mas será possível enumerar o domínio externo. {% endhint %}

Neste exemplo, o domínio de confiança é ext.local e o domínio confiável é root.local. Portanto, um usuário chamado EXT$ é criado dentro de root.local.

# Use mimikatz to dump trusted keys
lsadump::trust /patch
# You can see in the output the old and current credentials
# You will find clear text, AES and RC4 hashes

Portanto, neste ponto, temos a senha em texto claro e a chave secreta Kerberos atual do root.local\EXT$. As chaves secretas AES do Kerberos do root.local\EXT$ são idênticas às chaves de confiança AES, pois um sal diferente é usado, mas as chaves RC4 são as mesmas. Portanto, podemos usar a chave de confiança RC4 extraída do ext.local para autenticar como root.local\EXT$ contra root.local.

.\Rubeus.exe asktgt /user:EXT$ /domain:root.local /rc4:<RC4> /dc:dc.root.local /ptt

Com isso, você pode começar a enumerar esse domínio e até mesmo realizar o kerberoasting de usuários:

.\Rubeus.exe kerberoast /user:svc_sql /domain:root.local /dc:dc.root.local

Obtendo a senha de confiança em texto claro

No fluxo anterior, foi usado o hash de confiança em vez da senha em texto claro (que também foi capturada pelo mimikatz).

A senha em texto claro pode ser obtida convertendo a saída [ CLEAR ] do mimikatz de hexadecimal e removendo os bytes nulos '\x00':

Às vezes, ao criar um relacionamento de confiança, uma senha deve ser digitada pelo usuário para a confiança. Nesta demonstração, a chave é a senha de confiança original e, portanto, legível para humanos. À medida que a chave é alterada (a cada 30 dias), o texto claro não será legível para humanos, mas tecnicamente ainda utilizável.

A senha em texto claro pode ser usada para realizar autenticação regular como a conta de confiança, uma alternativa para solicitar um TGT usando a chave secreta Kerberos da conta de confiança. Aqui, consultando root.local de ext.local para membros do Domain Admins:

Referências

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥