---
tags: EFREI, M2, Windows
---
# Sécurité avancée Windows et AD
[Lien vers les fichiers](https://drive.google.com/drive/folders/1G-Tkqf47MlUKpN5QeRl-XgT2t8xKPAPn)
## Partie 1 - Windows Security Advanced
### Module 1: Windows Architecture
#### Composants de l'architecture Windows

* __User mode__
* *Processus système*
* lsass.exe (sécurité utilisateur)
* winlogon.exe (processus de connexion)
* *Services*
* *Sous-systèmes* (portabilité des applications)
* *NTDLL* (transition user <-> kernel mode)
* __Kernel mode__
* *System Service Dispatcher* (entrée du kernel-mode)
* *Executive* (High level) (I/O manager, memory manager, object manager)
* *Kernel* (Low level) (scheduling, synchronization, processor management)
* *HAL* (Hardware Abstraction Layer) - Spécifique
#### Types de dump mémoire
* Complet (>100Gb)
* Kernel memory
* Crash memory
#### Processus VS Threads

##### Processus
Il a :
* Son propre espace d'adressage virtuel
* Un PID
* Contexte de sécurité défini
* Code exécutable
* Variables d'environnement
* Au moins un thread
##### Thread
Chaque processus a au moins 1 thread.
Un thread partage certaines propriétés d'un processus, dont la mémoire et les ressources systèmes. Il exécute une partie du code du processus. Deux threads peuvent exécuter la même partie du code.
Un thread a son propre environnement.
#### Sécurité mémoire
* Metadata randomization
* Metadata integrity check
* Option to terminate process in case of heap corruption
* Page heap
* Allocation faite à la fin des pages
* Buffer overrun = access violation
* Option Gflags
* DEP (Data Execution Prevention)
* Empêche l'exécution d'une page marquée non exécutable
* Fonctionnalité hardware
* Forcé en x64 sur tous les processus
* Forcé en kernel mode sous x86
* TaskMgr.exe ou ProcessExplorer pour vérifier
* ASLR
* Historiquement les adresses mémoires étaient prédictibles
* Randomization des adresses de base Heap et Thread stack
#### Security descriptors
Contient une liste d'ACL applicables à un objet.
Autorise ou non un token (identité d'un processus) à accéder à une ressource.
Outil : WinObj.exe ou WinDbg `!sd`
#### Boot Sequence
##### 1. Startup sequence

* PC/AT = BIOS
* UEFI ~= BIOS Moderne
##### 2. Logon sequence
Ouverture de session

1. smss.exe
* UI
* Démarre winlogon.exe
2. winlogon.exe
* Gère la session jusqu'à sa fermeture
* Aussi appelé "secure desktop"
* Seul le compte SYSTEM peut y accéder
* Lance LogonUI.exe
3. LogonUI.exe
* Récupère les identifiants de connexion
* Application en plein écran
* Transmet les identifiants à winlogon.exe
4. winlogon.exe
* Fournit les identifiants à lsass.exe via appel RPC
5. lsass.exe
* Renvoie un access oken à winlogon.exe si authentification OK
7. winlogon.exe
* Charge le profil utilisateur grâce au token
* Lance userinit.exe
10. userinit.exe
* Démarre le contexte de sécurité utilisateur
* Définit les variables d'environnement
* Démarre explorer.exe (le shell) pour que winlogon.exe bascule dessus
##### 3. Windows services
* Programmes lancés en fond.
* Ne nécessitent pas d'utilisateur connecté.
* Pas de GUI pour intéragir avec les utilisateurs.
#### Boot environments
UEFI : Unified Extensible Firmware Interface
BIOS : Basic Input Output System
#### Comptes de service

* LocalSystem
* Privilèges élevés
* NetworkService
* Privilèges minimum
* Partage les identifiants sur le réseau
* LocalService
* Privilèges minimum
* Partage les identifiants anonymes sur le réseau
#### Types de sessions
???
#### Gestion des credentials
???
### Module 2: Security Mechanisms
#### SID Security Identifier
Valeur unique de taille variable pour vérifier l'identité d'un objet.

Exemple de code d'autorité

#### Security Descriptor
Il consiste d'une structure de données le SECURITY_DESCRIPTOR et est associé à des informations de sécurité d'un objet:
- Owner SID
- Primary group SID
- DACL Discretianory ACL (access control)
- SACL System ACL (audit)
DACL de adminSDHolder est le DACL de tous les admins AD
#### Gestion et utilisation des tokens d'accès
Token = clef vers une resource + mémoire du contexte de sécurité pour accéder à celle-ci
Deux types : primary ou impersonation

#### ACE et Mandatory Integrity Level
Deux modes d'AC (Access Control)

Mandatory = pas d'ownership,le système gère l'AC
Access Control Entry (ACL = ACE + ACE ...)

Mandatory Integrity Control (MIC), niveaux d'intégrité et politiques:

#### Moteurs d'audit

Deux moteurs d'audit:
| Basic | Advanced |
| ------------------------------------------------------------ | ------------------------------------------------------------ |
| Depuis Windows <= XP/2003<br />Peu de catégories<br />Pas de sélection fine<br /><br /> | Depuis Windows >= Vista/2008<br />Catégories et sous catégories détaillées<br />Sélection fine |
Les deux moteurs sont incompatibles.
### Module 3: Cryptographic mechanisms
#### DPAPI
Data Protection API: sécurité des données niveau OS pour les users et les process system.
Protection basée sur une clef dérivée du mot de passe du user, second secret peut être ajouté.
Ne stocke aucune donnée.
DPAPI génère une MasterKey chiffrée par le pass du user.
Les clés de session sont dérivées depuis cette master key (chiffrement symétrique) pour chiffre/déchiffre les données de l'application
#### DPAPI-ng
DPAPI + partage de credentials
#### SmartCard API
2FA, something you have
Equivalent à un serveur portatif
PIN protège les clefs privées stockées sur la carte
Applications accèdent au(x) secret(s) à travers la CAPI (Cryptographic API) ou CryptNG (partage)

SCardSvr: service de gestion des smartcards
#### TPM
Peut être hardware ou software
Ne stocke ni certifcat ni clé -> stockés par l'OS
Quand un objet n'est pas dans une partie protégée de TPM, donc sur disque (protected locations) il est chiffré mais non protégé contre la suppression
Les clefs et les seeds des protected locations ne quittent jamais TPM
Entités qui controlent TPM:
- platform (firmware platform)
- owner (OS)
- privacy administrator
Pour chaque entité TPM stocke: authorization value, authorization policy, seed
#### Bitlocker
Chiffrement de volume entier : disques, USB
Chiffre les fichiers, l'OS, pagefile, etc...
Clé de déchiffrement :
* PIN
* Clé USB
* TPM
Clé de récupération :
* Mot de passe
* AD
* Azure AD
* Compte Microsoft
Méthode de gestion recommandée : GPO
#### Bitlocker basé sur TPM
Protège du vol du disque chiffré par Bitlocker
Si le disque est chargé sur une configuration hardware différente (24 registres différents), il ne pourra pas être déchiffré.
Possibilité de rajouter un PIN à demander au boot.
*Empêche les attaques par boot d'USB*
### Module 4: Attacks / Defenses
#### Boot sur une autre OS
Via un ISO windows, possibilité d'éditer le registre du Windows installé.
Permet notamment d'ouvrir un cmd sur l'hôte sans avoir à se connecter, pour passer Administrateur local.
#### Crack de mot de passe *hors-ligne*
Possible lorsqu'on possède les hash
Outils :
* Cain and Abel
* John
* OphCrack
* L0phtCrack
* RainbowCrack
* Hybrid
* pwdump
Sources de hash :
* Registre SAM - LMHash ou NTLM
* Lui-même chiffré avec la SysKey `%SystemRoot%\system32\config\system` et déchiffré au démarrage
#### Contremesures
* Bitlocker (n'empêche pas les attaques *en ligne*)
* Mot de passe BIOS/UEFI
* Désactiver LMHash
* Renommer les comptes privilégiés
* Password reuse /!\
#### TP 5
TODO? C'est que les titres des tasks, mais résumer 50 pages (je sais il y a plein de screens) c'est un peu galère
##### Offline attack
Boot from media
Configure local admin account
Run hack tools
User Mimikatz to dump the credential manager
identify domain account logons
use pass the ticket to create a domain administrator account
Use psexec to remote access share
##### Hardening
BitLock the Windows system drive
Create group policy to enforce Credential Guard
Configure AppLocker to block psexec.exe and mimikatz.exe
Create group policy to enforce Windows Defender
Use virtual smart card as MFA
##### Hardening testing
Boot from media
Connect using local administrator account created in Exercise 1 Task 1
Playing with Audit
Configuring and testing Windows Defender Exploit Guard
## Partie 2 - Active Directory Security Advanced
### Module 1: Active Directory Fondamentals
#### Le rôle des contrôleurs de domaine
Authentification : utilisateurs, systèmes, SSO
Gestion des identités: information et autorisation
Gestion des systèmes: politiques de sécurité, customisation
#### Les composants de l’AD et son architecture

Composants:
- DC
- Domaine
- Forêt (frontière de sécurité)
- Trust (extension des frontières de sécurité)
- Site (topologie du réseau physique)
#### Les niveaux fonctionnels des forêts
#### Naming context, catalogue global et Object attributes


Global catalog: dans une forêt multi-domaine, contient une copie lecture seule de tous les naming contexts
Objet supprimé -> déplacé vers le NC Deleted Objects container (ses attributs ne sont pas supprimés), il est récupérables pour 60/180 j (tombstoneLifetime)
RID: Relative IDentifier, dernière partie du SID, donné incrémentalement
Groups:
- =! types : security, ditribution (messagerie)
- =! scopes: domain local, global, universal
#### FGPP
Fine Grained Password Policies:
- taille
- age
- complexité
- historique
- blocage
#### GPO
Group Policy Objects:
- gestion centralisée
- section machine et user
- appliquée au boot et au login, puis à interval régulier
GPO = GPC (GP Container) + GPT (GP Template)
GPO infra:
- AD side -> stored in AD database + SYSVOL
- client side -> CSE (Client Side Extensions) applique GPO + schedule
GPP(JPP) Group Policy Preferences:
- étend les GPO
- /!\ possibilité de stocker des mots de passe en clair
#### NTLM (Nique Ta Loutre de Mer)
* Sujet au bruteforce
* Crypto faible, vieux algos : MD4, DES, MD5, RC4
* Pas de salting
* Pas d'authentification mutuelle
#### Kerberos
* Système de tickets de service
* Basé sur le temps
* SPOF (KDC down = plus aucun accès)
* 1 ressource = 1 ticket
1. Le client s'authentifie auprès du KDC sur son Authentication Service (AS)
2. Le KDC renvoie un ticket TGT (Ticket Granting Ticket) pour que le client accède au TGS (Ticket Granting Service)
3. Le client utilise ce TGT pour obtenir une clé de session correspondant au service qu'il veut accéder
4. Cette clé de session est validée par le service demandé

### Module 2 : AD Threats Landscape
#### Connaitre son adversaire
* Cible principale : l'AD car il donne accès à tout
* L'AD n'est jamais le départ d'une attaque
Méthodes :
* Phishing
* Password discovery
* 0-day (rare)


#### Tiers 0, 1 et 2

#### Attaque du mouvement latérale
Pas de segmentation réseau
Même password pour l'admin local
Pas de restriction de connexion
#### Microsoft Exchange
Messagerie on prem, utilise AD pour auth et configuration du stockage
Groupes avec privlèges élevés:
- Exchange Trusted Subsystem
- Exchange Windows Permissions
Limiter les perm avec RBAC
#### Pass the hash/ Ticket
seDebugPrivilege -> extraction du hash LSASS ou TGT
#### Réviser TP 10 et 11
### Module 3 : AD Trust relationship
#### Active Directory Trust
Trusts extend the authentication and access of resources between users and computers from another domain or forest
#### Les types de trust

#### L’utilisation des tickets kerberos dans un trust

#### Sécurisation d’une PAW
Privileged Access Workstation:
- TPM
- Pas d'accès Internet
- Pas d'email
- Pas d'appli business
- Pas de traffic entrant
- Mis à jour
- Credential guard
- App Locker/code integrity
- Bitlocker
- Dans le doute rebuild