명령줄에서 표준 사용자로 Bitlocked 데이터 드라이브 잠금 해제

명령줄에서 표준 사용자로 Bitlocked 데이터 드라이브 잠금 해제

도메인이 없는 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

또한 파일 탐색기 콘텐츠 메뉴가 실행 파일을 호출한다는 것도 알았습니다.

%systemroot%\System32\bdeunlock.exe

비밀번호를 입력하라는 작은 팝업 창이 표시됩니다.

bdeunlock.exe액세스 권한을 사용하지 않으면 HKLM\Software\Microsoft\WBEM\CIMOM프로세스 모니터에 표시됩니다. 따라서 해당 키에 액세스하지 않고 드라이브의 잠금을 해제하는 것 같습니다.

PowerShell cmdlet과 manage-bde.exeWMI가 모두 사용되는 것으로 보입니다.

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

표준 사용자는 이에 액세스할 수 없습니다.

하지만 먼저 WMI를 사용하지 않고 (Bitlocker API 파일) 의 bdeunlock.exe기능을 직접 사용할 수도 있습니다 .FveOpenVolumeWFVEAPI.dll

표준 사용자로서 명령줄에서 Bitlocked 고정 데이터 드라이브를 잠금 해제할 수 있는 방법이 있습니까?

답변1

에서 찾은 경로에 따라 WMI 개체에 대한 명시적 액세스 권한을 구성원인 표준 사용자 또는 보안 그룹에 부여할 수 있습니다 wmimgmt.msc.

이렇게 하면 계정에 로컬 관리자나 상승된 권한을 부여할 필요가 없으며 필요에 따라 상관된 WMI 네임스페이스에 대해 정확하고 명시적인 액세스 권한만 가지게 되며 작업을 수행하는 데 필요한 최소한의 권한만 갖게 됩니다.

지침

  1. 누르다윈키+R, 입력하세요 wmimgmt.msc그리고 를 누르세요 Enter. 마우스 오른쪽 버튼을 클릭하세요.WMI 컨트롤(로컬)옵션을 왼쪽으로 이동한 다음 Properties.

  2. 가다 Security속성 창에서 탭을 누른 다음Root특정 WMI 네임스페이스 개체에 대한 네임스페이스를 지정하려면 명시적으로 액세스 권한을 부여해야 합니다.

  3. Security적용 가능한 WMI 네임스페이스 개체가 강조 표시되면 속성 창의 오른쪽 하단에서 옵션을 선택하고 이에 따라 사용자 계정 또는 보안 그룹을 추가하고 필요에 따라 적용 가능한 권한을 부여 및 설정합니다.


스크린샷 예시

여기에 이미지 설명을 입력하세요


추가 리소스

답변2

질문 자체에서 설명한 연구를 계속하면서 이에 대해 더 자세히 조사했습니다.

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

문제는 사용자에게 비밀번호를 묻는 메시지가 표시되고 현재 잠금 해제할 드라이브가 4개이므로 비밀번호를 한 번만 입력하고 싶다는 것입니다.

이제 PowerShell에서 Unlock-Bitlocker cmdlet을 사용하면 이전 오류가 전달되지만 다른 오류가 표시됩니다.

Get-BitLockerVolumeInternal에서 액세스가 거부되었습니다...

PowerShell 모듈의 코드를 살펴보면 코드가 관리자만 수행할 수 있는 복구 암호에 액세스하려고 시도하는 순간 중단됩니다. 해당 오류를 무시하고 중단하지 않고 계속 진행하도록 코드를 변경하면 정상적으로 작동합니다.

하지만 이것은 나쁜 해킹입니다. 모듈 파일의 소유권을 가져와 권한을 변경한 다음 코드를 편집해야 했기 때문입니다. Windows 시스템 파일로 수행해서는 안 되는 모든 작업과 다음에 Microsoft가 해당 PowerShell 모듈을 업데이트할 때 변경 사항을 덮어쓰게 됩니다.

한 가지 해결책은 관련 코드 조각을 자체 PowerShell 모듈에 복사하고 대신 해당 코드를 사용하는 것입니다. 그것은 합법적이지 않을 수도 있습니다.

또 다른 해결책은 복구 비밀번호를 제거하는 것입니다.

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

그러면 Bitlocked 드라이브에 대한 단일 보호기인 일반 비밀번호만 남게 됩니다.

BitLocker로 암호화된 고정 데이터 드라이브에서 복구 암호를 제거하는 것이 좋은 이유는 무엇입니까?

모든 관리자는 복구 비밀번호를 확인하고 이를 사용하여 드라이브의 암호를 해독할 수 있습니다. WFT!

내 요점은 드라이브에 있는 데이터를 다른 사람으로부터 보호하는 것이었습니다. 누군가 내 PC를 훔쳐 라이브 CD Linux로 부팅하고 내 Windows 설치의 관리자 계정에 액세스할 수 있습니다.

복구 암호를 제거한 후 Unlock-Bitlocker표준 사용자로 원래 cmdlet을 사용하여 드라이브를 잠금 해제할 수 있습니다. 위에서 설명한 대로 WMI 개체에 대한 권한을 변경해야 했습니다.

편집하다:Windows 10 업데이트 후 이 경우 14939.222권한이 root\cimv2\Security\MicrosoftVolumeEncryption재설정되어 다시 변경해야 했습니다. 따라서 이는 결국 영구적인 해결책은 아닌 것 같습니다.

Windows 업데이트에 의한 재설정으로 인해 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

Gui에서 "드라이브 잠금 해제"를 선택할 때 Windows 탐색기가 정확히 무엇을 하는지 알아보기 위해 프로세스 모니터를 사용하여 프로세스를 조사했습니다. bdeunlock.exe와 드라이브 문자가 차례로 실행됩니다. 비밀번호를 묻는 앱인 것 같습니다. 이는 표준 사용자 권한을 사용하여 작동합니다.

관련 정보