Fondamentaux des relations d'approbation Active Directory
Une relation d’approbation (Trust Relationship) est une liaison logique et cryptographique établie entre deux domaines Windows (ou entre une forêt Windows et un royaume Kerberos/MIT).
Elle repose sur deux piliers techniques :
- L’objet TDO (trusted domain object) : un objet Active Directory de classe
trustedDomainstocké dans la partition de domaine (CN=System,DC=domain,DC=local), décrivant les attributs de la confiance (nom de domaine distant, SID distant, direction, transitivité, drapeaux de sécurité). - Le secret partagé (trust secret) : un mot de passe partagé symétrique (défini lors de la création de la confiance et renouvelé périodiquement par le rôle PDC Emulator) matérialisé par un compte d’ordinateur inter-domaine (
Inter-Domain Trust Account).
Pourquoi c’est important en DFIR
Section intitulée « Pourquoi c’est important en DFIR »Dans une attaque ciblant des environnements multi-domaines :
- Vecteur de mouvement latéral inter-domaines : l’attaquant qui compromet un DC du domaine A peut extraire le secret de confiance partagé et forger des tickets Kerberos inter-domaines pour accéder aux ressources du domaine B.
- Persistance furtive (trust key persistence) : si l’attaquant modifie ou extrait le mot de passe du compte de confiance, la réinitialisation du compte
krbtgtlocal ne révoquera pas les tickets inter-domaines forgés avec la clé de confiance. - Traçabilité des authentifications distantes : lors d’un accès inter-domaine, le KDC local n’émet pas de TGS directement pour le service cible, mais pour le compte
krbtgtdu domaine distant (Referral TGT). Savoir repérer ces demandes dans les événements 4769 est essentiel pour reconstituer la trajectoire de l’attaquant.
Comment ça fonctionne
Section intitulée « Comment ça fonctionne »Le mécanisme du secret de confiance
Section intitulée « Le mécanisme du secret de confiance »Lorsqu’une relation d’approbation bidirectionnelle est établie entre le Domaine A (CORP) et le Domaine B (DEV) :
- Deux comptes d’approbation sont créés :
- Dans le domaine A : compte
DEV$(typeTRUST_ACCOUNT, UserAccountControl0x800/SERVER_TRUST_ACCOUNT). - Dans le domaine B : compte
CORP$.
- Dans le domaine A : compte
- Ces comptes possèdent un mot de passe symétrique identique généré aléatoirement.
- Lorsque l’utilisateur
alice@DEVveut accéder àcifs/fileserver.CORP:- Alice demande un TGS à son KDC (
DEV). - Le KDC
DEVconstate que la ressource appartient àCORP. - Le KDC
DEVchiffre un TGT spécial (nommé Inter-Realm TGT) avec le mot de passe partagé de la relation de confiance (CORP$). - Alice présente cet Inter-Realm TGT au KDC de
CORP. - Le KDC de
CORPdéchiffre le ticket avec son propre compteDEV$, valide l’authenticité de l’identité, applique les filtres de sécurité (SID Filtering), et lui délivre le TGS final pourfileserver.CORP.
- Alice demande un TGS à son KDC (
[Alice@DEV] │ 1. Demande TGS pour fileserver.CORP ▼[KDC DEV] ──── Chiffre Inter-Realm TGT avec la Clé de Confiance (DEV$ / CORP$) │ ▼ 2. Présente Inter-Realm TGT[KDC CORP] ─── Déchiffre avec Clé de Confiance, valide SIDs & émet TGS │ ▼ 3. Présente TGS[fileserver.CORP] ─── Accès autorisé selon DACL localeCe qui est possible
Section intitulée « Ce qui est possible »- Extraire les secrets de confiance depuis la base NTDS : un attaquant disposant des privilèges
Domain Adminssur un DC peut exécutersecretsdumpoumimikatz lsadump::trustpour extraire les clés NTLM et AES des comptes de confiance inter-domaines. - Forger un golden ticket inter-domaine : avec le hash NTLM ou la clé AES du compte de confiance, un attaquant peut créer un TGT inter-domaine forgé en injectant des SIDs arbitraires (soumis aux restrictions de SID Filtering).
- Valider l’état cryptographique d’une confiance : l’administrateur ou l’enquêteur peut vérifier la synchronisation du secret via
netdom trust <Domain> /verify.
Ce qui n’est pas possible
Section intitulée « Ce qui n’est pas possible »- Traverser une confiance sans connectivité réseau entre KDC : bien que l’utilisateur n’ait besoin que de contacter son propre KDC puis le KDC distant, les mécanismes d’authentification NTLM pass-through exigent quant à eux une communication directe RPC entre les DC des deux domaines.
- Utiliser le hash
krbtgtlocal pour accéder au domaine distant : le hash du comptekrbtgtlocal ne chiffre que les TGT intra-domaine. Pour franchir la frontière de confiance, c’est impérativement la clé de compte de confiance qui est requise. - Maintenir la confiance si le mot de passe est désynchronisé : si le secret partagé est corrompu ou modifié unilatéralement, toute authentification inter-domaine échoue immédiatement avec l’erreur
STATUS_TRUST_FAILURE(0xC000018B).
Confusions fréquentes en DFIR
Section intitulée « Confusions fréquentes en DFIR »| Confusion fréquente | Réalité forensique vérifiable |
|---|---|
| « Nous avons réinitialisé le compte krbtgt deux fois, l’attaquant ne peut plus forger de tickets. » | La double réinitialisation de krbtgt ne réinitialise pas les clés de confiance inter-domaines. L’attaquant qui possède la clé de confiance peut toujours forger des Inter-Realm TGTs. |
| « Une relation d’approbation accorde automatiquement des droits d’administration. » | L’approbation n’accorde que la capacité de prouver son identité. Les droits dépendent des DACLs locales (sauf Enterprise Admins intra-forêt). |
| « Les approbations apparaissent dans les logs réseau comme des flux VPN. » | Les approbations empruntent les ports Active Directory ordinaires : Kerberos (88/tcp), LDAP (389/tcp), SMB (445/tcp), RPC Endpoint Mapper (135/tcp) et ports RPC dynamiques (49152-65535). |
Exemple concret d’investigation
Section intitulée « Exemple concret d’investigation »Dans une infrastructure bancaire, le domaine des agences (branch.bank.local) est relié au domaine central (hq.bank.local) par une approbation externe bidirectionnelle.
- L’attaquant prend le contrôle d’un DC d’agence.
- Il exécute Mimikatz :
lsadump::trust /patchet extrait la clé RC4 du compte de confianceHQ$. - L’attaquant forge un ticket inter-domaine avec la clé de confiance pour cibler un serveur financier dans
hq.bank.local. - Traces détectées : sur le DC central de HQ, l’Event ID 4769 enregistre une demande de TGS avec
ServiceName: krbtgt/HQ.BANK.LOCALémise par un compte n’existant pas dans l’annuaire de HQ mais validé via le compte d’approbationBRANCH$.
Artefacts et traces forensiques
Section intitulée « Artefacts et traces forensiques »- Active Directory database (
ntds.dit) :- Objets
trustedDomain: attributtrustPartner,trustDirection,trustType,trustAttributes. - Comptes de confiance :
sAMAccountType = 0x30000002(TRUST_ACCOUNT).
- Objets
- Registre Windows (LSA secrets) :
- Clés sous
HKLM\SECURITY\Policy\Secrets\G\$\${GUID}contenant les secrets d’approbation mis en cache.
- Clés sous
- Journaux d’événements Windows :
- Event ID 4769 (DC) : demande de ticket avec
ServiceNameégal au nom du domaine distant ou au comptekrbtgtdistant. - Event ID 4624 (serveur cible) : connexion réseau type 3 où
Workstation NameetTargetDomainNamereflètent le domaine distant. - Event ID 4625 (DC) : échecs avec status
0xC000018B(STATUS_TRUST_FAILURE) ou0xC0000064(STATUS_NO_SUCH_USER).
- Event ID 4769 (DC) : demande de ticket avec
Méthodes d’investigation
Section intitulée « Méthodes d’investigation »- Lister et caractériser toutes les approbations actives :
Exécuter
Get-ADTrust -Filter * | Format-List Name, Direction, TrustType, IntraForest, Target. - Vérifier l’historique de modification des objets TDO :
Auditer la date de dernière modification (
whenChanged) des objets dansCN=System,DC=domain,DC=localpour repérer toute création clandestine de relation de confiance par l’adversaire. - Auditer les comptes d’ordinateur de type trust :
Identifier les comptes dont le nom se termine par
$et ayant le flagSERVER_TRUST_ACCOUNTactivé dans l’attributuserAccountControl.
Outils d’investigation
Section intitulée « Outils d’investigation »- Nltest & netdom :
Fenêtre de terminal nltest /domain_trustsnetdom trust <LocalDomain> /Domain:<RemoteDomain> /verify - PowerView :
Fenêtre de terminal Get-DomainTrustGet-DomainTrustMapping - BloodHound :
Cartographie visuelle de tous les liens de confiance (
Trusts) et des chemins d’attaque inter-domaines.
Points clés à retenir
Section intitulée « Points clés à retenir »- Une relation d’approbation repose sur un secret symétrique partagé entre deux domaines.
- La compromission d’un DC permet d’extraire les clés de confiance et de forger des tickets inter-domaines.
- La remédiation post-incident exige la réinitialisation des mots de passe des comptes de confiance en plus de
krbtgt.