v4rrimka-san
Goto Top

BitLocker Wiederherstellungsschlüssel wurde ohne sichtbaren Grund geändert

Hallo zusammen,

kürzlich habe ich aufgrund des End-of-Life von Windows 10 einen Rechner aktualisiert, auf dem BitLocker aktiviert war.

Nachdem ich den Wiederherstellungsschlüssel eingeben musste, stellte ich fest, dass dieser nicht akzeptiert wurde. Da ich BitLocker erst vor Kurzem eingerichtet habe, bin ich mir sicher, dass der Schlüssel, den ich auf einem Netzlaufwerk (mit ausschließlich eigenem Zugriff) abgelegt hatte, aktuell war (Mitte 2024).

Um das Verhalten zu überprüfen, habe ich den Vorgang auf einem anderen Gerät getestet – mit demselben Ergebnis. Eine mögliche Lösung habe ich bereits im Kopf und teste diese aktuell: Ich erstelle ein Skript, das automatisch die BitLocker-Schlüssel sichert, um solche Fälle in Zukunft zu vermeiden. Falls es sich bewährt, werde ich die Details dazu noch teilen.

Daher meine Frage:
Ist euch dieses Problem ebenfalls schon aufgefallen, und habt ihr möglicherweise eine Ursache oder eine präventive Maßnahme gefunden?

Ich möchte hier keine unnötige Sorge verbreiten – es kann natürlich sein, dass es sich nur um einen Einzelfall handelt (warum genau, ist mir aber unklar).

Ein großes Lob geht an ManageEngine, da das Tool noch den aktuellen BitLocker-Schlüssel gespeichert hatte – ohne diesen wäre ich ziemlich aufgeschmissen gewesen.

Details zu den betroffenen Rechnern:
Rechner 1:

War mit einem softwarebasierten TPM (seitens Mainboard) eingerichtet.

Dieses TPM ist zwischenzeitlich ausgefallen, weshalb ein Passwort als Ersatz genutzt werden musste (BIOS-Batterie leer).

Mittlerweile wurde das TPM wieder eingerichtet – hier könnte ich mir den Schlüsselverlust noch erklären, aber eine entsprechende Warnung seitens Windows wäre hilfreich gewesen.

Rechner 2:

Hier wurde lediglich ein BIOS-Update seitens des Hypervisors (Proxmox) durchgeführt.

Ich werde im Laufe der nächsten Tage weitere Rechner prüfen und berichten.

Viele Grüße

Content-ID: 672305

Url: https://administrator.de/forum/bitlocker-wiederherstellungsschluessel-wurde-ohne-sichtbaren-grund-geaendert-672305.html

Ausgedruckt am: 09.04.2025 um 05:04 Uhr

DerWoWusste
DerWoWusste 03.04.2025 um 09:38:25 Uhr
Goto Top
Moin.

Die Schlüssel ändern sich nicht von allein.
Welche Funktion hat Dein manage-Engine-Tool inne? Ist es evtl. dazu berechtigt, Key-Rotation zu machen?
Dieses Problem sollte sich nie stellen. Wenn man erzwingt, dass der Recoverykey immer gebackupt wird (z.B. ins lokale AD), dann kann er nicht ohne Backup geändert werden.
v4rrimka-san
v4rrimka-san 03.04.2025 um 09:56:08 Uhr
Goto Top
Zitat von @DerWoWusste:

Moin.

Die Schlüssel ändern sich nicht von allein.
Welche Funktion hat Dein manage-Engine-Tool inne? Ist es evtl. dazu berechtigt, Key-Rotation zu machen?
Dieses Problem sollte sich nie stellen. Wenn man erzwingt, dass der Recoverykey immer gebackupt wird (z.B. ins lokale AD), dann kann er nicht ohne Backup geändert werden.

Moin,

danke für deine Rückmeldung!

Ja, grundsätzlich sollten sich die Schlüssel nicht von allein ändern – genau deshalb wundert mich das Ganze ja.

ManageEngine ist bei uns primär für das zentrale Endpoint-Management im Einsatz, aber es könnte tatsächlich sein, dass es eine Key-Rotation ermöglicht oder ausgelöst hat. Das werde ich definitiv mal prüfen.

Ein Backup ins lokale AD ist eine gute Idee -> allerdings nicht mein Ziel. Deshalb baue ich mir ja ein Skript, um AD-Unabhängig zu sein.

Hast du in der Praxis schon mal eine ungeplante Key-Rotation erlebt, oder hattest du immer ein funktionierendes Backup im AD?

Viele Grüße!
DerWoWusste
DerWoWusste 03.04.2025 um 10:20:23 Uhr
Goto Top
Es gibt keine ungeplante Rotation. Das passiert nicht von alleine. Hat auch mit TPMs gar nichts zu tun, da ein Recoverykey ein unabhängiger Protektor ist.
Wenn Rotation bei Euch eingestellt ist: abstellen. Ist sicherheitstechnisch kein Gewinn und wird nur dann empfohlen, falls man den Rec-Key an Mitarbeiter rausgeben musst und direkt danach ändern will - das kann man dann manuell machen.
StefanKittel
StefanKittel 03.04.2025 um 11:04:45 Uhr
Goto Top
Moin,

einen geänderten Schlüssel hatte ich auch noch nie.

Ich habe im RMM ein PS-Skript welches erkennt ob sich der Schlüssel geändert hat und diesen als Fehler ausgibt.
Damit erscheint es im RMM im Log.

Es ist eher für interne Geräte bei KMUs gedacht die kein Bitlocker haben und jemand (Microsoft) aktiviert es ohne den Schlüssel aufzuschreiben.

Feel free zu benutzen er kann (Sprachknoten++)

Stefan


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# BitlockerInfo.ps1
# Shows Bitlocker recovery password for all drives
# Creates by Stefan Kittel (https:{{comment_single_line_double_slash:0}}
# Version 13.05.24 09:21

# Output like
# C:{xxxxxxx-339B-410B-90DB-7F211BD61876}:xxxxxxx-384109-643698-023991-193688-493592-234124-xxxxxxx,P:{xxxxxxx-3B16-4D04-86EC-CCEC1D8CC94C}:xxxxxxx-014311-534391-553025-196163-033759-412577-xxxxxxxx

#https:{{comment_single_line_double_slash:1}}

$OutputString =""  

$BitlockerMountPointArray = (Get-BitlockerVolume)
foreach ($BitlockerMountPointItem in $BitlockerMountPointArray)
{
	If ($BitlockerMountPointItem.protectionstatus -like "On")   
	{
		foreach ($KeyProtector in $BitlockerMountPointItem.KeyProtector)
		{
			if ($KeyProtector.KeyProtectorType -eq "RecoveryPassword")  
			{
				$OutputString = $OutputString + $BitlockerMountPointItem.MountPoint
				$OutputString = $OutputString + $KeyProtector.KeyProtectorId
				$OutputString = $OutputString + ":"  
				$OutputString = $OutputString + $KeyProtector.RecoveryPassword
				$OutputString = $OutputString + ","  
				$OutputCount = $OutputCount + 1
			}
			else
			{
				#No infos about tpm or ad stored keys, ignore
			}
		}
	}
	else
	{
		#No infos about unencrypted drives
	}
}

if (!$OutputString)
{
	Write-Host "No recovery passwords found"  
	exit 0
}

#remove last comma
$OutputString = $OutputString.trim(",")  
#Write-Host $OutputString

#create hash from output string
$hashString = [System.BitConverter]::ToString([System.Security.Cryptography.HashAlgorithm]::Create('sha256').ComputeHash([System.Text.Encoding]::UTF8.GetBytes($OutputString)))  
#Write-Host $hashString

#reg infos
$KeyPath = "HKLM:\SOFTWARE\SKIT\BitlockerInfo2"  
$ValueName = $hashString
$ValueData = Get-Date

#get last hash info from registry, use later to set exit code
$LastHashUpdate = (Get-ItemProperty -Path $KeyPath -Name $ValueName -ErrorAction SilentlyContinue).$ValueName

#create path if not exists
If (-NOT (Test-Path $KeyPath))
{
	New-Item -Path $KeyPath -Force | Out-Null
}

#create/update registry value
New-ItemProperty -Path $KeyPath -Name $ValueName -Value $ValueData -Type String -Force | Out-Null

#if new item return error to force rmm to log it
if (!$LastHashUpdate)
{
	#Write-Host 1001
	Write-Host $OutputString
	exit 1001
}
else
{
	#Write-Host OK
	Write-Host $OutputString
	exit 0
}
DivideByZero
DivideByZero 03.04.2025 um 11:53:23 Uhr
Goto Top
Moin,

auch von hier ein kurzes Feedback: selbstgeänderte Schlüssel ohne Einwirkung von außen: auch noch nicht angetroffen, wüsste auch nicht, wie. Da ist immer ein Eingriff dahinter.

Gruß

DivideByZero
v4rrimka-san
Lösung v4rrimka-san 03.04.2025 um 12:10:33 Uhr
Goto Top
Moin,

Ich habe so eben denn Grund gefunden :D

Klassischer Layer 8 ;D

Bei der Richtlinien Erstellung in Manage-Engine habe ich eingestellt das alle 30tage der Key sich automatisch abändert - nach über einem Halben Jahr ist mir das natürlich entfallen und ich hatte es eben jetzt bemerkt.

Tut mir leid für die "Aufregung"

Dennoch stelle ich mal das skript zu verfügung:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
$BitLockerKeysPath = "werweiß"  # Ziel-Netzlaufwerk  
$ComputerName = $env:COMPUTERNAME  # Holt den Computernamen
$KeyFile = "$BitLockerKeysPath\$ComputerName-BitLocker-Key.txt"  # Speichert den Key mit dem Computernamen  

# Prüfen, ob der Ordner existiert
if (!(Test-Path -Path $BitLockerKeysPath)) {
    exit
}

# Datei vorab leeren
Clear-Content -Path $KeyFile -ErrorAction SilentlyContinue

# Hole alle BitLocker-Volumes
$BitLockerVolumes = Get-BitLockerVolume

# Schreibe MountPoint und RecoveryKey in die Datei
foreach ($Volume in $BitLockerVolumes) {
    # Hole den MountPoint (Laufwerksbuchstaben)
    $MountPoint = $Volume.MountPoint

    # Hole den RecoveryKey
    $RecoveryKey = $Volume.KeyProtector | Where-Object { $_.KeyProtectorType -eq "RecoveryPassword" }  

    if ($RecoveryKey) {
        # Sicherung auf Netzlaufwerk (nur MountPoint und RecoveryKey)
        $MountPoint | Out-File -FilePath $KeyFile -Append
        $RecoveryKey.RecoveryPassword | Out-File -FilePath $KeyFile -Append
    }
}