在命令行上以标准用户身份解锁Bitlocked数据驱动器

彼得·汉道夫(Peter Hahndorf)

我有一台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

我还发现File Explorer内容菜单调用可执行文件:

%systemroot%\System32\bdeunlock.exe

这将显示一个弹出窗口,用于输入密码。

当不使用bdeunlock.exe任何访问权限时,HKLM\Software\Microsoft\WBEM\CIMOM将在Process Monitor中显示。因此,它似乎可以在不访问该密钥的情况下解锁驱动器。

看起来两个PowerShell cmdlet都manage-bde.exe使用WMI:

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

并且标准用户无权访问。

但是bdeunlock.exe可以先使用(Bitlocker API文件)中的功能FveOpenVolumeWFVEAPI.dll而无需先使用WMI。

有没有办法以标准用户身份在命令行上解锁Bitlocked固定数据驱动器?

彼得·汉道夫(Peter Hahndorf)

继续我在问题本身中解释的研究,我对此进行了进一步研究。

使用PowerShell cmdlet,Unlock-Bitlocker因为其代码在每台Windows计算机上均以明文形式提供。

执行cmdlet期间的第一个错误发生在调用时:

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

我得到一个 Access Denied

@Homey_D_Clown_IT建议更改有问题的WIM对象的安全性,为此,请打开wmimgmt.msc,右键单击WMI Control (Local)左侧节点,然后单击Properties选择Security选项卡,然后找到对象Root\CIMV2\Security\MicrosoftVolumeEncryption,单击Security按钮。添加您要允许解锁位锁驱动器的组或用户。检查“允许”Execute Methods权限。

完成此操作后,标准用户可以使用该manage-bde.exe工具来解锁驱动器:

manage-bde -unlock X: -pw

问题是,这提示用户输入密码,此时我有四个驱动器要解锁,我希望只输入一次密码。

现在,在PowerShell中使用Unlock-Bitlocker cmdlet会传递上一个错误,但会显示另一个错误:

Get-BitLockerVolumeInternal中的访问被拒绝...

查看PowerShell模块的代码,该代码在代码尝试访问恢复密码时会中断,而这只能由管理员来完成。如果我更改代码以忽略该错误,而只是继续而不是中断,那么它将正常工作。

但这是一个糟糕的技巧,因为我必须拥有模块文件的所有权,更改权限,然后编辑代码。我不应该使用Windows系统文件做的所有事情,再加上Microsoft下次更新PowerShell模块时,我的更改将被覆盖。

一种解决方案是将相关代码段复制到我自己的PowerShell模块中,而改用该模块。那可能甚至不合法。

另一个解决方案是删除recoverypassword:

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

这只给我留了一个用于Bitlocked驱动器的保护器,即普通密码。

为什么从用BitLocker加密的固定数据驱动器中删除恢复密码是一个好主意?

任何管理员都可以看到恢复密码,并用它来解密驱动器WFT!

我的主要目的是保护驱动器上的数据免受他人侵害。有人可以窃取我的PC,启动到Live-CD linux中,并可以访问Windows安装上的管理员帐户。

删除恢复密码后,我可以使用原始Unlock-Bitlockercmdlet作为标准用户来解锁驱动器。如上所述,我仍然需要更改WMI对象的权限。

编辑: Windows 10更新后,在这种情况下,14939.222对的权限root\cimv2\Security\MicrosoftVolumeEncryption被重置,我不得不再次更改它们。因此,毕竟这似乎不是永久性的解决方案。

由于Windows Update进行了此重置,因此我决定为WMI权限编写更改脚本。我使用的Set-WmiNamespaceSecurity.ps1是在此提供微软博客文章,然后我可以使用:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从命令行解锁加密的外部驱动器不起作用

通过外部硬盘驱动器,命令行和root用户从debian中获取数据

在Mac上通过命令行更改驱动器的最佳方法是什么?

如何通过命令行在Windows 8驱动器上禁用写缓存

如何在命令行上更改为映射的网络驱动器?

如何在Windows 10上从Ubuntu命令行访问D:\驱动器

通过命令行更改网络驱动器标签

在Linux上通过命令行(SSH)在外部硬盘驱动器上创建目录

通过命令行挂载驱动器(就像我在nautilus中单击驱动器一样)

从命令行安装虚拟克隆驱动器-等待虚拟驱动器可访问

ImDisk:从命令行创建物理内存驱动器(不是虚拟内存驱动器)

无法从命令行访问手动安装的硬盘驱动器

我可以从命令行使用UUID挂载驱动器(不是fstab吗?)

我可以从命令行使用UUID挂载驱动器(不是fstab吗?)

“安全删除驱动器”的命令行等效项是什么?

通过命令行卸载和关闭外部驱动器

可以从命令行重新连接映射的网络驱动器吗?

在命令行中将外部硬盘驱动器格式化为ext4

如何使用命令行列出光盘驱动器的可能刻录速度?

如何在命令行中传输(到USB驱动器)或读取.odt文件?

从命令行到文本文件列出映射的网络驱动器

等效于使用nautilus连接到samba驱动器的命令行是什么?

有没有办法从命令行锁定加密的驱动器?

Windows命令行以GB为单位获取物理驱动器大小

如何使用命令行从网络驱动器中提取文件名

如何使用命令行在 Linux 中挂载 samba 驱动器

使用命令行从谷歌驱动器下载共享文件的最快方法是什么?

为什么我需要root特权才能在命令行而不是Nautilus上卸载驱动器?如何改变呢?

如何从Debian命令行擦除硬盘驱动器以将Ubuntu安装到空白硬盘驱动器?