--- title: Windows et Active Directory - 1 authors: jeremy.delbarre tags: ACDA, jeremy.delbarre --- # Généralités - Windows Server 2016 standart avec interface graphique - Windows est un système d'exploitation ancien - Système avant windows MS-DOS - pas de mécanisme de séurité avant 2000 - pas d'authentification - pas de dossier a accès limité - Première version de Windows : Windows NT 3.1 en 1993 - pour un usage workstation et server - commence a 3.1 les première version n'ont pas était commecialisé - volonté d'un os portable (large scope de compatibilité) - la séparation de IBM et de Microsoft a donné deux branches - Window NT et Windows - NT apporte plusieurs système de sécurité - une aauthentification obligatoire - journalisation - système de controle d'acces discrétionnaire - laisser a la discrétion de l'utilisateur Windows NT: - multi-utilisateurs - multi tache - ouverture de session obligatoire - protection de la mémoire - controle d'accès discrétionnaire - audits/journalisation - portabilité - Focntionnalité serveur Windows 2000 - apporte l'active directory Windows Vista - apporte pas mal d'amélioration sécurité - malgre tout les problèmes de SP1 - arrivé de powershell Windows 10 - pas de 9 car conflit avec windows 95/98 - noyau meme chiffre que la version commercial - mise a niveau vers Windows 10 - beaucoup de fonctionalité en communs entre les différents version - systeme mutlitache préemptif (si un processus plante le pc continu de tourner) :::danger Hyper-V peut avoir de meilleur perf de virtualisation ::: # Architecture Au départ deux achitecture: - cisc (complex instruction set computing) - x86 -> 4 jeux d'instructions - les instrutions donne le niveau d'execution de l'application - en 0: le noyau - en 1: les drivers - en 2: les services - en 3: application - si l'application souhaite acceder au HDD il faut passer par toutes les couches ![](https://i.imgur.com/xR5WIul.png) - risc (reduced intruction set computing) - alpha -> 2 jeux d'instructions - en 0: noyau, driver - en 1: service, application - les blues screen viennents souvent des drivers - en terme de sécu le mieux est de faire tourner que le noyau en 0 - en terme de performance le mieux est de faire tourner le noyau, les drivers, services - pour les deux systèmes il ont donc décider de tourner sur 2 couches - ring 0: noyau, drivers (mode noyau) - ring 3: services, applis - couche -1: instruction supplémentaire pour la virtualisation ## Kernel mode - mémoire virtuelle - schéduler - SRM: security monitor reference - plug n play sur les périphérique - gestion de fenetrage/interface - HAL: Hardware Abstraction Layer - sous windows tout est géré sous forme d'objet - tout objet est sécurisable ## mode utilisateur - sous système windows (csrss.exe) - sous système obligatoirement démarré - execute des programmes Windows 32/64 bits - POSIX (psxss.exe) - environnement d'éxecution des programmes posix (32 bits) - Remplacé par Windows Subsystem for Linux (WSL) sous Windows 10 et Windows Server 2016 ## Session - apparus sous windows NT4 - permet la connexion simultanée de plusieurs utilisateurs sur un meme systeme ### sur Windows 2003 - console : session 0 - Session TSE: session 1..n ### sur Windows XP - 1er utilisateur: session 0 - utilisateur session 1...n la plupart des services sur windows sont executer avec le compte systeme plus de privilèges qu'un compte administrateur que l'on peux créer ![](https://i.imgur.com/QCPS91C.png) par exemple le planificateur de tache - lance la tache avec les meme droit que l'utilisateur si il est paramétrer par l'interface - lance la tache avec les droit systeme si parametrer avec la commande "at" ### Windows Vista - isolation de la session 0 pour les services et taches critique - la session 0 devient donc non intéractive ![](https://i.imgur.com/07fzLz1.png) ## Processus User Mode - IDLE processus lancé quand il n'as rien a faire ### IDLE et System - créer par le process manager - pas de processus parent visible - system a un PID static a 4 - system creer le processus smss.exe - 1 seul processus system ### SMSS - Session Manager - premier processus en user mode - processus parent: system - lancer par l'utilisateur system - 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 ### CSRSS - Client/Server Run - 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 ### WININIT - Windows Initialization Process - 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 ### SERVICES —  Service Control Manager - 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 ### LSASS - Local Security Authority - Enfant de WININIT - 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 ### SVCHOST -  Service Hosting Process - 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 #### LSM —  Load Session Manager Service - 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 ### WINLOGON —  Windows Logon Process - 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\WindowsNT\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 - gere l'interface graphique ## Modèle de sécurité - controle d'accès discrétionnaire - pour chaque objet du système - chacun des 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 - la première étape est de s'authentifier - si on a les droits d'accès un jeton crée pour garder en mémoire que j'ai accès a tel ou tel resources - Le Security Reference Monitor (SRM) valide les accès aux objets et effectue la journalisation des évènements de sécurité ### SID - permet d'authentifier - Utilisateur - Machine - Groupes - Domaine - S – Rev – ID Authority – (Sub…Sub) – RID - Rev : révision (actuellement toujours 1) - ID A : identifiant de l’autorité émettrice (48 bits) - (Sub…Sub) : identifiants des sous-autorités (n x 32 bits) - RID : Relative ID (32 bits) #### SID important - S-1-5 ![](https://i.imgur.com/sgoJMZw.png) - RID unique et incrémental pour chaque compte ou groupe - Well-known users : - Administrateur : 500 (DOMAIN_USER_RID_ADMIN) - Invité : 501 (DOMAIN_USER_RID_GUEST) - Autres : >999 (DOMAIN_USER_RID_MAX) - S-1-5-21 - SID de machine, Utilisateur, domaine - SID de la machine - base sur l'horloge, le matériel et un aléas que l'on fait passé par une fonction de hachage - SID de l'utilsateur - basé sur le SID de la machine et le RID de l'utilisateur #### Exemple windows server 2016 - Installation de windows server 2016 - SID du serveur - Installer l'Active directory - SID du DOM = SID du serveur - SID du CD = SID du DOM + RID du CD - creatiion d'un compte user,GRP, COMP :::warning le RID s'incrémente toujours, jamais un RID sera réutilisé les RID d'un compte supprimé seront taggé comme delete_account ::: port controlleur de domaine: - LDAP /389 - Kerberos /88 - NTP /123 - DNS /53 - SMB /445 c'est par lui qu'on pourrait passer pour attaquer le serveur :::danger mettre un serveur dhcp sur un active directory n'est pas une bonne idéé ::: Dans le smb il a plusieurs dossier: - ADMIN, PC, VOL - IPC$ - contient les fontions de traduction de SID - en utilisant la commande "net use Z:\\NOMSRV\\IPC$ '' /USER ''" on va réaliser une authentification anonyme ### 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