Domaine de forĂȘt externe - Sortie unidirectionnelle

Reading time: 5 minutes

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)

Soutenir HackTricks

Dans ce scénario, votre domaine fait confiance à certains privilÚges d'un principal provenant de domaines différents.

ÉnumĂ©ration

Confiance sortante

powershell
# 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)

Attaque de Compte de Confiance

Une vulnĂ©rabilitĂ© de sĂ©curitĂ© existe lorsqu'une relation de confiance est Ă©tablie entre deux domaines, identifiĂ©s ici comme le domaine A et le domaine B, oĂč le domaine B Ă©tend sa confiance au domaine A. Dans cette configuration, un compte spĂ©cial est crĂ©Ă© dans le domaine A pour le domaine B, qui joue un rĂŽle crucial dans le processus d'authentification entre les deux domaines. Ce compte, associĂ© au domaine B, est utilisĂ© pour chiffrer les tickets d'accĂšs aux services entre les domaines.

L'aspect critique Ă  comprendre ici est que le mot de passe et le hachage de ce compte spĂ©cial peuvent ĂȘtre extraits d'un contrĂŽleur de domaine dans le domaine A Ă  l'aide d'un outil en ligne de commande. La commande pour effectuer cette action est :

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

Cette extraction est possible car le compte, identifié par un $ aprÚs son nom, est actif et appartient au groupe "Domain Users" du domaine A, héritant ainsi des permissions associées à ce groupe. Cela permet aux individus de s'authentifier contre le domaine A en utilisant les identifiants de ce compte.

Avertissement : Il est possible de tirer parti de cette situation pour obtenir un accÚs dans le domaine A en tant qu'utilisateur, bien que avec des permissions limitées. Cependant, cet accÚs est suffisant pour effectuer une énumération sur le domaine A.

Dans un scĂ©nario oĂč ext.local est le domaine de confiance et root.local est le domaine de confiance, un compte utilisateur nommĂ© EXT$ serait crĂ©Ă© dans root.local. GrĂące Ă  des outils spĂ©cifiques, il est possible de dumper les clĂ©s de confiance Kerberos, rĂ©vĂ©lant les identifiants de EXT$ dans root.local. La commande pour y parvenir est :

bash
lsadump::trust /patch

Suite à cela, on pourrait utiliser la clé RC4 extraite pour s'authentifier en tant que root.local\EXT$ au sein de root.local en utilisant une autre commande d'outil :

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

Cette Ă©tape d'authentification ouvre la possibilitĂ© d'Ă©numĂ©rer et mĂȘme d'exploiter des services au sein de root.local, tels que rĂ©aliser une attaque Kerberoast pour extraire les identifiants de compte de service en utilisant :

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

Récupération du mot de passe de confiance en clair

Dans le flux précédent, le hachage de confiance a été utilisé au lieu du mot de passe en clair (qui a également été extrait par mimikatz).

Le mot de passe en clair peut ĂȘtre obtenu en convertissant la sortie [ CLEAR ] de mimikatz de l'hexadĂ©cimal et en supprimant les octets nuls ‘\x00’ :

Parfois, lors de la crĂ©ation d'une relation de confiance, un mot de passe doit ĂȘtre saisi par l'utilisateur pour la confiance. Dans cette dĂ©monstration, la clĂ© est le mot de passe de confiance original et donc lisible par l'homme. Au fur et Ă  mesure que la clĂ© change (tous les 30 jours), le mot de passe en clair ne sera pas lisible par l'homme mais techniquement toujours utilisable.

Le mot de passe en clair peut ĂȘtre utilisĂ© pour effectuer une authentification rĂ©guliĂšre en tant que compte de confiance, une alternative Ă  la demande d'un TGT en utilisant la clĂ© secrĂšte Kerberos du compte de confiance. Ici, interrogation de root.local depuis ext.local pour les membres de Domain Admins :

Références

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)

Soutenir HackTricks