Authentification vs autorisation : la frontière décisive en DFIR
Dans tout système de sécurité informatique moderne, et particulièrement dans l’architecture Windows NT et Active Directory, deux mécanismes distincts et séquentiels s’enchaînent :
- L’Authentification (Authentication / AuthN) — « Qui êtes-vous ? » : Le processus par lequel un principal de sécurité prouve son identité auprès d’une autorité de sécurité (SAM locale ou KDC Kerberos) au moyen d’un secret partagé (mot de passe), d’une clé cryptographique ou d’un certificat. Le résultat d’une authentification réussie est la création d’une session d’ouverture de session (Logon Session) et l’émission d’un jeton d’accès (Access Token).
- L’Autorisation (Authorization / AuthZ) — « Que pouvez-vous faire ? » : Le processus par lequel le système d’exploitation (via le SRM - Security Reference Monitor) compare les SIDs et privilèges contenus dans le jeton d’accès de l’utilisateur avec la liste de contrôle d’accès discrétionnaire (DACL) de l’objet cible (fichier, clé de registre, service, partage réseau).
Pourquoi c’est important en DFIR
Section intitulée « Pourquoi c’est important en DFIR »L’amalgame entre authentification et autorisation conduit fréquemment à des conclusions erronées lors de l’analyse d’incidents :
- L’illusion de la compromission totale : constater dans
Security.evtxqu’un compte attaquant a généré un succès de connexion réseau (Event ID 4624, Logon Type 3) sur un serveur financier ne prouve pas qu’il a accédé aux données comptables. Si les partages et les fichiers possèdent des DACLs restrictives interdisant ce compte, toutes ses tentatives d’accès ont été rejetées avec un code d’erreurACCESS_DENIED. - L’incompréhension des scans NetExec : comme détaillé dans la Fiche 23 : NetExec: What Do the Results Actually Prove?, un voyant vert
[+]dans NetExec atteste uniquement d’une authentification réussie, tandis que le tagPwn3d!atteste d’une autorisation administrative (écriture dansADMIN$ouC$). - Traversée de trust : l’existence d’une relation d’approbation entre le Domaine A et le Domaine B permet l’authentification cross-domaine, mais n’accorde par défaut aucun droit d’accès sur les serveurs du Domaine B (voir Fiche 13 : Active Directory Trust Fundamentals).
Comment ça fonctionne
Section intitulée « Comment ça fonctionne »Le cycle d’évaluation Windows
Section intitulée « Le cycle d’évaluation Windows »[Utilisateur / Client] │ │ 1. Présentation des credentials (Kerberos AS-REQ ou NTLM Negotiate) ▼[Autorité de Sécurité (DC / SAM)] ───────► Authentification (AuthN) │ Émet : Logon Session + Access Token │ 2. Requête d'accès à une ressource (\\FS01\Finances) ▼[Moniteur de Référence de Sécurité (SRM)] ──► Autorisation (AuthZ) │ Compare : Token (SIDs + Privs) vs DACL ├─► Accès Accordé (STATUS_SUCCESS) ──► Événement 4624 + 5140/5145 └─► Accès Refusé (STATUS_ACCESS_DENIED) ─► Événement 4624 + 5145 (Échec)- Identification : l’utilisateur soumet son nom d’utilisateur
CORP\alice. - Authentification : le KDC valide le secret (hash Kerberos) et insère dans le ticket PAC les SIDs de tous les groupes dont
aliceest membre. - Logon local : sur le serveur cible, LSASS transforme le PAC en un Jeton d’accès local (Access Token).
- Autorisation :
alicetente d’ouvrirD:\Finances\bilan.xlsx. Le pilote système compare les SIDs du jeton aux ACEs (Access Control Entries) du fichier. Si aucun groupe d’alicen’a de droit de lecture ou si une entréeDenyexiste, l’accès est bloqué.
Ce qui est possible
Section intitulée « Ce qui est possible »- Être authentifié avec zéro droit d’accès : un utilisateur invité ou un utilisateur standard d’un domaine externe approuvé peut s’authentifier sur un serveur (Event 4624) sans avoir le droit de lire le moindre fichier ni d’énumérer les partages.
- Être autorisé sans être administrateur : un compte peut disposer des permissions complètes sur une base de données ou un dossier sans avoir le moindre privilège local d’administration.
- Échouer à l’autorisation tout en restant connecté : une session réseau reste ouverte même si des centaines de requêtes de lecture de fichiers sont rejetées par
ACCESS_DENIED.
Ce qui n’est pas possible
Section intitulée « Ce qui n’est pas possible »- Être autorisé sans authentification préalable (hors null session / anonyme) : le SRM Windows refuse d’évaluer une requête d’accès sur un objet sécurisé sans un jeton d’accès valide rattaché au thread demandeur.
- Modifier une autorisation sans détenir le droit
WRITE_DAC: l’attribution de droits sur un objet requiert d’en être le propriétaire (Owner) ou d’avoir explicitement la permission de modifier sa liste de contrôle d’accès.
Confusions fréquentes
Section intitulée « Confusions fréquentes »Exemple concret : l’attaque sans accès
Section intitulée « Exemple concret : l’attaque sans accès »Lors d’un audit post-incident après une attaque de type Akira :
- L’attaquant a volé les identifiants d’un compte de prestataire :
CORP\prestataire_vpn. - Il utilise l’outil
NetExecpour sonder 50 serveurs internes :nxc smb 192.168.1.0/24 -u prestataire_vpn -p P@ssword123 - Sur les 50 serveurs, NetExec affiche du vert
[+]: l’authentification réussit partout (Event 4624 sur chaque machine). - Cependant, le compte
prestataire_vpnne fait partie d’aucun groupe d’administration et les partages administratifsADMIN$etC$lui sont strictement interdits. Aucun voyantPwn3d!n’apparaît. - L’attaquant n’a pu déposer aucun payload, ni exécuter de commande, ni lire de données confidentielles.
Conclure à la compromission des 50 serveurs serait une erreur forensique majeure : seule l’identité du prestataire a été compromise, tandis que les barrières d’autorisation des serveurs ont parfaitement résisté.
Artefacts / traces
Section intitulée « Artefacts / traces »| Étape | Événement Security.evtx | Description & Interprétation Forensique |
|---|---|---|
| Authentification réussie | Event ID 4624 | Création de session (vérifier LogonType: 3 et TargetUserName). |
| Authentification échouée | Event ID 4625 | Mauvais mot de passe, compte verrouillé ou désactivé (Status / SubStatus). |
| Tentative d’autorisation sur partage | Event ID 5140 | Un partage réseau a été accédé. |
| Évaluation détaillée de l’autorisation | Event ID 5145 | Vérifier AccessMask : 0x1 (Read), 0x2 (Write), 0x12019f (Full Control). Un échec génère un code Access Denied. |
| Accès objet local | Event ID 4663 | Tentative d’accès à un fichier spécifique après contrôle DACL. |
Méthodes d’investigation
Section intitulée « Méthodes d’investigation »- Rechercher les succès d’authentification suivis de refus d’autorisation :
Fenêtre de terminal # Détecter les événements de partage avec accès refusé pour un utilisateur suspectGet-WinEvent -FilterHashtable @{LogName='Security';Id=5145} | Where-Object {$_.Properties[14].Value -like "*Access Denied*" -and $_.Properties[1].Value -eq "prestataire_vpn"} - Corréler le
LogonId: Le champTargetLogonIdde l’événement 4624 est le lien pivot qui se retrouve dans tous les événements 5145 ou 4663 ultérieurs générés par cette même session.
Points clés à retenir
Section intitulée « Points clés à retenir »- L’authentification valide le secret de l’identité, l’autorisation valide les droits d’action.
- L’event ID 4624 prouve la connexion, JAMAIS le vol OU la modification de données.
- L’évaluation d’autorisation s’effectue localement sur le serveur hébergeant la ressource à partir du jeton d’accès.
- NetExec
[+]= authentification réussie ;Pwn3d!= autorisation administrative validée.