Vous voulez apprendre le sous-système de contrôle d'accès Windows en deux heures? De plus, connaître ce sujet comme aucun de vos professeurs ne le sait? Vous vous demandez comment utiliser la fonction API Windows avec le nom le plus long - AccessCheckByTypeResultListAndAuditAlarmByHandle? Et voir le code qui crée des structures Windows non documentées? Alors vous êtes ici!
L'article présente une description de la bibliothèque et un ensemble de tests qui permettront à tout utilisateur d'étudier le plus complètement possible le sous-système de contrôle d'accès Windows avec une connaissance initiale assez restreinte. Les problèmes de travail avec DACL, SACL, ACE conditionnel, vérification d'intégrité obligatoire et bien d'autres sont pris en compte. Les tests permettent à l'utilisateur de modifier arbitrairement les données d'entrée et de les modifier indépendamment pour une étude plus détaillée des sujets nécessaires à un utilisateur particulier. La bibliothèque présentée vous permettra d'analyser et de créer toutes les structures internes du sous-système de sécurité Windows, et vous permettra également de créer des «jetons d'accès» avec des données initiales arbitraires.
Il y a longtemps, j'ai commencé à découvrir le sous-système de sécurité Windows. Je lis d'excellents livres, mais chaque livre doit être soutenu avant tout par la pratique. C'est ainsi que j'ai commencé mes expériences pratiques. Tout d'abord, j'ai commencé avec une technique standard: créer une certaine structure de fichiers avec plusieurs niveaux imbriqués (répertoires). Au début de l'étude, un tel «site expérimental» suffisait. Cependant, lorsque je suis passé à l'apprentissage du DAC (Dynamic Access Control), le "site" de test est devenu beaucoup plus compliqué: je devais déjà déployer plusieurs machines virtuelles, dont l'une était Windows Server, et l'autre était un OS client standard . Ici, il était déjà nécessaire d'étudier le processus de configuration de nombreux sous-systèmes Windows Server, ce qui a quelque peu distrait de la tâche d'origine: l'étude du sous-système de sécurité.En fin de compte, j'avais une bibliothèque assez développée qui me permettait d'obtenir sous une forme qui me convenait toutes les valeurs de diverses structures liées au sous-système de sécurité Windows, et pour la plupart d'entre elles - les créer également à partir de valeurs précédemment enregistrées . Mais un jour, j'ai eu une idée qui a radicalement changé (et grandement simplifié) toute mon approche de l'étude de ce sujet.
, , , , , . Microsoft .
, Windows – : «» (access token) « » (security descriptor a.k.a. SD). , , – . /, Windows , . : 1) ; 2) ; 3) . , - – . , , .
- . , «Run As Administrator». Visual Studio. , - : SeCreateTokenPrivilege (Create a token object), SeTcbPrivilege (Act as part of the operating system), SeImpersonatePrivilege (Impersonate a client after authentication).
C++. « » , . . . , , « , , copyright». – - , Windows Access Control, , , .
, :
1. Windows ?
2. Windows API - AccessCheckByTypeResultListAndAuditAlarmByHandle?
, AccessCheckByTypeResultListAndAuditAlarmByHandle. , . AccessCheckByTypeResultListAndAuditAlarmByHandle . , , , .
3. , Windows?
Ici, à ce lien, vous pouvez trouver une fonction qui crée une "représentation binaire" pour le type de données CLAIM_SECURITY_ATTRIBUTE_V1. La structure elle-même est documentée dans [MS-DTYP], mais il n'y a aucune description de la façon dont elle est représentée dans les données binaires. Cette structure est nécessaire pour définir les «attributs de ressources» (le concept fait référence à DAC, contrôle d'accès dynamique) pour le descripteur de sécurité (par exemple, pour définir les ressources d'un fichier).