首页
论坛
课程
招聘
[翻译] 微软Hyper-V与VMware的不兼容
2020-5-19 15:09 2331

[翻译] 微软Hyper-V与VMware的不兼容

2020-5-19 15:09
2331


【前言】

    文章内容主要来自微软官方;

      英文版:https://docs.microsoft.com/en-us/windows/security/identity-protection/credential-guard/credential-guard-manage

      中文版:https://docs.microsoft.com/zh-cn/windows/security/identity-protection/credential-guard/credential-guard-manage

     一般是失鸡无神Win10上的WMware突然因为系统更新或其他神不知鬼不觉的原因,导致运行不了WMware,而WMware提示跟微软的Hper-V或Credential Guard冲突,人们才会辗转到上面的连接。

    页面内容主要目的是设置(或说管理)【Windows Defender Credential Guard】,即开启或关闭(启用或禁用)

    页面内容一堆猛操作,云里雾里,主要它们表达都是后缀方式的逻辑,一些步骤可能根本没有,跟着步骤走也很懵逼,除非心大些无所谓看到后面的某某版本不用某一步(为啥不提前说!)


快速关闭Hyper-V和Credential Guard:

 步骤一: 依次打开 【设置】【应用】【应用和功能】【程序和功能】【启用或关闭Windows功能】,取消勾选【Hyper-V】。(不使用微软的Hyper-V虚拟机,应该也没多少人用的玩意,除非玩针对)

步骤二:通过【1】禁用;看下【2】的注册表,确认没有或LsaCfgFlags的值为零即可

    若开启了带UEFI锁的【Credential Guard】则我们必须使用如下步骤,因为设置被保存在EFI固件中;若没有带锁,则可以通过组策略关闭。

    1. cmd 执行 gpedit.msc 打开组策略控制台,从【计算机配置】->【管理模板】->【系统】->【Device Guard】, 双击【打开基于虚拟化安全】,选中【已禁用】

    2. 删除下面注册表设置

      【 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\LSA\LsaCfgFlags 】

      【 HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\DeviceGuard\LsaCfgFlags 】

    3. 若也希望关闭针对虚拟化的安全性,则可以删除如下注册表配置

      【 HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\DeviceGuard\EnableVirtualizationBasedSecurity 】

      【 HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\DeviceGuard\RequirePlatformSecurityFeatures 】

步骤三:【重启】



以下是半吊水的意译,后来才发现应该有中文页面的,一些表述也是很意外,如

【Hypervisor-Protected Code Integrity and Windows Defender Credential Guard】工具,实际就是指一个powershell脚本

链接: https://docs.microsoft.com/en-us/windows/security/identity-protection/credential-guard/dg-readiness-tool



【Windows Defender Credential Guard】

  可通过组策略、注册表,或者【Hypervisor-Protected Code Integrity and Windows Defender Credential Guard】脚本工具工具来设置。

  其也能如同在物理机上一样保护Hyper-V虚拟机的秘钥,设置步骤相同。


【通过组策略设置】

    若有需要这也会添加针对虚拟化的安全功能。

    1. cmd 执行 gpedit.msc 打开组策略控制台,从【计算机配置】->【管理模板】->【系统】->【Device Guard】

    2. 双击【打开基于虚拟化安全】,选中【已启用】

    3. 在【选择平台安全级别】中选择【安全启动】或【安全启动和DMA保护】

    4. 在【Credential Guard配置】中选择【使用UEFI锁启用】,然后【OK】。

        若想远程关闭【Windows Defender Credential Guard】,则选择【无锁启用】

    5. 在【安全启动配置】中选择【未配置】、【已启用】或【已禁用】

    6. 关闭组策略控制台

    可以运行【gpupdate /force】强制执行该组策略


【通过微软 Intune设置】//此方式忽略


【通过注册表设置】

    一些系统需要先启用【Windows Defender Credential Guard】使用的针对虚拟化的安全特性。

    (A)添加针对虚拟化的安全特性

        Win10.1607和WinServer.2016的该功能不需要做此步骤,可以忽略。

        但如果使用win10.1507.RTM 或Win10.1511 ,则必须启动针对虚拟化的安全特性。

        这可以通过控制面板或【镜像部署服务与管理工具(DISM)】实现。

        

        注意:若通过组策略开启【Windows Defender Credential Guard】,这些通过控制面板或DISM开启特定功能的步骤是不需要的,

        组策略会为你安装这些特性。

        

        (A.1)通过【应用和功能】添加虚拟化安全特性。

          1. 【设置】【应用】【应用和功能】【程序和功能】

          2. 【启用或关闭Windows功能】

          3. 在【Hyper-V】【Hyper-V平台】处,勾选【Hyper-V Hypervisor】(Hyper-V 虚拟机监控程序)

          4. 选择【Isolated User Mode】(隔离用户模式)(只在企业版或window server 2016中有)

          5. 点击【确定】

        (A.2)通过【DISM】给一个离线的镜像添加虚拟化安全特性。

          1. 打开命令行

          2. 执行下述命令添加【Hyper-V Hypervisor】

           【dism /image:<WIM file name> /Enable-Feature /FeatureName:Microsoft-Hyper-V-Hypervisor /all】

          3. 执行下述命令添加【Isolated User Mode】

           【dism /image:<WIM file name> /Enable-Feature /FeatureName:IsolatedUserMode】

         注意:

            Win10 1607 或之后版本,【Isolated User Mode】功能已经集成到系统核心中。因此上述第三步不在需要。

    (B)设置针对虚拟化的安全和【Windows Defender Credential Guard】

       1. 打开注册表编辑器

       2. 设置针对虚拟化的安全:

           * 找到 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\DeviceGuard

           * 添加一个DWORD类型名为 EnableVirtualizationBasedSecurity 的值,设置1开启,0关闭。

           * 添加一个Dword类型名为 RequirePlatformSecurityFeatures 的值,设置1使用【Secure Boot】(安全启动),设置3使用【Secure Boot and DMA protection】

       3. 设置【Windows Defender Credential Guard】

           * 找到 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\LSA

           *  添加一个DWORD类型名为 LsaCfgFlags 的值,设置1开启带UEFI锁的【Windows Defender Credential Guard】,设置2开启不带锁的,而设置0为关闭。

       4. 关闭注册表编辑器


【通过(Hypervisor-Protected Code Integrity and Windows Defender Credential Guard hardware readiness tool)脚本工具设置(Windows Defender Credential Guard)】

    DG_Readiness_Tool.ps1 -Enable -AutoReboot


    注意:当再非英语操作系统中运行该工具时,在脚本中将【$OSArch = $(gwmi win32_operatingsystem).OSArchitecture】修改替换为

    【$OSArch = $((gwmi win32_operatingsystem).OSArchitecture).tolower()】



【查看( Windows Defender Credential Guard)性能】

    【Windows Defender Credential Guard】是否正在运行?

      1. 【开始】,输入msinfo32.exe,然后点击【系统信息】

      2.  点击【系统摘要】

      3. 确保【Credential Guard】在这对虚拟化的安全配置后出现。如:

        Vitualization-based security Services Configured := Credential Guard, Hypervisor enforced Code Integrity

        基于虚拟化的安全性 正在运行

        安全属性要求基于虚拟化的安全性

        安全属性可使用基于虚拟化的安全性 基本的虚拟化支持, DMA 保护

        已配置基于虚拟化的安全服务         

        正在运行基于虚拟化的安全服务

     我们也可以通过脚本工具检查【Windows Defender Credential Guard】

       DG_Readiness_Tool_v3.6.ps1 -Ready

     

注意:运行Win10 1703的机器,无论是否开启基于虚拟化的安全性,Lsalso.exe 都会为了其他功能运行。

    * 我们建议在设备加入域之前开启【Windows Defender Credential Guard】,若加入域之后才开启,

        用户和设备隐私很可能已经陷入危险。换言之,对于设备或身份已经先入危险的情况,开启【Credential Guard】对其安全并没有什么帮助,

        这也是为什么我们要尽可能早打开【Credential Guard】的原因。

    * 我们应常规化查看开启了【Windows Defender Credential Guard】的情况。这可通过安全审查策略或WMI查询实现。

        如下是一些应当查看的WinInit事件ID

        | Event ID 13 【Windows Defender Credential Guard (Lsalso.exe)】已经开启并对LSA credentials进行保护。

        | Event ID 14 【Windows Defender Credential Guard (Lsalso.exe)】配置: 0x1,0

          0x1 表示 【Windows Defender Credential Guard (Lsalso.exe)】 设置运行,0表示没有设置运行。

          0 表示 设置在保护模式中运行,1表示在测试模式中运行;此值应该一直设为0

        |Event ID 15 【Windows Defender Credential Guard (Lsalso.exe)】已经设置但安全核心未运行,在没有【Windows Defender Credential Guard】的情况下继续。

        |Event ID 16  【Windows Defender Credential Guard (Lsalso.exe)】运行失败

        |Event ID 17 读取【Windows Defender Credential Guard (Lsalso.exe)】UEFI配置错误:[错误代码] 我们也可以通过检查

            【Microsoft->Windows->Kernel-Boot】事件源的Event ID 51来核准TPM是否已经用于关键防护。

            若运行了TPM,则TPM PCR过滤值将是大于0的值

            |Event ID 51 VSM Master Ecryption Key Provisioning. 

              Using cached copy status:0x0

              Unsealing cached copy status:0x1

              New key generation status:0x1

              Sealing status:0x1

              TPM PCR mask:0x0


 【关闭Windows Defender Credential Guard】

    可以使用下述步骤或脚本工具。

    若开启了带UEFI锁的【Credential Guard】则我们必须使用如下步骤,因为设置被保存在EFI固件中;若没有带锁,则可以通过组策略关闭。

    1. cmd 执行 gpedit.msc 打开组策略控制台,从【计算机配置】->【管理模板】->【系统】->【Device Guard】, 双击【打开基于虚拟化安全】,选中【已禁用】

    2. 删除下面注册表设置

      【 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\LSA\LsaCfgFlags 】

      【 HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\DeviceGuard\LsaCfgFlags 】

    3. 若也希望关闭针对虚拟化的安全性,则可以删除如下注册表配置

      【 HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\DeviceGuard\EnableVirtualizationBasedSecurity 】

      【 HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\DeviceGuard\RequirePlatformSecurityFeatures 】

      

      重要提醒:

        若手动清除这些注册表设置,要确认已全部删除。否则,设备会进入恢复状态

    4. 通过 bcdedit 删除 【Windows Defender Credential Guard EFI variables】

        mountvol X: /s

        copy %WINDIR%\System32\SecConfig.efi X:\EFI\Microsoft\Boot\SecConfig.efi /Y

        bcdedit /create {0cb3b571-2f2e-4343-a879-d86a476d7215} /d "DebugTool" /application osloader

        bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} path "\EFI\Microsoft\Boot\SecConfig.efi"

        bcdedit /set {bootmgr} bootsequence {0cb3b571-2f2e-4343-a879-d86a476d7215}

        bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} loadoptions DISABLE-LSA-ISO

        bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} device partition=X:

        mountvol X: /d

    5. 重启计算机

    6. 接收关闭【Windows Defender Credential Guard】提示

    7. 同理,我们也可以通过关闭针对虚拟化的安全性来关闭[Windows Defender Credential Guard]

    注意:计算机必须连接上域控一次来解密内容,这些文件被EFS加密。软想关闭【Windows Defender Credential Guard】和针对虚拟化的安全。

    在关闭所有针对虚拟化安全性的组策略和注册表设置后,执行下面的【bcdedit】命令

    bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} loadoptions DISABLE-LSA-ISO,DISABLE-VBS

    bcdedit /set vsmlaunchtype off

    

    注意:【Credential Guard】和【Device Guard】目前还不支持使用Azure IaaS 的虚拟机。这些将在将来第二代虚拟机中使用。

    

【通过脚本关闭】

  DG_Readiness_Tool_v3.6.ps1 -Disable -AutoReboot

【在主体机中为某个虚拟机关闭Windows Defender Credential Guard】

  Set-VMSecurity -VMName <VMName> -VirtualizationBasedSecurityOptOut $true




恭喜ID[飞翔的猫咪]获看雪安卓应用安全能力认证高级安全工程师!!

收藏
点赞1
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回