🔍 Contexte

Publié le 23/03/2026 par Simon Msika de Synacktiv, cet article présente une recherche approfondie sur l’exploitation de la délégation contrainte basée sur les ressources (RBCD) dans des environnements Active Directory multi-domaines et multi-forêts, un scénario peu documenté jusqu’alors.

⚙️ Mécanisme de l’attaque

L’attaque RBCD repose sur la modification de l’attribut msDS-AllowedToActOnBehalfOfOtherIdentity d’un compte machine pour permettre l’usurpation d’identité d’utilisateurs. Dans un contexte cross-domaine, le workflow Kerberos implique plusieurs étapes supplémentaires :

  1. Obtention d’un TGT pour le compte rbcd_test$@dev.asgard.local depuis le DC du domaine enfant
  2. Demande d’un referral TGT vers le domaine cible asgard.local
  3. Obtention d’un ST via S4U2Self (referral) pour l’utilisateur cible sur le DC du domaine parent
  4. Obtention d’un ST via S4U2Self sur le DC du domaine enfant
  5. Demande du ticket referral via S4U2Proxy
  6. Obtention du ticket de service final via S4U2Proxy sur le domaine cible

🛠️ Outils utilisés

  • Rubeus (s4u avec paramètres /targetdomain, /targetdc) : implémente nativement le cross-domain RBCD via la fonction CrossDomainS4U
  • Impacket (ntlmrelayx.py, getST.py) : la version standard ne supportait pas le cross-domain RBCD ; Synacktiv a développé une version modifiée de getST.py ajoutant les arguments -targetdomain et -targetdc
  • smbclient.py : utilisé pour accéder au partage C$ après obtention du ticket

🌲 Cross-forêt

L’article explore également le scénario cross-forêt (entre asgard.local et valhalla.local). Rubeus échoue à l’étape finale S4U2Proxy avec l’erreur KDC_ERR_ (tronquée dans l’article), indiquant une limitation supplémentaire dans ce contexte.

🔑 Éléments techniques notables

  • Utilisation du SID (S-1-5-21-3104832133-133926542-3798009529-1106) au lieu du nom de compte pour les entités cross-domaine absentes du LDAP cible
  • Modification du realm dans les requêtes Kerberos TGS-REQ, différent du realm du ticket fourni
  • Exploitation via NTLM relay (ntlmrelayx.py) pour positionner l’attribut RBCD

📄 Type d’article

Il s’agit d’une analyse technique et d’une publication de recherche offensive, visant à documenter et implémenter une technique d’attaque Active Directory peu couverte dans les environnements multi-domaines et multi-forêts.

🧠 TTPs et IOCs détectés

TTP

  • T1558.001 — Steal or Forge Kerberos Tickets: Golden Ticket (Credential Access)
  • T1558 — Steal or Forge Kerberos Tickets (Credential Access)
  • T1550.003 — Use Alternate Authentication Material: Pass the Ticket (Lateral Movement)
  • T1557.001 — Adversary-in-the-Middle: LLMNR/NBT-NS Poisoning and SMB Relay (Credential Access)
  • T1484.002 — Domain Policy Modification: Domain Trust Modification (Defense Evasion)
  • T1134.001 — Access Token Manipulation: Token Impersonation/Theft (Privilege Escalation)

Malware / Outils

  • Impacket (framework)
  • Rubeus (tool)
  • ntlmrelayx.py (tool)
  • getST.py (tool)
  • smbclient.py (tool)
  • addcomputer.py (tool)

🔗 Source originale : https://www.synacktiv.com/en/publications/exploring-cross-domain-cross-forest-rbcd