从用户模式绕过 Windows 内核通知例程
在 Windows 系统安全领域,内核通知例程是保障系统安全的重要机制。然而,研究发现可以从用户模式绕过这些内核通知例程,这对系统安全构成了严重威胁。本文将详细介绍绕过内核通知例程的方法、相关案例研究以及现有安全机制的有效性分析。
1. 绕过内核通知例程的方法
绕过内核通知例程的利用过程如下:
1. 列出现有 PID 和 TID :首先列出当前所有存在的进程 ID(PID)和线程 ID(TID),并将它们排除在目标进程可能的 PID 范围之外。
2. 创建线程获取句柄 :创建多个线程,尝试尽快为每个可能的 PID 获取完全特权的句柄。
3. 分析句柄列表 :将每个新的进程句柄放入一个列表中,由一个单独的线程进行分析。
4. 终止利用 :当找到目标进程的句柄时,利用过程终止。
2. 案例研究
2.1 绕过自定义保护驱动
为了清晰展示漏洞,我们开发了一个自定义的保护驱动。该驱动的关键步骤如下:
1 HANDLE
hProtectedPID = NULL;
2 NTSTATUS
DriverEntry( PDRIVER_OBJECT
DriverObject ,
PUNICODE_STRING
RegistryPath) {
3
PsSetCreateProcessNotifyRoutine (
ProtectionD