Desbloqueie a unidade de dados Bitlocked como usuário padrão na linha de comando

Desbloqueie a unidade de dados Bitlocked como usuário padrão na linha de comando

Tenho um PC com Windows 10 Pro, sem domínio, não uso o BitLocker na unidade do sistema, mas criptografei algumas unidades de dados fixas usando o BitLocker e uma senha (sem TPM).

Quando gosto de desbloquear essas unidades posso selecioná-las no File Explorer e escolher Unlock Drive..., após inserir minha senha a unidade é descriptografada e posso usá-la.

Como tenho algumas dessas unidades com a mesma senha, escrevi um script para desbloquear todas elas ao mesmo tempo.

Unlock-BitLocker -MountPoint X: -Password $myPassword

Isso funciona bem quando executado como administrador elevado, mas quando executo o script como usuário padrão normal, ele falha:

Get-CimInstance: Acesso negado

WBEM_E_ACCESS_DENIED (0x80041003) O usuário atual não tem permissão para executar a ação.

Presumo que o File Explorer e o módulo PowerShell BitLocker usem a mesma API Win32. Por que um funciona como usuário padrão e o outro não?

Ao usar:

manage-bde –unlock E: -rp password

Eu recebo:

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.

Usando o Process Monitor, posso ver que o acesso foi negado à seguinte chave de registro:

HKLM\Software\Microsoft\WBEM\CIMOM

Também descobri que o menu de conteúdo do File Explorer chama o executável:

%systemroot%\System32\bdeunlock.exe

que exibe a pequena janela pop-up para inserir a senha.

Ao usar, bdeunlock.exenenhum acesso HKLM\Software\Microsoft\WBEM\CIMOMé mostrado no Process Monitor. Parece que desbloqueia a unidade sem acessar essa chave.

Parece que ambos os cmdlets do PowerShell manage-bde.exeusam WMI:

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

e um usuário padrão não tem acesso a isso.

Mas bdeunlock.exepode usar a função FveOpenVolumeWem FVEAPI.dll(arquivo API do Bitlocker) diretamente, sem usar o WMI primeiro.

Existe uma maneira de desbloquear uma unidade de dados fixa Bitlocked na linha de comando como usuário padrão?

Responder1

Você pode conceder ao usuário padrão ou a um grupo de segurança que ele seja membro do acesso explícito ao objeto WMI de acordo com o caminho encontrado em wmimgmt.msc.

Dessa forma, você não precisa conceder à conta permissões de administrador local ou elevadas, e eles apenas terão o acesso exato e explícito necessário aos namespaces WMI correlacionados conforme necessário e nada mais – permissões mínimas necessárias para executar a operação.

Instruções

  1. ImprensaWinKey+R, digitar wmimgmt.msce pressione Enter. Clique com o botão direito noControle WMI (local)opção à esquerda e selecione Properties.

  2. Vá o Securityguia nas janelas de propriedades e, em seguida, expanda oRootto namespace para o(s) objeto(s) de namespace WMI específico(s) aos quais você precisa conceder acesso explicitamente.

  3. Depois de destacar o objeto Namespace WMI aplicável, a partir daí você selecionará a Securityopção no lado inferior direito das janelas de propriedades e adicionará a conta de usuário ou grupos de segurança de acordo, e também concederá e definirá as permissões aplicáveis ​​conforme necessário.


Exemplo de captura de tela

insira a descrição da imagem aqui


Recursos adicionais

Responder2

Continuando minha pesquisa que expliquei na própria pergunta, analisei mais detalhadamente isso.

Usando o cmdlet do PowerShell Unlock-Bitlockerporque seu código está disponível em texto não criptografado em todas as máquinas Windows.

O primeiro erro durante a execução do cmdlet acontece durante a chamada:

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

eu recebo umAccess Denied

@Homey_D_Clown_IT sugeriu alterar a segurança do objeto WIM em questão, para isso abra, wmimgmt.mscclique com o botão direito no WMI Control (Local)nó à esquerda e clique em Properties. Selecione a Securityguia e encontre o objeto Root\CIMV2\Security\MicrosoftVolumeEncryption, clique no Securitybotão. Adicione um grupo ou usuário ao qual deseja permitir o desbloqueio das unidades bitlocked. Verifique a Execute Methodspermissão Permitir.

Depois de fazer isso, o usuário padrão pode usar a manage-bde.exeferramenta para desbloquear a unidade:

manage-bde -unlock X: -pw

o problema é que isso solicita a senha do usuário e tenho quatro unidades para desbloquear no momento e prefiro inserir a senha apenas uma vez.

Usar o cmdlet Unlock-Bitlocker no PowerShell agora passa pelo erro anterior, mas exibe outro:

Acesso negado em Get-BitLockerVolumeInternal...

Olhando para o código do módulo PowerShell ele quebra no momento em que o código tenta acessar a senha de recuperação que só pode ser feita por um administrador. Se eu alterar o código para ignorar esse erro e continuar em vez de interromper, tudo funcionará bem.

Mas este é um truque ruim, porque tive que me apropriar do arquivo do módulo, alterar as permissões e depois editar o código. Todas as coisas que não devo fazer com um arquivo de sistema do Windows, além da próxima vez que a Microsoft atualizar esse módulo do PowerShell, minha alteração será substituída.

Uma solução é copiar os trechos de código relevantes em meu próprio módulo do PowerShell e usá-lo. Isso pode até não ser legal.

Outra solução é remover a senha de recuperação:

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

Isso me deixa apenas com um único protetor para a unidade Bitlocked, a senha normal.

Por que é uma boa ideia remover a senha de recuperação de uma unidade de dados fixa criptografada com BitLocker?

Qualquer administrador pode ver a senha de recuperação e usá-la para descriptografar a unidade, WFT!

Meu objetivo era proteger os dados nas unidades de outras pessoas. Alguém poderia roubar meu PC, inicializar em um live-CD Linux e obter acesso a uma conta de administrador na instalação do Windows.

Depois de remover as senhas de recuperação, posso usar o Unlock-Bitlockercmdlet original como usuário padrão para desbloquear minhas unidades. Ainda precisei alterar as permissões no objeto WMI conforme descrito acima.

Editar:Após uma atualização do Windows 10, neste caso 14939.222as permissões root\cimv2\Security\MicrosoftVolumeEncryptionforam redefinidas e tive que alterá-las novamente. Portanto, esta não parece ser uma solução permanente, afinal.

Devido a essa redefinição pelo Windows Update, decidi criar um script para a alteração da permissão WMI. Estou usando Set-WmiNamespaceSecurity.ps1o que está disponível nestePostagem no blog da Microsoft, então posso usar:

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

Responder3

Receio que você não possa fazer isso executando o script sozinho, a menos que desative completamente o UAC em seu computador. Porém, se sua dúvida estiver relacionada à simplificação do uso do seu script, encontrei uma solução há algum tempo e a uso sempre que preciso executar scripts com permissões elevadas.

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 
}

Após inserir este código no início de um script ele irá automaticamente reexecutar o script com permissões elevadas, passando novamente todos os seus argumentos para a nova "instância elevada".

Responder4

Analisei o processo usando o Process Monitor para descobrir o que o Windows Explorer faz exatamente ao selecionar "Desbloquear unidade" no Gui. Acontece que o bdeunlock.exe é iniciado seguido pela letra da unidade. Este parece ser um aplicativo que solicita a senha. Isso funciona usando permissões de usuário padrão.

informação relacionada