--- title: Fiche ACDA 01 authors: jeremy.delbarre tags: FICHE, ACDA --- # Windows NT - multi-utilisateurs - Multitâche préemptif / Multithread - Ouverture de session obligatoire - Protection de la mémoire - Contrôle d’accès discrétionnaire - Audit - Portabilité (x86, Alpha, PowerPC et MIPS) - Portabilité (x86, Alpha, PowerPC et MIPS) - x86 : non supporté sur les serveurs depuis 2008 R2 - x64 : toute version depuis XP - ARM : Windows 8 RT ou Windows 10 on ARM - Itanium : XP, 2003 et 2008/2008 R2 - Fonctionnalités serveurs : Hyper-V, DNS, DHCP, IIS, AD, DFS! # Architecture ![](https://i.imgur.com/8PYWMYl.png) ## Kernel mode ![](https://i.imgur.com/RJHFrlz.png) NTOSKRNL est composé de deux partie: - l'executif fonction haut niveau - fonctions des appels systèmes - managers et bibliothèques statique - le noyau fonction bas niveau le kernel mode gère aussi les pilotes, les systèmess graphiques et les bibliothèques dynamiques. ## User Mode - Windows (csrss.exe) - sous systèmes obligatoirement démarré - Environnement d’exécution des programmes Windows 32/64 bits et Windows 3.1/MS-DOS 16 bits via NTVDM.EXE - POSIX (psxss.exe) : - Environnement d’exécution des programmes POSIX (32 bits) - Remplacé par Windows Services For UNIX (SFU) sous XP/2003 - Remplacé par Windows Subsystem for Unix-based Applications (SUA) (32/64 bits) sous Vista - Supprimé depuis Windows 8/2012 - Remplacé par Windows Subsystem for Linux (WSL) sous Windows 10 et Windows Server 2016 - OS/2 (os2ss.exe) : - Environnement d’exécution des programmes OS/2 en invite de commande uniquement - Supprimé depuis XP/2003 ## Sessions - Windows Server 2003 - Console : session 0 - Session TSE : sessions 1…n - Windows XP avec Fast User Switching - 1er utilisateur : session 0 - Utilisateurs suivants : session 1…n ![](https://i.imgur.com/QosGn63.png) - Windows Vista - Isolation de la session 0 en la réservant aux processus critiques du système et aux services - La session 0 devient de fait non-interactive ## Processus User-Mode ### Idle et System - Créés par NTOSKRNL.EXE via le Process Manager - Pas de processus parent visible - SYSTEM a un PID static à 4 - SYSTEM crée le processus SMSS.EXE - 1 seul processus SYSTEM ### Session Manager (SMSS.EXE) - Premier processus en user mode - Processus parent : SYSTEM - Priorité de base : 11 - \%systemroot%\System32\smss.exe - Username: NT AUTHORITY\SYSTEM - Charge les KNOWN DLLS - Effectue des suppressions et renommages différés des fichiers - Crée la session 0 (OS services) - Crée la session 1 (User session) et les suivantes si plusieurs utilisateurs - Crée les processus CSRSS et WINLOGON (session 1) - S’exécute dans la session 0 - 1 seul processus SMSS.EXE ### Client/Server run (CSRSS.EXE) - Windows subsystem process. - Enfant de SMSS.EXE - Priorité de base : 13 - \%SystemRoot%\system32\csrss.exe - Username : NT AUTHORITY\SYSTEM - Crée et supprime processus et threads, fichiers temporaires, etc. - 1 seul processus CSRSS par session dont 1 en session 0 ### Windows Initialisation Process (WININIT.EXE) - Parent des processus SERVICES.EXE (Service Control Manager - SCM), LSASS.EXE et LSM.EXE - Enfant de SMSS.EXE - Priorité de base : 13 - Username: NT AUTHORITY\SYSTEM - \%SystemRoot%\system32\wininit.exe - Réalise des opérations d’initialisation en user-mode - Crée \%windir%\temp - S’exécute en session 0 ###  Service Control Manager (SERVICES.EXE ) - Enfant de WININIT.EXE - Parent de services tels que SVCHOST.EXE, DLLHOST.EXE, TASKHOST.EXE, SPOOLSV.EXE, etc. - \%SystemRoot%\System32\wininit.exe - Username: NT AUTHORITY\SYSTEM - Priorité de base : 9 - Charge en mémoire une table des services - S’exécute en session 0 - 1 seul processus SERVICES.EXE ### Local Security Authority (LSASS.EXE) - Enfant de WININIT.EXE - 1 seul processus LSASS.EXE - %SystemRoot%\System32\lsass.exe - Responsable de la stratégie de sécurité locale dont la gestion des utilisateurs autorisés à se connecter, les stratégies de mot de passe, l'écriture dans le journal des événements de sécurité, etc. - Priorité de base : 9 - Username: NT AUTHORITY\SYSTEM - S’exécute en session 0 - Aucun processus enfant ### Services Hosting Process (SVCHOST.EXE) - Plusieurs instances de SVCHOST.EXE s’exécutent - %SystemRoot%\System32\svchost.exe - Username : l’un des 3 - NT AUTHORITY\SYSTEM, LOCAL SERVICE, ou NETWORK SERVICE - Enfant de SERVICES.EXE - Priorité de base : 8 - S’exécute en session 0 ### Load Session Manager Service (LSM.EXE) - Gère l’état des sessions Terminal Server du système local. Envoie les requête de démarrage de nouvelles sessions à SMSS.EXE. - Reçoie les logon/off, démarrage et arrêt de l’environnement utilisateur, connexion / déconnexion d'une session et verrouillage/déverrouillage du bureau - Enfant de WININIT.EXE - Exécuté au sein de SVCHOST.EXE depuis Windows 8 - Pas de processus enfant - %systemroot%\System32\lsm.exe - Priorité de base : 8 - Username: NT AUTHORITY\SYSTEM - S’exécute en session 0 ### Windows Logon Process (WINLOGON.EXE) - Pas de processus parent - Peut avoir comme processus enfant LogonUI si une carte à puce par exemple est utilisée pour s'authentifier - LogonUI se terminera une fois que l'utilisateur aura entré son mot de passe. Une fois le mot de passe saisi, la vérification est envoyée à LSASS et vérifiée via Active Directory ou SAM. - Priorité de base : 13 - S’exécute en session 1 et suivante - Gère les connexions / déconnexions utilisateur interactives lorsque la combinaison de touches SAS est activée (Ctrl+Alt+Delete) - Charge le processus USERINIT.EXE décrit dans la valeur USERINIT de Software\Microsoft\Windows NT\CurrentVersion\Winlogon - Userinit initialise l’environnement utilisateur incluant l’exécution des GPOs et des logon scripts. - Userinit exécute le processus EXPLORER.EXE décrit dans la valeur SHELL de Software\Microsoft\Windows NT\CurrentVersion\Winlogon ### Explorer (Windows Explorer) - Pas de processus parent - Priorité de base : 8 - Username: utilisateur ayant ouvert la session - %Systemroot%\Explorer.exe - Multiples processus enfants # Modèle de sécurité ## Modèle générale - Windows propose un modèle de sécurité s’appuyant sur un mécanisme de contrôle d’accès discrétionnaire lors de l’accès d’un processus aux objets noyau, aux objets de l’Active Directory et aux composants du système). - Chacun de ces objets est protégé par un descripteur de sécurité (SD) qui va définir quels types d’accès vont être autorisés de la part des différentes entités - Une entité doit au préalable s’authentifier sur le système - Un jeton est alors créé et permet de définir le contexte de sécurité de cette entité - Tout processus lancé le sera dans ce contexte de sécurité - Le Security Reference Monitor (SRM) valide les accès aux objets et effectue la journalisation des évènements de sécurité ## SID (Security Identifier) - Identifiant permettant d'identifier de façon unique - est utiliser sur les machines, utilisateurs, groupe et domaine ![](https://i.imgur.com/n9D7ymY.png) - Lors de l’installation d’une machine Windows, un SID est généré et lui est affecté : S-1-5-21-X-Y-Z - le SID des comptes et groupes locaux est généré a partir du SID de la machine et d'un RID unique et incrémental pour chaque compte ou groupe - SID des comptes et groupes de domaine Active Directory : - Création du domaine : un SID est affecté au domaine (SID du 1er DC) - RID du domaine gérés par DC / RID Master - Pools de RID affectés à chaque DC - Chaque DC affecte un RID de son pool à la création d’un Security - Principal (utilisateurs, groupes, machines) - RID unique et incrémental - SID stocké dans l’attribut objectSid ## Jeton d’accès - Remis à l’utilisateur après authentification - Utilisé par ses processus ou threads pendant toute la durée de la session jusqu’à sa fermeture. - Utilisé pour représenter l'utilisateur dans toutes les demandes d'accès aux ressources du système. ## Descripteur de sécurité - Un descripteur de sécurité contient : - Un champ « control information » (numéro de version, attributs) - Le SID du propriétaire de l’objet - Le SID du groupe primaire de l’objet - La DACL (Discretionary Access Control List) : liste définissant les autorisations d’accès - La SACL (System Access Control List) : liste définissant les audits à générer lors des accès à l’objet ou diverses propriétés de l’objet (niveau d’intégrité, claims, etc.) - les DACL et SACL sont constituées d’ACE (Access Control Entries) qui sont composées - du type de l’ACE - Access-allowed ACE - Access-denied ACE - System-audit ACE - Mandatory label ACE - de propriétés : héritage, journalisation (Failed/Success) - du SID auquel l’ACE s’applique - des autorisations d’accès concernés (AccessMask) - Autorisations 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 - Autorisations spécifiques (propres à chaque type d’objets) - FILE_WRITE_ATTRIBUTES - KEY_CREATE_SUB_KEY - TOKEN_ADJUST_PRIVILEGES - Autorisations génériques : READ, WRITE, EXECUTE, ALL ![](https://i.imgur.com/dr0IS4V.png)