LDAP : où l'AD
stocke tout
Comprendre l'usage de LDAP dans Active Directory : enregistrements DNS SRV, MS-RPC sur SMB, structure des objets (DN, OU, CN) et filtres de requetes courants.
Maxime Jérôme··5 min de lecture
Prérequis
- Environnement Windows
- Compréhension basique de la cryptographie
- Introduction Active Directory
Hello ! o/
Active Directory (AD) repose sur plusieurs protocoles et technologies. Voici un aperçu des éléments clés avant de plonger dans LDAP (Lightweight Directory Access Protocol).
Protocoles et outils
- LDAP (Lightweight Directory Access Protocol) : RFC 4511. On l'interroge typiquement avec
openldap/ldapsearch. - DNS : utilisé pour localiser les services AD. Commandes utiles :
digetnslookup. - NetBIOS et MS-RPC (Microsoft Remote Procedure Call) :
- Samba :
rpcclient,smbclient,net. - Impacket : implémentation Python de la stack MS-RPC.
- Samba :
Enregistrements DNS pour AD
Pour trouver un contrôleur de domaine AD, on s'appuie sur des enregistrements SRV. Les plus courants :
| Enregistrement SRV | Rôle |
|---|---|
| _gc._tcp | Global Catalog (LDAP pour l'ensemble de la foret AD) |
| _ldap._tcp | Serveurs LDAP du domaine |
| _kerberos._tcp | Kerberos KDC (Key Distribution Center) |
| _kpasswd._tcp | Kerberos Password Change |
Exemple de requete SRV avec dig :
dig -t SRV _gc._tcp.domain.comMS-RPC et DCE-RPC
MS-RPC est basé sur DCE-RPC (Distributed Computing Environment - Remote Procedure Calls). Il permet aux machines d'un domaine de communiquer entre elles. Le transport se fait soit via RPC over SMB avec des pipes nommés, soit en TCP clair.
net user /domainSimple en apparence, mais sous le capot cette commande enclenche toute une série d'operations.
Fonctionnement de net user
Lorsqu'on execute net user myAccount /domain, voici ce qui se passe concrètement :
Client Windows
│
├─ 1. Ouvre une connexion SMB vers le DC
│
├─ 2. Requete le partage IPC$
│
├─ 3. Bind sur le pipe nommé "samr"
│ (Security Account Manager Remote)
│
└─ 4. Requetes SAMR :
EnumDomains
LookupDomains
LookupNames
QueryUserInfo
GetGroupsForUser
...Utilisation de LDAP dans Active Directory
Active Directory utilise LDAP (Lightweight Directory Access Protocol) comme protocole d'accès à l'annuaire. Ports par défaut :
| Port | Usage |
|---|---|
| 389 TCP/IP | LDAP standard |
| 636 SSL/TLS | LDAPS (chiffré) |
| 3269 | LDAP Global Catalog (foret entière) |
Chaque objet dans LDAP possède un DN (Distinguished Name), qui est une combinaison d'attributs formant un chemin unique dans le DIT (Directory Information Tree) :
- DC (Domain Component) : composant du nom de domaine
- OU (Organizational Unit) : unité d'organisation
- CN (Common Name) : nom d'utilisateur, de groupe, d'ordinateur, etc.
DC=corp,DC=example,DC=com
│
├── OU=Users
│ ├── CN=Alice (RDN: CN=Alice)
│ │ DN: CN=Alice,OU=Users,DC=corp,DC=example,DC=com
│ └── CN=Bob
│ DN: CN=Bob,OU=Users,DC=corp,DC=example,DC=com
│
├── OU=Computers
│ └── CN=WORKSTATION01
│ DN: CN=WORKSTATION01,OU=Computers,DC=corp,DC=example,DC=com
│
└── OU=Groups
└── CN=Domain Admins
DN: CN=Domain Admins,OU=Groups,DC=corp,DC=example,DC=comChaque segment du DN est un RDN (Relative Distinguished Name). Le RDN est le composant le plus à gauche du DN complet.
Sécurité et filtres LDAP
LDAP ouvert = fuite d'informations
Filtres LDAP courants en recon :
| Filtre | Résultat |
|---|---|
| (objectClass=user) | Tous les objets utilisateur |
| (objectClass=group) | Tous les groupes |
| (objectClass=computer) | Tous les ordinateurs |
Structure d'une requete LDAP
Voici la structure ASN.1 d'un SearchRequest LDAP telle que définie dans la RFC 4511 :
SearchRequest ::= [APPLICATION 3] SEQUENCE {
baseObject LDAPDN,
scope ENUMERATED {
baseObject (0),
singleLevel (1),
wholeSubtree (2),
... },
derefAliases ENUMERATED {
neverDerefAliases (0),
derefInSearching (1),
derefFindingBaseObj (2),
derefAlways (3) },
sizeLimit INTEGER (0 .. maxInt),
timeLimit INTEGER (0 .. maxInt),
typesOnly BOOLEAN,
filter Filter,
attributes AttributeSelection
}scope : les 3 modes de recherche
wholeSubtree.Source : RFC 4511 - Lightweight Directory Access Protocol (LDAP)
Conclusion
Active Directory est un système complexe qui repose sur plusieurs protocoles pour fonctionner efficacement. Pour en savoir plus sur Kerberos, rendez-vous ici !