---
# System prepended metadata

title: Révisions WINSEC
tags: [revision, ' WINSEC']

---

---
tags: revision, WINSEC
title: Révisions WINSEC
---

# Histoire (Chapitre 1)
## DOS
![](https://i.imgur.com/2VQd6az.png)

## Windows NT (New Technology)
![](https://i.imgur.com/Pkpeu49.png)

![](https://i.imgur.com/ORxB0ch.png)

### Fonctionalités
rings 0/3, segmentation, pagination, adressage virtuel, multitâche préemptif
### Support matériel
A l'origine : x86, Alpha, PowerPC et MIPS
historique : ARM (WOA, Windows on ARM, windows 8 RT), itanium (XP, 2003, 2008/2008 R2)
actuellement : x86 abandonné depuis 2008 R2, x64 de Windows XP/Server 2003 à Windows 10

# Architecture su système (Chapitre 2)
## Catégories processus
système, service, utilisateur

* système: wininit, winlogon, smss, lsass
* service: services, svchost, spoolsv, inetinfo
* utilisateur: userinit, explorer, tous les processus executés par le user
## Sous-systèmes
Un sous-système est composé :
* d'un processus jouant le rôle de "serveur"
* d'un ensemble de bibliothèques dynamiques offrant l'API aux processus

### Win32
Issu de l'évolution de Win16
Systématiquement démarré
Permet l'exécution de programmes de type : Windows 32/64 bits, 16 bits via VDM (Virtual Dos Machine)
Serveurs hébergés :
* csrsrv.dll : initialisation et divers
* basesrv.dll : thread, process, VDM
* insrv.dll : console, user services
* sxssrv.dll : Side-by-Side
* consrv.dll : console - Transféré dans ConHost.exe depuis Windows 7

### OS/2
base de Windows NT
Support uniquement de programmes OS/2 en invite de commande
Supprimé à partir de XP/2003

### Posix
Imposé par les autorités américaines pour l'accès à certains marchés

Permet initialement l'exécution de programmes POSIX 32 bits
XP/2003 : supprimé et substitué par Windows Services for UNIX(SFU)
Vista : remplacé par Windows Subsystems for Unix-based Applications(SUA) (ajout du support 64 bits)
Windows 8/2012 : suppression du sous-système
Windows 10 : remplacé par Windows Subsystem for Linux(WSL)
Windows 10 2004 : WSL 2


## Sessions Windows
Apparues avec Windows NT 4 TSE (Terminal Server Edition)
Identifiées avec un SessionID et chaque processus est associé à une session
Des processus dans des sessions différentes sont «isolés », en particulier :
* Le système graphique
* Certains objets du noyau (mutex, event, job, timer, etc.)

Tous les processus du systèmes et des services sont associés à la session 0

Les sessions sont mises en oeuvre par le mécanisme **Terminal Services** et utilisées par :
* Le Fast User Switching
* Le bureau à distance
* Les sessions étendues (Enhanced Session Mode) d'Hyper-V

Windows Vista a introduit l'isolation de la session des services : la session 0 est exclusivement réservée aux processus du système et aux services

![](https://i.imgur.com/3b04oHm.png)

Possibilité de "dupliquer une session" :
* shadow.exe (XP/2003 -> 7/2008 R2)
* mstsc.exe /shadow:\<sessionID\> (8.1 / 2012 R2 +)

Par défaut une seule session est autorisée par utilisateur mais comportement modifiable par GPO.

## Pyramide des droits

![](https://i.imgur.com/A3lY0RW.png)

# Services (Chapitre 3)
## Définition
Le terme fait référence à deux concepts :
* Service applicatif (service application) : programme destiné à s’exécuter en arrière plan, généralement démarré à l’initialisation du système et avant les connexions des utilisateurs
* Pilote (driver service): fichier de type pilote de périphériques et chargé par le noyau

Un service peut prendre la forme d'un processus autonome (**OWN_PROCESS**) ou d'un module partagé dans l'hébergeur de service svchost.exe (**SHARE_PROCESS**)
## SCM (Service Control Manager)
C’est le SCM (Service Control Manager) qui est chargé de la gestion des services et d’une partie des pilotes:
* gestion de la base des services/pilotes installés :
    * ajout/suppression
    * verrouillage de base
* démarrage (automatique/manuel) et arrêt des services et de certains pilotes
* gestion de l'éxecution des services (listes des services actifs, surveillance des processus, etc.)

## Comptes de service
Chaque service applicatif s'exécute dans le contexte de sécurité d'un compte, il est possible d'utiliser :
* un compte utilisateur local ou d'un domaine (non recommandé)
* un des trois comptes de services intégrés (préférable)
    * LocalSystem
    * LocalService (XP)
    * NetworkService (XP)
* Un compte de service virtuel (7/2008 R2)
* Un compte de service géré (MSA)
    * local : sMSA (7/2008 R2)
    * de groupe : gMSA (8/ 2012)
* Le compte d'un utilisateur authentifié interactivement (10)

### LocalSystem (NT AUTHORITY\SYSTEM)
Entité de sécurité qui possède le plus haut niveau de droits et privilèges (inclu également BUILTIN\Administrateurs)
Utilise le profil HKEY_USERS\.DEFAULT (alias S-1-5-18)

Authentification à distance :
* Kerberos : s’authentifie avec le compte de l’ordinateu
* NTLM : ne peut pas s’authentifier (session NULL / utilisateur anonyme). Modifiable depuis Windows 7

Possibilité d'interagir avec le bureau (obsolète depuis Vista)
### NetworkService (NT AUTHORITY\NETWORKSERVICE)
Compte à droits restreints disponible à partir de XP
Utilise le profil HKEY_USERS\S-1-5-20
Peu de privilèges :
* AUDIT, CHANGE_NOTIFY, UNDOCK, IMPERSONATE
* Ceux de Utilisateurs et Utilisateurs authentifiés

S'authentifie avec le compte de l'ordinateur lors des authentifications distantes (Kerberos et NTLM)

### LocalService (NT AUTHORITY\LOCALSERVICE)
Compte à droits restreints disponible à partir de XP
Utilise le profil HKEY_USERS\S-1-5-19
Peu de privilèges :
* AUDIT, CHANGE_NOTIFY, UNDOCK, IMPERSONATE
* Ceux de Utilisateurs et Utilisateurs authentifiés

Ne peut pas s'authentifier à distance (session NULL / utilisateur anonyme)

## Hébergement des services

### Service Host Process (svchost.exe)
C'est l'hébergeur de services pour les serices de type SERVICE_WIN32_SHARE_PROCESS, implémentés sous forme de 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)

# Mise à jour (chapitre 4)

## Principaux types de mises à jour de Microsoft
**Critical Update (importante)** : problème spécifique, critique et non lié à la sécurité
**Security Update (importante)** : problème spécifique lié à la sécurité
**Update** : problème spécifique, non critique et non lié à la sécurité
**Feature Pack** : ajout de nouvelles fonctionalités
**Update Rollup (importante)** : Regroupement de hotfixes, critical updates, security updates et updates
**Service Pack (importante** : 
* Regroupement de tous les hotfixes, critical updates, security updates et updates
* Corrections diverses
* Ajout de nouvelles fonctionalités

**Defintion Update** : Anti-virus, site web malveillant, anti-spam
**Tool**
**Driver**

##  Politique de support
### Phase principale (5 ans)
support à l’incident, mises à jour de sécurité, hotfixes non relatifs à la sécurité

### Phase d'extension (5 ans)
support payant, mises à jour de sécurité, hotfixes non relatifs à la sécurité (payants via contrat), plus de changements de code ou de nouvelles fonctionnalités

## Serice Update et Feature Update
### Service Update (ou Quality Update)
Envrion 1 fois par mois
Regroupement cumulatif de correctifs de sécurité et de mises à jour
10.0.14393.**326** -> 10.0.14393.**447**
### Feature Update
Environ 1 à 2 fois par an

Nouvelle version de Windows 10
Ajout de fonctionalités
Distribuée sous forme d’une installation complète du système
10.0.**14393**.0 -> 10.0.**10586**.0

# Programmation avancée (chapitre 6)
## Utilité des symboles et principe de fonctionnement
### Concept
Les symboles sont crées par l'éditeur de lien
Ils sont utilises pour déboguer un programme, une bibliothèque ou un pilote
Ils peuvent contenir :
* le nom et type des variables : globales (Global syms), locales ou statiques
* le nom des fonctions et des paramètres 
* FPO records si applicables
* le nom et les numéros de lignes de code (Line numbers)
* les définitions des structures internes (Type info)

Afin d’optimiser la taille du binaire, les symboles sont stockés dans un fichier séparé

Les fichiers des symboles sont de type Program Database(extension .pdb, anciennement .dbg)

Il est possible de générer une version publique d’un fichier de symboles (/PDBSTRIPPED), ce qui supprime les informations sur :
* le code source (SourceIndexeddg LineNumbers)
* les types de données (TypeInfo)
* les données privées
 
### Syntaxe des symboles
La case n'a pas d'importance
Exemple : Module!NomFonction

### Serveur de symbole
L’API des symboles est implémentée dans dbghelp.dll

Le SDK de Windows fourni une version améliorée de la DLL apportant des fonctionnalités avancées (comme la gestion des serveurs de symboles)

Les symboles sont recherchés dans un dépôt spécifié :
* Explicitement
* Via les variables d'environement
    * _NT_SYMBOL_PATH
    * _NT_ALT_SYMBOL_PATH

### Format de la source du symbole :
Répertoires simples :
* c:\symbols
* c:\symbols; \\partage

Mise en cache : cache*Localsymbolcache
* cache*c:\symbols;\\partage

Serveur de symboles : srv*Localsymbolcache*symbolstore
* srv*c:\symbols*http://sdl.microsoft.com/download/symbols
    * (srv = symsrv*symsrv.dll)

### Divers symboles
dbh.exe:
* info
* enum
* etypes (private)

pdbcopy.exe
symchk.exe
Ajouter des structures à un symbole existant
https://github.com/Microsoft/microsoft-pdb

# Réseau (Chapitre 7)
## WNET : Notation UNC, Multiple Provider Router, Multiple UNC Provider
### Nommage des systèmes
Chaque système possède :
* un nom de machine
* un nom de groupe pouvant être :
    * un WORKGROUP (entrée déclarative, annuaire réparti)
    * un DOMAINE (annuaire centralisé)

Ces noms sont sous deux formats :
* Le format NetBios (maximum 15 caractères)
* Le format DNS (hostname et FQDN)

### WNET
WNet permet l'accès et la gestion des systèmes de fichiers réseau
Il est mis en oeuvre par :
* L'API WNet qui permet la gestion des ressources réseau (énumération des ressources réseau, connexion à un réseau, authentification, association d’un partage à une lettre)
* Multiple Provider Router (MPR)qui permet de déterminer quel fournisseur (Network providers) doit être invoqué lorsque l'API WNet est solicitée
* Multiple UNC Provider (MUP)(dans le noyau) qui permet de déterminer vers quel redirecteur réseau (Network redirectors) doit être redirigée une requête UNC

### Notation UNC (Uniform Naming Convention)
La notation UNC (Uniform Naming Convention) permet d’identifier une ressource réseau (partage, fichier, imprimante) accessible via un système de fichiers réseau : \\Serveur\Partage\Chemin\Fichier

Exemple de systèmes de fichiers réseau :
* Natifs : Lanman, WebDav, TS, (NFS)
* Tiers : VirtualBox, VMWare, etc.

#### Syntaxe
\\Serveur\Partage\Chemin-Fichier

**Serveur** : nom de la machine distante :
* . : machine locale
* Adresse IP
* Nom NetBios (devant être résolu par NBNS)
* FQDN (devant être résolu par DNS)

**Partage** : nom du partage
* C$, ADMIN$, répertoire

### MPR (Multiple Provider Router)
![](https://i.imgur.com/17NnwGd.png)

### MUP (Multiple UNC Provider)
![](https://i.imgur.com/Z1Coo3L.png)

## Networks redirectors
### Redirecteur RDPNP (TS client)
Utilisé par le service Terminal Services pour l'accès aux ressources disques du client
Exemples : \\tsclient\D

### Redirecteur WebClient (WebDAV)
Permet l’accès à des fichiers via HTTP(S) et les extensions WebDAV
Exemples :
* http(s)://server/share/ -> \\server\share
* \\server@SSL\
* \\server@Port\
* \\server\ -> \\server\DavWWWRoot\
* net use z : https://live.sysinternals.com/tools

### Redirecteur LanmanWorkstation (SMB)
Permet l'accès à un système de fichiers via le protocole SMB
Exemples :
* net use \\localhost\c$

## Fonctionnement de NetBios et des 3 sous-protocoles associés
### NetBios
Protocole histoire (années 80), toujours supporté sous Windows via NetBIOS over TCP/IP(NetBT ou NBT)

NetBios offre trois services :
* NetBIOS Name Service (NBNS) : TCP/UDP 137
* NetBios Datagram Service (NBDS) : UDP 138
* NetBios Session Service (NBSS) : TCP 139

### NetBIOS Name Service (NBNS)
NBNS permet l’enregistrement, la libération et la résolution d’un nom NetBios sur un réseau local

Format nom NetBios : 15 caractères + 1 (NetBIOS suffix)
Les 3 commandes sont :
* Registration (claim)
* Release : permet de libérer un nom
* Query (resolution ou discovery) : permet de résoudre un nom

Repose massivement sur l'utilisation de messages en broadcast

## Rôle de SMB, apports de SMB2 (de 2.0.2 à 3.1.1)
Protocole de partage de fichiers apparu dans les années 80 où de nombreuses implémentations ont coexisté (DOS, draft-leach-cifs-v1-spec-01, Unix, etc.)

Avec Vista, Microsoft à introduit SMB2(SMB 2egénération)

SMB2 est désormais décliné en 3 familles (DialectFamily) et 5 versions de dialectes (Dialect Revisions)

![](https://i.imgur.com/f7NWXAQ.png)

### Apports de SMB2
Signature toujours supportée (mais pas imposée)
Abandon du transport par NetBios
Changement complet du format après la phase de validation
Performance (pipelinedes commandes)
Sécurité (signature sur 16 octets)
Simplification (passage de 100 à ≈20 commandes)
Support des liens symboliques, des hanles persistants

### SMB3.0-3.0.2
Administration powershell
#### SMB3.0 (Windows 8 / 2012)
Chiffrement via AES-128-CCM (confidentialité et signature)
Signature avec AES-128-CMAC
Négociation sécurisée des dialectes entre v2 v3 (mais pas entre v2/v3 et v1)
Désactivation possible de SMB1

#### SMB3.0.2 (Windows 8.1/2012R2)
amélioration des opérations de connexion et d’ I/O, partage de disque VHD

### SMB3.1.1
Négociation extensible (Extensible Negociationet Negotiate Contexts)
Pre-Authentication Intregrity
SMB Encryption Improvements (Support AES-128-GCM)
Possibilité pour le client à forcer le chiffrement
Cluster Dialect Fencinget Cluster Failover V2

### Principales opérations SMB
Négociation du dialecte
Authentification de l’utilisateur
Connexion à un partage SMB (tree connect)
Accès aux ressources du partage :
* Fichiers
* Répertoires

Déconnexion
Diverses opérations (Lock, IOCTL, Echo, Query info, etc.)

### Commandes SMB2
Négociation du dialecte :
* NEGOTIATE

Authentification de l’utilisateur :
* SESSION_SETUP, LOGOFF


Connexion à un partage :
* TREE_CONNECT, TREE_DISCONNECT


Accès aux fichiers : 
* CREATE, CLOSE, READ, WRITE, LOCK, IOCTL, QUERY_INFO, SET_INFO, FLUSH, CANCEL

Accès aux répertoires :
* QUERY_DIRECTORY, CHANGE_NOTIFY

Requête d’état :
* ECHO

## Transport de SMB et ports réseau associés
Transports disponibles :
* Tout système disponible :
    * NetBios Session Service (TCP 139)
    * OBSOLÈTE → Doit être désactivé
* A partir de Windows 2000 :
    * Direct Hosting (TCP 445)
* SMB 3.X :
    * RDMA (Remote Direct Memory Access)

![](https://i.imgur.com/lr3i6n7.png)

