
У меня ПК с Windows 10 Pro, домена нет, BitLocker на системном диске не используется, но некоторые фиксированные диски с данными зашифрованы с помощью BitLocker и пароля (без TPM).
Когда я захочу разблокировать эти диски, я могу выбрать их в проводнике и нажать Unlock Drive...
, после ввода пароля диск будет расшифрован, и я смогу им пользоваться.
Поскольку у меня есть несколько таких дисков с одинаковым паролем, я написал скрипт, чтобы разблокировать их все одновременно.
Unlock-BitLocker -MountPoint X: -Password $myPassword
Это прекрасно работает при запуске от имени администратора с повышенными правами, но когда я запускаю скрипт от имени обычного стандартного пользователя, происходит сбой:
Get-CimInstance: Доступ запрещен
WBEM_E_ACCESS_DENIED (0x80041003) Текущий пользователь не имеет разрешения на выполнение действия.
Я предполагаю, что и Проводник, и модуль PowerShell BitLocker используют один и тот же API Win32. Почему один работает как стандартный пользователь, а другой — нет?
Когда используешь:
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.
Используя Process Monitor, я вижу, что доступ запрещен к следующему разделу реестра:
HKLM\Software\Microsoft\WBEM\CIMOM
Я также обнаружил, что меню содержимого проводника файлов вызывает исполняемый файл:
%systemroot%\System32\bdeunlock.exe
которое отображает небольшое всплывающее окно для ввода пароля.
При использовании bdeunlock.exe
no access to HKLM\Software\Microsoft\WBEM\CIMOM
отображается в Process Monitor. Так что, похоже, он разблокирует диск без доступа к этому ключу.
Похоже, что оба командлета PowerShell manage-bde.exe
используют WMI:
Get-CimInstance
-Namespace "root\cimv2\Security\MicrosoftVolumeEncryption"
-ClassName Win32_EncryptableVolume
и обычный пользователь не имеет к этому доступа.
Но bdeunlock.exe
можно использовать функцию FveOpenVolumeW
в FVEAPI.dll
(файле API Bitlocker) напрямую, без предварительного использования WMI.
Есть ли способ разблокировать фиксированный диск с данными, заблокированный Bitlocked, из командной строки от имени обычного пользователя?
решение1
Вы можете предоставить стандартному пользователю или группе безопасности, членом которой они являются, явный доступ к объекту WMI по пути, который вы нашли в wmimgmt.msc
.
Таким образом, вам не нужно предоставлять учетной записи права локального администратора или повышенные разрешения, и у нее будет только точный и явный доступ, который ей нужен к соответствующим пространствам имен WMI по мере необходимости, и ничего более — минимально необходимые разрешения для выполнения операции.
инструкции
Нажимать
+
R
, введитеwmimgmt.msc
и нажмитеEnter
. Щелкните правой кнопкой мыши поУправление WMI (локальное)опцию слева, а затем выберитеProperties
.Перейти
Security
вкладку из окна свойств, а затем развернитеRoot
к пространству имен для определенных объектов пространства имен WMI, к которым необходимо явно предоставить доступ.После того как вы выделите соответствующий объект пространства имен 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)
узлу слева и щелкните Properties
. Выберите Security
вкладку, затем найдите объект Root\CIMV2\Security\MicrosoftVolumeEncryption
, щелкните Security
кнопку. Добавьте группу или пользователя, которым вы хотите разрешить разблокировать диски с битовой блокировкой. Проверьте разрешение Allow Execute Methods
.
После этого обычный пользователь может использовать manage-bde.exe
инструмент для разблокировки диска:
manage-bde -unlock X: -pw
проблема в том, что у пользователя запрашивается пароль, а мне нужно разблокировать четыре диска, и я бы предпочел ввести пароль только один раз.
При использовании командлета Unlock-Bitlocker в PowerShell предыдущая ошибка теперь пропускается, но отображается другая:
Отказано в доступе в Get-BitLockerVolumeInternal...
Если взглянуть на код модуля PowerShell, он ломается в тот момент, когда код пытается получить доступ к паролю восстановления, что может сделать только администратор. Если я изменю код, чтобы игнорировать эту ошибку, и просто продолжу работу, а не ломаться, все будет работать нормально.
Но это плохой хак, потому что мне пришлось стать владельцем файла модуля, изменить разрешения, а затем отредактировать код. Все, что я не должен делать с файлом Windows System, плюс в следующий раз, когда Microsoft обновит этот модуль PowerShell, мои изменения будут перезаписаны.
Одно из решений — скопировать соответствующие части кода в мой собственный модуль PowerShell и использовать его вместо него. Это может быть даже нелегально.
Другое решение — удалить пароль восстановления:
manage-bde -protectors -delete X: -type recoverypassword
У меня остается только один способ защиты диска Bitlocked — обычный пароль.
Почему стоит удалить пароль восстановления со стационарного диска, зашифрованного с помощью BitLocker?
Любой администратор может увидеть пароль восстановления и использовать его для расшифровки диска, WFT!
Вся моя цель была в том, чтобы защитить данные на дисках от других людей. Кто-то мог украсть мой ПК, загрузиться в live-CD Linux и получить доступ к учетной записи администратора на моей установке Windows.
После удаления паролей восстановления я могу использовать оригинальный Unlock-Bitlocker
командлет как стандартный пользователь для разблокировки своих дисков. Мне все еще нужно было изменить разрешения на объект WMI, как описано выше.
Редактировать:После обновления Windows 10, в данном случае 14939.222
разрешения на root\cimv2\Security\MicrosoftVolumeEncryption
были сброшены и мне пришлось изменить их снова. Так что это, похоже, не постоянное решение в конце концов.
Из-за этого сброса Windows Update я решил написать скрипт изменения для разрешения WMI. Я использую Set-WmiNamespaceSecurity.ps1
то, что доступно в этомЗапись в блоге Microsoft, то я могу использовать:
.\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
Я изучил процесс с помощью Process Monitor, чтобы узнать, что именно делает Windows Explorer при выборе «Unlock Drive» в Gui. Он запускает bdeunlock.exe, за которым следует буква диска. Похоже, это приложение, которое запрашивает пароль. Это работает с использованием стандартных разрешений пользователя.