幫 VMware Client 虛擬機啟用 VBS 防護(Virtualization Based Security)

前言

因為演講需求要展示怎打穿 Virtualization 防護,洞都串好了結果發現 VMware 虛擬機 Windows 11 最新版下的 Defender 防毒惡意探索功能的 Hypervisor Code Integrity (HVCI) 怎樣都不給開。然後花了一段時間爬網路上文都沒人撰文解釋,這邊寫一篇文給有需要的人參考XD

有此需求在虛擬機內啟用 VBS 防護的朋友,應該都有嘗試過至配置中「Virtual Machine Settings → Processors → 勾選 Virtualize Intel VT-x/EPT or AMD-V/RVI」並且就能在「Options → Advanced → 勾選 Enable VBS (Virtualization Based Security) support」後,理論上啟動虛擬機後就能使用虛擬機中的 HVCI 防護...


然後這時候你一把 VMware 虛擬機開機,就會彈出一堆 Hyper-V 或 Virtualization 相關的不支援訊息(上圖)怎樣都不給你開機 Orz 好的那怎解決呢?有三大條件必須在 VMware Host 滿足缺一不可、即可讓 VMware Client 可以啟用 HVCI 囉。

關閉 Windows 原生 Hyper-V 虛擬機功能


首先是 Windows 功能(Windows Feature)相關 Hyper-V 與 Hypervisor 平台系列相關功能用於支援 Windows 原生虛擬機功能若啟用狀態下,都會導致 VMware Host 搶占走 Intel EPT 使用權限所致 Client 無法取用 Hypervisor 相關功能,囧。如上圖所示,將上述所有黃框處勾選起來。

系統配置中 Hyper-V / Hypervisor 功能


Intel CPU 所提供的 Hypervisor 系列指令集 HyperCall 被 Windows 重新封裝並以系統角色封裝成 Hyper-V 平台導出之系列 API,因此前面關掉 Windows 功能不代表系統自身的 Hyper-V 平台已經被註記為不得占用 Hypervisor 的狀態;所以需要按上圖所示,以系統管理員身分開啟 PowerShell 並輸入上述兩條指令用以關閉系統原生的 Hyper-V 平台。

Host 端的 HVCI 保護


最後一個影響因素是,Windows 10+ Defender 新增了 HVCI 防護也會需要占用走 Intel EPT 功能將內核切為 VTL0/VTL1 兩個獨立內核,因而導致也會需要 Hyper-V 被驅動狀態下才得啟用這項保護——然而這會導致 Host 又再次占用走 Hyper-V 了QQ;所以 VMware Host 端要記得關閉,否則還是會占用走 Client 想用的 Hypervisor 唷。

安麗一下:今年 HITCON 2023「現代內核漏洞戰爭 - 越過所有核心防線的系統/晶片虛實混合戰法」我會分享如何從 Hyper-V Client 晶片層計算定位回 Host 的整個物理地址映射流程,如果對 Hypervisor 安全有興趣的朋友可以來我今年的議程找我玩 :)


最後展示一下,一旦上述三個條件都滿足了,這樣就可以成功在 VMware Client 的 Windows 11 啟用 HVCI 的 Core Isolation 防護嚕 :)

留言

  1. 囧。如上圖所示,將上述所有黃框處勾選起來。
    "勾選起來"->"取消勾選"?

    回覆刪除

張貼留言

這個網誌中的熱門文章

[C#] Lambda花式應用噁爛寫法(跨UI委派秒幹、多線程處理...etc)

[Windows] 逆向工程 C++ 中入口函數參數 main(argc, argv) 與如何正確的進行參數劫持

重建天堂之門:從 32 位元地獄一路打回天堂聖地(上)深度逆向工程 WOW64 設計