---
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

- 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

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

## 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

- 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