TL;DR

→ Stocker des sauvegardes et disques de machines virtuelles non chiffrés revient à exposer des identifiants en clair

→ Gérer les hyperviseurs et les consoles EDR au sein d'Active Directory rompt souvent le cloisonnement

→ Lors de l'utilisation d'images disque, de profils utilisateurs ou de sauvegardes, ne pas négliger l'intégrité

Intro : Tiering

Pour celles et ceux qui ne seraient pas familiers avec le cloisonnement dans Active Directory, ou tiering, voici comment il fonctionne :

  • Tier 0 : Contient tout ce qui est lié aux contrôleurs de domaine et aux administrateurs du domaine. En principe, il ne devrait être accessible que pour des modifications au niveau du domaine (politiques de mot de passe, GPOs, …).
  • Tier 1 : Principalement destiné à la gestion des serveurs. Il contient des actifs moins critiques que le niveau précédent, mais représente généralement un risque plus élevé pour l'entreprise.
  • Tier 2 : Regroupe les postes de travail, téléphones, imprimantes.

Ce modèle de sécurité est conçu de manière à ce que les administrateurs séparent les rôles et les comptes en fonction du niveau avec lequel ils travaillent. Cela garantit, par exemple, que la compromission d'un ordinateur portable et des comptes connectés dessus ne mène pas immédiatement à la chute de tout le système.

Stockage de données non chiffré

C'est un des exemples les plus courants.

Valeur des secrets stockés dans les machines virtuelles
Types de secrets généralement trouvés dans les artefacts de VMs

Les sauvegardes de machines virtuelles, snapshots, images et disques virtuels contiennent tous des secrets. L'image ci-dessus tente de résumer les types de secrets généralement stockés dans ces fichiers, en s'inspirant librement d'un article de Krebs.

Il est important de noter que tout secret lié à l'authentification locale, à la configuration d'une application ou à un jeton API utilisé dans un système virtualisé pourrait se retrouver dans un snapshot. Évidemment, exposer ces sauvegardes et disques virtuels (qui ne sont que des fichiers binaires, parfois complexes à analyser mais toujours lisibles) sur un réseau avec une authentification et un contrôle d'accès faibles représente un risque majeur.

Par exemple, un chemin d'attaque très courant pour l'élévation de privilèges dans un réseau contenant des systèmes virtualisés suivrait ces étapes :

  • Identifier les hyperviseurs
  • Identifier les partages contenant des disques et images de machines virtuelles (en recherchant des extensions spécifiques : .vhdx, .qcow2, …)
  • Monter/lire les volumes

Pour .vhdx, en utilisant libguestfs :

Bash
guestmount --add vm.vhdx --inspector --ro /mnt/vm/

Pour .qcow2 (ajuster le numéro de partition pour correspondre au système principal) :

Bash
modprobe nbd max_part=8
qemu-nbd --connect=/dev/nbd0 vm.qcow2
mount /dev/nbd0p1 /mnt/vm/

Et paf, les secrets Windows locaux sont lisibles depuis Linux :

Secrets Windows extraits d'un disque VM monté
Secrets Windows locaux exposés après montage d'un disque de VM

Ceci, couplé avec une mauvaise pratique de réutilisation de mots de passe locaux, peut avoir des effets dévastateurs.

Exploiter un mauvais cloisonnement

Comme mentionné précédemment, aucun hyperviseur ne devrait héberger un système d'un niveau supérieur au sien. Voici pourquoi :

Schéma d'un cloisonnement défaillant montrant une élévation de privilèges du Tier 1 au Tier 0
Élévation de privilèges du Tier 1 au Tier 0 via un cloisonnement défaillant

Cela crée une élévation de privilèges du niveau 1 au niveau 0. Cela est généralement facilement exploitable, suivant des étapes similaires à celles mentionnées précédemment, mais avec une fin différente :

  • Identifier les hyperviseurs
  • Identifier ceux hébergeant un contrôleur de domaine
  • Générer une image de sauvegarde
  • Décrypter le fichier NTDS.DIT

Mais lors des audits, nous avons principalement utilisé cette boucle dans un autre but : étendre l'attaque en dehors d'Active Directory. Par exemple, sur un grand réseau, après avoir obtenu un accès administratif à tous les systèmes d'Active Directory, que reste-t-il à faire ? Auditer les équipements réseau (commutateurs, points d'accès WiFi), accéder aux caméras de surveillance, obtenir un shell root sur les serveurs Linux...

Eh bien, avec un EDR, cela peut être en réalité simplifié, car il est souvent possible d'exécuter des commandes sur tous les agents locaux en cours d'exécution (même ceux sous Linux) depuis la console principale :

Console EDR utilisée comme pivot pour atteindre les systèmes hors AD
Utiliser la console EDR pour étendre l'attaque au-delà d'Active Directory

Oui, un EDR est un outil de sécurité, mais l'intégration de tout nouveau système complexifie et augmente la surface d'attaque.

Isolation recommandée des hyperviseurs pour les systèmes sensibles
Isoler les hyperviseurs des systèmes sensibles empêche les élévations de niveau

Afin d'assurer que ces élévations ne puissent pas être possibles, il est important d'isoler les socles de virtualisation sensibles.

Porte dérobée active

Ceci est une variante du premier point, mais dans ce cas, nous ciblons une session active d'un utilisateur. Au lieu de parcourir les artefacts des machines virtuelles à la recherche de secrets réutilisables dans l'espoir qu'ils soient toujours valides, nous installons une porte dérobée sur un système actif pour voler les sessions de l'utilisateur :

Flux d'attaque par porte dérobée active
Installation d'une porte dérobée sur une VM active pour voler les sessions

Un exemple concret de cette attaque, qui peut être facilement mis en œuvre en utilisant le plugin multidrop du framework Metasploit :

Plugin multidrop de Metasploit
Utilisation du plugin multidrop de Metasploit pour déposer des fichiers malveillants

Il suffit de remplacer ou d'ajouter des fichiers statiques contenant un chemin UNC sur le bureau de la victime pour voler une session Active Directory active et la rejouer sur le domaine.

Vol de session via injection de chemin UNC
Vol d'une session Active Directory via injection de chemin UNC

Bien qu'il existe de nombreuses contre-mesures à cela (utilisateurs protégés, signature SMB, ...), la meilleure pratique à souligner ici concerne toujours le contrôle d'accès et l'intégrité des images des systèmes virtuels.

Problème sous-côté ?

Nous voyons cela partout. Plus un système est complexe, plus il est probable que des problèmes comme celui-ci apparaissent. Et sachant que Hyper-V ne prend même pas en charge nativement le chiffrement des disques et des snapshots, il devient très évident que de nombreux administrateurs système ne sont même pas conscients du problème.

Une piste potentielle qui mérite davantage d'investigation est la possibilité d'omettre certains fichiers et dossiers des snapshots. Par exemple, ne pas inclure les fichiers SAM, SECURITY ou NTDS.DIT dans les fichiers VHDX améliorerait considérablement la sécurité des systèmes sur site. Pourtant, cela n'est, une fois de plus, pas pris en charge par Hyper-V.

Restez classe, amateurs de cybersécurité.


← Retour aux articles

Besoin d'un audit de sécurité ou d'un accompagnement sur mesure ?

Découvrir nos services →