Idov31/NovaHypervisor

GitHub: Idov31/NovaHypervisor

基于 Intel VT-x 的 Windows 防御型虚拟化监控器,通过硬件虚拟化层保护内核内存免受 BYOVD 等内核级攻击。

Stars: 260 | Forks: 26

# NovaHypervisor

Logo

![image](https://img.shields.io/badge/C%2B%2B-00599C?style=for-the-badge&logo=c%2B%2B&logoColor=white) ![assembly](https://img.shields.io/badge/ASSEMBLY-ED8B00?style=for-the-badge&logo=Assembly&logoColor=white) ![image](https://img.shields.io/badge/Windows-0078D6?style=for-the-badge&logo=windows&logoColor=white) ## 描述 NovaHypervisor 是一个基于 x64 Intel 宿主机的防御型 hypervisor。该项目的目标是通过保护防御产品(防病毒软件/端点保护)和内核内存结构,并防止对内核内存的未经授权访问,来防范基于内核的攻击(通过自带易受攻击驱动程序 (BYOVD) 或其他方式)。 NovaHypervisor 使用 C++ 和 Assembly 编写,旨在兼容 Windows 10 及更高版本。请参阅[设置](#setup)部分以获取有关如何使用它的更多信息。 ## 支持的 Hypervisors NovaHypervisor 可以在以下 hypervisors 下运行: ### 图例 ✅ - 已支持并测试 ⌛ - 开发中 ❌ - 不支持且不计划支持 | Hypervisor | 是否支持 | |------------|-----------| | VMware | ✅ | | Hyper-V | ✅ | | 启用 VBS 的 Hyper-V | ⌛ | | VirtualBox | ❌ | | QEMU | ❌ | | KVM | ❌ | ## 用法 要使用 NovaHypervisor,您需要创建一个内核服务并启动它: ``` sc create NovaHypervisor type= kernel binPath= "C:\Path\To\NovaHypervisor.sys" sc start NovaHypervisor ``` 然后,您可以使用 [NovaClient](./NovaClient/) 应用程序添加和删除要保护的地址: ``` REM Add an address to protect NovaClient.exe protect 0x12345678 REM Remove an address from protection NovaClient.exe unprotect 0x12345678 ``` - protect:保护内存地址不被访问,您可以指定保护的类型: - `r`:读取保护 - `w`:写入保护 - `x`:执行保护 您提供的保护就是该地址将**拥有**的保护。例如,如果您想移除执行权限,请使用 "rw"。 - unprotect:移除对内存地址的保护。 ## 设置 ### 编译项目 编译项目的设置要求您具备: - Visual Studio 2022 或更高版本。 - 已安装 Windows Driver Kit (WDK)。 ### 目标设置 要运行该 hypervisor,您的机器上需要安装 Windows 10 或更高版本。您还需要具备: - 启用 Intel VT-x。 - 虚拟化 IOMMU。 ## 日志记录与调试 ### 日志记录 NovaHypervisor 使用一个小型 COM 记录器记录到第二个串行端口(COM2,I/O 端口 `0x2F8`),该记录器可以在 `HIGH_LEVEL` IRQL 和 VMX root 路径下运行。它会发出带有固定 `NovaHypervisor` 前缀的调试、信息和错误记录。 ``` bcdedit /dbgsettings serial debugport:2 baudrate:115200 ``` 从宿主机端的串行管道或您 VM 配置的 COM2 端点以 `115200 8N1` 捕获输出。例如,在 PuTTY 中,您可以附加到为 VM 配置的串行传输,并在驱动程序运行时观察日志行。您也可以使用 [connect-vm.ps1](./scripts/connect-vm.ps1) 脚本连接到 VM 的 COM2 端口并在控制台中显示日志。 ### 调试 要在您的测试环境中进行测试和调试,请使用提升的 cmd 运行以下命令,然后重启您的机器: ``` bcdedit /set testsigning on bcdedit /debug on bcdedit /dbgsettings net hostip: port:55000 key:1.2.3.4 ``` 其中 `` 是您宿主机的 IP 地址。 ## 资源 - [Hypervisor From Scratch](https://rayanfam.com/topics/hypervisor-from-scratch-part-1/) - [HyperDbg](https://github.com/HyperDbg/HyperDbg) - [QEMU](https://www.qemu.org/) - [TLFS](https://raw.githubusercontent.com/Microsoft/Virtualization-Documentation/master/tlfs/Hypervisor%20Top%20Level%20Functional%20Specification%20v5.0.pdf) ## 特别感谢与贡献者 - [Sinaei](https://x.com/Intel80x86):感谢他解答我的问题,以及他在 HyperDbg 和 Hypervisor From Scratch 上的出色工作。 - [Humza](https://github.com/humzak711):感谢他帮助修复错误并提出改进建议。 - [memN0ps](https://github.com/memN0ps/):感谢他解答我的问题并为我指引正确的资源。
标签:BYOVD攻击防御, C++, EDR保护, Hyper-V, Intel x64 Hypervisor, Rootkit防御, VBS, VMware, Web报告查看器, Windows 10, Windows虚拟机监控程序, 内存保护, 内存隔离, 内核安全防御, 内核级保护, 内核驱动, 子域名枚举, 安全引擎, 安全攻防, 快速连接, 数据擦除, 汇编语言, 端点安全, 系统安全, 网络协议, 网络安全, 自动回退, 虚拟化安全, 补丁管理, 防病毒软件保护, 隐私保护