Renforcement de la sécurité

Master Windows 11 25H2 Optimisé

Auteur : Ayi NEDJIMI Consultants

Activation de Credential Guard

Credential Guard est la réponse de Microsoft aux attaques par vol d'identifiants (pass-the-hash, pass-the-ticket, Golden Ticket). Il utilise la Sécurité Basée sur la Virtualisation (VBS) pour isoler et protéger les secrets du système dans une zone de mémoire isolée et inaccessible.

Protection offerte :

  • Hachages de mots de passe NTLM
  • Tickets Kerberos (TGT - Ticket Granting Ticket)
  • Identifiants stockés par l'autorité de sécurité locale (LSA)
  • Secrets protégés dans une enclave virtualisée isolée du système d'exploitation

Fonctionnement technique : Credential Guard isole les processus LSA (Local Security Authority) dans un conteneur virtualisé sécurisé. Même si un attaquant obtient des privilèges administrateur complets sur le système, il ne peut pas accéder aux secrets stockés dans cette enclave protégée par l'hyperviseur.

💡 Prérequis : Credential Guard nécessite HVCI/VBS activé et TPM 2.0 pour fonctionner.
# Vérifier les prérequis
Get-ComputerInfo | Select-Object DeviceGuardSmartStatus, DeviceGuardSecurityServicesConfigured

# Activer le mode utilisateur isolé (Isolated User Mode) - requis pour VBS
Enable-WindowsOptionalFeature -Online -FeatureName "IsolatedUserMode" -All -NoRestart

# Activer Credential Guard
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" -Name "LsaCfgFlags" -Value 1 -PropertyType DWORD -Force

# Désactiver l'enregistrement des hachages de mots de passe LSA (optionnel mais recommandé)
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" -Name "DisableLsaHash" -Value 1 -PropertyType DWORD -Force

# Activer Device Guard
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\DeviceGuard" -Name "EnableVirtualizationBasedSecurity" -Value 1 -PropertyType DWORD -Force
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\DeviceGuard" -Name "RequirePlatformSecurityFeatures" -Value 3 -PropertyType DWORD -Force

# Activer Credential Guard explicitement
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\CredentialGuard" -Force
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\CredentialGuard" -Name "Enabled" -Value 1 -PropertyType DWORD -Force
⚠️ Note importante : Un redémarrage est obligatoire pour que HVCI et Credential Guard entrent en vigueur.

Activation de HVCI (Hypervisor-protected Code Integrity)

HVCI (Intégrité du Code Protégée par l'Hyperviseur) est un pilier de la sécurité du noyau Windows. Il s'appuie sur la Sécurité Basée sur la Virtualisation (VBS) pour isoler le processus de validation de l'intégrité du code dans un environnement protégé par l'hyperviseur.

Fonctionnement technique : HVCI garantit que tout code qui tente de s'exécuter en mode noyau (kernel mode) est correctement signé et approuvé. Cela empêche les rootkits, les pilotes malveillants et les exploits de s'injecter dans le noyau Windows, même si un attaquant obtient des privilèges administrateur.

Prérequis matériels :

  • Processeur avec support de virtualisation (VT-x pour Intel, AMD-V pour AMD)
  • TPM 2.0
  • Secure Boot activé dans le BIOS/UEFI
  • IOMMU (VT-d pour Intel, AMD-Vi pour AMD)
  • Au minimum 8 Go de RAM
# Activer HVCI (Memory Integrity)
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity" -Force
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity" -Name "Enabled" -Value 1 -PropertyType DWORD -Force

# Verrouiller HVCI pour empêcher une désactivation facile
# Le paramètre "Locked" empêche la désactivation sans intervention physique ou administrative élevée
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity" -Name "Locked" -Value 1 -PropertyType DWORD -Force
⚠️ Attention : HVCI peut causer des problèmes de compatibilité avec certains pilotes anciens ou non signés. Testez soigneusement après activation. Les pilotes problématiques apparaîtront dans l'Observateur d'événements sous "Microsoft-Windows-CodeIntegrity/Operational".

Activation de la protection DMA (Direct Memory Access)

Kernel DMA Protection atténue les attaques physiques de type "Evil Maid" où un attaquant se connecte directement à un port externe (Thunderbolt, USB4, ou certains ports PCIe externes) pour accéder directement à la mémoire du système (RAM) et voler des informations ou injecter du code malveillant.

Fonctionnement technique : Cette protection utilise l'I/O Memory Management Unit (IOMMU) (VT-d pour Intel, AMD-Vi pour AMD) pour isoler les périphériques et empêcher tout accès DMA non autorisé à la mémoire système. Les périphériques doivent être authentifiés avant de pouvoir accéder à la mémoire.

Scénarios protégés :

  • Attaques via périphériques Thunderbolt malveillants
  • Attaques via ports USB-C avec support DMA
  • Accès physique non autorisé via ports externes
💡 Note : La fonctionnalité est souvent activée par défaut sur les plateformes modernes qui supportent IOMMU/VT-d, particulièrement sur les ordinateurs portables récents.
# Activer la protection DMA
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\DeviceGuard" -Name "EnableVirtualizationBasedSecurity" -Value 1 -PropertyType DWORD -Force
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\KernelShadowStacks" -Name "Enabled" -Value 1 -PropertyType DWORD -Force

# Activer explicitement la protection contre les attaques DMA
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\DmaSecurity" -Name "AllowExternalDevices" -Value 0 -Type DWord -ErrorAction SilentlyContinue

# Vérifier l'état de la protection DMA
Write-Host "`nVérification de la protection DMA..." -ForegroundColor Yellow

# Méthode 1 : Via CIM
$dmaProtection = (Get-CimInstance -ClassName Win32_ComputerSystem).DmaProtections
Write-Host "Protection DMA (CIM) : $dmaProtection" -ForegroundColor Cyan

# Méthode 2 : Via le registre
try {
    $dmaPolicy = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\DmaRemapping" -Name "DmaRemappingPolicy" -ErrorAction SilentlyContinue
    Write-Host "DMA Remapping Policy : $($dmaPolicy.DmaRemappingPolicy)" -ForegroundColor Cyan
} catch {
    Write-Host "DMA Remapping Policy : Non configurée (utilise les valeurs par défaut du matériel)" -ForegroundColor Yellow
}

# Méthode 3 : Via msinfo32 (information système)
# La protection DMA apparaîtra dans Informations système > Résumé système > Protection DMA du noyau

Vérification manuelle :

  1. Ouvrez msinfo32.exe
  2. Regardez la section "Résumé système"
  3. Cherchez la ligne "Protection DMA du noyau"
  4. Statut attendu : "Activé" ou "Oui"

Optimisations de sécurité supplémentaires

# Activer DEP (Data Execution Prevention) pour tous les programmes
bcdedit /set nx AlwaysOn

# Activer le filtrage SMB pour bloquer SMB1
Set-SmbServerConfiguration -EnableSMB1Protocol $false -Force

# Désactiver l'autorun/autoplay pour tous les lecteurs
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer" -Name "NoDriveTypeAutoRun" -Value 255

# Désactiver le stockage des mots de passe en texte clair
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest" -Name "UseLogonCredential" -Value 0

# Activer le filtrage réseau pour les connexions non chiffrées
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" -Name "RequireSecuritySignature" -Value 1

# Désactiver NetBIOS over TCP/IP (si non utilisé)
$adapters = Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object {$_.IPEnabled -eq $true}
foreach ($adapter in $adapters) {
    $adapter.SetTcpipNetbios(2)
}