
管理者権限やカーネルドライバーを必要とせず、Hypervisor-Protected Code Integrity(HVCI)で保護された環境において、任意のカーネル読み取り/書き込み/関数呼び出しを実現します。
ZeroHVCIは、管理者権限やカーネルドライバーを使用せずに、Hypervisor-Protected Code Integrity(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);
これを可能にしている主なプロジェクトは2つあります。
公開済みのCVEを連鎖させて、HVCIで保護された環境でカーネルアクセスを獲得する方法を示します。Windowsカーネルの整合性とHVCIバイパス緩和策を研究するセキュリティ研究者にとって有用です。
Cr4sh氏、KernelForgeに感謝
varwara氏、彼のPOC POC2に感謝
Eric Egsgard氏、彼の講演に感謝
教育目的および許可されたセキュリティ研究のみを対象としています。所有していない、または明示的なテスト許可を得ていないシステムでは使用しないでください。誤用についての責任は負いません。自己責任で使用してください。
記載されているすべての製品名、商標、登録商標は、それぞれの所有者に帰属します。