
Craquage du chiffrement BitLocker basé sur la vulnérabilité CVE-2023-21563
Reproduction sur machine virtuelle. La machine locale (attaquante) utilise Ubuntu 22.04.5 LTS, les machines victimes sont respectivement Windows 10 21H2 19041.1 et Windows 11 21H2 22000.318, toutes avec le chiffrement BitLocker activé. Utilisation de QEMU comme gestionnaire de machines virtuelles et de virt-manager pour l'administration. Ici j'utilise la machine virtuelle Windows 11 pour l'opération.
Mes fichiers de reproduction proviennent du dépôt Github de Syss, sur la base desquels j'ai effectué des adaptations de version d'outils et traité certaines situations imprévues. Ils peuvent être utilisés directement après téléchargement, ou modifiés selon les besoins. Les images de machines virtuelles proviennent de UUP Dump, qui propose divers téléchargements de versions Windows. Après téléchargement, exécutez le fichier cmd ou sh pour obtenir l'image ISO.
L'installation et l'utilisation de QEMU et virt-manager ne sont pas détaillées ici. Cependant, pour les nouveaux utilisateurs, dans virt-manager, activez la fonction d'édition XML via "Edition -> Préférences -> Général -> Activer l'édition XML". Ainsi nous pourrons modifier directement le fichier de configuration XML de la machine virtuelle.
Lors de la création de la machine virtuelle, sélectionnez "Support d'installation local (image ISO ou CDROM)" et choisissez l'image ISO de Windows 11 précédemment téléchargée. Allouez les ressources appropriées (CPU, mémoire, espace disque, etc.), et surtout sélectionnez "Personnaliser la configuration avant l'installation" pour pouvoir modifier le fichier de configuration avant l'installation. Il peut y avoir un problème de reconnaissance automatique du système ; dans ce cas, sélectionnez manuellement "Microsoft Windows 10/11".
Maintenant, commençons la configuration. Le point le plus important (car il ne peut pas être modifié ultérieurement, contrairement aux autres paramètres qui peuvent être ajustés après la création) : dans l'onglet "Résumé", choisissez le Firmware comme "UEFI x86_64: /usr/share/OVMF/OVMF_CODE_4M.ms.fd". Si cette option n'est pas disponible, supprimez la machine virtuelle et recréez-la, ce n'est pas compliqué.

Ensuite, allez dans l'onglet "Options de démarrage", assurez-vous que "SATA CDROM 1" est cochée, sinon vous ne pourrez pas installer le système. Vous pouvez déplacer "SATA CDROM 1" en haut de la liste pour simplifier le démarrage. À ce stade, vous pouvez directement créer la machine, installer le système, puis modifier le reste de la configuration.
Vous voyez "Appuyez sur une touche pour démarrer à partir du CD ou du DVD..." ? Appuyez sur une touche pour entrer dans l'interface d'installation et suivez les instructions. Si vous arrivez accidentellement sur une page, pas de panique : sélectionnez "Gestionnaire de démarrage", puis "UEFI: QEMU DVD-ROM" pour revenir à l'écran précédent et appuyez sur une touche pour démarrer.

Ensuite, installez le système. Cochez "Je n'ai pas de clé de produit", installez la version Professionnelle. Ensuite, créez un compte, etc. Il est recommandé de choisir "Configuration hors ligne" pour réduire les complications. Si cette option n'est pas disponible, utilisez Shift + F10 pour ouvrir l'invite de commandes et tapez OOBE\BYPASSNRO pour activer l'option de création de compte hors ligne.
Une fois le système démarré normalement, vous pouvez taper msinfo32 dans le terminal pour vérifier les informations système (vérifiez que le mode BIOS est UEFI sur la machine physique), puis éteignez la machine. Maintenant, modifiez la configuration :
<rom enabled="no"/> pour activer le démarrage réseau. Voici un exemple :<interface type="network">
<mac address="52:54:00:2f:53:4e"/>
<source network="default"/>
<model type="virtio"/>
<boot order="2"/>
<rom enabled="no"/>
<address type="pci" domain="0x0000" bus="0x01" slot="0x00" function="0x0"/>
</interface>
Choisir la configuration réseau virtio principalement pour sa caractéristique de "semi-virtualisation" du matériel réseau, qui communique directement avec l'hôte. En outre, désactiver la ROM de démarrage réseau permet au firmware UEFI de communiquer avec la carte réseau virtio via le protocole PXE intégré, évitant ainsi des interférences inutiles pendant le démarrage et assurant une entrée fluide dans le système pour les configurations et tests ultérieurs.
Entrez dans la machine virtuelle, installez les pilotes virtio via le lecteur CD ; ils sont automatiquement configurés. Testez rapidement la connexion réseau. Ensuite, activez le chiffrement BitLocker. Vous pouvez créer un fichier flag sur le bureau pour une vérification ultérieure.
Si vous utilisez une machine physique pour la reproduction, connectez simplement l'attaquant et la victime via un câble réseau ; pas besoin de configurer virtio. Les autres configurations sont essentiellement les mêmes. La seule différence est que l'interface réseau physique peut en avoir plusieurs ; sélectionnez la bonne.
La configuration de la machine victime est terminée. Éteignez-la. Ensuite, nous pouvons suivre les étapes définies dans le principe d'exploitation de la vulnérabilité pour l'exploiter.
Voici un schéma de référence de l'attaque complète. Vous pouvez d'abord avoir un aperçu, nous détaillerons ensuite étape par étape :

La machine locale (attaquante) doit avoir les paquets suivants installés :
Sur Ubuntu ou Debian, utilisez la commande suivante pour installer :
sudo apt install dnsmasq libwin-hivex-perl python3-impacket
Dans les fichiers fournis par le projet, exécutez build.sh pour générer bitpixie-initramfs. Si vous souhaitez adapter à votre environnement local, modifiez build.sh pour configurer les outils et versions souhaités, puis exécutez-le à nouveau pour générer bitpixie-initramfs.