
Ich habe einen Windows 10 Pro-PC, keine Domäne, ich verwende BitLocker nicht auf dem Systemlaufwerk, habe aber einige feste Datenlaufwerke mit BitLocker und einem Kennwort verschlüsselt (kein TPM).
Wenn ich diese Laufwerke entsperren möchte, kann ich sie im Datei-Explorer auswählen und wählen. Unlock Drive...
Nach Eingabe meines Passworts wird das Laufwerk entschlüsselt und ich kann es verwenden.
Da ich einige dieser Laufwerke mit demselben Passwort habe, habe ich ein Skript geschrieben, um sie alle gleichzeitig zu entsperren.
Unlock-BitLocker -MountPoint X: -Password $myPassword
Dies funktioniert einwandfrei, wenn es als Administrator mit erhöhten Rechten ausgeführt wird. Wenn ich das Skript jedoch als mein normaler Standardbenutzer ausführe, schlägt es fehl:
Get-CimInstance: Zugriff verweigert
WBEM_E_ACCESS_DENIED (0x80041003) Der aktuelle Benutzer ist nicht berechtigt, die Aktion auszuführen.
Ich gehe davon aus, dass sowohl der Datei-Explorer als auch das PowerShell-BitLocker-Modul dieselbe Win32-API verwenden. Warum funktioniert einer als Standardbenutzer und der andere nicht?
Beim Benutzen:
manage-bde –unlock E: -rp password
Ich bekomme:
BitLocker Drive Encryption: Configuration Tool version 10.0.14393
ERROR: An attempt to access a required resource was denied.
Check that you have administrative rights on the computer.
Mithilfe des Process Monitors kann ich sehen, dass der Zugriff auf den folgenden Registrierungsschlüssel verweigert wird:
HKLM\Software\Microsoft\WBEM\CIMOM
Ich habe auch herausgefunden, dass das Inhaltsmenü des Datei-Explorers die ausführbare Datei aufruft:
%systemroot%\System32\bdeunlock.exe
Daraufhin wird das kleine Popup-Fenster zur Eingabe des Kennworts angezeigt.
Bei Verwendung wird im Prozessmonitor bdeunlock.exe
kein Zugriff darauf angezeigt. Es scheint also, dass das Laufwerk entsperrt wird, ohne auf diesen Schlüssel zuzugreifen.HKLM\Software\Microsoft\WBEM\CIMOM
Es sieht so aus, als würden sowohl die PowerShell-Cmdlets als auch manage-bde.exe
WMI verwenden:
Get-CimInstance
-Namespace "root\cimv2\Security\MicrosoftVolumeEncryption"
-ClassName Win32_EncryptableVolume
und ein Standardbenutzer hat darauf keinen Zugriff.
bdeunlock.exe
Sie können die Funktion jedoch möglicherweise direkt FveOpenVolumeW
in FVEAPI.dll
der Bitlocker-API-Datei verwenden, ohne vorher WMI zu verwenden.
Gibt es eine Möglichkeit, ein mit Bitlock gesperrtes Festplattenlaufwerk über die Befehlszeile als Standardbenutzer zu entsperren?
Antwort1
Sie können dem Standardbenutzer oder einer Sicherheitsgruppe, deren Mitglied sie sind, expliziten Zugriff auf das WMI-Objekt über den Pfad gewähren, den Sie unter ermittelt haben wmimgmt.msc
.
Auf diese Weise müssen Sie dem Konto weder lokale Administratorrechte noch erhöhte Berechtigungen erteilen. Der Benutzer erhält lediglich den genauen und expliziten Zugriff auf die korrelierten WMI-Namespaces, den er nach Bedarf benötigt, und sonst nichts – die mindestens erforderlichen Berechtigungen zum Ausführen des Vorgangs.
Anweisungen
Drücken Sie
+
R
, eintippenwmimgmt.msc
und drücken SieEnter
. Klicken Sie mit der rechten Maustaste aufWMI-Steuerung (lokal)Option links und wählen Sie dannProperties
.Gehen Sie zu
Security
Registerkarte aus den Eigenschaftenfenstern und erweitern Sie dann dieRoot
zum Namespace auf die spezifischen WMI-Namespaceobjekte, für die Sie den Zugriff explizit gewähren müssen.Sobald Sie das entsprechende WMI-Namespace-Objekt markiert haben, wählen Sie die
Security
Option unten rechts im Eigenschaftenfenster aus, fügen das Benutzerkonto oder die Sicherheitsgruppen entsprechend hinzu und erteilen und legen bei Bedarf die entsprechenden Berechtigungen fest.
Beispiel-Screenshot
Weitere Ressourcen
Antwort2
Im Zuge meiner Recherchen habe ich, wie in der Frage selbst erläutert, die Sache genauer untersucht.
Verwenden Sie das PowerShell-Cmdlet, Unlock-Bitlocker
da dessen Code auf jedem Windows-Computer im Klartext verfügbar ist.
Der erste Fehler während der Ausführung des Cmdlets tritt beim Aufruf auf:
Get-CimInstance
-Namespace "root\cimv2\Security\MicrosoftVolumeEncryption" `
-ClassName Win32_EncryptableVolume
Ich bekomme eineAccess Denied
@Homey_D_Clown_IT hat vorgeschlagen, die Sicherheit des betreffenden WIM-Objekts zu ändern. Öffnen Sie dazu , wmimgmt.msc
klicken Sie mit der rechten Maustaste auf den WMI Control (Local)
Knoten links und klicken Sie auf Properties
. Wählen Sie die Security
Registerkarte aus, suchen Sie das Objekt Root\CIMV2\Security\MicrosoftVolumeEncryption
und klicken Sie auf die Security
Schaltfläche. Fügen Sie eine Gruppe oder einen Benutzer hinzu, dem Sie das Entsperren der Bitlock-Laufwerke erlauben möchten. Aktivieren Sie die Berechtigung „Zulassen“ Execute Methods
.
Anschließend kann der Standardbenutzer das manage-bde.exe
Tool zum Entsperren des Laufwerks verwenden:
manage-bde -unlock X: -pw
das Problem besteht darin, dass der Benutzer zur Eingabe des Kennworts aufgefordert wird. Ich muss derzeit vier Laufwerke entsperren und möchte das Kennwort lieber nur einmal eingeben.
Wenn Sie das Cmdlet „Unlock-Bitlocker“ in PowerShell verwenden, wird der vorherige Fehler umgangen, dafür wird aber ein anderer angezeigt:
Zugriff in Get-BitLockerVolumeInternal verweigert …
Wenn ich mir den Code des PowerShell-Moduls anschaue, bricht er ab, wenn der Code versucht, auf das Wiederherstellungskennwort zuzugreifen, was nur ein Administrator tun kann. Wenn ich den Code so ändere, dass dieser Fehler ignoriert wird und ich einfach weitermache, anstatt abzubrechen, funktioniert er einwandfrei.
Aber das ist ein schlechter Hack, denn ich musste die Moduldatei übernehmen, die Berechtigungen ändern und dann den Code bearbeiten. Das sind alles Dinge, die ich mit einer Windows-Systemdatei nicht tun sollte. Außerdem werden meine Änderungen beim nächsten Update dieses PowerShell-Moduls durch Microsoft überschrieben.
Eine Lösung besteht darin, die relevanten Codeteile in mein eigenes PowerShell-Modul zu kopieren und dieses stattdessen zu verwenden. Das ist möglicherweise nicht einmal legal.
Eine andere Lösung besteht darin, das Wiederherstellungskennwort zu entfernen:
manage-bde -protectors -delete X: -type recoverypassword
Damit bleibt mir nur noch ein einziger Schutz für das Bitlock-Laufwerk, nämlich das normale Passwort.
Warum ist es eine gute Idee, das Wiederherstellungskennwort von einem mit BitLocker verschlüsselten Festplattenlaufwerk zu entfernen?
Jeder Administrator kann das Wiederherstellungskennwort sehen und es zum Entschlüsseln des Laufwerks verwenden, WFT!
Mir ging es nur darum, die Daten auf den Laufwerken vor anderen zu schützen. Jemand könnte meinen PC stehlen, eine Live-CD mit Linux starten und sich so Zugriff auf ein Administratorkonto meiner Windows-Installation verschaffen.
Nachdem ich die Wiederherstellungskennwörter entfernt habe, kann ich das Original- Unlock-Bitlocker
Cmdlet als Standardbenutzer verwenden, um meine Laufwerke zu entsperren. Ich musste noch die Berechtigungen für das WMI-Objekt wie oben beschrieben ändern.
Bearbeiten:Nach einem Windows 10 Update wurden in diesem Fall 14939.222
die Berechtigungen auf dem root\cimv2\Security\MicrosoftVolumeEncryption
Server zurückgesetzt und ich musste sie erneut ändern. Eine dauerhafte Lösung scheint das also doch nicht zu sein.
Aufgrund dieser Zurücksetzung durch Windows Update habe ich beschlossen, die Änderung für die WMI-Berechtigung per Skript vorzunehmen. Ich verwende Set-WmiNamespaceSecurity.ps1
das in diesemMicrosoft-Blogbeitrag, dann kann ich verwenden:
.\Set-WmiNamespaceSecurity.ps1 -namespace "root/cimv2/Security/MicrosoftVolumeEncryption" -operation add -account MyUserName -permissions MethodExecute,Enable
Antwort3
Ich fürchte, Sie können dies nicht tun, wenn Sie das Skript als Sie selbst ausführen, es sei denn, Sie deaktivieren die Benutzerkontensteuerung auf Ihrem Computer vollständig. Wenn Ihre Frage jedoch mit der Vereinfachung der Verwendung Ihres Skripts zusammenhängt, habe ich vor einiger Zeit eine Lösung gefunden und verwende sie jedes Mal, wenn ich Skripts mit erhöhten Berechtigungen ausführen muss.
If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))
{
$arguments = $myInvocation.mycommand.definition
Start-Process powershell -Verb runAs -ArgumentList $arguments
Break
}
Nachdem Sie diesen Code am Anfang eines Skripts eingefügt haben, wird das Skript automatisch mit erhöhten Berechtigungen erneut ausgeführt und alle seine Argumente werden erneut an die neue „Instanz mit erhöhten Berechtigungen“ übergeben.
Antwort4
Ich habe mir den Vorgang mit Process Monitor angesehen, um herauszufinden, was der Windows Explorer genau macht, wenn man in der GUI „Laufwerk entsperren“ auswählt. Es wird zufällig bdeunlock.exe gestartet, gefolgt vom Laufwerksbuchstaben. Dies scheint eine App zu sein, die nach dem Passwort fragt. Dies funktioniert mit Standardbenutzerberechtigungen.