Aller au contenu principal
Expert Cybersécurité & IAv9.0
Centres de ressources conformité
Besoin d'un accompagnement expert ?
Devis personnalisé sous 24h — audit, conformité, incident
Checklists Sécurité — Audit & Durcissement
Formats disponibles
📄 PDF 📊 Excel 🌐 Web

11 checklists professionnelles couvrant 2 200+ points de contrôle. Téléchargement gratuit, aucune inscription.

SPN Enumeration

ad

Définition

La SPN Enumeration désigne la phase de reconnaissance consistant à recenser l'ensemble des Service Principal Names enregistrés dans un domaine Active Directory, une étape préalable indispensable à l'exécution d'une attaque de Kerberoasting, puisque seuls les comptes disposant d'un SPN peuvent faire l'objet d'une demande de ticket de service (TGS) exploitable pour cette technique. Cette énumération s'effectue via une simple requête LDAP filtrée sur l'attribut servicePrincipalName, accessible à tout utilisateur authentifié du domaine sans nécessiter de privilège particulier, ce qui explique pourquoi cette phase de reconnaissance ne génère généralement aucune alerte de sécurité en elle-même, contrairement à la demande de TGS qui la suit et qui peut, elle, être surveillée via l'Event ID 4769. Des outils comme Rubeus (module kerberoast), Impacket (GetUserSPNs.py) ou PowerView (Get-DomainSPNTicket) automatisent cette énumération et l'enchaînent directement avec la demande de tickets pour l'ensemble des comptes identifiés, produisant une liste de hachages exploitables pour un cassage hors ligne ultérieur via Hashcat. La SPN Enumeration révèle fréquemment des comptes de service historiques disposant de privilèges élevés et de mots de passe anciens, rarement renouvelés faute de rotation automatisée, ce qui explique pourquoi le Kerberoasting demeure l'une des techniques les plus rentables en pentest Active Directory malgré son ancienneté et sa large documentation.

Fonctionnement technique

Requête LDAP : (servicePrincipalName=*) avec filtre (&(objectClass=user)(servicePrincipalName=*)). En PowerShell : Get-ADUser -Filter {ServicePrincipalName -ne '$null'} -Properties ServicePrincipalName. Avec Impacket : GetUserSPNs.py domain/user:password. Les SPNs formato service/host permettent d'identifier le type et la machine.

Exploitation et vecteurs d'attaque

  • Kerberoasting : Demande de TGS pour chaque SPN, extraction hash
  • Targeted Kerberoasting : Ajout SPN sur compte cible sans SPN
  • Cartographie services : Identification SQL Server, Exchange, SharePoint

Détection et mitigation

  • Event ID 4769 avec volume anormal de demandes TGS
  • Mots de passe longs (25+ chars) sur comptes avec SPN
  • gMSA pour les comptes de service (mot de passe automatique complexe)

Articles liés

Un projet cybersécurité ?

Expert dispo · Réponse 24h

Devis