Appartenance à des groupes inter-domaines et foreign security principals
Lorsqu’un administrateur souhaite attribuer des droits sur une ressource du Domaine A à un utilisateur ou un groupe du Domaine B (relié par une approbation) :
- Le conteneur ForeignSecurityPrincipals : situé à la racine de la partition de domaine (
CN=ForeignSecurityPrincipals,DC=domain,DC=local), il héberge des objets de classeforeignSecurityPrincipal. - Représentation par SID : chaque FSP est nommé par le SID exact de l’entité externe (ex:
CN=S-1-5-21-29482-1002,CN=ForeignSecurityPrincipals,DC=corp,DC=local). - Le principe AGUDLP / AGDLP :
- Accounts $ ightarrow$ mis dans des groupes Globaux (domaine de comptes).
- Groupes Globaux $ ightarrow$ mis dans des groupes Universels (optionnel, forêt).
- Groupes Universels $ ightarrow$ mis dans des groupes Domaine Local (domaine de ressource, sous forme de FSP).
- Groupes Domaine Local $ ightarrow$ reçoivent les Permissions sur les ressources (DACL).
Pourquoi c’est important en DFIR
Section intitulée « Pourquoi c’est important en DFIR »L’audit des Foreign Security Principals est le moyen le plus rapide d’identifier comment des comptes externes ont pénétré le domaine :
- Identification des portes dérobées inter-domaines : si un groupe global d’une forêt externe est ajouté dans le groupe local
AdministratorsouRemote Desktop Usersdu domaine local, un objet FSP est immédiatement créé dans l’annuaire. C’est un indicateur immédiat de chemin d’accès externe. - Persistance fantôme (FSP persistence) : même si la relation de confiance est supprimée ou désactivée, les objets FSP orphelins et leurs références dans les groupes locaux de domaine subsistent dans l’annuaire.
- Résolution des SIDs dans BloodHound : lorsqu’un chemin d’attaque traverse une approbation, le lien
MemberOfpasse obligatoirement par un FSP. Savoir corréler un FSP avec son compte réel dans le domaine distant est indispensable.
Comment ça fonctionne
Section intitulée « Comment ça fonctionne »Cycle de vie d’un foreign security principal
Section intitulée « Cycle de vie d’un foreign security principal »DOMAINE B (Comptes) DOMAINE A (Ressources)┌─────────────────────────┐ ┌──────────────────────────────────────────────┐│ Compte Utilisateur : │ │ Conteneur : ││ alice@domaineB.local │ │ CN=ForeignSecurityPrincipals,DC=domA,DC=loc ││ SID: S-1-5-21-B-1005 │ ├──────────────────────────────────────────────┤└───────────┬─────────────┘ │ Objet FSP créé automatiquement : │ │ │ CN=S-1-5-21-B-1005 │ │ Ajout dans groupe └──────────────────────┬───────────────────────┘ │ │ │ ▼ Membre de │ ┌──────────────────────────────────────────────┐ └───────────────────────────────►│ Groupe Domaine Local : │ │ "DL_Serveurs_Admins" │ │ (Contient le FSP S-1-5-21-B-1005) │ └──────────────────────────────────────────────┘- Création à la demande : l’objet FSP n’est pas créé lors de l’établissement de l’approbation : il est créé dynamiquement au moment où le premier compte ou groupe externe est sélectionné dans l’interface de délégation ou ajouté via LDAP.
- Traduction LSA : lors de l’affichage dans l’explorateur Windows, la fonction
LookupAccountSidcontacte le DC du Domaine B via l’approbation pour résoudreS-1-5-21-B-1005enDOMAINEBlice. Si la confiance est rompue, seul le SID brut s’affiche.
Ce qui est possible
Section intitulée « Ce qui est possible »- Ajouter un groupe global externe dans un groupe domaine local : c’est le fonctionnement canonique prévu par Microsoft pour déléguer des accès cross-domaines.
- Énumérer tous les comptes externes ayant des accès locaux en une seule commande : l’interrogation de l’unité d’organisation
CN=ForeignSecurityPrincipalsliste l’intégralité des identités externes ayant déjà reçu une assignation de droit dans le domaine. - Identifier les well-known SIDs représentés en FSP : certains SIDs universels comme
S-1-5-11(Authenticated Users) ouS-1-5-4(Interactive) disposent de leurs propres objets FSP pré-créés.
Ce qui n’est pas possible
Section intitulée « Ce qui n’est pas possible »- Ajouter un utilisateur externe dans un groupe global local : les règles de portée Active Directory interdisent formellement d’ajouter un membre externe dans un groupe de portée Globale (
Global Group). Seuls les groupes de portée Domaine Local (Domain Local) acceptent des membres cross-domaines / cross-forêts. - Créer manuellement un faux FSP sans que le SID n’existe : un administrateur peut créer un FSP pour n’importe quel SID arbitraire, mais sans ticket Kerberos valide ou sans validation Netlogon authentifiant ce SID, l’attaquant ne pourra pas utiliser les droits de ce FSP.
- Déplacer un FSP dans une autre OU : les FSP doivent impérativement résider dans le conteneur système
CN=ForeignSecurityPrincipals.
Confusions fréquentes en DFIR
Section intitulée « Confusions fréquentes en DFIR »| Confusion fréquente | Réalité forensique vérifiable |
|---|---|
| « Cet objet dans ForeignSecurityPrincipals prouve que le compte externe s’est connecté. » | Non. Un FSP est créé lorsqu’un administrateur ajoute un compte ou un groupe externe dans un groupe ou une ACL locale, même si ce compte ne s’est jamais connecté. |
| « Si je supprime le compte distant, le FSP disparaît du domaine local. » | Non. Le FSP reste orphelin dans le domaine de ressource jusqu’à ce qu’un administrateur nettoie explicitement le groupe local et le conteneur FSP. |
| « Les FSP ne s’appliquent qu’aux approbations de forêt. » | Les FSP s’appliquent à tous les types d’approbations : Parent-Enfant, Externe, Forêt et Realm. |
Exemple concret d’investigation
Section intitulée « Exemple concret d’investigation »Lors de l’analyse d’une persistance post-compromission sur un domaine racine root.corp :
- L’enquêteur inspecte le groupe local
Administrators(S-1-5-32-544) sur le DC racine. - Il remarque un membre sous forme de SID non résolu :
S-1-5-21-99887766-500. - L’enquêteur consulte
CN=ForeignSecurityPrincipals,DC=root,DC=corpet découvre un objetCN=S-1-5-21-99887766-500dont l’attributwhenCreatedcoïncide avec la date de l’incident. - L’analyse des approbations montre que
S-1-5-21-99887766correspond au domaine de testdev.localrelié par une approbation bidirectionnelle. - Conclusion : l’attaquant a ajouté le compte Administrateur local du domaine de dev directement dans les administrateurs du domaine racine via un FSP, lui garantissant un accès T0 permanent depuis l’environnement de développement.
Artefacts et traces forensiques
Section intitulée « Artefacts et traces forensiques »- Active Directory naming context :
- Conteneur
CN=ForeignSecurityPrincipals,DC=domain,DC=local. - Attributs des objets FSP :
cn(SID),whenCreated,whenChanged,memberOf(liste des groupes locaux de domaine dont le FSP fait partie).
- Conteneur
- Journaux de sécurité DC :
- Event ID 4728 / 4732 : un membre a été ajouté à un groupe de sécurité (le champ
MemberNamecontiendra le DistinguishedName du FSP). - Event ID 4729 / 4733 : un membre a été retiré d’un groupe de sécurité.
- Event ID 4728 / 4732 : un membre a été ajouté à un groupe de sécurité (le champ
Méthodes d’investigation
Section intitulée « Méthodes d’investigation »- Lister tous les foreign security principals du domaine :
Exécuter
Get-ADObject -Filter 'objectClass -eq "foreignSecurityPrincipal"' -Properties *. - Identifier les groupes privilégiés contenant des FSP :
Vérifier si des FSP figurent dans
Administrators,Backup Operators,Remote Desktop Users,Account Operators. - Résoudre les SIDs distants : Contacter le DC du domaine distant ou examiner les bases NTDS archivées pour faire correspondre chaque SID de FSP à une identité nominale.
Outils d’investigation
Section intitulée « Outils d’investigation »- PowerShell AD module :
Fenêtre de terminal Get-ADObject -SearchBase "CN=ForeignSecurityPrincipals,DC=domain,DC=local" -Filter * -Properties memberOf |Select-Object Name, whenCreated, memberOf - PowerView :
Fenêtre de terminal Get-DomainForeignUserGet-DomainForeignGroupMember - BloodHound :
Requête Cypher :
MATCH (f:User)-[:MemberOf]->(g:Group) WHERE f.domain <> g.domain RETURN f, gpour révéler instantanément toutes les adhésions cross-domaines.
Points clés à retenir
Section intitulée « Points clés à retenir »- Les FSP matérialisent les identités externes dans le domaine local de ressources.
- L’analyse de
CN=ForeignSecurityPrincipalspermet de cartographier tous les accès inter-domaines accordés. - Seuls les groupes de portée Domaine Local peuvent contenir des membres externes d’autres forêts.
- L’Event ID 4732 consigne l’ajout d’un FSP dans un groupe local.