Privilèges vs permissions : éliminer une confusion fondamentale
Dans l’architecture Windows NT, la sécurité est scindée en deux mécanismes complémentaires gérés par le Moniteur de Référence de Sécurité (SRM) :
- Les Privilèges Système (User Rights Assignment) :
Définis dans la stratégie de sécurité locale (
secpol.msc) ou propagés par GPO. Ils sont attachés au jeton d’accès sous forme de constantes LUID (ex.SeDebugPrivilege,SeTakeOwnershipPrivilege). Ils confèrent le pouvoir d’outrepasser les règles normales de protection des objets pour exécuter des fonctions d’administration bas niveau du noyau. - Les Permissions sur Objets (Object Access Rights) :
Définies dans les descripteurs de sécurité (DACL) de chaque objet sécurisable (fichiers, clés de registre, services, processus, conteneurs Active Directory). Elles sont attribuées via des masques d’accès (Access Masks) comme
FILE_READ_DATA,ADS_RIGHT_DS_WRITE_PROP, etc.
Pourquoi c’est important en DFIR
Section intitulée « Pourquoi c’est important en DFIR »Confondre privilèges et permissions empêche d’évaluer correctement la sévérité d’une élévation de privilèges :
- L’illusion de la protection par ACL : un administrateur configure un dossier ultra-confidentiel avec
DACL: Deny Everyone. Si l’attaquant dispose du privilègeSeTakeOwnershipPrivilege, il s’approprie le fichier et réécrit la DACL. S’il dispose deSeBackupPrivilege, il lit le fichier sans même modifier la DACL. - Détection d’exploitation locale : les attaques dites Potato n’exploitent pas une mauvaise permission de fichier, mais l’activation du privilège
SeImpersonatePrivilegeaccordé légitimement aux comptes de service (voir Fiche 06 : Windows Access Tokens and Security Context). - Abus d’Active Directory : dans l’AD, les droits d’administration déléguée sont des permissions sur des objets (ex: droit
Reset-Passwordsur une OU), tandis que le droit d’ouvrir une session sur un DC est un privilège (SeInteractiveLogonRight).
Les privilèges critiques et leurs vecteurs d’abus
Section intitulée « Les privilèges critiques et leurs vecteurs d’abus »| Privilège | Nom d’affichage | Impact & Vecteur d’Abus en DFIR |
|---|---|---|
SeDebugPrivilege | Déboguer les programmes | Permet d’ouvrir n’importe quel processus avec PROCESS_ALL_ACCESS. Utilisé par Mimikatz pour injecter et lire la mémoire de lsass.exe. |
SeBackupPrivilege | Sauvegarder des fichiers et des répertoires | Permet de lire n’importe quel fichier en contournant les DACLs via FILE_FLAG_BACKUP_SEMANTICS. Permet l’extraction hors ligne de ntds.dit et HKLM\SAM. |
SeRestorePrivilege | Restaurer des fichiers et des répertoires | Permet d’écrire sur n’importe quel fichier en ignorant la DACL. Permet d’écraser des binaires de service ou des clés de démarrage du système. |
SeTakeOwnershipPrivilege | Prendre possession de fichiers ou d’autres objets | Permet de remplacer le propriétaire légitime d’un objet par son propre SID, conférant le droit WRITE_DAC immédiat. |
SeImpersonatePrivilege | Emprunter l’identité d’un client après l’authentification | Permet d’usurper le jeton de n’importe quel client se connectant au processus. Utilisé par RottenPotato, SweetPotato, PrintSpoofer pour passer à SYSTEM. |
SeLoadDriverPrivilege | Charger et décharger les pilotes de périphériques | Permet de charger un pilote noyau vulnérable (BYOVD - Bring Your Own Vulnerable Driver) pour désactiver l’EDR en Ring 0. |
SeTcbPrivilege | Agir en tant que partie du système d’exploitation | Permet à un processus de s’enregistrer auprès de LSASS pour forger des jetons d’accès arbitraires. |
Ce qui est possible
Section intitulée « Ce qui est possible »- Contourner une interdiction formelle grâce à un privilège : un utilisateur ayant
SeBackupPrivilegelit les données même si une ACE expliciteDenyle cible. - Activer un privilège dormeur : sous Windows, un privilège présent dans le jeton avec le drapeau
SE_PRIVILEGE_DISABLEDpeut être activé à tout moment par le code via l’APIAdjustTokenPrivileges. - Déléguer des permissions sans donner de privilèges : accorder le contrôle total sur une arborescence de fichiers ne confère aucun droit d’arrêter les services ou de charger des pilotes.
Ce qui n’est pas possible
Section intitulée « Ce qui n’est pas possible »- Créer un nouveau privilège personnalisé : les privilèges sont codés en dur dans le noyau Windows (
ntoskrnl.exe). On ne peut pas inventer un nouveau privilège ; on ne peut qu’attribuer ceux existants. - Utiliser un privilège sur une machine distante sans session interactive : les privilèges système s’exécutent dans le contexte du système d’exploitation local.
SeDebugPrivilegesur la machine A ne permet pas de déboguer un processus sur la machine B via le réseau.
Artefacts / traces
Section intitulée « Artefacts / traces »Dans Security.evtx :
EventID: 4672 # Privilèges spéciaux attribués à la nouvelle ouverture de sessionSubjectUserName: AdministratorSubjectUserSid: S-1-5-21-111111111-222222222-333333333-500PrivilegeList: SeDebugPrivilege SeBackupPrivilege SeRestorePrivilege SeTakeOwnershipPrivilege SeImpersonatePrivilege
EventID: 4673 # Service privilégié appelé (tentative d'usage d'un privilège)SubjectUserName: attacker_servicePrivilegeList: SeImpersonatePrivilege
EventID: 4704 # Droit utilisateur attribué (modification de stratégie locale)TargetUser: S-1-5-21-111111111-222222222-333333333-1105UserRight: SeDebugPrivilegeMéthodes d’investigation
Section intitulée « Méthodes d’investigation »- Lister les privilèges de la session courante :
Fenêtre de terminal whoami /priv - Auditer l’assignation des droits locaux via
secedit:Fenêtre de terminal secedit /export /cfg C:\temp\secpolicy.inf# Examiner la section [Privilege Rights] - Rechercher les modifications de privilèges dans les GPO :
Vérifier les fichiers
GptTmpl.infdans les dossiers SYSVOL des GPO (\\domain\sysvol\domain\Policies\{GUID}\Machine\Microsoft\Windows NT\SecEdit\GptTmpl.inf).
Points clés à retenir
Section intitulée « Points clés à retenir »- Privilège = pouvoir système global (OS) ; permission = droit d’accès sur un objet (DACL).
- Certains privilèges (
SeBackup,SeTakeOwnership) annulent totalement les barrières des DACLs. SeDebugPrivilegeetSeImpersonatePrivilegesont les deux vecteurs d’élévation locale les plus exploités.- L’event ID 4672 permet de tracer l’apparition de sessions à privilèges critiques.