Vous êtes sur la page 1sur 36

Chapitre 6

Sécurité dans Windows NT

IFT-6271 115
Sécurité sous Windows NT
• Gestion de connexions réseaux
• Conformité au standard POSIX
• Certificat de classe C2 (livre Orange) accordé à la version
3.51, pour une configuration sans réseau
• La sécurité sous Windows NT est plus orientée vers les
sujets que pour un système comme Unix.
Spécifique Générique
Complexe Simple
Emphase sur les usagers Emphase sur les données

Orienté-personne Orienté-machine
IFT-6271 116
Architecture de la sécurité
• Mode usager (anneau 3) versus mode noyau (anneau 0):
– Les services de base, incluant l'exécutif Windows NT, exécute en
mode noyau.
– Un programme usager appelle une fonction de l'API pour invoquer
un service du SE.
– Les transferts de contexte et les transitions du niveau 3 au niveau 0
sont pris en charge par le service d'appel de procédure locale.
• Le concept de verrou est fondamental.
– Lorsqu'un usager verrouille de façon exclusive un objet, aucun
autre usager ne peut y accéder.
• Données du SE emmagasinées dans un format propriétaire.
– Requiert des programme intermédiaires pour y accéder
• La conception de Windows NT est orientée-objet.
– Contrairement à Unix où toutes les ressources sont des fichiers
– Spécialement en ce qui a trait au contrôle d'accès.
IFT-6271 117
Sous-système de sécurité
• Arbitre de référence de sécurité (noyau)
– En anglais, Security Reference Monitor
– En charge du contrôle d'accès
• Autorité locale de sécurité (usager)
– En anglais, Local Security Authority
– Vérifier le compte de l'usager lors du "login" et crée pour lui un
jeton d'accès au système (SAT en anglais)
– Aussi responsable des fonctions d'audit
• Gestionnaire de sécurité des comptes (usager)
– En anglais, Security Account Manager
– Entretient la base de données des comptes usager
– Authentifie l'usager pour le compte du LSA
• Processus de "login" (usager)
– En anglais, Login Process
– Supervise l'authentification d'un usager
IFT-6271 118
Base de registre
• Base de données centrale pour les données de configuration
– Remplace la multitude de fichiers INI sous Windows 3.x
• Organisé en structure hiérarchique
– Une valeur est formée d'une paire (nom, donnée).
– Une clé peut contenir 0, 1 ou plusieurs valeurs.
– La racine ne contient que des clés et ces clés sont appelées ruches.
• HKEY_CLASSES_ROOT
• HKEY_CURRENT_USER
• HKEY_LOCAL_MACHINE
• HKEY_USERS
• HKEY_CURRENT_CONFIG
• HKEY_DYN_DATA
• Chaque ruche possède un journal d'audit qui enregistre les
modifications aux clés et valeurs dans la ruche.
IFT-6271 119
Base de registre (2)
• L'intégrité de la base de registre doit être protégée.
– Sinon, le système risque de ne plus démarrer!
– Un adversaire pourrait modifier une valeur qui lui donnerait des
droits d'accès non autorisés (ex: chemin de recherche).
• Seuls les outils du système peuvent y accéder:
– regedit.exe = Éditeur de la base de registre
– Impose un contrôle sur l'accès aux clés et valeurs.
– Si on veut interdire l'accès à la base de registre aux usagers, la
première chose à faire est d'effacer ce programme.
– Cependant, un usager astucieux peut concevoir son propre outil
pour éditer le contenu de la base de registre, contournant aussi le
contrôle d'accès imposé par regedit.exe.

IFT-6271 120
Base de registre (3)
• 2 niveaux de protection
– Contrôle d'accès via l'éditeur REGEDIT
– Contrôle d'accès sur les fichiers
• SYSTEM.DAT Ruches partagées par tous les usagers
• USER.DAT Ruche de l'usager
• Permissions définies dans REGEDIT
– Utilisent les groupes prédéfinis tels que Administrateurs, Système,
Utilisateurs, Créateur/Propriétaire, Tous.
– Les permissions possibles:
• Lecture seulement
• Accès libre
• Accès spécial, selon une liste

IFT-6271 121
Base de registre (4)
• Une liste typique d'accès spécial pourrait inclure:
– Consulter une valeur
– Modifier une valeur
– Créer une sous-clé
– Énumérer les clés
– Notification d'audit
– Créer un lien symbolique sur une clé
– Détruire une clé
– Modifier la liste de contrôle accès d'une clé
– Devenir propriétaire
– Lire les informations de sécurité d'une clé

IFT-6271 122
Base de registre (5)
• Permissions recommandées pour chaque ruches:
– HKEY_LOCAL_MACHINE
• Information sur l'ordinateur, le matériel et le SE
• Administrateurs, Système: Accès libre
• Tous: Lecture
– HKEY_CLASSES_ROOT
• Association de fichiers, définitions de classe OLE et DDE
• Administrateurs, Système: Accès libre
• Tous: Lecture
– HKEY_CURRENT_USER
• Profil de l'usager courant
• Administrateurs, Système, Usagers: Accès libre
– HKEY_USERS
• Profil de tous les usagers installés sur le système
• Administrateurs, Système, Usagers: Accès libre
IFT-6271 123
Base de registre (6)
• De plus, la ruche HKEY_LOCAL_MACHINE contient des
sous-clés en rapport avec la sécurité:
– HKEY_LOCAL_MACHINE\SAM
• Base de données des comptes et des groupes
– HKEY_LOCAL_MACHINE\Secure
• Information sur la politique de sécurité locale
– HKEY_LOCAL_MACHINE\Software\Microsoft\RPC
• Appel de procédure distante
– HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\
CurrentVersion
• Permissions recommandées pour ces clés
– Administrateurs, Système, Créateur/Propriétaire: Accès libre
– Tous: Spécial (Consulter une valeur, Énumérer les clés,
Notifications, Lire les informations de sécurité)
IFT-6271 124
Base de registre (7)
• En modifiant un de ces clés, un adversaire peut modifier le
comportement du système d'exploitation:
– En faisant exécuter un programme pirate à la place d'une
composante du système (ex: DLL)
– En faisant pointer une référence vers un fichier de sécurité vers un
autre fichier (ex: SAM)
– En désactivant certains protections
• Qu'arrive-t-il si une clé n'existe pas?
– Par exemple, la clé suivante permet aux usagers et groupes réseaux
d'accéder à la base de registre
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\
SecurePipeServers\Winreg
– Si elle existe, elle sera consultée pour arbitrer l'accès distant.
– Si elle n'existe pas, l'accès distant sera considéré comme local.

IFT-6271 125
Identification et authentification
• Pour authentifier un usager, Windows NT utilise un nom
d'usager et un mot de passe.
– Il y a en fait 2 mots de passe pour chaque usager:
• Un pour Windows NT
• Un pour le gestionnaire de réseau local
– Les mots de passe sont conservés chiffrées dans le SAM.
– Un filtre peut être appliqué sur le choix des mots de passe par les
usagers. Le filtre fourni par défaut impose les restrictions
suivantes:
• Les mots de passe doivent contenir au moins 6 caractères.
• Ils doivent contenir 3 des 4 types de caractères: lettres minuscules,
lettres majuscules, chiffres, ponctuation.
• Ils ne doivent pas contenir une partie du nom de l'usager.

IFT-6271 126
Login
• La fenêtre de "login" est invoquée par la séquence
d'attention sécurisée CTRL+ALT+DEL.
– Cette séquence génère un appel aux routines de bas niveau de
Windows NT qui ne peuvent être répliquées par un programme
d'usager.
– On devrait toujours taper CTRL+ALT+DEL pour s'authentifier à
l'ordinateur, pour déjouer les attaques de mascarade.
– Cependant, il est possible de construire un programme DOS qui
simule cette fenêtre.
• Dans la fenêtre de "login", l'usager est invité à taper son
nom d'usager et son mot de passe.

IFT-6271 127
Login (2)
• Que se passe-t-il ensuite?
– Le nom d'usager et le mot de passe est transmis à l'autorité locale
de sécurité (LSA).
– Le LSA appelle ensuite un service d'authentification, qui compare
le nom et le mot de passe avec les valeurs contenues dans la SAM.
– S'il y a correspondance, l'identificateur de sécurité de l'usager (en
anglais SID) et de chaque groupe auquel il fait partie est retourné
par la SAM.
– Le service d'authentification crée une session de "login" et remet
cette session et les SID au LSA.
– Le LSA crée un jeton d'accès au système (SAT), contenant les SID
et les droits d'accès de l'usager.
– Le SAT est ensuite attaché au processus de "login" démarré par le
sous-système Win32. Ce processus sera le sujet pour toute requête
d'accès.
IFT-6271 128
Login (3)
• Si l'authentification locale échoue,
– Une requête sera envoyée sur le réseau pour un service
d'authentification alternatif.
– Si toutes les tentatives d'authentification échouent, alors l'usager
recevra un message d'erreur.
• Login interactif = service d'authentification local
• Login réseau = protocole d'authentification réseau
• Il est possible de contourner l'API du SAM et de lire
directement les mots de passe chiffrés.
– PWDump est un programme utilisé sur les systèmes à login
unique, partageant les mots de passe avec un système Unix.
– Ne permet pas d'obtenir les mots de passe déchiffrés!!!

IFT-6271 129
Domaines
• Sur une station de travail NT, un usager = un compte.
– Si on a plusieurs stations, il faudrait dupliquer chaque compte
d'usager sur chaque station.
• Un domaine est une collection de stations de travail qui
partagent une base de données de comptes d'usager et une
politique de sécurité communes.
– Plutôt que de définir un compte sur chaque machine, on le définit
une fois dans un domaine.
– La base de données des comptes d'usager est contenu dans un
serveur NT appelé contrôleur primaire de domaine.
– Une copie est maintenue dans un contrôleur de relève.
– Une station peut maintenir une base de données d'usagers locale et
faire partie d'un domaine. Dans ce cas, on devra distinguer un
usager local d'un usager global.

IFT-6271 130
Comptes d'usager
• Un compte d'usager est gérée grâce à un outil dédié. Il
contient les éléments suivants:
– Nom d'usager
– Nom complet de l'usager (nom et prénom)
– Mots de passe + politiques
– Heures permises de "login" et travail
– Profil d'usager (groupes, connexions, couleurs d'écran, etc.)
– Script de "login"
– Répertoire de départ
– Type de compte (global versus local)
– Date d'expiration

IFT-6271 131
Identificateurs de sécurité
• Chaque compte d'usager, de groupe et de machine possède
un identificateur de sécurité (SID) unique qui sert à arbitrer
les requêtes d'accès.
• Ce SID est alloué lors de la création du compte est reste
fixé pour toute la durée de vie du compte.
– Il est généré de façon pseudo-aléatoire, ce qui fait qu'un compte
effacé, puis recréé n'obtiendra pas le même SID et n'aura pas les
mêmes droits.
• Quand un domaine est créé, un SID est aussi créé.
– De plus, chaque machine qui se joint au domaine reçoit un SID
dérivé du SID du domaine.
– Ceci rend problématique les déplacements d'une machine d'un
domaine vers un autre...

IFT-6271 132
Accès aux objets
• Le contrôle d'accès discrétionnaire sur un objet dépend du
type de l'objet.
– Ex: Un fichier n'aura pas les mêmes droits qu'une queue
d'impression.
• L'accès aux objets est contrôlé par des permissions
accordés aux sujets.
• Chaque objet contient un descripteur de sécurité:
– Le SID du propriétaire de l'objet
– Le SID du groupe (seulement utilisé par le sous-système POSIX)
– La liste de contrôle d'accès (ACL)
– La liste de contrôle d'accès système (SACL), contrôlant les
message d'audit qui devront être générés.

IFT-6271 133
Contenu d'un ACL
• Une entrée de liste de contrôle d'accès (ACE) pour un sujet
ou un groupe peut être:
– Accès Interdit : Consulté en premier
– Accès Accordé : Contient une liste de permissions
– Audit Système : Contient une liste d'actions à journaliser
• Il existe des permissions communes à tous les objets:
– Write_DAC Modifier les "Accès Interdit" et "Accès Accordé"
– Read_Control Accorder/refuser la lecture du descripteur de
sécurité
– Delete Accorder/refuser/détruire les permissions sur un
objet

IFT-6271 134
Arbitrage de l'accès
• Le type d'opération, le SAT du sujet et l'ACL de l'objet sont
utilisés pour arbitrer toute requête d'accès.
– Un masque d'accès désiré est construit en fonction de l'opération.
– S'il n'y a pas d'ACL, alors l'accès est accordé automatiquement.
– Si le SID du sujet est couvert par une des ACE spécifiant un Accès
Interdit,
• Si le masque d'accès désiré contient Read_Control ou Write_DAC et
le sujet est le propriétaire de l'objet, l'accès est accordé.
• Sinon, l'accès à l'objet est refusé.
– Si une combinaison d'ACE spécifiant un Accès Accordé couvrant
chacune le SID du sujet remplit toutes les permissions du masque
d'accès désiré, alors l'accès est accordé.
– Sinon, l'accès est refusé.
– Donc, un ACL vide interdit l'accès à tous, alors qu'un ACL absent
accorde l'accès à tous.
IFT-6271 135
Arbitrage de l'accès
• Voici un exemple,
– L'usager local duconj fait partie des groupes suivants:
• Tous (comme tous les usagers)
• Interactif (comme tous les usagers locaux)
• Développeurs (un nouveau groupe)
– Si le fichier projet.c a l'ACL suivant:
• Accès Interdit: Comptables, pasrapport
• Accès Accordé:
– Interactif: Lecture seulement
– Développeurs: Écriture seulement
– On peut conclure que:
• duconj peut lire et écrire dans projet.c.
• Tout autre usager local peut lire seulement projet.c.
• pasrapport ne pourrait accéder à l'objet, même s'il faisait partie des
groupes Interactif ou Développeurs.
IFT-6271 136
Système de fichiers NTFS
• Les permissions de base sont:
– lecture (R)
– écriture (W)
– exécution (X)
– destruction (D)
– modification des permissions d'accès (P)
– devenir propriétaire (O)
• Les permissions pour les fichiers sont:
– Aucun accès
– Lecture (RX)
– Modification (RWXD)
– Accès complet (toutes les permissions de base)
– Accès spécial (toute combinaison des permissions de base)

IFT-6271 137
Système de fichiers NTFS (2)
• Les permissions pour les répertoires sont:
– Aucun accès
– Énumération (RX)
– Lecture (RX)
– Ajout (WX)
– Ajout et Lecture (RWX)
– Modification (RWXD)
– Accès complet (toutes les permissions de base)
– Accès spécial aux répertoires (toute combinaison des permissions
de base)
– Accès spécial aux fichiers (toute combinaison des permissions de
base)

IFT-6271 138
Système de fichiers NTFS (3)
• Si un fichier est déplacé d'un répertoire à un répertoire, il
conserve ses permissions.
• Si un nouveau fichier est créé, ou s'il est copié d'un autre
répertoire, il hérite des permissions du répertoire de
destination.
• Un usager ayant la permission d'effacer pour un répertoire
peut effacer n'importe quel fichier dans ce répertoire, donc
n'a pas besoin d'avoir le droit d'effacer pour ce fichier.
• Les évènements susceptibles d'être audités sont ceux qui
sont décrits par les permissions de base. L'administrateur
peut choisir les évènements qui seront audités.

IFT-6271 139
Groupes d'usagers
• Un groupe est une collection de comptes d'usager.
• Les membres d'un groupe hérite de toutes les permissions
accordées à ce groupe.
– Cependant, il est possible de retrancher des permissions à un ou
plusieurs membres d'un groupe.
• Les groupes globaux sont définis au niveau du domaine,
alors que les groupes locaux sont définis sur la station de
travail seulement.
– Un groupe global ne peut contenir que des usagers, alors qu'un
groupe local peut inclure des groupes globaux.
– Ceci offre un contrôle à 2 niveaux sur l'accès à des ressources
locales (ex: imprimante).

IFT-6271 140
Groupes d'usagers (2)
• Voici un exemple de structure de groupes d'usagers:

Éléphant Lion Alice Adélie Humboldt

Loup Magellan
Bob Groupes
Phoques Pingouins
globaux

Aucun accès Groupes


Nord Sud
locaux

RWXD RW X RWX RW Aucun accès

IFT-6271 141
Droits des usagers
• Contrairement aux permissions, les droits d'un usager ne
contrôle pas l'accès aux objets.
• Ils spécifient plutôt ce qu'un usager a le droit de faire au
système d'exploitation. Par exemple:
– Faire des back-up et les restaurer
– Devenir propriétaire
– Contourner la vérification du chemin
– Changer l'heure du système
– Forcer une fermeture du système
– Augmenter les priorités des processus
– Charger/décharger un pilote de périphérique
– Gérer les journaux d'audit

IFT-6271 142
Groupes prédéfinis
• Les groupes globaux suivants sont prédéfinis:
– Administrateurs du Domaine
– Usagers du Domaine
– Invités du Domaine
• Les groupes locaux suivants sont prédéfinis:
– Administrateurs
– Usagers
– Usagers Avertis (Power Users)
– Invités
– Opérateurs de Back-up
– Opérateurs de Serveur
– Opérateurs de Comptes
– Opérateurs d'Imprimantes

IFT-6271 143
Groupes prédéfinis (2)
• Certains groupes spéciaux sont prédéfinis:
– Tous
– Interactif (Usagers connectés localement)
– Réseau (Usagers connectés via le réseau)
– Système (Système d'exploitation)
– Créateur/Propriétaire
• Quelques notes
– Les membres du groupe Administrateurs n'ont pas
automatiquement le privilège du super-usager, donnant accès libre.
– Certains groupes prédéfinis ont des droits qui leur permettent de
contourner les permissions. (ex: Opérateurs de Back-up)
– Un administrateur du système devrait être membre du groupe
Administrateurs du Domaine, et ce groupe devrait être membre du
groupe Administrateurs (locaux).
IFT-6271 144
Relations de confiance
• Dans une grande organisation, il devient utile d'ajouter des
niveaux intermédiaires de contrôle.
– Séparation des usagers et des ressources en plusieurs domaines
– Comment faire communiquer les domaines entre eux?
• Dans une relation unidirectionnelle de confiance, il y a:
– un domaine de confiance
– un domaine faisant confiance
• Propriétés d'une telle relation de confiance
– Les comptes d'usager définis dans le domaine de confiance
deviennent valides sur le domaine faisant confiance.
– Non réflexive (A ~ B n'implique pas que B ~ A)
– Non transitive (A ~ B et B ~ C n'implique pas que A ~ C)

IFT-6271 145
Relations de confiance (2)
• Comment établir une relation de confiance A ~ B?
– L'administrateur de A crée un compte de confiance inter-domaine,
spécifiant le nom du domaine B et un mot de passe qu'il choisit.
– Le mot de passe est transmis à l'administrateur du domaine B.
– La LSA du domaine B crée un objet de domaine de confiance,
contenant le nom et le SID du domaine A, et un objet secret
contenant le mot de passe reçu précédemment.
– La LSA du domaine B essaie alors de se connecter sur le domaine
A utilisant le compte inter-domaine. Cet essai échouera, mais le
message d'erreur indiquera au LSA que ce compte existe.
– La LSA du domaine B extrait l'information sur les contrôleurs du
domaine A pour pouvoir traiter les requêtes d'accès venant de A.
– Le mot de passe partagé entre A et B est maintenu mis à jour
régulièrement par le PDC de B. Ce mot de passe sera utilisé pour
protéger les communications lors de l'authentification d'usagers.
IFT-6271 146
Relations de confiance (3)
• Voici un exemple:
EMPLOYÉS IMPRIMANTES
IMPRIMANTES EMPLOYÉS
"SID"
Mot de passe
duconj

zazouc Imprimantes
Graphistes
couleurs
bunnyb

comptable
Imprimantes
récep Gestionnaires
noir et blanc

IFT-6271 147
Profils obligatoires
• Le profil d'un usager définit son environnement de travail,
en particulier les programmes qu'il peut exécuter.
• L'administrateur peut imposer des restrictions sur la
capacité de l'usager à modifier son environnement:
– EditLevel (capacité de modifier les raccourcis et groupes)
– NoClose
– NoFileMenu
– NoRun
– NoSaveSettings
– Restrictions
– ShowCommonGroups

IFT-6271 148
Audit
• Windows NT conserve un journal d'audit dont les entrées
sont générés par l'arbitre de référence.
• Lorsque le journal d'audit atteint sa taille maximale,
Windows NT nous offre 3 options:
– Effacement des entrées les plus vieilles
– Effacement des entrées plus vieilles que [] jours
– Pas d'effacement automatique, impliquant une gestion manuelle
• Pour les 2 dernières options, il est possible de forcer l'arrêt
du système lors que le journal est plein, ajoutant cette
valeur dans la base de registre (requis pour niveau C2):
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa
Name: CrashOnAuditFail
Type: REG_DWORD
Value: 1

IFT-6271 149
Sécurité des DLL
• Les librairies liées dynamiques (DLL) sont des modules
liés à des programmes au moment de leur exécution.
– Le code exécutable du DLL s'exécute avec les droits du
programme appelant, en faisant une excellente plate-forme pour
les Chevaux de Troie.
• Lorsqu'un programme requiert un DLL, il peut le chercher:
– dans le répertoire où se trouve le programme
– dans le répertoire du système (C:\WINNT\SYSTEM32)
– dans le répertoire de travail, c'est-à-dire le répertoire courant au
moment de l'appel du programme
• Les 2 premiers endroits peuvent être protégés des
modifications non autorisés.
– Cependant, si le DLL est pris du répertoire de travail, il pourrait
être remplacé par un autre DLL se déguisant comme lui.
IFT-6271 150

Vous aimerez peut-être aussi