Desbloquee la unidad de datos Bitlocked como usuario estándar en la línea de comando

Desbloquee la unidad de datos Bitlocked como usuario estándar en la línea de comando

Tengo una PC con Windows 10 Pro, sin dominio, no uso BitLocker en la unidad del sistema, pero he cifrado algunas unidades de datos fijas usando BitLocker y una contraseña (sin TPM).

Cuando quiero desbloquear estas unidades, puedo seleccionarlas en el Explorador de archivos y elegir Unlock Drive..., después de ingresar mi contraseña, la unidad se descifra y puedo usarla.

Como tengo algunas de estas unidades con la misma contraseña, escribí un script para desbloquearlas todas al mismo tiempo.

Unlock-BitLocker -MountPoint X: -Password $myPassword

Esto funciona bien cuando se ejecuta como administrador elevado, pero cuando ejecuto el script como mi usuario estándar normal, falla:

Get-CimInstance: acceso denegado

WBEM_E_ACCESS_DENIED (0x80041003) El usuario actual no tiene permiso para realizar la acción.

Supongo que tanto el Explorador de archivos como el módulo PowerShell BitLocker usan la misma API Win32, ¿por qué uno funciona como usuario estándar y el otro no?

Cuando usas:

manage-bde –unlock E: -rp password

Yo obtengo:

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.

Al utilizar Process Monitor, puedo ver que se deniega el acceso a la siguiente clave de registro:

HKLM\Software\Microsoft\WBEM\CIMOM

También descubrí que el menú de contenido del Explorador de archivos llama al ejecutable:

%systemroot%\System32\bdeunlock.exe

que muestra la pequeña ventana emergente para ingresar la contraseña.

Cuando se utiliza, bdeunlock.exeno HKLM\Software\Microsoft\WBEM\CIMOMse muestra acceso a en Process Monitor. Parece que desbloquea la unidad sin acceder a esa clave.

Parece que tanto los cmdlets de PowerShell como manage-bde.exeel uso de WMI:

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

y un usuario estándar no tiene acceso a esto.

Pero bdeunlock.exepuede usar la función FveOpenVolumeWen FVEAPI.dll(archivo API Bitlocker) directamente sin usar WMI primero.

¿Existe alguna manera de desbloquear una unidad de datos fija Bitlocked en la línea de comando como usuario estándar?

Respuesta1

Puede otorgarle al usuario estándar o a un grupo de seguridad que sea miembro del acceso explícito al objeto WMI según la ruta que encontró en wmimgmt.msc.

De esta manera, no es necesario otorgar permisos elevados o de administrador local a la cuenta, y solo tendrán el acceso exacto y explícito que necesitan a los espacios de nombres WMI correlacionados según sea necesario y nada más: permisos mínimos necesarios para realizar la operación.

Instrucciones

  1. PrensaWinKey+R, escribir wmimgmt.mscy presione Enter. Haga clic derecho en elControl WMI (local)opción a la izquierda y luego seleccione Properties.

  2. Ir al Securitypestaña de las ventanas de propiedades y luego expanda laRootal espacio de nombres a los objetos de espacio de nombres WMI específicos a los que necesita otorgar acceso explícitamente.

  3. Una vez que tenga resaltado el objeto de espacio de nombres WMI aplicable, desde allí seleccionará la Securityopción en el lado inferior derecho de las ventanas de propiedades y agregará la cuenta de usuario o los grupos de seguridad en consecuencia, y también otorgará y establecerá los permisos aplicables según sea necesario.


Ejemplo de captura de pantalla

ingrese la descripción de la imagen aquí


Recursos adicionales

Respuesta2

Continuando con mi investigación que expliqué en la pregunta misma, investigué más esto.

Usar el cmdlet de PowerShell Unlock-Bitlockerporque su código está disponible en texto sin cifrar en todas las máquinas con Windows.

El primer error durante la ejecución del cmdlet ocurre al llamar:

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

obtengo unAccess Denied

@Homey_D_Clown_IT sugirió cambiar la seguridad en el objeto WIM en cuestión, para hacerlo, abra wmimgmt.msc, haga clic derecho en el WMI Control (Local)nodo de la izquierda y haga clic en Properties. Seleccione la Securitypestaña y luego busque el objeto Root\CIMV2\Security\MicrosoftVolumeEncryption, haga clic en el Securitybotón. Agregue un grupo o usuario al que desee permitirle desbloquear las unidades bloqueadas por bits. Marque el Execute Methodspermiso Permitir.

Una vez hecho esto, el usuario estándar puede utilizar la manage-bde.exeherramienta para desbloquear la unidad:

manage-bde -unlock X: -pw

El problema es que esto le solicita al usuario la contraseña y tengo cuatro unidades para desbloquear en este momento y preferiría ingresar la contraseña solo una vez.

Al usar el cmdlet Unlock-Bitlocker en PowerShell ahora se supera el error anterior, pero se muestra otro:

Acceso denegado en Get-BitLockerVolumeInternal...

Al examinar el código del módulo PowerShell, se rompe en un momento en el que el código intenta acceder a la contraseña de recuperación, lo que solo puede realizar un administrador. Si cambio el código para ignorar ese error y simplemente continúo en lugar de interrumpirlo, funciona bien.

Pero este es un mal truco, porque tuve que tomar posesión del archivo del módulo, cambiar los permisos y luego editar el código. Todo lo que no debo hacer con un archivo de sistema de Windows, además, la próxima vez que Microsoft actualice ese módulo de PowerShell, mi cambio se sobrescribirá.

Una solución es copiar los fragmentos de código relevantes en mi propio módulo de PowerShell y usarlo en su lugar. Puede que eso ni siquiera sea legal.

Otra solución es eliminar la contraseña de recuperación:

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

Esto sólo me deja con un único protector para la unidad Bitlocked, la contraseña normal.

¿Por qué es una buena idea eliminar la contraseña de recuperación de una unidad de datos fija cifrada con BitLocker?

Cualquier administrador puede ver la contraseña de recuperación y usarla para descifrar la unidad, ¡WFT!

Mi objetivo era proteger los datos de las unidades de otras personas. Alguien podría robar mi PC, iniciar un Live CD de Linux y obtener acceso a una cuenta de administrador en mi instalación de Windows.

Después de eliminar las contraseñas de recuperación, puedo usar el Unlock-Bitlockercmdlet original como usuario estándar para desbloquear mis unidades. Todavía necesitaba cambiar los permisos del objeto WMI como se describe arriba.

Editar:Después de una actualización de Windows 10, en este caso 14939.222los permisos root\cimv2\Security\MicrosoftVolumeEncryptionse restablecieron y tuve que cambiarlos nuevamente. Entonces, después de todo, esto no parece ser una solución permanente.

Debido a este restablecimiento mediante Windows Update, decidí programar el cambio para el permiso WMI. Estoy usando Set-WmiNamespaceSecurity.ps1el que está disponible en este.Publicación de blog de Microsoft, entonces puedo usar:

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

Respuesta3

Me temo que no puede hacer esto ejecutando el script usted mismo, a menos que desactive completamente UAC en su computadora. Sin embargo, si su pregunta está relacionada con la simplificación del uso de su secuencia de comandos, encontré una solución hace algún tiempo y la estoy usando cada vez que necesito ejecutar secuencias de comandos con permisos elevados.

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 
}

Después de insertar este código al comienzo de un script, automáticamente volverá a ejecutar el script con permisos elevados, pasando nuevamente todos sus argumentos a una nueva "instancia elevada".

Respuesta4

Investigué el proceso usando Process Monitor para descubrir qué hace exactamente el Explorador de Windows al seleccionar "Desbloquear unidad" en la GUI. Sucede que inicia bdeunlock.exe seguido de la letra de la unidad. Parece ser una aplicación que solicita la contraseña. Esto funciona utilizando permisos de usuario estándar.

información relacionada