Aller au contenu

Direction et transitivité des approbations : pièges et réalités

Deux paramètres fondamentaux régissent la portée opérationnelle d’une relation d’approbation :

  1. La direction (trust direction) :
    • Unidirectionnelle entrante (one-way inbound) : le domaine local fait confiance au domaine distant. Les utilisateurs du domaine distant peuvent s’authentifier sur le domaine local.
    • Unidirectionnelle sortante (one-way outbound) : le domaine distant fait confiance au domaine local. Les utilisateurs du domaine local peuvent s’authentifier sur le domaine distant.
    • Bidirectionnelle (two-way) : les deux domaines se font mutuellement confiance. L’authentification est possible dans les deux sens.
  2. La transitivité (transitivity) :
    • Transitive : si A approuve B et B approuve C, alors A approuve implicitement C. L’authentification peut traverser plusieurs sauts de domaines.
    • Non-transitive : l’authentification est strictement confinée aux deux domaines directement liés. Aucun rebond vers un troisième domaine n’est autorisé.

L’analyse des compromissions multi-domaines achoppe très fréquemment sur une mauvaise lecture de la direction et de la transitivité :

  • L’inversion du sens de l’attaque : lors d’une intrusion, les défenseurs bloquent souvent la mauvaise direction de flux réseau ou pensent que le domaine d’où provient l’attaque était protégé parce qu’il n’était “que” le domaine approuvé.
  • La découverte de chemins de traverse inattendus (transitivity hops) : un attaquant dans une forêt externe partenaire peut rebondir à travers une approbation de forêt transitive pour atteindre des filiales ou des environnements sensibles que personne ne pensait accessibles depuis l’extérieur.
  • L’impact du sens d’approbation sur le dumping de credentials : si une machine du Domaine A est compromise par un utilisateur du Domaine B via une confiance unidirectionnelle entrante, le hash NTLM ou le ticket Kerberos de cet utilisateur du Domaine B se retrouve en mémoire LSASS sur la machine du Domaine A. L’attaquant peut alors pivoter à contre-courant vers le Domaine B !

APPROBATION UNIDIRECTIONNELLE (One-Way Trust) :
Domaine Ressource (CORP) ────── Fait confiance à ─────► Domaine Utilisateur (PARTNER)
▲ │
│ │
└────────── Flux d'Authentification / Attaque ─────────┘
APPROBATION TRANSITIVE (Multi-Hop) :
Domaine A ◄──Trust──► Domaine B ◄──Trust──► Domaine C
▲ │
│ │
└────── Accès Kerberos Transitif direct ───┘

Valeurs de l’attribut trustDirection dans Active Directory

Section intitulée « Valeurs de l’attribut trustDirection dans Active Directory »
  • 1 : Inbound (Entrante) — Le domaine local fait confiance au domaine externe. Les comptes externes accèdent aux ressources locales.
  • 2 : Outbound (Sortante) — Le domaine externe fait confiance au domaine local. Les comptes locaux accèdent aux ressources externes.
  • 3 : Bidirectional (Bidirectionnelle) — Confiance mutuelle totale.

  • Accéder aux ressources d’un domaine qui vous fait confiance : un utilisateur membre d’un domaine approuvé (Trusted Domain) peut présenter ses identifiants pour accéder aux partages SMB, bases SQL et serveurs web du domaine de ressource (Trusting Domain).
  • Emprunter plusieurs sauts transitifs dans une forêt : un attaquant peut rebondir de child1.root.com vers child2.root.com sans aucune approbation directe entre les deux enfants, via la racine.
  • Pivoter vers le domaine distant via le vol de credentials en mémoire : même dans une confiance unidirectionnelle stricte, si un administrateur du domaine source ouvre une session sur une machine du domaine cible, ses secrets en mémoire permettent à l’attaquant de franchir la frontière dans l’autre sens.

  • Accéder aux ressources du domaine approuvé sans approbation bidirectionnelle : si le Domaine A fait confiance au Domaine B (unidirectionnelle), un utilisateur de A ne peut pas s’authentifier sur B.
  • Rebondir à travers une approbation externe non-transitive : si la Forêt A a une approbation externe avec le Domaine B d’une autre forêt, un utilisateur de A ne pourra jamais atteindre le Domaine C de cette autre forêt via ce lien.
  • Modifier le mot de passe d’un compte distant : une relation d’approbation ne permet pas à un administrateur du Domaine A de réinitialiser le mot de passe d’un utilisateur du Domaine B (sauf délégation explicite de droits LDAP).

Confusion fréquenteRéalité forensique vérifiable
« La confiance est Outbound depuis notre domaine, donc les attaquants ne peuvent pas venir de l’extérieur. »Si l’approbation est Outbound depuis votre domaine, le domaine externe fait confiance à vos comptes. Mais si vos comptes sont compromis, ils accèdent à l’extérieur. Si la confiance est Inbound, les comptes externes entrent chez vous !
« Une approbation non-transitive empêche tout mouvement latéral. »Elle empêche les referrals Kerberos automatiques vers un troisième domaine, mais n’empêche nullement l’attaquant de voler des identifiants sur la machine cible pour rebondir manuellement.
« Les approbations de forêt sont non-transitives entre domaines enfants. »Une Forest Trust est pleinement transitive : tous les domaines de la Forêt A font confiance à tous les domaines de la Forêt B.

Une entreprise d’ingénierie (engineering.corp) met en place une relation d’approbation unidirectionnelle avec un cabinet d’audit externe (audit-firm.com).

  • L’objectif officiel : permettre aux auditeurs de se connecter sur un portail documentaire interne à engineering.corp.
  • L’objet TDO créé sur engineering.corp porte trustDirection: 1 (Inbound).
  • Incident : le compte d’un consultant d’audit est compromis par un infostealer. L’attaquant utilise ce compte pour se connecter en SMB sur un serveur de fichiers interne à engineering.corp où le groupe Domain Users d’audit-firm.com avait été ajouté avec des permissions d’écriture.
  • L’enquêteur DFIR valide le flux : bien que l’audit soit une entité externe, l’approbation entrante a permis l’intrusion directe sans franchir le moindre firewall d’authentification.

  1. Attributs LDAP de l’objet trustedDomain :
    • trustDirection : 0x1 (Inbound), 0x2 (Outbound), 0x3 (Bidirectional).
    • trustAttributes : bit 0x1 (TRUST_ATTRIBUTE_NON_TRANSITIVE) indiquant l’interdiction de transitivité.
  2. Journaux d’événements Windows :
    • Event ID 4624 (serveur cible) : Logon Type: 3, Authentication Package: Kerberos, TargetDomainName: NOM_DU_DOMAINE_APPROUVE.
    • Event ID 4769 (DC) : émission d’un TGS de referral pour krbtgt/NOM_DU_DOMAINE_CIBLE.

  1. Extraire la direction exacte de chaque approbation : Exécuter nltest /domain_trusts /v et noter scrupuleusement les flags [INBOUND], [OUTBOUND] ou [BOTH].
  2. Cartographier les droits accordés aux foreign security principals : Rechercher dans les groupes locaux de domaine (Domain Local Groups) tous les SIDs appartenant aux domaines approuvés.
  3. Auditer les sessions actives et les tickets en cache : Sur les machines cibles d’authentifications inter-domaines, exécuter klist ou analyser les artefacts LSASS pour identifier les comptes distants connectés.

  • Nltest :
    Fenêtre de terminal
    nltest /domain_trusts /all_trusts /v
  • PowerView :
    Fenêtre de terminal
    Get-DomainTrust | Select-Object TargetName, TrustDirection, TrustType, TrustAttributes
  • BloodHound : Visualisation graphique des flèches TrustedBy : bloodHound affiche la flèche dans le sens de l’accès de l’attaquant (CanEnter / CrossDomainAdmin).

  • Sens de la confiance $ eq$ sens de l’accès : Domaine de ressources $ ightarrow$ fait confiance à $ ightarrow$ Domaine de comptes.
  • Les approbations de forêt et intra-forêt sont transitives.
  • Les approbations externes sont non-transitives.
  • Une approbation unidirectionnelle n’empêche pas le pivot inverse si des credentials du domaine source sont capturés sur la cible.