---
title: Révision Winsec - Tristan
tags: REVISION
---
# <span style="color: red"> Programme de révision Wsec </span>
- [x] 01 - Histoire
- Connaître les différentes familles de systèmes Windows, leur version de
noyau et leur état de support
- Architectures matérielles supportées et principales caractéristiques de
Windows NT
- [x] 02 - Architecture
- Catégories des différents types de processus (système, service,
utilisateur)
- Connaître quelques exemples de processus de chaque catégorie
- 3 sous-systèmes (Win, Posix, OS/2)
- Session Windows : principe et isolation des services en session 0
- Pyramide des droits et les 3 grands ensembles
- [x] 03 - Services
- Définition du SCM
- 3 principaux comptes de service (droits, privilèges et capacité
d'authentification réseau)
- Principe de l'hébergement de services et rôle de svchost.exe
- [x] 04 - Mise à jour
- Principaux types de mises à jour de Microsoft
- Politique de support : définition et durée des deux phases (principale et
d'extension)
- Windows 10 : Service Update et Feature Update
- [x] 06 - Programmation avancée
- Utilité des symboles et principe de fonctionnement
- [x] 07 - Réseau
- WNET : Notation UNC, Multiple Provider Router, Multiple UNC Provider
- Network redirectors installés par défaut sous Windows (SMB, RDP et
WebDav)
- Fonctionnement de NetBios et des 3 sous-protocoles associés
- Rôle de SMB, apports de SMB2 (de 2.0.2 à 3.1.1)
- Transport de SMB et ports réseau associés
- Named pipes et mailslots
- Rôle du partage IPC$
- Définition des RPC et importance dans les systèmes Windows
- [ ] 08 - RPC
- Rôle du langage MIDL
- Principaux mécanismes de transport des RPC
- [ ] 09 - Authentification
- Calcul hash LM/NTLM (grands principes, algos, faiblesses)
- Calcul défi réponse LM/NTLM/NTLM2/LMv2-NTLMv2 (grands principes, algos,
faiblesses)
- Calcul des clés Kerberos AES
- Avantages de Kerberos par rapport à NTLM
- Principales attaques sur NTLM
- Kerberos : fonctionnement général et intérêts/apports en sécurité
- Rôle de la PAC dans Kerberos
- Fonctionnement de PKINIT
- Principe et conséquence de Pass-the-hash
- AP : rôle et connaître ceux de Microsoft
- SSP : rôle et connaître ceux de Microsoft (les principaux vus en cours)
- Rôle de NetLogon
- Mise en œuvre du SSO (authentification implicite/explicite)
- [ ] 10 - Modèle de sécurité
- Pyramide des droits
- SID : format générique et leur rôle dans le modèle de sécurité
- principe de génération des SID des comptes locaux
- Définition du Token et principaux composants
- Rôle de l'attribut DenyOnly
- Définition du descripteur de sécurité et composants (owner, DACL, SACL)
- Définition droits accès standard, spécifique, générique
- Fonctionnement général du contrôle d'accès
- Rôle et fonctionnement des restricted SID
- Connaître les privilèges sensibles
- Définition du SDDL
- Principe de l'impersonation
- Définition et différences entre primary token et impersonate token
- Fonction CreateRestrictedToken : modifications appliquées aux tokens
- AppContainer : principe et protections appliquées
- [ ] 11 - Nouveaux mécanismes
- Rôle et intérêt de : /GS, DEP, ASLR
- Fonctionnement d'UAC et effets des 3 restrictions
- 3 niveaux et principes de protection des services
- Fonctionnement des SID de service et leur mise en œuvre
- Process Mitigation / WDEG
- [ ] 12 - TODO
- PP / PPL (Protected Process Light)
- Protection VBS et exemples de mise en œuvre : Credential Guard et Device
Guard (WDAC)
## 01 - Histoire
Connaitre
:::info
- Les différentes familles de systèmes Windows, leur version de noyau et leur état de support
- Architectures matérielles supportées et principales caractéristiques de Windows NT
:::
### Familles
Histoire du DOS:

Histoire du Win NT:


Famille NT:
- client/server: WindowsNT,2000
- client: XP,Vista,7,8,8.1,10
- server: 2003-R2,2008-R2,2012-R2,2016,2019
### Caracteristiques/Archi
Caracteristiques Win NT:
- Sys d'ex exploitant processeur 386 (ring0-3, segmentation, pagination, adressage virtuel, multitaches preemptif)
- Fonctionne sur plusieurs archi:
- origine: x86, alpha, powerPC, MIPS
- histo:
- ARM: WOA
- Itanium: XP, 2003, 2008-R2
- actu:
- x86: abandonné sur serveur depuis 2008 R2
- x64: Windows XP/Serveur 2003 a Win10
### Fonctionnalites Serveurs
- Composants serveurs:
- DNS, DHCP, IIS (Internet Information Services), Hyper-V, DFS (Distributed File System)
- Directory Services:
- AD Domain Services (ADDS)
- AD Lightweight Directory Services (ADLDS)
- AD Certificate Services (ADCS)
- AD Rights Management Services (ADRMS)
- AD Federation Services (ADFS)
- Types d'install:
- nano server
- server core
- minimal server interface
- server with desktop experience
## 02 - Architecture
Connaitre
:::info
- Catégories des différents types de processus (système, service,
utilisateur)
- Connaître quelques exemples de processus de chaque catégorie
- 3 sous-systèmes (Win, Posix, OS/2)
- Session Windows : principe et isolation des services en session 0
- Pyramide des droits et les 3 grands ensembles
:::
### Sys General

- NT devait exec 3 type de proc: Win32 OS/2 Posix
- Archi en sous-sys permet un env d'exec a ces 3 types
- Sous-sys composé:
- d'un process servant de <serveur>
- d'un ensemble de lib dynamique offrant l'API aux processus
### Sous-Sys
#### Windows csrss.exe
- Toujours demarré
- exec : 32/64 bits, 16 via VDM
#### POSIX psxss.exe
- exec des programmes posix 32b
- XP/2003 => substitue par Windows Services for UNIX (SFU)
- Vista => substitue par Win Subsystems for Unix-Based App (SUA)
- Win8/12 suppr
- Win10 => WSL (exec des bin linux ELF64)
- Win10 2004 => WSL2
#### OS/2 os2ss.exe
- support pgrm OS/2 en cmd
- suppr XP/2003
### Relations + Appels

### Noyau + Exec
Ntdll.dll => Appel sys dispatcher
User32.dll + Gdi32.dll => GUI
Composants Noyau:
- Ntoskrnl.exe
- executive: fct haut niveau
- noyau: fct bas niveau
- Pilotes: fichiers .sys
- Sys graphique: USER + GDI
- Lib Dyn: fichiers .dll
#### Repartition Zone Mem
| | bits | Start | End |
| -------- | -------- | -------- | -------- |
| user | 32 | 00000000| 7FFFFFFF |
| kernel | 32 | 80000000| FFFFFFFF|
| user | 64 | 00000000 00000000| 000007FF FFFFFFFF|
| kernel | 64 | FFFFF800 00000000| FFFFFFFF FFFFFFFF|
### Session Windows
WinNT 4 TSE (multi user)
Process dans session diff sont isoles
Tous process du sys et services sont associes a la session 0
Sessions par mecanisme:
- FUS: Fast User Switching
- RDP
- Hyper-V (Enhances Session Mode) - Win8.1/Server 2012 R2
Vista a introduit la session 0 dedie aux: services et proc sys

mstsc.exe: Connexion bureau a distance
Disconnect: stop/pause session
Logoff: end session
Possibilite de dup une session:
- shadow.exe (xp/2003 -> win7/2008 R2)
- mstsc.exe /shadow:<sessionID> (8.1/2012 R2 -> ajd)
par defaut: 1 seule session par user
### Espace User

smss.exe (manager)
- => smss.exe (0)
- => smss.exe (1)
- => winlogon.exe
- => userinit.exe
- => explorer.exe (shell graphique)
- => iexplorer.exe (application)
- => csrss.exe (subsys)
- => wininit.exe (initialization)
- => lsass.exe (LSA)
- => services.exe (SCM)
### Pyramide des droits

### Composants de Secu
- Strat de secu locale: secpol.msc
- Strat de groupe locale: gpedit.msc (peuvent etre appliquees depuis un AD via GPO)
- Base SAM
- Observateur d'events
### Appel lib/SYS C

## 03 - Services
Connaitre
:::info
- Définition du SCM
- 3 principaux comptes de service (droits, privilèges et capacité
d'authentification réseau)
- Principe de l'hébergement de services et rôle de svchost.exe
:::
### <span style="color: green">Définitions</span>
<span style="color: green">Definitions Services</span>
- applicatif: prgm exec background
- pilote: .sys pilote de pheripherique et load by kernel
<span style="color: green">Définition du SCM</span>
SCM = service Control Manager
- gere les services et une partie des pilotes
- peut créer, éteindre, config un services
- monitor les services (on peut voir l’etat des services avec lui)
Un SCM est un serveur capable de gestionner les services de windows (creer, demarrer, supprimer, eteindre, configurer)
service :
- OWN_PROCESS | SHARE_PROCESS (svchost.exe)
svchost = hebergeur de service
### 3 Principaux Comptes de Service
1. LocalSystem
- le + haut niveau de droits/priv (S-1-5-18)
- kerberos: compte ordi
- NTLM: pas possible
2. LocalService
- droits restreint (S-1-5-19)
- peu de priv
- pas authent distance
3. NetworkService
- droits restreint (S-1-5-20)
- peu de priv
- authent avec compte ordi lorsque distant (kerb/NTLM)
### Service Host Process (svchost.exe)
Heberge service de type: **SERVICE_WIN32_SHARE_PROCESS** implem sous dll
Plusieurs instances simultanes
#### Notifications
CONTROL_X : X=PAUSE,STOP,SHUTDOWN,CONTINUE => influe directement le status d'un service (SERVICE X_PENDING => SERVICE XED,RUNNING)
ControlHandler permet au SCM de notifier un chgmt d'etat pour le service
## 04 - Mise à jour
Connaitre
:::info
- Principaux types de mises à jour de Microsoft
- Politique de support : définition et durée des deux phases (principale et
d'extension)
- Windows 10 : Service Update et Feature Update
:::
### Types de maj
- **Bulletin de secu**: vuln des produit Microsoft
- **Avis de secu**: todo
- **Security Update Guide**: tout sur un seul portail (gere par MSRC | access by API)
### Support
3 Types:
- **Phase principale**(tout): maj secu, hotfixes, support incident
- **Phase extension**(logiciel entreprise&dev): payant, maj secu, hotfixes, + de chgmt de code/fonctionnalites
- **Ressources en ligne** (tout): 10 ans
Autres produits: SQL Server, Exchange
Update Build Revision (UBR): maj cumulative, UBR montre le niveau de correctif installe
WAAS (Windows as a Service):
- **Service Update**: 1/mois
- **Feature Update**: 1-2/an
### Composant MAJ
**WUA**(Windows Update Agent): s'occupe de la maj du sys avec comme principaux composants
- service: wuauserv
- interface graph d'admin (pas Win10)
- journalisation (pas Win10)
### Serveurs de deploiement
- Microsoft Update (solo)
- WSUS (Winsows Server Update Services)
- Selection fines des maj et deploiement: en fct des groupes et profils
- Inventaire clients/deploiement maj: gen de rapport
- **Cascades de Serveurs**
(=> : demande)
1. WUA => Microsoft Update
2. WUA => WSUS => ... => WSUS => Microsoft Update
## Programmation avancée
Connaitre
:::info
- Utilité des symboles et principe de fonctionnement
:::
### Visual Studio
- la Solution .sln
- les Projets .vcxproj
- les Fichiers .cpp, .h, etc...
**Compilation**

**API Windows**
TYpes: DWORD, BOOL, *PBOOL, *LPBOOL

### Symboles
1. Cree par l'editeur de lien
2. Sont utiles pour DEBUG un prgm, une lib, un pilote
3. Peuvent contenir:
- noms+type de vars
- noms de fcts+params
- FPO ()
- noms+nums de ligne de code
- defs des structs internes
fichier de symboles: .pdb | .dbg
#### Serveur/depot de symbole
- Repertoire
- Cache
- Serveur en ligne
### SAL
Source Code Annotation Language
- ameliore la verif
- precise finement le role et l'utilisation des params des fcts
### Assembly
inline assembly est impossible en x64 mais peuvent etre substitue par des fcts intrinseque en c (intrinsic.h)
## Réseau
Connaitre
:::info
- WNET : Notation UNC, Multiple Provider Router, Multiple UNC Provider
- Network redirectors installés par défaut sous Windows (SMB, RDP et WebDav)
- Fonctionnement de NetBios et des 3 sous-protocoles associés
- Rôle de SMB, apports de SMB2 (de 2.0.2 à 3.1.1)
- Transport de SMB et ports réseau associés
- Named pipes et mailslots
- Rôle du partage IPC$
- Définition des RPC et importance dans les systèmes Windows
:::
### NetBios
Propose 3 services:
- Datagram Service:
- Name Service: enregistrement, liberation, resol d'un nom sur le LAN (3 commandes: registration(claim), release, query)
- Session Service:
### WNet
Permet l'acces et la gestion des fichiers par le reseau
Mise en oeuvre par:
- API WNet pour enumeration des ressources, connexion, authentification a un reseau
- MPR (Multiple Provider Router): deter le fournisseur qui doit etre invoque
- MUP (Multiple UNC Provider): deter le redirecteur reseau
- UNC: identifie une ressource reseau (partage, fichier, imprimante): \\Serveur\Partage\Chemin\Fichier
- Sys de fichier reseau:
- Natifs: Lanman (SMB), WebDav, TS (Terminal Services), NFS
- Tiers: VMWare, VirtualBox
#### Notation UNC
\\Serveur\Partage\Chemin\Fichier
**Serveur** (nom de la mach):
- . = machine locale
- addr IP
- nom NetBios (par NBNS)
- FQDN (par DNS)
**Partage** (nom du partage):
- C$, ADMIN$, repertoire
#### WebDav
Acces fichiers via HTTP(S) + ext webdav
#### LanmanWorkstation
acces au sys de fichiers via SMB
SMB 2000
SMB2 Vista/2008
SMB3 Win10/2012

**SMB2**
- abandon NetBios
- changement format apres validation
- perfo
- secu
- simplification (100 a 20 commands)
- support liens sym
**SMB3.0**
- chiffrement AES-128-CCM (signature+confidentialite)
- signature AES-128-CMAC
- Desac possible de SMB1
**SMB3.0.2**
- meilleures op de co et d'I/O + partage de disque VHD
**SMB3.1.1**
- nego extensible
- pre-authent integrity
- SMB encrypt improvement
- possibilite de forcer chiffrenent
- cluster dialect fencing + failover v2
Nego->Authent->Co a un partage-> Acces ressources->Deco
SMB => TCP 445
### IPC
#### Mailslots
- com asynchrone entre 2 machines
- message en local, machine, groupe de mach, ss-reseau
- message au travers de SMB via NetBios Datagram Service UPD 138
#### Pipes
anonyme: com entre 2 proc sur mm mach
nommé (named pipe): com entre 2 proc possiblement sur 2 mach diff
- partage SMB est IPC$
- chemin SMB: \\Server\pipe\PipeName
- canal nommé a un descripteur de secu

### RPC
- meca client/serveur: fonction export par serv et appelle par client
- comm reseau par sys d'exp
#### Proto RPC
- TCP: ncacn_ip_tcp
- UDP: ncadg_ip_udp
- Canal nommé: ncacn_np
- HTTP via IIS: ncacn_http
- LPC (Local Interprocess Comm Port, ajd Advance LPC): ncalrpc
Bcp de services RPC sur canaux nomme: samr (Base SAM), lsarpc (Pol LSA), winreg (Acces Distant Registre)
Autres protos d'admin distance: RDP, WinRM
### Reseaux
Reseau:
- associe a une interface
- associe a un profil
- pub/priv/domain
#### WFP (Vista)
Filtrage de paquet + modif paquet (IPSec)
#### WFAS (Windows FireWall with Advanced Security)
Filtrage: IP, interface reseau, proto, port, prgm, service, profil reseau
## RPC
Connaitre:
:::info
- Rôle du langage MIDL
- Principaux mécanismes de transport des RPC
:::
### Principe
- Meca IPC
- Fonctionnalites gerees par runtime RPC (rpcrt4.dll) et transparentes pour les applications (authent, comm reseau, etc...)
- Permet appel par un proc client d'une fonction qui s'exec dans un proc dit serveur
### Call


### Interfaces
- Fonctions RPC sont sur une meme interf
- Interf est:
- UUID
- num de version
- Interf definit:
- vars exportees: nom+type
- fonctions exportees: nom, params, val de ret
- MIDL: langage de def des interf RPC
- compil IDL cree =>

### Binding Handle
Binding: co entre client et serv
Binding handle: co+etat associe
3 types:
- implicit: binding cree implicitement a un call de func
- explicit: binding specifie a un call de func
- automatic: binding par le runtime
### Mise en oeuvre
**Serveur**: proto utilise, enregistrement interf RPC, listening
**Client**: cree binding handle, call func et mise en place du gestionnaire d'exception
### Authent
- via SSP
- on peut definir:
- service d'authent
- niveau d'authent
- service d'autorisation
- Param AuthnSvc donne l'ID du package d'authent reseau a utiliser
- 1 SSP = 1 ID RPC
### Meca de Secu
#### Security Callback
fonction de callback de secu:
- valide l'authent client
- valide le proto reseau client
#### Protec Anonymous Access
**Canaux**: ncacn_np et ncalrpc peuvent etre protec avec des descripteur de secu
Pour authent:
- callback imposant authent client
- positionner RPC_IF_ALLOW_SECURE_ONLY
#### Resume des protecs
- Proto de transport
- Partage IPC$
- Canaux nommes
- RunTime RPC (RestrictRemoteClients)
- Security Callback
- Fonction RPC
## Authentification
Connaitre
:::info
- Calcul hash LM/NTLM (grands principes, algos, faiblesses)
- Calcul défi réponse LM/NTLM/NTLM2/LMv2-NTLMv2 (grands principes, algos, faiblesses)
- Calcul des clés Kerberos AES
- Avantages de Kerberos par rapport à NTLM
- Principales attaques sur NTLM
- Kerberos : fonctionnement général et intérêts/apports en sécurité
- Rôle de la PAC dans Kerberos
- Fonctionnement de PKINIT
- Principe et conséquence de Pass-the-hash
- AP : rôle et connaître ceux de Microsoft
- SSP : rôle et connaître ceux de Microsoft (les principaux vus en cours)
- Rôle de NetLogon
- Mise en œuvre du SSO (authentification implicite/explicite)
:::
### Hash LM

**Limites**:
- 2x7 caracteres
- Alphabet reduit: maj, chiffres, ponctuation, 32 spec char
- Utilise DES
**Bonnes Pratiques**:
- Desactiver LMHash
- Parametrage par GPO
### Hash NTLM

- 255 caracteres max
- Alphabet complet
- Codage en unicode
- Utilise MD4
**Comparatif**

#### <span style="color: red"> Problemes </span>
- empreinte LM et NTLM calculees sans graine
- mm mdp => mm empreinte (effet master)
#### <span style="color: green"> Solutions </span>
- Dissocier mdp sur chaque mach: LAPS
- Bloquer flux entrants
- Reduire les droits avec UAC par le reseau
### Stockage empreintes
Base SAM = compte locaux
Base AD = compte de domaine
### Hash

#### Defi/Reponse

#### LM/NTLM
NTLM/NTLM ESS/NTLMv2


NTLMv2 est une refonte des calculs:
- pas negocie
- doit etre active sur client/serveur sinon pas d'authent possible si un des 2 n'est pas en NTLMv2

### NTLMSSP
<span style="color: red"> Def: proto reseau d'authent distante utilisant les proto crypto LM, NTLM, NTLMv2. </span>
- Msg commence par le marqueur NTLMSSP
- Proto definit 3 types de msg:

### MIC
<span style="color: red"> MIC = HMAC_MD5(ExportedSessionKey, NEGOTIATE_M. | CHALLENGE_M. | AUTHENTICATE_M.) </span>
### Pass the Hash
Simplement utiliser le hash du mdp pour les echanges
=> Corrige depuis
### NTLM Reflection
On renvoit le defi que le client a lui-meme emis precedemment.
=> Corrige si on refuse que ces defis soit soumis a ce mm client
### NTLM Relay (=MitM)
Tout est forward au serveur:
Client -> Attaquant -> Serveur
Serveur -> Attaquant -> Client
Pas de parade possible sauf utilise les secrets derives de l'authent (signature, chiffrement ou utilisation de clef de session)
### Authent Mutuelle
NTLM ne peut pas assurer cette authent
-> client donc pas sur si le serveur est legitime
### NetLogon
Si co avec compte AD avec NTLMSSP => mach ne peut pas check directement car n'a pas les empreintes NTLM des comptes de Domaine. Seulement les Controleurs de Domaine les connaissent. NetLogon permet l'interco entre la base SAM d'une mach et un DC (interactive ou distante) => **Pass Through**. Les echanges sont proteges par **Secure Channel**.

RPC de NetLogon:
- **Secure Channel**
- **Pass-Through**
- Changement MDP
- Replication PDC/BDC
#### Secu Secure Channel
Win7/2008 R2: **AES Session Key**
- Calcul clefs HMAC-SHA256
- Chiffrement AES-128
- Signature HMAC-SHA256
DC ne supporte plus WinNT car taille de clef minimum de 128b

NTLM + NetLogon

### Kerberus
**3 Acteurs**:
- UPN (User Principal Name)
- SPN (Service Principal Name)
- KDC (Key Distribution Center) => Tier de confiance
Chaque Acteur a un secret (clef Kerberos) connu de lui et du KDC: $K_{c}$, $K_{s}$
KDC dispose de sa propre clef: $K_{kdc}$
**3 Services**:
- Authentication Service (AS) qui delivre:
- les TGT
- logon session key
- Ticket-Granting Service (TGS) qui delivre:
- service ticket
- service session key
- Client/Serveur (CS): service represente les ticket de service d'un client a un service
<span style="color: red"> KRB_AS_REQ </span>

<span style="color: red"> KRB_AS_REP </span>

Client recupere la clef de session qu'il va pouvoir dechiffrer comme cette clef est chiffree avec sa clef (hash)
TGT = Ticket Granting Ticket
<span style="color: red"> KRB_TGS_REQ </span>

$S_{c,k}$ = Clef de Session de clef
$S_{c,s}$ = Clef de Session de service
<span style="color: red"> KRB_TGS_REP </span>

T(S) = Ticket pour le service
<span style="color: red"> KRB_AP_REQ </span>

<span style="color: red"> KRB_AP_REP </span>

#### Resume

#### Clef Ks et Compte de Services Kerberos
Associe a un compte de l'AD
#### Attaque sur Kerberos
##### Kc
Clef de sessions, clef KDC et clef du service sont resistantes (gen alea). Mais clef Kc des users est souvent generee a partir du mdp => donc faible.
##### Pass-The-Key
La connaissance d’une clé utilisateur (Kc) permet de
demander un TGT puis des TS. Ainsi, comme pour Pass-the-hash, il n’est pas nécessaire de retrouver le mot de passe d’un utilisateur (à partir de la clé Kc) pour pouvoir s’authentifier auprès d’un service.
#### PAC (Privilege Attribute Certificate)
Utilisation du champs autorization-data des tickets pour transporter une struct de type KERB_VALIDATION_INFO specifiant les donnees de l'user (PAC):

**Transport**:

#### PKINIT
- echanges de clefs sur Diffie-Hellman (opt)
- authent sur RSA ou DSA
Possible d'utiliser: certif x509/carte a puce/tokens d'authent

### Mise en place de l'Authent
#### Formes
**locale** avec AP (authentication package)
**distante** avec SSP (Security Support Provider)
#### Session d'authent
Gerees par LSASS/Noyau
Tous les process sont associes a une session d'auth
Une **session**:
- LUID
- Domain Name+User Name
- SID
- AP Name
- Session Type (Interactive, reseau, service)

User rights => privileges + logon rights
#### AP Microsoft
- msv1_0:
- auth compte locaux via Base SAM
- auth des compte de dom si Kerberos impossible
- Kerberos:
- via Kerberos
#### SSP Microsoft
- msv1_0
- Kerberos
- Negotiate (SPNego)
- SChannel (SSL/TLS)
- NegoExtender
- Pku2u (=p-a-p)
### SSO (Single Sign On)
#### Explicite
creds fournis explicitement a l'appel
Ce meca permet un changement d'Identite pour une auth distante.
#### Implicite
Authentifiants récupérés dans la session d’authentification de l’utilisateur effectuant l’appel.
Ce meca permet le SSO Windows
creds mis en cache par les SSP pour reutilisation implicite lors des authent distante
## ACL et Autres
