ACLs - DACLs/SACLs/ACEs

Reading time: 10 minutes

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)

Soutenir HackTricks

Liste de Contrôle d'Accès (ACL)

Une Liste de Contrôle d'Accès (ACL) consiste en un ensemble ordonné d'Entrées de Contrôle d'Accès (ACEs) qui dictent les protections pour un objet et ses propriétés. En essence, une ACL définit quelles actions par quels principaux de sécurité (utilisateurs ou groupes) sont autorisées ou refusées sur un objet donné.

Il existe deux types d'ACL :

  • Liste de Contrôle d'Accès Discrétionnaire (DACL) : Spécifie quels utilisateurs et groupes ont ou n'ont pas accès à un objet.
  • Liste de Contrôle d'Accès Système (SACL) : Régit l'audit des tentatives d'accès à un objet.

Le processus d'accès à un fichier implique que le système vérifie le descripteur de sécurité de l'objet par rapport au jeton d'accès de l'utilisateur pour déterminer si l'accès doit être accordé et l'étendue de cet accès, basé sur les ACEs.

Composants Clés

  • DACL : Contient des ACEs qui accordent ou refusent des permissions d'accès aux utilisateurs et groupes pour un objet. C'est essentiellement la principale ACL qui dicte les droits d'accès.
  • SACL : Utilisé pour auditer l'accès aux objets, où les ACEs définissent les types d'accès à enregistrer dans le Journal des Événements de Sécurité. Cela peut être inestimable pour détecter des tentatives d'accès non autorisées ou résoudre des problèmes d'accès.

Interaction du Système avec les ACLs

Chaque session utilisateur est associée à un jeton d'accès qui contient des informations de sécurité pertinentes pour cette session, y compris les identités d'utilisateur, de groupe et les privilèges. Ce jeton inclut également un SID de connexion qui identifie de manière unique la session.

L'Autorité de Sécurité Locale (LSASS) traite les demandes d'accès aux objets en examinant la DACL pour des ACEs qui correspondent au principal de sécurité tentant d'accéder. L'accès est immédiatement accordé si aucune ACE pertinente n'est trouvée. Sinon, LSASS compare les ACEs avec le SID du principal de sécurité dans le jeton d'accès pour déterminer l'éligibilité à l'accès.

Processus Résumé

  • ACLs : Définissent les permissions d'accès via des DACLs et des règles d'audit via des SACLs.
  • Jeton d'Accès : Contient des informations sur l'utilisateur, le groupe et les privilèges pour une session.
  • Décision d'Accès : Prise en comparant les ACEs de la DACL avec le jeton d'accès ; les SACLs sont utilisées pour l'audit.

ACEs

Il existe trois types principaux d'Entrées de Contrôle d'Accès (ACEs) :

  • ACE d'Accès Refusé : Cette ACE refuse explicitement l'accès à un objet pour des utilisateurs ou groupes spécifiés (dans une DACL).
  • ACE d'Accès Autorisé : Cette ACE accorde explicitement l'accès à un objet pour des utilisateurs ou groupes spécifiés (dans une DACL).
  • ACE d'Audit Système : Située dans une Liste de Contrôle d'Accès Système (SACL), cette ACE est responsable de la génération de journaux d'audit lors des tentatives d'accès à un objet par des utilisateurs ou groupes. Elle documente si l'accès a été autorisé ou refusé et la nature de l'accès.

Chaque ACE a quatre composants critiques :

  1. Le Identifiant de Sécurité (SID) de l'utilisateur ou du groupe (ou leur nom principal dans une représentation graphique).
  2. Un drapeau qui identifie le type d'ACE (accès refusé, autorisé ou audit système).
  3. Des drapeaux d'héritage qui déterminent si les objets enfants peuvent hériter de l'ACE de leur parent.
  4. Un masque d'accès, une valeur de 32 bits spécifiant les droits accordés à l'objet.

La détermination d'accès est effectuée en examinant séquentiellement chaque ACE jusqu'à ce que :

  • Une ACE d'Accès Refusé refuse explicitement les droits demandés à un fiduciaire identifié dans le jeton d'accès.
  • Des ACE(s) d'Accès Autorisé accordent explicitement tous les droits demandés à un fiduciaire dans le jeton d'accès.
  • Après avoir vérifié toutes les ACEs, si un droit demandé n'a pas été explicitement autorisé, l'accès est implicitement refusé.

Ordre des ACEs

La façon dont les ACEs (règles qui disent qui peut ou ne peut pas accéder à quelque chose) sont mises dans une liste appelée DACL est très importante. Cela est dû au fait qu'une fois que le système accorde ou refuse l'accès basé sur ces règles, il cesse de regarder le reste.

Il existe une meilleure façon d'organiser ces ACEs, et cela s'appelle "ordre canonique." Cette méthode aide à s'assurer que tout fonctionne de manière fluide et équitable. Voici comment cela se passe pour des systèmes comme Windows 2000 et Windows Server 2003 :

  • D'abord, mettez toutes les règles qui sont faites spécifiquement pour cet élément avant celles qui viennent d'ailleurs, comme un dossier parent.
  • Dans ces règles spécifiques, mettez celles qui disent "non" (refuser) avant celles qui disent "oui" (autoriser).
  • Pour les règles qui viennent d'ailleurs, commencez par celles de la source la plus proche, comme le parent, puis revenez en arrière. Encore une fois, mettez "non" avant "oui."

Cette configuration aide de deux grandes manières :

  • Elle s'assure que s'il y a un "non" spécifique, il est respecté, peu importe les autres règles "oui."
  • Elle permet au propriétaire d'un élément d'avoir le dernier mot sur qui peut entrer, avant que des règles provenant de dossiers parents ou plus éloignés ne prennent effet.

En procédant de cette manière, le propriétaire d'un fichier ou d'un dossier peut être très précis sur qui obtient l'accès, s'assurant que les bonnes personnes peuvent entrer et que les mauvaises ne le peuvent pas.

Ainsi, cet "ordre canonique" vise à garantir que les règles d'accès sont claires et fonctionnent bien, en plaçant les règles spécifiques en premier et en organisant le tout de manière intelligente.

Exemple GUI

Exemple d'ici

Voici l'onglet de sécurité classique d'un dossier montrant l'ACL, la DACL et les ACEs :

http://secureidentity.se/wp-content/uploads/2014/04/classicsectab.jpg

Si nous cliquons sur le bouton Avancé, nous obtiendrons plus d'options comme l'héritage :

http://secureidentity.se/wp-content/uploads/2014/04/aceinheritance.jpg

Et si vous ajoutez ou modifiez un Principal de Sécurité :

http://secureidentity.se/wp-content/uploads/2014/04/editseprincipalpointers1.jpg

Et enfin, nous avons le SACL dans l'onglet d'Audit :

http://secureidentity.se/wp-content/uploads/2014/04/audit-tab.jpg

Expliquer le Contrôle d'Accès de Manière Simplifiée

Lors de la gestion de l'accès aux ressources, comme un dossier, nous utilisons des listes et des règles connues sous le nom de Listes de Contrôle d'Accès (ACLs) et d'Entrées de Contrôle d'Accès (ACEs). Celles-ci définissent qui peut ou ne peut pas accéder à certaines données.

Refuser l'Accès à un Groupe Spécifique

Imaginez que vous avez un dossier nommé Coût, et que vous souhaitez que tout le monde y accède sauf l'équipe marketing. En configurant correctement les règles, nous pouvons nous assurer que l'équipe marketing se voit explicitement refuser l'accès avant d'autoriser tout le monde d'autre. Cela se fait en plaçant la règle de refus d'accès à l'équipe marketing avant la règle qui autorise l'accès à tout le monde.

Autoriser l'Accès à un Membre Spécifique d'un Groupe Refusé

Disons que Bob, le directeur marketing, a besoin d'accéder au dossier Coût, même si l'équipe marketing ne devrait généralement pas avoir accès. Nous pouvons ajouter une règle spécifique (ACE) pour Bob qui lui accorde l'accès, et la placer avant la règle qui refuse l'accès à l'équipe marketing. De cette manière, Bob obtient l'accès malgré la restriction générale sur son équipe.

Comprendre les Entrées de Contrôle d'Accès

Les ACEs sont les règles individuelles dans une ACL. Elles identifient les utilisateurs ou groupes, spécifient quel accès est autorisé ou refusé, et déterminent comment ces règles s'appliquent aux sous-éléments (héritage). Il existe deux types principaux d'ACEs :

  • ACEs Génériques : Celles-ci s'appliquent largement, affectant soit tous les types d'objets, soit ne distinguant qu'entre les conteneurs (comme les dossiers) et les non-conteneurs (comme les fichiers). Par exemple, une règle qui permet aux utilisateurs de voir le contenu d'un dossier mais pas d'accéder aux fichiers à l'intérieur.
  • ACEs Spécifiques à l'Objet : Celles-ci fournissent un contrôle plus précis, permettant de définir des règles pour des types d'objets spécifiques ou même des propriétés individuelles au sein d'un objet. Par exemple, dans un annuaire d'utilisateurs, une règle pourrait permettre à un utilisateur de mettre à jour son numéro de téléphone mais pas ses heures de connexion.

Chaque ACE contient des informations importantes comme à qui la règle s'applique (en utilisant un Identifiant de Sécurité ou SID), ce que la règle permet ou refuse (en utilisant un masque d'accès), et comment elle est héritée par d'autres objets.

Différences Clés Entre les Types d'ACE

  • ACEs Génériques sont adaptées pour des scénarios de contrôle d'accès simples, où la même règle s'applique à tous les aspects d'un objet ou à tous les objets au sein d'un conteneur.
  • ACEs Spécifiques à l'Objet sont utilisées pour des scénarios plus complexes, en particulier dans des environnements comme Active Directory, où vous pourriez avoir besoin de contrôler l'accès à des propriétés spécifiques d'un objet différemment.

En résumé, les ACLs et les ACEs aident à définir des contrôles d'accès précis, garantissant que seules les bonnes personnes ou groupes ont accès à des informations ou ressources sensibles, avec la capacité d'adapter les droits d'accès jusqu'au niveau des propriétés individuelles ou des types d'objets.

Disposition de l'Entrée de Contrôle d'Accès

Champ ACEDescription
TypeDrapeau qui indique le type d'ACE. Windows 2000 et Windows Server 2003 prennent en charge six types d'ACE : Trois types d'ACE génériques qui sont attachés à tous les objets sécurisables. Trois types d'ACE spécifiques à l'objet qui peuvent se produire pour des objets Active Directory.
DrapeauxEnsemble de drapeaux binaires qui contrôlent l'héritage et l'audit.
TailleNombre d'octets de mémoire qui sont alloués pour l'ACE.
Masque d'accèsValeur de 32 bits dont les bits correspondent aux droits d'accès pour l'objet. Les bits peuvent être activés ou désactivés, mais la signification du paramètre dépend du type d'ACE. Par exemple, si le bit qui correspond au droit de lire les permissions est activé, et que le type d'ACE est Refuser, l'ACE refuse le droit de lire les permissions de l'objet. Si le même bit est activé mais que le type d'ACE est Autoriser, l'ACE accorde le droit de lire les permissions de l'objet. Plus de détails sur le masque d'accès apparaissent dans le tableau suivant.
SIDIdentifie un utilisateur ou un groupe dont l'accès est contrôlé ou surveillé par cette ACE.

Disposition du Masque d'Accès

Bit (Plage)SignificationDescription/Exemple
0 - 15Droits d'Accès Spécifiques à l'ObjetLire des données, Exécuter, Ajouter des données
16 - 22Droits d'Accès StandardsSupprimer, Écrire ACL, Écrire Propriétaire
23Peut accéder à l'ACL de sécurité
24 - 27Réservé
28Générique TOUT (Lire, Écrire, Exécuter)Tout en dessous
29Générique ExécuterToutes les choses nécessaires pour exécuter un programme
30Générique ÉcrireToutes les choses nécessaires pour écrire dans un fichier
31Générique LireToutes les choses nécessaires pour lire un fichier

Références

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)

Soutenir HackTricks