Comment regarder SDDL et ne pas casser les yeux sur les points-virgules



Mon chemin vers la sécurité de l'information a commencé par une découverte surprenante: «cryptée en toute sécurité». Cette déclaration semble maintenant simple et évidente, et au cours de la première année, la prise de conscience de ce fait a produit un effet comparable à la bombe atomique mentale. La sécurité de l'information a été attaquée en étendant les limites du domaine: il s'est avéré que la cryptographie n'est qu'une ligne de défense, et il y a aussi au final juridique, organisationnelle et simplement physique. L'un des aspects théoriques était "Tous les problèmes de sécurité de l'information sont décrits par l'accès des sujets aux objets." Il a mémorisé, dessiné les modèles d'identification et d'accès discrétionnaire, raconté, réussi et oublié.

Je me spécialise dans l'analyse de sécurité des applications Windows. Assez souvent, l'étude de droits d'accès précisément différents occupe une part importante de l'étude. Pour automatiser le processus de recherche de droits d'accès étranges ou incorrects, j'ai dû comprendre le SDDL (Security Descriptor Definition Language). Qui souhaite apprendre à lire les droits sous forme de SDDL (par exemple, quelque chose comme O: SYG: SYD: (A ;; CCLCSWLOCRRC ;;; IU) (A ;; CCLCSWLOCRRC ;;; SU) (A ;; CCLCSWRPWPDTLOCRRC ;;; SY) (A ;; CCDCLCSWRPWPDTLOCRSDRCWDWO ;;; BA) ) et familiarisez-vous avec mon utilitaire pour travailler avec des descripteurs dans ce format, bienvenue à cat.

Format SDDL


SDDL est une chaîne avec des descriptions des droits d'accès sous forme de texte. Le plus souvent, il se compose de 3 parties: propriétaire, groupe et droits d'accès DACL. Parfois, la partie SACL est ajoutée - la partie audit (si les actions avec l'objet correspondent aux règles SACL, un événement système sera créé qui sera facile à suivre par divers systèmes). Le descripteur ressemble à ceci:

O: <propriétaire> G: <groupe> D: <règles d'accès DACL> S: <règles d'audit SACL>



Ainsi, l'exemple ci-dessus peut être décomposé comme suit:
  • O: SY
  • G: SY
  • D: (A ;; CCLCSWLOCRRC ;;; IU) (A ;; CCLCSWLOCRRC ;;; SU) (A ;; CCLCSWRPWPDTLOCRRC ;;; SY) (A ;; CCDCLCSWRPWPDTLOCRSDRCWDWO ;;; BA)

Le propriétaire et le groupe peuvent être indiqués comme le SID de l'utilisateur ou du groupe de l'OS, ou comme abréviations spéciales. Par exemple, dans ce cas, le propriétaire et le groupe SY sont le compte système local (NT AUTHORITY \ SYSTEM). La liste des abréviations (malheureusement non exhaustive) se trouve ici .

Les règles d'accès consistent en une énumération des drapeaux DACL et des chaînes ACE (Access Control Entries). Une analyse détaillée de l'ACE est présentée ici , nous considérerons les plus importantes. Chaque ligne ACE est placée entre parenthèses dans lesquelles les données sont séparées par un point-virgule.
Les premier, troisième et dernier groupes sont les plus intéressants. Il s'agit du type d'accès (autorisé «A», interdit «D»), d'une liste d'actions et du nom du sujet d'accès. La première règle DACL de l'exemple ci-dessus: (A ;; CCLCSWLOCRRC ;;; IU), nous allons l'examiner en détail.



  • «A» - la règle autorise des actions au sujet;
  • «CC», «LC», «SW», «LO», «CR», «RC» - une liste d'actions autorisées;
  • «IU» - cette abréviation signifie le groupe d'utilisateurs connectés interactifs.

Reste à comprendre ce qui est exactement autorisé. Que signifient ces mystérieux «CC», «LC», «SW», «LO», «CR», «RC»?

Ici, nous attendons un autre écueil - il n'est pas toujours possible d'indiquer précisément l'action par réduction. Ils sont, pour ainsi dire, spécifiques au contexte. Par exemple, si nous parlons des droits de travailler avec des services, alors WP signifie «arrêter le service», s'il s'agit de fichiers, puis «exécution», et s'il s'agit de dossiers, puis «traverser» (accès aux fichiers dans un dossier par nom, si ce n'est pas possible liste des contenus). Certaines descriptions sont ici , d'autres ici , avec le monde sur un fil.

Hé, vous avez tellement manqué sur les drapeaux DACL, les drapeaux ACE, l'héritage
Oui, c'est vrai, tout cela est très important et intéressant, mais ce n'est pas si courant. Je me concentre sur la masse. Dans le cas de manifestations uniques de drapeaux inhabituels, il sera plus facile à comprendre en mode manuel.

Automatisation


Les utilitaires Sysinternals m'aident vraiment, à savoir Process Monitor et Access Check (également connu sous le nom de procmon et accesschk). Le premier vous permet de consulter les accès aux fichiers et au registre en temps réel, et le second vous permet de collecter des informations du système d'exploitation sur les descripteurs de sécurité.

Soit dit en passant, dans le système d'exploitation lui-même, la fenêtre avec les droits ressemble à ceci si quelqu'un n'a pas vu:



Malheureusement, la sortie d’accesschk ne peut pas être filtrée en restreignant la demande de droits sur des actions spécifiques. Process Monitor affiche uniquement les appels réels à un moment donné et vous obtenez une demande trop précise qui n'est pas directement affectée. De plus, j'aimerais avoir un mémo sur quel type de groupe d'utilisateurs est NO ou NS , et quels types d'actions sont cachés derrière CC et RC.

Un utilitaire simple est donc né pour visualiser et filtrer les enregistrements SDDL.

Comment utiliser


Travailler avec l'utilitaire est simple, en seulement trois étapes:

  1. Obtenez des enregistrements SDDL.
  2. Définissez des filtres de règles.
  3. Afficher le rapport.



En savoir plus sur chaque étape.

Obtenir SDDL. Pour obtenir des enregistrements SDDL, vous pouvez utiliser les fonctions intégrées à l'utilitaire (boutons 1, 2, 3 ou 4), ou télécharger la liste que vous avez reçue précédemment (bouton 5). Veuillez noter que la demande de droits d'accès est faite au nom de l'utilisateur qui a lancé SDDL Viewer, donc dans certaines situations, il vaut la peine d'exécuter le programme non seulement en tant qu'utilisateur normal, mais également en tant qu'administrateur. Eh bien, en général, le champ lui-même avec des lignes SDDL est modifiable - vous pouvez au moins le réécrire manuellement.

Le filtrage s'effectue selon deux paramètres: les groupes d'utilisateurs et les droits d'accès. La liste des groupes et des utilisateurs est basée sur tous les utilisateurs mentionnés dans le SDDL. Faites attention à la case à cocher Traduire les SID (6) - si elle est installée, les SID des utilisateurs et des groupes seront, si possible, traduits en noms relatifs à l'ordinateur actuel. La liste des droits est un peu plus délicate - vous devez sélectionner la catégorie de droits (si le SDDL est rempli avec l'utilitaire lui-même, alors la catégorie nécessaire est automatiquement sélectionnée) De plus, les droits présents dans le SDDL sont plus clairement mis en évidence dans la liste des droits.

Le rapport est simplement le résultat du décryptage de SDDL et de l'application de filtres. Vous pouvez trouver des informations plus détaillées sur chaque ligne si vous la sélectionnez dans la liste (oui, c'est avec cette fonction que j'ai eu un gag, ce qui a donné lieu à une petite recherche sur les internes .NET ).

Résumé


Le code source est disponible sur github . Les fichiers binaires sont également dans la section Release .

Mes plans d'utilité:

  1. Ajoutez une recherche aux champs de saisie de SDDL - le filtrage ne suffit toujours pas.
  2. Ajoutez des paramètres de lancement qui permettraient de créer des rapports sans partie visuelle.
  3. Peut-être devriez-vous ajouter un remplissage SDDL à partir des processus, des dossiers partagés et des imprimantes?

Je serai heureux d'entendre des suggestions dans les commentaires.

Source: https://habr.com/ru/post/fr442662/


All Articles