Sécurité des systèmes d'information Sécurité Windows ENSIIE 31 mai 2013 Julien Raeis <julien [at] raeis.fr> Ou sur irc.iiens.net!
Plan de cours 1. Les systèmes Windows 2. Produits et architectures Microsoft 3. Modèle de sécurité 4. Services 5. Authentification 6. Protocoles réseau et RPC 7. Système de fichiers 8. Registre 9. Mises à jour
Les systèmes Windows
Les familles de Windows Deux grandes familles : Famille «historique» (basée sur MS-DOS) : Windows 95, 98, Me Famille NT (New Technology) : Windows NT, 2000, XP 2003 / 2003 R2 Vista 2008 / 2008 R2 7, 8 Windows est un système très complexe et relativement peu documenté, même si Microsoft fait de plus en plus d'efforts (pas de troll, merci).
Génération MS-DOS La période DOS PC-DOS 1.00 : 12/08/1981 MS-DOS 3.05 : 11/1984... Jusqu'à MS-DOS 6.22 : 11/03/1994 «Windows» Windows 1.0 : 20/11/1985 Windows 2.0 : 09/12/1987 Windows 3.1 : 22/05/1990 Windows for Workgroups 3.11: 08/11/1993 Rassemblement des 2 branches : Windows 95 (MS-DOS 7.0) : 24/08/1995
Windows, autour de l'an 2000 «Famille» Windows 98 Windows 98 : 25/06/1998 Windows 98 SE : 05/05/1999 Windows Me 14/09/2000 Windows NT : Windows NT 3.5 : 21/09/1994 Windows NT 4.0 : 24/08/1996, Les années 2000 (Windows NT 5) Windows 2000 : 17/02/2000 Windows XP : 25/10/2001 Windows Server 2003 : 24/04/2003 Windows Server 2003 R2 : 01/02/2006
Windows, les nouvelles générations Windows NT 6 Côté client : Windows Vista : 30/01/2007 Windows 7 : 22/07/2009 Windows 8 : 26/10/2012 Côté serveur : Windows Server 2008 : 04/02/2008 Windows Server 2008 R2 : 22/07/2009 Windows Server 2012 : 04/09/2012 Uniquement disponible en version 64 bits
Windows NT Système d'exploitation basé sur l'architecture i386 et gérant : Segmentation / pagination Adressage virtuel Multi-tâches préemptif Privilèges (rings 0/3) Fonctionne aussi sur d'autres architectures matérielles : x86, Alpha, PowerPC et MIPS à l'origine Actuellement : x86 (sauf Server 2008 R2) x86_64 : XP (sauf SP3), 2003, 2008, Vista et 7 Itanium : 2003 et 2008
Sous-systèmes Trois sous-systèmes disponibles jusqu'à XP : Win32 : toujours disponible POSIX : remplacé par : Windows Services for Unix Windows Subsystems for Unix-based Applications (SUA) OS/2 : émulé maintenant
Réseau Beaucoup de protocoles implémentés : TCP/IP, IPX SMB/CIFS (avec NetBIOS/NbT) RPC LDAP Kerberos DNS, DHCP, NTP, SNMP upnp WinHTTP Pas de notion de port «privilégié» (< 1024)
Ports par défaut Quelques services «par défaut» sur un système Windows : RPC Portmapper : 135/tcp NetBIOS : 137/tcp, 138/udp, 139/tcp CIFS : 445/tcp Remote Desktop : 3389/tcp Contrôleur de domaine : DNS : 53/udp et 53/tcp Kerberos : 88/tcp LDAP : 389/tcp
Produits et architectures Microsoft
Notion de domaine Les systèmes Windows sous souvent regroupés en réseau En groupe de travail (Workgroup) Ou plus souvent en domaine basé sur un Active Directory (LDAP) Intérêt des domaines Authentification et contrôle d'accès centralisé Partage des ressources Accès à une architecture unifiée
Active Directory et domaines Contrôleur de domaine Elément central d'un domaine Possède au moins un service Active Directory Annuaire de type LDAP Basé sur DNS pour la résolution de noms Centralise l'authentification dans une base de comptes Permet une architecture redondante Un domaine peut être considéré comme un espace de nommage
Group Policy Objects (GPO) Les domaines offrent la possibilité de déployer des politiques de sécurité sur l'ensemble des membres d'un domaine Dans un contexte «machine», pour chaque système Dans un contexte «utilisateur», pour chaque profil Permet notamment Le durcissement de certaines options de sécurité Le déploiement de logiciels Ces mesures ne sont pas contournables localement et sont imposées par le domaine
Autres éléments De nombreuses «briques» peuvent trivialement se greffer à un domaine AD Messagerie (Exchange chez Microsoft) Partage de fichiers (SMB/CIFS) Annuaire (LDAP) Authentification pour les briques applicatives : IIS Microsoft SQL Server Accès Internet par proxy etc.
Modèle de sécurité
Introduction : un monde objet Toutes les ressources sont des objets sous Windows Sous Windows 2000, on en recense 27 types, dont : Les fichiers (File) Les processus (Process) Les clés de registre (Key) Chaque objet possède un descripteur de sécurité «Security descriptor» ou «SD» Permet de définir des autorisations Équivalent des permissions Unix
Contexte de sécurité Une identité n'accède pas directement à un objet Seuls les processus le font... en fonctionnant sous une identité Les attributs d'autorisation sont conservés au niveau des processus dans un contexte de sécurité appelé «access token» (ou jeton de sécurité) Le jeton contient notamment les groupes (~ gid), le propriétaire (~ uid), les privilèges ainsi que le type de session
Exécution d'un processus Pour exécuter un processus, une entité s'authentifie d'abord auprès du système Mot de passe, carte à puce... Si l'authentification est OK, alors une session de connexion (logon session) est créée, définissant le contexte de sécurité Les processus sont lancés dans cette session et disposent d'un jeton de sécurité chacun On parle de «principal» pour désigner une entité qui s'authentifie Généralement se sont les utilisateurs Peut être également une machine, un service...
Pyramide des droits
Autorisation (Authorization) Quelques contraintes : Secure logon facility : les utilisateurs doivent être identifiés de manière unique après authentification Discretionary access control : un propriétaire d un objet peut décider qui peut y accéder (utilisateurs et groupes) et quelles actions sont autorisées Security auditing : traçabilité et imputabilité des actions,la consultation des journaux d audit étant réservée aux utilisateurs privilégiés
SID (Security IDentifier) Format : S-R-I-S-S-... S : caractère 'S' R : révision (actuellement toujours 1) I : identifiant de l autorité émettrice (48 bits) S : identifiant d une sous-autorité ou RID (32 bits) S : identifiant d une sous-autorité ou RID (32 bits)
SID «bien connus» Certains SID sont «bien connus» (well-known) S-1-1-0 : localhost\tout le monde S-1-3-0 : Créateur propriétaire S-1-5-X : SECURITY_NT_AUTHORITY S-1-5-4 : SECURITY_IONTERACTIVE_RID (groupe) S-1-5-11 : SECURITY_AUTHENTICATED_USER_RID (groupe) S-1-5-18 : Local System S-1-5-32-544 : Administrateurs
SID «bien connus» sous Vista et + Avec Windows Vista et + MIC (Mandatory Integrity Control) S-1-16 : SECURITY_MANDATORY Untrusted (0000) : S-1-16-0 Low (1000) : S-1-16-4096 Medium (2000) : S-1-16-8192 High (3000) : S-1-16-12288 System (4000) : S-1-16-16384 SID par services : S-1-80
SID des comptes Un SID est affecté à une machine à l'installation Les SID des comptes locaux sont composés : du SID de la machine d un RID différent pour chaque compte S-1-5-21-X-Y-Z-500 : Machine\Administrateur Les SID des comptes du domaine sont composés : du SID du domaine d un RID différent pour chaque compte
Privilèges et droits Certaines actions (actions liées au système, gestion des ressources) nécessitent d avoir un privilège pour pouvoir les réaliser Les privilèges sont accordés à des utilisateurs et des groupes. Ils sont ajoutés dans le contexte de sécurité (Token) d un utilisateur lors de sa connexion Pour pouvoir réaliser une action privilégiée, il faut : posséder le privilège dans son Token ; avoir activé le privilège. Les privilèges concernent toujours des actions locales à la machine
Privilèges critiques SeDebugPrivilege : déboguer n importe quel processus SeBackupPrivilege : lire un ficher quels que soit les droits (utilisé à des fins de sauvegarde) SeCreateTokenPrivilege : créer un Token SeAssignPrimaryTokenPrivilege : remplacer le Token d un processus SeTcbPrivilege : agir en tant que partie du système d exploitation SeTakeOwnershipPrivilege : prendre possession des fichiers et des objets avec contrôle d accès SeLoadDriverPrivilege : charger et décharger des pilotes de périphériques
Sessions de connexion (Logon sessions) Détermine qui peut accéder au système via les différentes méthodes d authentification : Interactive : connexion locale Par le réseau : connexion à un système distant En tant que service : par les services Terminal Services Batch job : par le gestionnaire de services COM Une session «SYSTEM» existe également, regroupe les processus systèmes et est créée au lancement du système. Elle a tout pouvoir sur le système (+ que les administrateurs)
Contrôle d'accès des objets sécurisés De nombreux objets dans le système sont des objets sécurisés (securable object) : Fichiers et répertoires d un système NTFS Named pipes, Anonymous pipes, Mailslots Processus et threads File-mapping Clés de registre Partages réseaux Imprimantes Objets de synchronisation (events, mutexes, sémaphores, timers) Objets de l Active Directory Objets du noyau (Tokens)
Descripteur de sécurité Ces objets possèdent un descripteur de sécurité (security descriptor) définissant : le numéro de version et divers attributs le SID du propriétaire de l objet le SID du groupe primaire de l objet éventuellement des listes pour le contrôle d accès : DACL (Discretionary Access Control List) : liste définissant les droits d accès SACL (System Access Control List) : liste définissant les audits à générer lors des accès à l objet La SACL contient également les niveaux d'intégrité depuis Windows Vista
Listes ACL (DACL et SACL) Chaque ACL est constituée d ACE (Access Control Entries) composée : d un SID auquel l entrée (l ACE) s applique. Ce SID représente un utilisateur, un groupe ou une session des droits d accès le type de l ACE : Access-allowed ACE (DACL) Access-denied ACE (DACL) System-audit ACE (SACL) Mandatory label ACE (SACL)
Droits d'accès à un objet Standards (communs à tous les types d objets) : WRITE_OWNER : permet de changer le propriétaire de l objet READ_CONTROL : lire la DACL WRITE_DAC : modifier la DACL DELETE SYNCHRONIZE Spécifiques (différents pour chaque type d objets) : FILE_WRITE_ATTRIBUTES KEY_CREATE_SUB_KEY TOKEN_ADJUST_PRIVILEGES Génériques : READ, WRITE, EXECUTE, ALL
Exemple de droits pour les objets de type processus PROCESS_CREATE_PROCESS PROCESS_DUP_HANDLE PROCESS_QUERY_LIMITED_INFORMATION PROCESS_SET_QUOTA PROCESS_TERMINATE PROCESS_VM_READ PROCESS_CREATE_THREAD PROCESS_QUERY_INFORMATION PROCESS_SET_INFORMATION PROCESS_SUSPEND_RESUME PROCESS_VM_OPERATION PROCESS_VM_WRITE Si le privilège SeDebugPrivilege est activé, tous les droits sont accordés
Accès à un objet Pour déterminer si un utilisateur peut réaliser une action sur un objet sécurisé, le système confronte le Token du processus ou du thread avec le descripteur de sécurité de l objet
Remarques importantes Si un objet n a pas de DACL («null DACL»), tous les accès sont autorisés (contrôle total) à l objet Si une DACL n a pas d ACE («empty DACL»), aucun n accès n est autorisé à l objet Si aucune ACE ne s applique, il y a un refus implicite L ordre des ACEs est important : le résultat (autorisé, refusé) est celui de la première ACE qui s applique À partir de Windows 2000, la notion d héritage automatique est introduite
Exemple
Descente de droits et privilèges Être membre du groupe Administrateurs donne des droits très importants : écriture dans les répertoires Windows et Programs Files écriture dans la partie HKLM de la base de registre lecture des profils de tous les utilisateurs Ainsi que les privilèges critiques Il est donc dangereux d être identifié sous un compte membre du groupe Administrateurs (c est-à-dire avoir le SID Administrateurs dans le Token) : violation de l intégrité du système chargement de drivers
Descente de droits et privilèges Une bonne pratique est de se connecter en tant que simple utilisateur et d utiliser la commande RunAs pour effecteur les opérations privilégiées Si l utilisateur est membre du groupe Administrateur, il est possible de descendre ses droits et privilège en utilisant : la commande RunAs pour changer d utilisateur la fonction «Protéger mon ordinateur et mes données» des programmes tels que PsExec l ou DropMyRights
Access tokens Il existe deux types de jetons de sécurité : primary token : crée en règle générale par le système et assigné aux processus impersonation token : permet de représenter un contexte de sécurité différent (généralement celui d un client) afin d être assigné aux threads dans le cas de l impersonation
Primary token Fonctionnement usuel Le Primary Token est créé par : l'authentification d un utilisateur (LogonUser) la restriction d un Token existant (CreateRestrictedToken) Ce Token est ensuite assigné à un nouveau processus, opération qui nécessite le privilège SeAssignPrimaryTokenPrivilege (sauf dans le cadre d un jeton de type restreint) Par défaut, chaque processus fils créé hérite d une copie du Token de son père
Client Impersonation Un thread peut changer son contexte de sécurité (Token) ce qui permet : de modifier son contexte ou ses droits sans affecter ceux du processus de prendre une autre identité Ce mécanisme est principalement utilisé par les services de type serveur pour emprunter l identité des clients : les accès aux objets sécurisés sont alors effectués dans le contexte du client distant
Services
Types de services Il y deux types de services Windows : Service applicatif (service application) : programme offrant une interface spécifique géré par le SCM (Service Control Manager) Pilote (driver service) : fichier au format pilote de périphériques (format natif) Le mot «services» fait généralement référence aux services applicatifs Un service applicatif est un programme s exécutant en tâche de fond. Il est généralement lancé (démarré) à l initialisation du système (avant même la connexion d un utilisateur)
SCM C est le SCM (Service Control Manager) qui est chargé de la gestion des services : gestion de la base des services installés ajout/suppression/configuration des services verrouillage de la base démarrage (automatique/manuel) et arrêt des services gestion de l exécution des services (liste des services actifs...) Accessible par la commande sc.exe ou par la console services.msc
Identité des services Un service est un programme s exécutant en tâche de fond, même si un utilisateur n est pas connecté Il faut désactiver les services inutiles Un service s exécute sous un compte utilisateur et dans son contexte de sécurité : LocalSystem NetworkService (à partir de XP) LocalService (à partir de XP) Spécifique (exemple : IIS, SQL Server, ) Compte du domaine ou local quelconque...
LocalSystem (NT AUTHORITY\SYSTEM) Pseudo-compte très privilégié Comprend les SID : NT AUTHORITY\SYSTEM BUILTIN\Administrators Utilise le profil HKEY_USERS\.DEFAULT, mais possibilité de changement d identité Ne peut pas s authentifier à distance (contexte NULL soit anonyme) Beaucoup de privilèges, en particulier : BACKUP, CREATE_TOKEN, DEBUG, LOAD_DRIVER, TAKE_OWNERSHIP, TCB
NetworkService (NT AUTHORITY\NETWORK SERVICE) Compte restreint disponible à partir de XP Utilise le profil HKEY_USERS\S-1-5-20 S authentifie avec le compte de l ordinateur lors des authentifications distantes Peu de privilèges : AUDIT, CHANGE_NOTIFY, UNDOCK Ceux de Utilisateurs et Utilisateurs authentifiés
LocalService (NT AUTHORITY\LOCALSERVICE) Compte restreint disponible à partir de XP Utilise HKEY_USERS\S-1-5-19 Ne peut pas s authentifier à distance (contexte NULL soit anonyme) Peu de privilèges : AUDIT, CHANGE_NOTIFY, UNDOCK Ceux de Utilisateurs et Utilisateurs authentifiés
Service Host Process (svchost.exe) C est un hébergeur de services pour ceux implémentés dans une bibilothèque (DLL) Plusieurs instances peuvent tourner simultanément Liste des groupes de services : HKLM\Software\Microsoft\WindowsNT\CurrentVersion\Svchost DLL d exécution : HKLM\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters (ServiceDll)
Authentification
Formes d'authentification Deux formes d'authentification : Locale auprès d'un système («Interactive Authentication») Utilise une base de comptes locale Pas de protocole réseau mis en jeu Distante («Non-interactive authentication») La base de compte peut être celle d'un domaine ou locale à la cible de l'authentification Mise en oeuvre d'un protocole d'authentification
Authentification locale Permet de valider les demandes d'authentification auprès d'un système Cadre d'utilisation : Authentification des utilisateurs Authentification des comptes de services Création de la session d'authentification de la machine Validation de l'authentification par LSASS LSASS <=> Local Security Authority Subsystem Service Service lsass.exe, omniprésent dans la sécurité du système
«Security Account Manager» Base SAM Sert à l'authentification locale uniquement Fichier contenu dans %windows%\system32\config\sam Contient : Le RID Le nom de connexion Le nom complet Des commentaires Empreintes LanMan et NTLM
Session de connexion (logon session) Pour chaque authentification réussie, une session de connexion est créée La base des sessions de connexion est gérée par LSASS Une session représente le contexte d'authentification et est composée : D'un identifiant unique de session (loginid) Du nom du domaine et du nom de l'utilisateur De l'identifiant de sécurité (SID) de l'utilisateur Du nom de l'ap (authentication package) ayant validé et créé la session Du type de session (interactive, réseau, service, etc.) Evéntuellement de «credentials» associés
AP fournis en standard Msv1_0 (msv1_0.dll) Authentification locale (par la base SAM) Authentification dans un domaine type pre-windows 2000 Kerberos (à partir de Windows 2000) Authentification dans un domaine Active Directory via le protocole Kerberos
Msv1_0 Validation du compte par comparaison avec un mot de passe stocké localement Le mieux est d'utiliser des empreintes de mot de passe, non réversibles (hash) ou condensats Deux formes sous Windows : LM (hash LM Lan Manager) NTLM (hash NTLM ou hash NT) Génération des empreintes à partir du mot de passe fourni, puis comparaison avec celles présentes dans la base SAM et gérées par le service SamSs
Empreintes LM
Faiblesses de LM Limité à 2x7 soit 14 caractères Alphabet réduit : Majuscules Chiffres Ponctuation 32 caractères spéciaux Utilisation de DES Pas de graine
Empreinte NTLM
NTLM 255 caractères (limite à 14 par certaines interfaces...) Alphabet complet, codage en Unicode Basé sur la fonction MD4 Pas de graine
Comptes de service Processus de validation identique pour un compte de service que pour une session interactive Mot de passe n'est pas donné interactivement mais récupéré dans les «secrets» de la LSA Les «secrets» de la LSA sont des structures du processus LSASS contenant des informations d'authentification L'entrée correspond au nom du service préfixé par _ SC _
Contexte «machine» Chaque système dispose d'un compte de type «machine» dans l'annuaire d'un domaine (machine$) Sur le système local, le mot de passe stocké dans les secrets de la LSA, sous l'entrée $MACHINE.ACC Authentifiants sont utilisés lors de la création d'une session d'authentification de l'entité NETWORK SERVICE (ou SYSTEM éventuellement) Possible de s'authentifier auprès de tout système membre du domaine avec un compte d'une machine
Authentification à distance (non-interactive authentication) Permet de s'authentifier à distance avec un protocole d'authentification Plusieurs formes possibles Clair Défi/réponse (challenge/response) Formes avancées (dérivation...) Généralement, on utilise un protocole permettant de ne pas dévoiler les authentifiants en clair
Implémentation Authentifications non-interactives générées et validées par LSASS par un SSP (Security Support Provider) Par exemple, protocoles LM/NTLM, qui sont des mécanismes historiques pour authentifier les utilisateurs à distance LM toujours activée par défaut jusqu'à 2003 par compatibilité avec les anciens systèmes Mais LM est basé sur le condensat LM... Condensat NTLM utilisé par : NTLM, NTLM2, NTLMv2 Principe du défi/réponse
Kerberos Introduit par Windows 2000 Standard du MIT, donc indépendant de Microsoft et implémenté dans beaucoup d'autres systèmes, notamment Unix L'implémentation de Windows 2000 s'inspire de la version 5 MIT mais y ajoute des extensions Trois services : Authentication service (AS) qui délivre : Un Ticket Granting Ticket (TGT) Une logon session key Ticket-Granting Service (TGS) qui délivre : Un service ticket Une service session key Client/Server (CS) Service qui présente les tickets d'un client pour un service
Comparaison NTLM / Kerberos LM/NTLM Kerberos Type de crypto Symétrique Symétrique Plates-formes Toutes 2K, XP, 2K3 et + Montée en charge Faible Elevée Authentification mutuelle NON (sauf v2) Option Délégation supportée NON OUI Support carte à puce NON Extensions Standard Microsoft IETF
Utilisation de Kerberos Utilisation complètement transparente pour l'utilisateur Les logiciels doivent utiliser le SSP Kerberos Les clients l'utilisant en standard sont : CIFS/SMB DFS LDAP IPsec / QoS Web via IE / IIS 5 RPC
Faiblesses Kerberos Peu de faiblesses connues Les clés de session sont supposées être résistantes LM/NTLM Faiblesse cryptographique des empreintes Les protocoles utilisent directement les empreintes... possible d'utiliser l'attaque dite «Pass-the-hash» qui ne nécessite même plus d'avoir le mot de passe pour l'authentification...
GSSAPI «Generic Security Services Application Programming Interface» Bibilothèque d'authentification : Définit une API pour l'authentification entre un client et un serveur Définit la structure des échanges réseau (Token au format ASN1) Fait appel à des Security Mechanisms pour l'implémentation des mécanismes d'authentification
SPNEGO «Simple and Protected GSSAPI Negotiation MEchanism» Pseudo-mécanisme proposé par GSSAPI Permet la négociation des mécanismes supportés entre un client et un serveur SSP Microsoft : NTLM Kerberos Negotiate Wdigest (défi/réponse basé sur MD5 pour HTTP) Secure Channel (Schannel) Credential Security Support Provider (CredSSP)
Accès anonymes Par compatibilité, il est possible de récupérer des informations à distance sans être authentifié Fonctionnalité maintenant inutile, mais toujours activée dans certaines configurations de base Canal nommé wkssvc (station de travail) Nom de la machine, utilisateur connectés Srvsvc (Serveur) Partages offerts Sessions en cours Lsaprc (alias de lsass) : Noms de la machine, du domaine et de la forêt membre, SID associés Samr (alias de lsass) Informations sur le domaine, politiques de sécurité (mots de passe, verrouillage) Informations sur les utilisateurs
Restriction Sur Windows NT 4 SP3 et Windows 2000 HKLM\SYSTEM\CurrentControlSet\Control\LSA\RestrictAnonymous 0 : se baser sur les autorisations par défaut 1 : énumération des comptes et partages impossible 2 : aucun accès avec une authentification anonyme À partir de Windows XP, les accès anonymes sont restreints par défaut Les droits d énumération sont définis par le paramètre : Accès réseau : Ne pas autoriser l énumération anonyme des comptes et partages SAM Paramètres supplémentaires : Accès réseau : ne pas autoriser l énumération anonyme des comptes SAM Accès réseau : Permet la traduction de noms/sid anonymes
CryptoAPI «Cadre d'appel» englobant les modules cryptographiques de Windows, appelés CSP (Cryptographic Service Provider) Les CSP implémentent les fonctions cryptographiques et protègent les clés privées Implémentent RSA, AES, DH... CryptoNG à partir de Windows Vista
Protocoles réseau CIFS/SMB et RPC
SMB/CIFS Protocoles de gestion intégrés à Windows SMB : protocole très ancien permettant le partage de fichiers «Server Message Block» Plusieurs implémentation existent (SAMBA) Celle de Microsoft est la plus utilisée Basé sur NetBIOS à l'origine jusqu'à Windows 2000 Ports 137/tcp, 139/tcp et 138/udp Services «Browser» et «LmHosts» Accessible directement sur le port 445/tcp depuis Windows 2000 Renommé en CIFS («Common Internet File System»)
SMB v2 / SMB v2.1 Version introduite à partir de Vista/2008 (2.0) ou Windows 7/2008 R2 (2.1) Nombreux changements : Changement du format des paquets Performance Sécurité (signature des échanges) Simplification (passage de 100 à environ 20 commandes) Support des liens symboliques...
Partages de fichiers Nommage : «Universal Naming Convention» ou UNC \\ MACHINE \ Partage \ Chemin \ vers \ fichier Machine : nom de la machine '.' : machine locale Nom NetBios Adresse IP ou FQDN Partage : nom du partage C$, ADMIN$, répertoire IPC$
Communications IPC Deux types de canaux : Anonymes : communications entre 2 processus sur une machine Nommés (named pipes) Communication entre 2 processus sur 2 machines différentes Nom de partage SMB : (insensible à la casse) \\ServerName\pipe\PipeName IPC$ est le nom du partage SMB Le canal nommé possède un descripteur de sécurité On peut utiliser des alias
RPC Gestion d'un modèle client/server réparti : Fonctions exportées par un serveur Appelées par un client Communications réseau gérées par le systèmes d'exploitation Chaque interface RPC est identifiée par : Un UUID (Universal Unique Identifier) Un numéro de version Les fonctions sont ensuite identifiées par un numéro d'opcode Accès par le port 135/tcp (portmapper) puis un port haut défini par la suite Ou par IPC$
Protocoles réseau RPC ncacn_ip_tcp : TCP ncadg_ip_udp : UDP ncacn_np : canal nommé ncacn_http : HTTP (via IIS) ncalrpc : Local Inter-Process Communication (LPC : mécanisme noyau permettant une communication rapide entre deux processus sur une même machine)
Services RPC Microsoft Beaucoup de fonctions exportées, généralement accessibles par un canal nommé : atsvc : planificateur de tâches browser : explorateur d ordinateur (browser) epmapper : service rpcss eventlog : journal des journaux lsarpc : politique LSA ntsvcs : service plug and play (plugplay sous Vista) samr : base SAM spoolss : imprimantes partagées srvsvc : service serveur svcctl : gestionnaire de services (SCM) winreg : base de registres wkssvc : service client (workstation)
Échanges classiques Authentification de l'utilisateur Peut se baser sur NTLM ou GSS-API NTLM : permet la connexion de Windows autonomes GSSAPI (NTLM ou Kerberos) : négociation à partir de Windows 2000 du protocole d'authentification pour les membres d'un domaine Connexion à un partage Partages de fichiers : C$, ADMIN$, répertoire... Canaux nommés : IPC$ Chaque partage possède un descripteur de sécurité
Système de fichiers
Organisation du disque Partitions nommées avec des «lettres de lecteur» : A, C, D... Répertoires importants : C:\Windows C:\Program Files Profils des utilisateurs : C:\Documents And Settings (2000, XP, 2003) C:\Users (Vista, 2008, 7) Données de configuration : Document and settings\<username>\application Data\ Document and settings\<username>\local Settings Users\<username>\AppData\Roaming Users\<username>\AppData\Local
Systèmes de fichiers Autrefois FAT (12, 16 ou 32), mais abandonné... NTFS New Technology Filesystem NTFS inclut un système de protection par contrôle d'accès (ACL) On peut en définir au niveau des répertoires ou des fichiers pour savoir quelles opérations peuvent être réalisés par tels utilisateurs ou groupes Sécurité gérée par le système d'exploitation Si le système d'exploitation en gère pas les droits, n'importe quel utilisateur peur accéder aux fichiers protégés (on peut monter une partition NTFS sous Linux pour outrepasser les permissions)
EFS (1/2) Encrypted filesystem (attention, EFS!= NTFS) Protection supplémentaire pour chiffrer des fichiers sur le disque dur Introduit par Windows 2000, pour chiffrer de façon transparente Des algorithmes de chiffrement symétriques sont utilisés DESX (40/128 bits) Windows 2000 Windows XP Windows XP SP1 3DES X X X AES X X X
EFS (2/2) Chaque fichier est chiffré avec une clé symétrique unique, ensuite chiffrée par des clé publiques Au moins une propre à l'utilisateur Éventuellement avec celles des agents de recouvrement Quelques défauts : Transfert sur le réseau des fichiers chiffrés Travail en groupe délicat
Registre
Registre Autrefois appelé «base de registre» Accès par regedit.exe notamment Clés racine (root keys) HKEY_LOCAL_MACHINE (HKLM) Configuration de la machine et du système. Uniquement modifiable par le système et les administrateurs 5 sous-clés : HARDWARE, SAM, SECURITY, SOFTWARE, SYSTEM HKEY_USERS (HKU) Chaque utilisateur y dispose d'une entrée (de type sous-clés) permettant d'y stocker ses paramètres personnels HKEY_PERFORMANCE_DATA (HKPD) Journaux de performance
Alias des clés racine Quelques alias des clés racine : HKEY_CURRENT_USER (HKCU) Lien vers la sous-clé de l'utilisateur courant (réalisant l'appel de l'ouverture de la clé) HKEY_USERS\<SID utilisateur courant> HKEY_CLASSES_ROOT (HKCR) Lien vers la configuration des objets COM et associations de fichiers. Fusion de 2 parties : HKEY_CURRENT_USER\Software\Classes HKEY_LOCAL_MACHINE\SOFTWARE\Classes
HKEY_LOCAL_MACHINE HARDWARE : détection PnP de la configuration matérielle de la machine SAM : base des comptes utilisateur SECURITY : paramètres de la politique de sécurité locale, domaines approuvés, secret d'authentification des comptes de service SOFTWARE : paramètres communs de configuration des logiciels SYSTEM : paramètre de configuration du système (ControlSet)
Fichier du registre HKEY_LOCAL_MACHINE\HARDWARE Dynamique HKEY_LOCAL_MACHINE\SAM %SYSTEMROOT%\System32\Config\Sam HKEY_LOCAL_MACHINE\SECURITY %SYSTEMROOT%\System32\Config\Security HKEY_LOCAL_MACHINE\SOFTWARE %SYSTEMROOT%\System32\Config\Software HKEY_LOCAL_MACHINE\SYSTEM %SYSTEMROOT%\System32\Config\System
Fichiers du registre HKEY_USERS\<SID> \Documents and Settings\<nom>\Ntuser.dat HKEY_USERS\<SID>_Classes \Document and Settings\<nom>\Local Settings\Application Data\Microsoft\Windows\Usrclass.dat
Mises à jour
Triple problématique : Mises à jour Disposer de mises à jour Déployer les mises à jour Contrôler l'application des mises à jour
Plusieurs types : Mises à jour Windows (1/2) Update ou Security Update : disponibles par Windows Update ou le centre de téléchargement Security fixes ou Rollup packages largement testés «GDR» (General Distribution Release) Hotfix : correction d'un problème spécifique. Disponibles au cas par cas et peu testés «LDR» (Limited Distribution Release) Auparavant dénommés QFE (Quick Fix Engineering)
Service Packs (SP) : Mises à jour Windows (2/2) Mise à jour majeure d'un système. Contient des améliorations et ajouts ainsi que tous les correctifs des branches GDR et LDR à la date de sortie du SP. Largement testé et disponible par Windows Update ou le centre de téléchargement.
Durée de vie des produits Microsoft Phase principale : support à l'incident, mises à jour de sécurité, hotfixes non relatifs à la sécurité (5 ans en général) Phase d'extension : support payant, mises à jour de sécurité, hotfixes non relatifs à la sécurité (payants par contrat), plus de changement de code ou de nouvelles fonctionnalités (généralement 5 ans en +) Deux exemples : Windows 2000 : support étendu a expiré le 13/07/2010 Windows XP Pro : support étendu expire le 08/04/2014
Déploiement des mises à jour Microsoft Update Postes isolés et connectés à Internet Le client va chercher les mises à jour WSUS (Windows Server Update Services) Sélection des mises à jour, génération de rapports Le client est averti mais va chercher les mises à jour SMS Server (System Management Server) Inventaire des parcs informatique Produit payant Les mises à jour sont poussées vers le client
Vérification d'application des mises à jour MBSA : Microsoft Baseline Security Analyzer Version 1.2.1 : Windows 2000, XP, 2003 IIS (4.0 6.0), Office (2000 2003), SQL Server (7.0 2000), Exchange (5.0 2003) Version 2.1 : Windows 2000 SP3, XP, 2003, Vista, 2008 Office (XP-2007), Exchange (2000-2003), SQL Server (2000 SP4-2005) Compatible Microsoft Update, WSUS, SMS Server
Quelques autres mécanismes liés à la sécurité
Nouveaux mécanismes liés à la sécurité Niveau compilateur /GS /SafeSEH /NXCompat /DynamicBase Applications Virtualisation d'ie7
Nouveaux mécanismes liés à la sécurité Système Safe Exception Handlers (SAFESEH) SEHOP DEP ASLR UAC Windows Integrity Mechanism User Interface Privilege Isolation (UIPI) Isolation des services Protection du tas (HEAP) Kernel Patch Protection (PatchGuard)
Références Microsoft (rubrique sécurité) : www.microsoft.com/security/ www.microsoft.com/france/securite/ www.microsoft.com/technet/security/ www.microsoft.com/technet/security/tools/ Minimisation des services réseaux sur les systèmes Windows : www.hsc.fr/ressources/breves/min_srv_res_win.html.fr Merci à Aurélien26, source infinie de connaissance dans le monde Microsoft.