コマンドラインで標準ユーザーとしてBitlockedデータドライブのロックを解除する

コマンドラインで標準ユーザーとしてBitlockedデータドライブのロックを解除する

私は Windows 10 Pro PC を使用していますが、ドメインはなく、システム ドライブでは BitLocker を使用していませんが、BitLocker とパスワード (TPM なし) を使用していくつかの固定データ ドライブを暗号化しています。

これらのドライブのロックを解除したい場合は、ファイル エクスプローラーでそれらを選択して を選択しUnlock Drive...、パスワードを入力するとドライブが復号化されて使用できるようになります。

同じパスワードを持つドライブがいくつかあるため、すべてを同時にロック解除するスクリプトを作成しました。

Unlock-BitLocker -MountPoint X: -Password $myPassword

これは、管理者権限で実行すると正常に動作しますが、通常の標準ユーザーとしてスクリプトを実行すると失敗します。

Get-CimInstance: アクセスが拒否されました

WBEM_E_ACCESS_DENIED (0x80041003) 現在のユーザーにはアクションを実行する権限がありません。

ファイル エクスプローラーと PowerShell BitLocker モジュールはどちらも同じ Win32 API を使用していると思いますが、一方が標準ユーザーとして機能し、もう一方が機能しないのはなぜでしょうか?

使用する場合:

manage-bde –unlock E: -rp password

次のような結果になります:

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.

プロセス モニターを使用すると、次のレジストリ キーへのアクセスが拒否されていることがわかります。

HKLM\Software\Microsoft\WBEM\CIMOM

また、ファイル エクスプローラーのコンテンツ メニューが実行可能ファイルを呼び出すこともわかりました。

%systemroot%\System32\bdeunlock.exe

パスワードを入力するための小さなポップアップ ウィンドウが表示されます。

使用する場合、プロセス モニターにbdeunlock.exe「no access to」HKLM\Software\Microsoft\WBEM\CIMOMと表示されます。つまり、そのキーにアクセスせずにドライブのロックを解除するようです。

PowerShell コマンドレットとmanage-bde.exeWMI の両方が使用されているようです。

Get-CimInstance
-Namespace "root\cimv2\Security\MicrosoftVolumeEncryption"
-ClassName Win32_EncryptableVolume

標準ユーザーにはこれへのアクセス権がありません。

ただし、最初に WMI を使用せずに、(Bitlocker API ファイル)内のbdeunlock.exe関数を直接使用することもできます。FveOpenVolumeWFVEAPI.dll

標準ユーザーとしてコマンド ラインで Bitlock された固定データ ドライブのロックを解除する方法はありますか?

答え1

標準ユーザーまたは彼らがメンバーであるセキュリティ グループに、 から見つかったパスごとに WMI オブジェクトへの明示的なアクセス権を付与できますwmimgmt.msc

この方法では、アカウントにローカル管理者権限や昇格された権限を付与する必要はなく、必要に応じて相関する WMI 名前空間への正確かつ明示的なアクセス権のみが付与され、それ以上の権限は付与されません。つまり、操作を実行するために必要な最小限の権限のみとなります。

説明書

  1. プレスウィンキー+R、入力 wmimgmt.mscを押しますEnterWMI コントロール (ローカル)左側のオプションを選択し、 Properties

  2. 行く Securityタブをクリックして、Root明示的にアクセスを許可する必要がある特定の WMI 名前空間オブジェクトに名前空間を追加します。

  3. 該当する WMI 名前空間オブジェクトを強調表示したら、そこからSecurityプロパティ ウィンドウの右下にあるオプションを選択し、それに応じてユーザー アカウントまたはセキュリティ グループを追加し、必要に応じて該当するアクセス許可を付与して設定します。


スクリーンショットの例

ここに画像の説明を入力してください


その他のリソース

答え2

質問自体で説明した調査を継続し、さらに調べてみました。

PowerShell コマンドレットを使用するのUnlock-Bitlockerは、そのコードがすべての Windows マシンでクリアテキストで利用できるためです。

コマンドレットの実行中の最初のエラーは、次の呼び出し中に発生します。

Get-CimInstance 
 -Namespace "root\cimv2\Security\MicrosoftVolumeEncryption" `
 -ClassName Win32_EncryptableVolume

私はAccess Denied

@Homey_D_Clown_IT は、問題の WIM オブジェクトのセキュリティを変更することを提案しました。これを行うには、 を開き、左側のノードwmimgmt.mscを右クリックして をクリックします。タブを選択してオブジェクトを見つけ、 ボタンをクリックします。ビットロックされたドライブのロック解除を許可するグループまたはユーザーを追加します。許可権限をチェックします。WMI Control (Local)PropertiesSecurityRoot\CIMV2\Security\MicrosoftVolumeEncryptionSecurityExecute Methods

これが完了すると、標準ユーザーはmanage-bde.exeツールを使用してドライブのロックを解除できるようになります。

manage-bde -unlock X: -pw

問題は、これによりユーザーにパスワードの入力が求められることです。現時点ではロックを解除するドライブが 4 つあり、パスワードは 1 回だけ入力したいのです。

PowerShell で Unlock-Bitlocker コマンドレットを使用すると、以前のエラーは渡されますが、別のエラーが表示されます。

Get-BitLockerVolumeInternal でアクセスが拒否されました...

PowerShell モジュールのコードを確認すると、コードが回復パスワードにアクセスしようとするときにエラーが発生します。これは管理者のみが実行できます。エラーを無視して続行するようにコードを変更すると、エラーは発生せず、正常に動作します。

しかし、これは悪いハックです。モジュール ファイルの所有権を取得し、権限を変更してからコードを編集する必要があるからです。これらはすべて、Windows システム ファイルでは実行すべきではないことです。さらに、Microsoft が次に PowerShell モジュールを更新すると、変更内容が上書きされます。

1 つの解決策は、関連するコード部分を自分の PowerShell モジュールにコピーし、代わりにそれを使用することです。これは合法ではない可能性があります。

別の解決策としては、recoverypassword を削除することです。

manage-bde -protectors -delete X: -type recoverypassword

これにより、Bitlocked ドライブの保護手段として、通常のパスワードが 1 つだけ残ります。

BitLocker で暗号化された固定データ ドライブから回復パスワードを削除することが推奨されるのはなぜですか?

どの管理者も回復パスワードを確認して、それを使用してドライブを復号化できます。なんてこった!

私の主な目的は、ドライブ上のデータを他人から保護することでした。誰かが私の PC を盗み、ライブ CD Linux を起動して、私の Windows インストールの管理者アカウントにアクセスする可能性があります。

回復パスワードを削除した後、Unlock-Bitlocker標準ユーザーとして元のコマンドレットを使用してドライブのロックを解除できます。ただし、上記のように WMI オブジェクトのアクセス許可を変更する必要がありました。

編集:Windows 10 のアップデート後、この場合は14939.222権限がroot\cimv2\Security\MicrosoftVolumeEncryptionリセットされ、再度変更する必要がありました。したがって、これは結局永続的な解決策ではないようです。

Windows Updateによるリセットのため、WMI権限の変更をスクリプト化することにしましたSet-WmiNamespaceSecurity.ps1Microsoft ブログ投稿、次のように使用できます。

.\Set-WmiNamespaceSecurity.ps1 -namespace "root/cimv2/Security/MicrosoftVolumeEncryption" -operation add -account MyUserName -permissions  MethodExecute,Enable

答え3

残念ながら、コンピュータの UAC を完全に無効にしない限り、スクリプトを自分で実行してこれを行うことはできません。ただし、スクリプトの使用を簡素化することに関する質問であれば、私はしばらく前に解決策を見つけました。昇格された権限でスクリプトを実行する必要があるときは、毎回それを使用しています。

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 
}

このコードをスクリプトの先頭に挿入すると、昇格された権限でスクリプトが自動的に再実行され、すべての引数が新しい「昇格されたインスタンス」に再度渡されます。

答え4

私はプロセス モニターを使用してプロセスを調べ、GUI で「ドライブのロック解除」を選択したときに Windows エクスプローラーが正確に何を行うかを調べました。bdeunlock.exe を起動し、その後にドライブ文字が続きます。これはパスワードを要求するアプリのようです。これは標準のユーザー権限を使用して機能します。

関連情報