Разблокируйте диск с данными Bitlocked как обычный пользователь в командной строке

Разблокируйте диск с данными Bitlocked как обычный пользователь в командной строке

У меня ПК с 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.exeno 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 по мере необходимости, и ничего более — минимально необходимые разрешения для выполнения операции.

инструкции

  1. НажиматьWinKey+R, введите wmimgmt.mscи нажмите Enter. Щелкните правой кнопкой мыши поУправление WMI (локальное)опцию слева, а затем выберите 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)узлу слева и щелкните 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, за которым следует буква диска. Похоже, это приложение, которое запрашивает пароль. Это работает с использованием стандартных разрешений пользователя.

Связанный контент