Les profondeurs de la virtualisation Windows (partie 2) — Une mémoire invisible même au noyau : comment fonctionnent VBS, HVCI et Credential Guard

· Mis à jour le: · · Windows, Virtualisation, Sécurité, VBS, HVCI, Credential Guard

Historique des révisions (première version, publiée le 22 Aug 2026)
Première publication
Citer cet article(DOI (archive enregistrée): 10.5281/zenodo.22176871)

Les DOI ci-dessous renvoient à des versions déjà archivées et peuvent différer du texte actuel. Pour citer le texte actuel, utilisez l’URL de cette page.

Go Komura (2026). Les profondeurs de la virtualisation Windows (partie 2) — Une mémoire invisible même au noyau : comment fonctionnent VBS, HVCI et Credential Guard. KomuraSoft LLC. https://comcomponent.com/fr/blog/windows-virtualization-internals-vbs-hvci-credential-guard/

DOI (archive enregistrée)
10.5281/zenodo.22176871
DOI (dernière version enregistrée)
10.5281/zenodo.22176872

Où Windows place-t-il les secrets que ni un administrateur ni le noyau ne peuvent lire ? La partie 2 part de cette question et suit le fonctionnement de VBS, HVCI et Credential Guard.

Sous Windows traditionnel, un attaquant qui chargeait un pilote noyau en tant qu’administrateur et vidait la mémoire du processus LSASS pouvait voler les hachages de mots de passe et les tickets Kerberos, puis les utiliser pour un mouvement latéral vers d’autres machines.

Sous Windows 11 avec Credential Guard en cours d’exécution, les hachages des informations d’identification de domaine protégées ne sont nulle part où le noyau ordinaire peut chercher. Sur les appareils qui remplissent les exigences de licence (Enterprise, Education et analogues) et les exigences matérielles, cette protection est activée par défaut à partir de 22H2.1 Les exigences et l’état d’exécution réel sont deux choses distinctes, donc le danger n’a pas disparu là où elle ne tourne pas.

La partie 1 a montré la structure dans laquelle le Windows hôte s’exécute dans la partition racine au-dessus de l’hyperviseur. Ce que cet article suit, c’est une ligne de frontière de plus, tracée à l’intérieur de cette même partition.

« Les profondeurs de la virtualisation Windows » — les 3 parties

Nous regardons le même hyperviseur Windows dans l’ordre fondement → isolation de sécurité → application aux machines virtuelles légères.

Partie Question centrale
Partie 1 : l’hyperviseur et les partitions Où s’exécute le Windows hôte ?
Partie 2 : VBS, HVCI et Credential Guard (cet article) Où placer des secrets que même le noyau ne peut pas lire ?
Partie 3 : WSL2, Windows Sandbox et les conteneurs Pourquoi peut-on l’alléger tout en gardant l’isolation ?

Prérequis de cet article

Point Détails
Lecteurs visés Développeurs et opérateurs qui veulent comprendre ce que sont réellement Isolation du noyau, Intégrité de la mémoire et Credential Guard
Environnement Windows 10/11 x64 ou Windows Server actuel. La discussion des anneaux et de SLAT suppose x64 ; Arm64 utilise d’autres mécanismes tels que les niveaux d’exception
Connaissances préalables Les notions de partitions et de SLAT de la partie 1
Difficulté et périmètre Intermédiaire. Ce n’est pas un guide de configuration ; il explique la structure des fonctions de sécurité

Comment lire cet article

Ce que vous voulez savoir Sections à lire
Pourquoi une isolation plus forte que le noyau est nécessaire, et comment elle est réalisée Les limites du modèle traditionnel à la section 2 → VSM, VTL et SLAT à la section 3
Ce que protègent respectivement HVCI et Credential Guard L’intégrité du code à la section 4 → Les informations d’identification et le périmètre de protection à la section 5
Comment distinguer l’écran de paramètres de l’état d’exécution réel Comment vérifier à la section 6 → Les lectures erronées à la section 7

1. D’abord la conclusion

Windows a ajouté un axe de privilège appelé VTL (Virtual Trust Level) et a placé les secrets en VTL1. Le noyau ordinaire qui s’exécute en VTL0 ne peut pas lire la mémoire de VTL1. Ce qui garde la frontière n’est pas le noyau lui-même, mais l’hyperviseur, qui tient les tables de traduction SLAT.

C’est le squelette de la sécurité basée sur la virtualisation (VBS). VBS utilise l’hyperviseur pour créer un environnement isolé et y loge des fonctions de sécurité. Elle est conçue en partant du principe que l’environnement isolé reste protégé même si le noyau est compromis.2

Les deux mondes que crée VBSVTL0 et VTL1 siègent à l'intérieur de la même partition ; VTL0 tient le noyau ordinaire et les applications, VTL1 le Secure Kernel et les fonctions de sécurité isolées, et l'hyperviseur garde la frontièreVTL1 (le monde isolé)VTL0 (le monde ordinaire)Lecture impossibleFonctions de sécurité isoléesSecure KernelApplications (anneau 3)Noyau NT et pilotes (anneau 0)Hyperviseur (impose la frontière via SLAT)

Figure 1 : Il y a deux mondes à l’intérieur d’un seul Windows, et le noyau de VTL0 ne peut pas accéder à la mémoire de VTL1.

Le point important est que ce n’est pas « lever une autre machine virtuelle ». VTL0 et VTL1 sont à l’intérieur de la même partition, à l’intérieur du même Windows. Nous regardons ensuite comment cette scission est réalisée.

Dans le diagramme, un trait continu marque une relation qui vaut toujours et un trait pointillé une relation conditionnelle (les conditions figurent dans l’explication de chaque relation sur la page de détail). La liste complète des relations (22 au total, avec preuve et niveau de certitude) et les définitions des concepts principaux sont rassemblées sur la page de détail de la carte des connaissances (en japonais). Données : JSON-LD / Turtle

2. Les limites du modèle d’anneaux — le gardien et le gardé se tiennent à la même hauteur

La sécurité Windows traditionnelle était construite sur l’échelle des anneaux (niveaux de privilège). Le mode utilisateur (anneau 3) est gardé par le mode noyau (anneau 0). Alors qui garde l’anneau 0 ? Personne ne le peut. L’anneau 0 est le privilège le plus élevé.

Cette structure a deux faiblesses structurelles.

  • Le noyau n’est pas un monolithe. À l’anneau 0 s’exécutent non seulement Windows lui-même, mais un grand nombre de pilotes tiers. Si l’un d’eux a une vulnérabilité, l’attaquant obtient l’exécution de code à l’anneau 0.
  • Depuis l’anneau 0, tout est visible. Aussi bien qu’un processus en mode utilisateur tel que LSASS se défende, un attaquant qui a pris le noyau peut lire sa mémoire librement. Les attributs de protection et les tables de pages sont gérés par le noyau lui-même.
Le chemin de vol des informations d'identification dans le modèle d'anneaux traditionnelUn attaquant qui prend l'anneau 0 via un pilote vulnérable peut lire la mémoire du processus LSASS avec toute l'autorité du noyau et obtenir les hachages de mots de passeExploite un pilote vulnérableCode de l'attaquantPrend l'anneau 0Peut lire toute la mémoire physiqueObtient les hachages depuis la mémoire de LSASSDétourné pour un mouvement latéral vers d'autres machines

Figure 2 : Parce que le gardien (le noyau) et le gardé (les secrets) se tiennent à la même hauteur, la faiblesse fondamentale est que si l’anneau 0 tombe, tout tombe.

Ce qu’il faut donc, c’est « un endroit plus haut que l’anneau 0 ». Cet endroit est déjà apparu dans la partie 1. L’hyperviseur s’exécute à un privilège plus élevé que le noyau et s’approprie tôt le contrôle des permissions d’accès mémoire du processeur (SLAT). Une région isolée gardée par l’hyperviseur est protégée même contre l’accès depuis le logiciel d’OS de l’anneau 0 (mode superviseur).3

3. VSM et VTL — ajouter un axe de plus au privilège

Cette section procède dans l’ordre l’ensemble de fonctions qui fournit l’isolation (VSM) → les niveaux d’isolation (VTL) → le mécanisme qui impose la frontière (SLAT) → le code qui s’exécute à l’intérieur. Les noms se ressemblent, mais ce ne sont pas la même chose.

3.1. Les niveaux de confiance virtuels (VTL)

L’ensemble de fonctions de l’hyperviseur qui fournit cette isolation s’appelle VSM (Virtual Secure Mode). VSM est le fondement de Device Guard, Credential Guard, le TPM virtuel et analogues.3

Le concept central de VSM est le VTL (Virtual Trust Level). Les points essentiels sont les suivants.3

  • Les VTL sont hiérarchiques, et plus le numéro est grand, plus le privilège est élevé. VTL0 est le plus bas ; VTL1 est plus privilégié que VTL0.
  • L’architecture définit jusqu’à 16 niveaux, mais ce qui est actuellement implémenté, ce sont deux : VTL0 et VTL1.
  • Chaque VTL a ses propres protections d’accès mémoire indépendantes. L’hyperviseur gère ces protections sur l’espace d’adresses physiques de la partition, donc le logiciel système à l’intérieur de la partition ne peut pas les changer.
  • Un processeur virtuel a un état de registres et un mécanisme d’interruptions distincts par VTL, et un VTL inférieur ne peut pas regarder l’état d’un VTL supérieur.
Les trois indépendances qui constituent l'isolation VTLLes protections d'accès mémoire, l'état des registres du processeur virtuel et le mécanisme d'interruptions sont indépendants par VTL, et un VTL inférieur ne peut toucher aucun d'eux dans un VTL supérieurCe qui est indépendant par VTLProtections d'accès mémoireÉtat des registres du processeur virtuelMécanisme d'interruptionsUn VTL inférieur ne peut pas toucher un VTL supérieur

Figure 3 : Faire un monde à part non seulement de la mémoire, mais aussi de l’état du processeur et des interruptions, est le trio qui ne laisse aucun judas.

Si les anneaux (0 et 3) sont l’axe qui sépare « l’OS et les applications », les VTL sont un second axe qui sépare « le monde ordinaire et le monde isolé ». Les deux axes sont orthogonaux, et à l’intérieur de VTL1 il y a aussi un mode noyau et un mode utilisateur.

Les quatre régions créées par les deux axes des anneaux et des VTLL'axe des anneaux sépare le mode noyau du mode utilisateur, l'axe des VTL sépare le monde ordinaire du monde isolé, et la combinaison produit quatre régions : applications ordinaires, noyau NT, trustlets IUM et Secure KernelVTL1 (monde isolé)VTL0 (monde ordinaire)Anneau 3 : IUM (trustlets)Anneau 0 : Secure KernelAnneau 3 : applications ordinairesAnneau 0 : noyau NT et pilotes

Figure 4 : Il y a désormais deux axes de privilège, et « est-ce le noyau ? » et « est-ce le monde isolé ? » sont devenues des questions distinctes.

3.2. La substance de la frontière est SLAT

La partie 1 a dit que les tables de traduction de second niveau qui font correspondre les adresses physiques de l’invité (GPA) à la RAM réelle (SPA) — SLAT — sont tenues par l’hyperviseur. VSM utilise précisément cette propriété. L’isolation des VTL est construite en utilisant l’hyperviseur Hyper-V et SLAT.4

Lorsque VTL1 déclare « cette mémoire ne doit pas être montrée à VTL0 », l’hyperviseur retire la permission d’accès à cette page des tables de traduction de VTL0. Dès lors, même si le noyau de VTL0 tente de toucher cette adresse, l’accès est refusé au stade de la traduction d’adresses du processeur. Peu importe comment le noyau réécrit ses propres tables de pages.

Les tables de pages (GVA→GPA) peuvent appartenir au noyau, mais la traduction au-delà (GPA→SPA) et la permission d’accès finale appartiennent à l’hyperviseur.

Comment un accès de VTL0 à la mémoire de VTL1 est refuséLorsque le noyau de VTL0 tente de lire la mémoire de VTL1, il peut passer ses propres tables de pages mais est refusé par la protection d'accès SLAT, et le contrôle passe à l'hyperviseurPas d'autorisationAutorisation présenteLe noyau de VTL0 tente de lire une page de VTL1Passe les tables de pages du noyau lui-mêmeLa protection d'accès SLAT l'autorise-t-elle ?L'hyperviseur intervient et refuse l'accèsAccès mémoire ordinaireProtégé à une couche que le noyau ne peut pas changer

Figure 5 : La barrière se tient hors du noyau, et la protection SLAT ne peut pas être changée par le logiciel à l’intérieur de la partition.

La partie 1 de la série sur la mémoire a écrit que « le VAD, le PTE et les attributs de protection décident si un accès est autorisé ». Dans un environnement VBS, on peut l’ordonner ainsi : après que tout cela a été passé, un contrôle SLAT attend encore.

3.3. Le Secure Kernel et IUM

Ce qui s’exécute à l’intérieur de VTL1 n’est pas le noyau NT ordinaire, mais un petit noyau appelé Secure Kernel. Le mode utilisateur de VTL1 s’appelle IUM (Isolated User Mode), et les programmes qui s’y exécutent s’appellent des trustlets (processus de confiance).4

Un trustlet ne peut pas tout faire comme un processus ordinaire. La plupart de ses appels système sont marshalés vers le noyau NT du côté VTL0, qui est chargé d’effectuer le travail.4 VTL1 n’est pas un « monde supérieur qui peut tout » ; elle est délibérément construite petite, comme un coffre-fort qui tient des secrets. Moins il y a de code que l’on peut faire entrer dans le coffre, plus la surface d’attaque est petite.

Le flux des appels système d'un trustletUn trustlet en VTL1 ne traite pas lui-même la plupart des appels système ; il les marshale vers le noyau NT de VTL0 et ne reçoit que le résultat, ce qui maintient VTL1 petiteDans la plupart des casTrustlet (IUM en VTL1)Un appel système est nécessaireDemande au noyau NT de VTL0Ne reçoit que le résultatVTL1 reste petite et la surface d'attaque rétrécit

Figure 6 : Le coffre-fort n’a pas d’installations propres ; il envoie les corvées à l’extérieur et continue de ne garder que les secrets.

4. HVCI — vérifier l’intégrité du code du noyau dans le coffre-fort

Pour HVCI, deux points à saisir : où la vérification est effectuée et ce qui est autorisé sur la mémoire après la vérification. Nous regardons cette protection, puis son effet sur la compatibilité des pilotes.

4.1. Ce qui est vérifié

La première fonction représentative qui repose sur VBS est l’intégrité de la mémoire — HVCI (intégrité du code protégée par l’hyperviseur). Windows a un mécanisme d’intégrité du code qui inspecte les pilotes et les binaires en mode noyau avant qu’ils ne démarrent, et refuse de charger ceux qui ne sont pas signés ou pas de confiance. HVCI exécute cette vérification à l’intérieur de l’environnement isolé de VBS.2

La raison de déplacer la logique de vérification elle-même en VTL1 est précisément la faiblesse de la section 2. Si le code de vérification siège à l’intérieur du noyau de VTL0, un attaquant qui a pris le noyau peut substituer la vérification. S’il est en VTL1, la main qui substitue n’y atteint pas.

La différence selon l'emplacement du code de vérificationSi le code de vérification siège dans le noyau de VTL0, il est neutralisé une fois le noyau pris ; s'il est en VTL1, même un attaquant qui a pris le noyau n'y atteint pas et la vérification reste protégéeDans le noyau de VTL0 (traditionnel)Environnement isolé en VTL1 (HVCI)Attaquant qui a pris le noyauOù se trouve la vérification d'intégrité du code ?La logique de vérification peut être substituéeLa substitution est hors de portéeDu code non signé peut s'exécuter dans le noyauLa vérification continue de fonctionner après compromission du noyau

Figure 7 : Ne pas placer le poste de contrôle à l’intérieur du côté qui pourrait être percé ; ce déménagement de la logique de vérification est l’essence d’HVCI.

4.2. Les règles des pages exécutables

L’effet d’HVCI ne se limite pas à « l’inspection au démarrage ». Il contraint aussi l’allocation de mémoire noyau.5

  • Une page noyau ne devient exécutable qu’après avoir passé la vérification d’intégrité du code.
  • Une page exécutable ne devient jamais inscriptible (ce qu’on appelle W^X).

Avec ces deux règles en place, même si une vulnérabilité telle qu’un dépassement de tampon permet de réécrire la mémoire noyau, on ne peut pas faire exécuter le contenu réécrit. Les pages exécutables ne peuvent pas être réécrites, et les pages que l’on peut réécrire ne sont pas exécutables.5 Le fondement final de la permission d’exécution est le droit d’exécution côté SLAT, que le noyau de VTL0 ne peut pas manipuler.

Jusqu'à ce qu'une page noyau devienne exécutable dans un environnement HVCIUne demande de chargement de pilote reçoit la vérification d'intégrité du code dans l'environnement isolé de VBS ; si elle passe, elle est autorisée comme page exécutable et non inscriptible ; si elle échoue, elle est bloquée et enregistrée dans le journal CodeIntegrityRéussiteÉchecDemande de chargement et d'exécution de code noyauVérification d'intégrité du code dans l'environnement isoléAutorisée comme page exécutable (écritures interdites)Chargement bloquéEnregistré dans le journal CodeIntegrity Operational (identifiant d'événement 3087)Les pages inscriptibles restent non exécutables

Figure 8 : La règle qui ne laisse jamais coexister exécution et écriture est vérifiée du côté VTL1, et le noyau de VTL0 ne peut pas la renverser.

La retracer du point de vue de l’attaquant montre clairement comment la règle prend effet.

Comment l'injection de code échoue dans un environnement HVCIMême si une vulnérabilité permet de réécrire la mémoire noyau, une page sur laquelle on a pu écrire n'est pas exécutable, et une page exécutable ne peut pas être réécrite au départ, donc le code injecté ne peut jamais être exécutéUne page inscriptibleUne page exécutableTenter de falsifier la mémoire noyau via une vulnérabilitéQuelle page est la cible ?La réécriture réussitLa réécriture elle-même est impossibleMais cette page n'est pas exécutableLe code injecté ne peut pas être exécuté

Figure 9 : Quelle que soit l’entrée que vous prenez, vous aboutissez à une impasse ; c’est tout le sens de ne jamais laisser se chevaucher pages inscriptibles et pages exécutables.

4.3. Le prix : la compatibilité des pilotes

Cette règle entre en collision avec les pilotes de conception plus ancienne. Un pilote qui réécrit son propre code à l’exécution, qui n’a pas de signature, ou qui exige de la mémoire à la fois exécutable et inscriptible, ne peut pas être chargé dans un environnement HVCI.

Le fait du blocage se confirme dans l’Observateur d’événements sous Applications and Services Logs\Microsoft\Windows\CodeIntegrity\Operational (l’identifiant d’événement 3087 est le représentant).6

Dans beaucoup de cas, c’est la véritable identité du problème « après avoir activé l’intégrité de la mémoire, un périphérique a cessé de fonctionner ». La voie principale est la mise à jour vers une version de pilote compatible HVCI ; désactiver l’intégrité de la mémoire doit être regardé comme un dernier recours qui abandonne la protection en bloc.

Si vous êtes impliqué dans cette vérification du côté du développement de pilotes, voir aussi l’article sur les pilotes filtres (« Pilotes minifiltres Windows »).

Diagnostic lorsqu'un périphérique cesse de fonctionner sous l'intégrité de la mémoireIdentifiez le pilote bloqué dans le journal CodeIntegrity Operational ; la voie principale est la mise à jour vers une version compatible HVCI, sinon une demande au fournisseur, et la désactivation est un dernier recours qui n'est jamais une configuration permanenteOuiNonUn périphérique cesse de fonctionner après activation de l'intégrité de la mémoireIdentifier le pilote bloqué dans le journal CodeIntegrityExiste-t-il un pilote compatible HVCI ?Mettre à jour et résoudre en laissant la fonction activéeDemander une version compatible au fournisseurLa désactivation est un dernier recours, jamais une configuration permanente

Figure 10 : La première chose à regarder n’est pas l’écran de paramètres mais le journal, et l’identifiant d’événement 3087 sait quel pilote a été bloqué.

5. Credential Guard — les hachages sont à l’intérieur de LSAIso

Là où HVCI protège l’intégrité du code du noyau, Credential Guard protège les informations d’identification. Si l’on sépare le guichet qui accepte l’authentification et le lieu où les secrets sont conservés, la structure et le périmètre de protection s’emboîtent.

5.1. LSASS et LSAIso

La deuxième fonction représentative qui repose sur VBS est la réponse à l’énigme d’ouverture : Credential Guard.

Windows traditionnel conservait les hachages NTLM et les tickets Kerberos dans la mémoire du processus LSA (lsass.exe). Lorsque Credential Guard est activé, le stockage des secrets protégés parmi ceux-ci — les hachages NTLM des informations d’identification de domaine et les TGT Kerberos (Ticket Granting Tickets), par exemple — passe à LSAIso.exe, un trustlet qui s’exécute en IUM en VTL1.7

  • lsass.exe (VTL0) continue de s’exécuter comme guichet du traitement d’authentification, comme auparavant.
  • Les secrets eux-mêmes sont tenus par LSAIso.exe (VTL1) et ne sont pas accessibles depuis VTL0.
  • Les deux communiquent via RPC (Remote Procedure Call).
  • LSAIso n’héberge aucun pilote de périphérique et n’accueille que le jeu minimal de binaires signés. Les signatures sont vérifiées contre un certificat auquel VBS fait confiance.7
Où siègent les informations d'identification lorsque Credential Guard est activélsass en VTL0, comme guichet d'authentification, communique avec LSAIso en VTL1 via RPC ; les hachages et TGT réels des informations d'identification de domaine protégées sont tenus par LSAIso, donc un attaquant qui obtient des privilèges administrateur en VTL0 et vide lsass n'obtient toujours pas les secrets protégés eux-mêmesVTL1VTL0RPCVidage mémoireN'atteint pasLSAIso.exe (coffre-fort des secrets)lsass.exe (guichet d'authentification)Attaquant (privilèges administrateur)

Figure 11 : Parce que le guichet et le coffre ont été séparés, vider lsass ne livre plus les hachages réels des informations d’identification de domaine protégées.

Conditions d’activation par défaut

À partir de Windows 11 version 22H2, VBS et Credential Guard sont activés par défaut sur les appareils qui remplissent les exigences de licence (Enterprise E3/E5, Education A3/A5) et les exigences matérielles. Sur des éditions telles que Pro, Credential Guard n’est pas activé automatiquement (il y a des exceptions, par exemple une machine qui a été activée sous une licence éligible par le passé et a ensuite été rétrogradée).1

Cette protection des informations d’identification n’est pas l’affaire d’un produit additionnel spécial ; c’est l’état standard de Windows actuel sur les éditions éligibles.

Le flux des informations d'identification de la connexion à l'authentificationAprès la connexion, les secrets réels sont stockés dans LSAIso en VTL1 ; chaque fois que l'authentification est nécessaire, lsass en VTL0 demande le calcul via RPC, et seul le résultat du traitement d'authentification revient en VTL0, sans que les secrets à long terme protégés eux-mêmes ne soient jamais renvoyésDemande le calcul via RPCRenvoie le résultat (jamais le secret)L'utilisateur se connectelsass le traite comme guichetLes secrets réels sont stockés dans LSAIsoDemandes d'authentification ultérieures

Figure 12 : Les secrets à long terme protégés eux-mêmes ne quittent pas le coffre ; ce qui revient en VTL0 est le résultat du traitement d’authentification, un ticket par exemple.

5.2. Savoir précisément ce qui n’est pas protégé

Informations d’identification protégées

Credential Guard n’est pas un bouclier universel. Ce qu’il protège, ce sont les hachages NTLM des informations d’identification de domaine, les TGT Kerberos (Ticket Granting Tickets), et ce qui a été stocké comme informations d’identification de domaine.

Hors périmètre

Les éléments suivants sont hors périmètre.8

  • Les tickets de service Kerberos (les TGT sont protégés)
  • Les informations d’identification des comptes locaux et des comptes Microsoft
  • Le vol de saisie par un enregistreur de frappe, et les attaques physiques
  • Les informations d’identification sur des chemins qui utilisent NTLMv1, MS-CHAPv2, Digest ou CredSSP
  • L’intérieur d’un logiciel tiers qui gère lui-même les informations d’identification

Indépendamment du périmètre de protection, vérifier aussi la compatibilité d’authentification

De plus, lorsque Credential Guard est activé, NTLMv1, la délégation Kerberos non contrainte et analogues ne peuvent plus être utilisés, donc les systèmes métier qui dépendent d’une authentification héritée ont besoin d’une vérification de compatibilité.8 Ce n’est pas « l’activer et c’est fini » ; connaître l’intérieur et l’extérieur du périmètre de protection et combler le reste par d’autres mesures — c’est le bon usage en pratique.

Le périmètre de protection de Credential GuardLes hachages NTLM et TGT du domaine et les informations d'identification de domaine stockées sont protégés, tandis que les tickets de service, les comptes locaux, les enregistreurs de frappe, les attaques physiques et les informations d'identification qu'une application stocke elle-même sont hors périmètreDe quel côté du périmètre de protection se trouve ce secret ?Hachages NTLM et TGT du domaineTickets de service et comptes locauxProtégé dans LSAIsoNon protégé (d'autres mesures sont nécessaires)Frappes clavier, attaques physiques et stockages propres à l'application sont aussi hors périmètre

Figure 13 : Le périmètre de protection est tracé d’une ligne nette, et l’extérieur de la ligne se comble par l’authentification multifacteur et la conception côté application.

6. Vérifier de vos propres yeux

Vous pouvez vérifier l’état d’exécution de VBS et de chaque fonction sur votre propre machine. Lisez l’état de VBS, le fondement, séparément de l’état des services qui s’exécutent dessus.

6.1. Vérifier VBS et les services en cours d’exécution dans PowerShell

Get-CimInstance -Namespace root/Microsoft/Windows/DeviceGuard `
    -ClassName Win32_DeviceGuard |
    Select-Object VirtualizationBasedSecurityStatus,
                  SecurityServicesConfigured,
                  SecurityServicesRunning

Lisez la sortie comme suit.9

  • Si VirtualizationBasedSecurityStatus vaut 2, VBS est activée et tourne.
  • Si SecurityServicesRunning contient 1, Credential Guard tourne ; s’il contient 2, l’intégrité de la mémoire (HVCI) tourne.

6.2. Lire msinfo32 et l’écran de paramètres différemment

Pour vérifier l’état d’exécution dans une interface graphique, regardez le champ « Sécurité basée sur la virtualisation » dans msinfo32 (les services en cours d’exécution y sont listés, par exemple « Intégrité du code imposée par l’hyperviseur »).

Le basculeur « Intégrité de la mémoire » sous « Sécurité de l’appareil > Isolation du noyau » dans l’application Sécurité Windows est un écran qui reflète le paramètre. Il peut paraître activé même pendant qu’HVCI ne tourne pas réellement, par exemple pendant qu’un redémarrage est en attente juste après l’activation, ou lorsqu’il y a un problème de compatibilité au démarrage. Jugez donc s’il tourne d’après msinfo32 ou d’après SecurityServicesRunning dans Win32_DeviceGuard.6

6.3. Ne pas juger « en cours d’exécution » d’après la seule présence d’un processus

Il y a aussi une trace dans l’onglet Détails du Gestionnaire des tâches. Sur une machine où VBS tourne, vous verrez un processus appelé « Secure System ». LsaIso.exe est le processus qui apparaît lorsque le service LSA isolé est hébergé en VTL1, et il n’apparaît normalement pas dans une configuration où seule HVCI est activée.

La présence ou l’absence d’un processus n’est toutefois qu’une trace, donc jugez si Credential Guard tourne d’après SecurityServicesRunning (s’il contient 1), comme décrit plus haut. Les deux sont des fenêtres, visibles depuis VTL0, sur le monde du côté VTL1.

La procédure pour vérifier que les fonctions liées à VBS tournentConfirmez que VBS tourne en interrogeant Win32_DeviceGuard, jugez si Credential Guard et HVCI tournent d'après les valeurs de SecurityServicesRunning, et consultez le journal CodeIntegrity pour les problèmes de pilotesNonOuiContient 1Contient 2Interroger Win32_DeviceGuardLe statut VBS vaut-il 2 ?VBS ne tourne pas (vérifier exigences et paramètres)Que contient SecurityServicesRunning ?Credential Guard tourneIntégrité de la mémoire (HVCI) tournePour les problèmes de pilotes, consulter le journal CodeIntegrity (3087)

Figure 14 : La vérification d’état procède en trois étapes : VBS elle-même, chaque service au-dessus, et le journal lorsqu’un problème survient.

7. Trois lectures erronées à éviter en pratique

7.1. « Protéger les privilèges administrateur suffit. VBS est une affaire de serveurs »

Ce que Credential Guard empêche, c’est l’extension des dégâts après que les privilèges administrateur ont été pris (extraction de hachages et mouvement latéral). Autrement dit, VBS est une couche de défense en profondeur qui suppose la compromission, et c’est sur les PC clients qu’elle porte. Sous Windows 11 qui remplit les exigences, l’activation par défaut est la norme, donc la bonne posture n’est pas « cela ne nous concerne pas » mais « gérer la compatibilité en partant du principe que c’est déjà en cours d’exécution ».

Les stades de compromission et l'endroit où VBS agitL'accès initial est couvert par d'autres mesures telles que l'authentification multifacteur et la formation ; HVCI bloque l'injection de code dans le noyau qui suit l'élévation de privilèges ; Credential Guard bloque le vol des secrets de domaine protégés et le mouvement latéral, mais n'atteint pas les secrets hors de son périmètreAccès initial (hameçonnage et analogues)Élévation de privilègesInjection de code dans le noyauVol des secrets de domaine protégés et mouvement latéralMFA, formation et EDR couvrent celaHVCI bloque cette étapeCredential Guard bloque cela (secrets protégés uniquement)

Figure 15 : VBS n’est pas une technique « ne pas les laisser entrer » ; c’est une technique « ne pas les laisser gagner une fois qu’ils sont dedans », et le stade qu’elle garde est différent.

7.2. « Si l’intégrité de la mémoire pose un problème, il suffit de l’éteindre »

L’éteindre fera fonctionner les choses pour le moment, mais retire en bloc la barrière contre l’injection de code dans le noyau. La voie principale est d’abord d’identifier le pilote bloqué dans le journal CodeIntegrity, puis d’appliquer la version mise à jour du fournisseur. Même lorsque vous la désactivez temporairement pour validation, nous recommandons une pratique d’exploitation qui n’en fait jamais une configuration permanente.

7.3. « Avec Credential Guard, les mots de passe ne peuvent pas être volés »

C’est une surconfiance née de la confusion du périmètre de protection. Les tickets de service, les comptes locaux, les frappes clavier elles-mêmes et les informations d’identification qu’une application stocke elle-même sont hors périmètre.8 L’hameçonnage et les enregistreurs de frappe exigent d’autres mesures (authentification multifacteur, Windows Hello, et une revue de la façon dont l’application elle-même gère les informations d’identification).

8. Résumé

  • VBS utilise l’hyperviseur pour créer un environnement isolé et protège les fonctions de sécurité en partant du principe que le noyau sera compromis.2
  • L’unité d’isolation est le VTL ; actuellement deux niveaux sont implémentés, VTL0 (le monde ordinaire) et VTL1 (le Secure Kernel et IUM).3
  • La substance de la frontière est la protection d’accès mémoire SLAT, que le logiciel à l’intérieur de la partition, noyau compris, ne peut pas changer.3
  • HVCI exécute la vérification d’intégrité du code dans l’environnement isolé et impose « non exécutable tant que la vérification n’est pas passée » et « les pages exécutables ne sont pas inscriptibles ».5 Le prix est qu’il faut gérer la compatibilité des pilotes.6
  • Credential Guard isole les hachages NTLM et les TGT des informations d’identification de domaine dans LSAIso en VTL1. À partir de Windows 11 22H2, il est activé par défaut sur les appareils qui remplissent les exigences de licence (Enterprise, Education) et les exigences matérielles (utilisez cela conjointement avec une vérification de l’état d’exécution).71
  • L’état d’exécution se vérifie d’après SecurityServicesRunning dans Win32_DeviceGuard (1 = Credential Guard, 2 = HVCI).9

La suite dans la partie 3, « Des machines virtuelles qui démarrent en quelques secondes — WSL2, Windows Sandbox et les conteneurs ».

Jusqu’ici, nous avons regardé la virtualisation du côté de la « force de l’isolation ». Le dernier volet regarde du côté opposé, la « légèreté », et suit où les machines virtuelles légères qui ont abandonné le poids d’une machine virtuelle complète font des économies.

Articles connexes

Domaines de conseil associés

KomuraSoft LLC prend en charge les investigations de compatibilité entre applications Windows et fonctions de sécurité, l’analyse des défaillances dues aux pilotes, et la validation technique des environnements PC internes.

Références

  1. Microsoft Learn, Credential Guard overview. Sur le fait que Credential Guard est activé par défaut à partir de Windows 11 version 22H2 sur les appareils qui remplissent les exigences de licence, matérielles et logicielles et n’ont pas été explicitement désactivés ; que les éditions/licences éligibles sont Enterprise (E3/E5) et Education (A3/A5), Pro étant hors périmètre ; et qu’une machine Pro qui a été activée sous une licence éligible par le passé peut rester éligible à l’activation par défaut après une rétrogradation. ↩ ↩2 ↩3

  2. Microsoft Learn, Virtualization-based Security (VBS). Sur le fait que VBS utilise la virtualisation matérielle et l’hyperviseur Windows pour créer un environnement isolé et en faire le point d’ancrage de confiance de l’OS en partant du principe que le noyau peut être compromis ; que l’intégrité de la mémoire exécute la vérification d’intégrité du code en mode noyau à l’intérieur de cet environnement isolé ; et que SLAT est une exigence obligatoire pour VBS. ↩ ↩2 ↩3

  3. Microsoft Learn, Virtual Secure Mode. Sur le fait que VSM est le fondement de Device Guard, Credential Guard, le TPM virtuel et analogues ; que l’accès aux régions isolées n’est contrôlé que par l’hyperviseur et est protégé même contre le logiciel d’OS de l’anneau 0 ; que les VTL sont hiérarchiques, 2 d’un maximum de 16 niveaux étant implémentés ; et que les protections d’accès mémoire par VTL ne sont pas modifiables par le logiciel système à l’intérieur de la partition. ↩ ↩2 ↩3 ↩4 ↩5

  4. Microsoft Learn, Isolated User Mode (IUM) Processes. Sur le fait que VSM crée les VTL en utilisant l’hyperviseur Hyper-V et SLAT ; que le Secure Kernel et IUM s’exécutent en VTL1 ; que les trustlets marshalent les appels système vers le noyau de VTL0 ; et que LSAIso s’exécute en VTL1 et communique avec lsass via RPC. ↩ ↩2 ↩3

  5. Microsoft Learn, Memory integrity and virtualization-based security. Sur le fait que l’intégrité de la mémoire (HVCI) exécute la vérification d’intégrité du code dans un environnement isolé, et que les pages de mémoire noyau ne deviennent exécutables qu’après avoir passé la vérification et que les pages exécutables ne deviennent jamais inscriptibles. ↩ ↩2 ↩3

  6. Microsoft Learn, Memory integrity and VBS enablement. Sur le fait que l’intégrité de la mémoire est activée par défaut lors d’une installation propre de Windows 11 lorsque le matériel est compatible ; sur la vérification de l’état dans msinfo32 et l’application Sécurité Windows ; et sur la confirmation d’un pilote bloqué via l’identifiant d’événement 3087 dans le journal CodeIntegrity Operational. ↩ ↩2 ↩3

  7. Microsoft Learn, How Credential Guard works. Sur le fait que le LSA communique avec le processus LSA isolé (LSAIso.exe) pour stocker les secrets lorsque Credential Guard est activé ; que les données stockées sont protégées par VBS et inaccessibles depuis le reste de l’OS ; et que le processus LSA isolé n’héberge aucun pilote de périphérique et n’accueille qu’un jeu minimal de binaires dont la signature a été vérifiée. ↩ ↩2 ↩3

  8. Microsoft Learn, Credential Guard protection limits. Sur le fait que les tickets de service, les comptes locaux, les enregistreurs de frappe, les attaques physiques et analogues sont hors du périmètre de protection de Credential Guard ; que les TGT sont protégés alors que les tickets de service ne le sont pas ; et que NTLMv1 et la délégation non contrainte deviennent inutilisables lorsqu’il est activé. ↩ ↩2 ↩3

  9. Microsoft Learn, Enable virtualization-based protection of code integrity. Sur la façon de vérifier l’état de VBS et de l’intégrité de la mémoire via la classe Win32_DeviceGuard, et sur la signification des valeurs de SecurityServicesRunning (1 est Credential Guard, 2 est l’intégrité de la mémoire). ↩ ↩2

Articles récents partageant les mêmes étiquettes, pour approfondir des sujets proches.

Ces pages replacent le sujet dans un contexte plus large de services et de décisions.

Cet article est directement lié aux services suivants.

Questions fréquentes

Questions souvent posées lors d’une consultation sur le sujet de cet article.

VBS (sécurité basée sur la virtualisation) et Isolation du noyau sont-elles la même chose ?
À strictement parler, ce sont des choses distinctes. VBS est la technologie de fondation qui crée un environnement isolé avec l'hyperviseur, et « Isolation du noyau » dans l'application Sécurité Windows est le nom d'un écran qui regroupe plusieurs protections construites sur VBS. La plus représentative est « Intégrité de la mémoire », qui désigne HVCI (intégrité du code protégée par l'hyperviseur). L'état d'exécution de chaque service se vérifie en interrogeant Win32_DeviceGuard, pas à partir de l'affichage de l'écran.
La mémoire de VTL1 peut-elle vraiment ne pas être lue, même avec des privilèges administrateur ou depuis un pilote noyau ?
Elle ne peut pas l'être. Les protections d'accès mémoire par VTL sont gérées par l'hyperviseur sur l'espace d'adresses physiques de la partition, et le logiciel qui s'exécute à l'intérieur de la partition ne peut pas les changer. Même le code qui s'exécute dans le noyau (anneau 0) n'est pas autorisé à accéder à la mémoire de VTL1 depuis VTL0.
Pourquoi activer l'intégrité de la mémoire (HVCI) peut-il empêcher un pilote de fonctionner ?
Dans un environnement HVCI, une page noyau ne devient exécutable qu'après avoir passé la vérification d'intégrité, et les écritures vers des pages exécutables ne sont pas autorisées. Un pilote non signé, ou un pilote de conception plus ancienne qui réécrit de la mémoire exécutable, ne peut pas satisfaire cette contrainte, et son chargement est bloqué. Vous pouvez confirmer le blocage dans le journal CodeIntegrity Operational (identifiant d'événement 3087 et analogues).
Que protège Credential Guard, et que ne protège-t-il pas ?
Il protège, dans un environnement isolé, les hachages de mot de passe NTLM des informations d'identification de domaine, les TGT Kerberos, et ce qu'une application a stocké comme informations d'identification de domaine. Les tickets de service Kerberos, les informations d'identification des comptes locaux et des comptes Microsoft, le vol de saisie par un enregistreur de frappe et les attaques physiques sont hors périmètre.
Où puis-je vérifier si VBS tourne ?
Regardez le champ « Sécurité basée sur la virtualisation » dans msinfo32, ou interrogez la classe Win32_DeviceGuard dans l'espace de noms root/Microsoft/Windows/DeviceGuard depuis PowerShell. Si SecurityServicesRunning contient 1, Credential Guard tourne ; s'il contient 2, l'intégrité de la mémoire (HVCI) tourne.

Profil de l’auteur

Page de présentation de l’auteur de l’article.

Go Komura

Représentant de KomuraSoft LLC

Spécialisé dans le développement de logiciels Windows, le conseil technique et l’analyse de pannes, notamment pour les systèmes existants et les incidents difficiles à reproduire.

Retour au blog