
Knacken der BitLocker-Verschlüsselung basierend auf der Sicherheitslücke CVE-2023-21563
Den vollständigen Blog finden Sie hier
Reproduktion in einer virtuellen Maschine. Der lokale Rechner (Angreifer) verwendet Ubuntu 22.04.5 LTS, die Opfermaschinen sind Windows 10 21H2 19041.1 und Windows 11 21H2 22000.318, beide mit aktivierter BitLocker-Verschlüsselung. QEMU wird als Hypervisor verwendet, verwaltet mit virt-manager. Hier verwende ich die virtuelle Maschine mit Windows 11.
Meine Dateien zur Reproduktion stammen aus dem Syss GitHub-Repository und wurden von mir um Tool-Versionsanpassungen sowie die Behandlung einiger Sonderfälle erweitert. Sie können direkt heruntergeladen und verwendet oder nach Bedarf angepasst werden. Die VM-Images stammen von UUP Dump, wo verschiedene Windows-Versionen zum Download angeboten werden. Nach dem Download führt man die cmd- oder sh-Datei aus, um ein ISO-Image zu erhalten.
Auf die Installation und Verwendung von QEMU und virt-manager wird hier nicht näher eingegangen. Neu heruntergeladene Benutzer aktivieren jedoch in virt-manager unter „Edit -> Preferences -> General -> Enable XML editing" die XML-Bearbeitungsfunktion, damit wir die XML-Konfigurationsdatei der VM direkt bearbeiten können.
Beim Erstellen der VM wählt man „Local install media (ISO image or CDROM)" und das zuvor heruntergeladene Windows-11-ISO-Image. Weisen Sie geeignete Ressourcen zu (CPU, RAM, Festplattenspeicher usw.) und wählen Sie unbedingt „Customize configuration before install", damit wir die Konfigurationsdatei vor der Installation bearbeiten können. Falls die automatische Erkennung des Systems Probleme bereitet, können wir selbst „Microsoft Windows 10/11" auswählen.
Jetzt beginnen wir mit der Konfiguration. Der wichtigste Punkt (da dieser später nicht mehr geändert werden kann, während andere Einstellungen nach der Erstellung wiederholt angepasst werden können): Wählen Sie im Reiter „Overview" als Firmware „UEFI x86_64: /usr/share/OVMF/OVMF_CODE_4M.ms.fd". Falls diese Option nicht gewählt wurde, löschen Sie die VM einfach und richten Sie sie neu ein – es ist ohnehin nicht aufwendig.

Wechseln Sie dann zum Reiter „Boot Options" und stellen Sie sicher, dass „SATA CDROM 1" aktiviert ist, da wir sonst das System nicht installieren können. Sie können „SATA CDROM 1" an den Anfang der Liste verschieben, um den Bootvorgang zu vereinfachen. Anschließend kann die VM direkt erstellt werden. Nach der Installation des Systems nehmen wir die übrigen Konfigurationsänderungen gebündelt vor.
Sehen Sie „Press any key to boot from CD or DVD..."? Drücken Sie eine beliebige Taste, um in den Installationsbildschirm zu gelangen, und schließen Sie die Installation den Anweisungen folgend ab. Falls Sie versehentlich auf einer anderen Seite landen, geraten Sie nicht in Panik: Wählen Sie „Boot Manager" und anschließend „UEFI: QEMU DVD-ROM", um zur ursprünglichen Oberfläche zurückzukehren und mit einer beliebigen Taste zu booten.

Als Nächstes installieren Sie das System. Haken Sie direkt „Kein Produktschlüssel" an und installieren Sie die Pro-Edition. Danach folgt die lästige Kontoregistrierung – hier empfiehlt es sich, direkt den Offline-Start zu wählen, um Ärger zu vermeiden. Falls diese Option nicht vorhanden ist, öffnen Sie mit Shift + F10 die Eingabeaufforderung und geben Sie OOBE\BYPASSNRO ein, um die Option zur Erstellung eines Offline-Kontos zu aktivieren.
Nach erfolgreichem Login können Sie im Terminal msinfo32 eingeben, um die Systeminformationen anzuzeigen (bei physischen Maschinen prüfen, ob UEFI verwendet wird). Fahren Sie die VM dann herunter und nehmen Sie die Konfigurationsänderungen vor:
<rom enabled="no"/> hinzu, um den Netzwerk-Boot zu ermöglichen. Hier ein Beispiel:<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>
Die virtio-Netzwerkkonfiguration wird hauptsächlich wegen der „Paravirtualisierungs"-Eigenschaft der Netzwerkhardware gewählt, die direkt mit dem Host kommuniziert. Gleichzeitig wird das Netzwerk-Boot-ROM deaktiviert, damit die UEFI-Firmware über das integrierte PXE-Protokoll direkt mit der virtio-Netzwerkkarte kommuniziert und unnötige Störungen während des Bootvorgangs vermieden werden. So wird sichergestellt, dass wir problemlos ins System gelangen und die weiteren Konfigurations- und Testschritte durchführen können.
Starten Sie die VM und installieren Sie den virtio-Treiber über das CD-Laufwerk. Die Konfiguration erfolgt dabei automatisch. Anschließend können Sie kurz testen, ob das Netzwerk funktioniert. Danach aktivieren Sie die BitLocker-Verschlüsselung. Sie können auf dem Desktop eine Flag-Datei anlegen, um diese später zu verifizieren.
Wenn Sie die Reproduktion auf einer physischen Maschine durchführen, verbinden Sie Angreifer- und Opfermaschine einfach mit einem Netzwerkkabel; eine virtio-Konfiguration ist nicht erforderlich. Die übrige Konfiguration ist im Wesentlichen identisch. Beachten Sie lediglich, dass eine physische Maschine mehrere Netzwerkschnittstellen haben kann – wählen Sie die richtige Schnittstelle für die Konfiguration.
Damit ist die Konfiguration der Opfermaschine abgeschlossen. Fahren Sie sie anschließend herunter. Nun können wir gemäß den zuvor im Exploit-Prinzip festgelegten Schritten den Exploit durchführen.
Hier zeigen wir eine Referenzgrafik des gesamten Angriffsablaufs. Sie können sich zunächst einen groben Überblick verschaffen; die einzelnen Schritte setzen wir im Folgenden nacheinander um:

Auf dem lokalen Rechner (Angreifer) müssen folgende Pakete installiert sein:
Unter Ubuntu oder Debian können Sie diese mit dem folgenden Befehl installieren:
sudo apt install dnsmasq libwin-hivex-perl python3-impacket
Führen Sie in den mitgelieferten Projektdateien build.sh aus, um bitpixie-initramfs zu erzeugen. Falls Sie die Umgebung lokal anpassen möchten, können Sie build.sh entsprechend ändern, die gewünschten Tools und Versionsdateien konfigurieren und bitpixie-initramfs anschließend neu erzeugen.