一个可以消除 CVE-2017-11882 的 Windows 驱动程序 : )
该项目分为一个内核驱动程序和一个用户态通知组件,它们通过使用反转调用模型的自定义设备进行通信。
DriverEntry 注册一个 PsSetCreateProcessNotifyRoutineEx 回调,使得驱动程序在每次系统范围内创建进程时、在进程开始执行之前被同步调用。ZwOpenProcess 打开父进程并查询 ProcessImageFileName 以获取完整的 NT 路径。通过 RtlCompareUnicodeString 比较末尾后缀与 eqnedt32.exe 来决定是否为利用尝试。CreateInfo->CreationStatus = STATUS_ACCESS_DENIED。这是从回调中终止进程启动的文档化方法。该代理使用两个线程:一个 I/O 调度程序运行反转调用循环,使用 WaitForSingleObject + GetOverlappedResult;另一个 UI 工作线程弹出警报并使用 MessageBoxW 显示它们。句柄由一个小型 RAII AutoHandle 包装器管理。
整个检测依赖于内核报告的父 PID。攻击者通过使用 PROC_THREAD_ATTRIBUTE_PARENT_PROCESS 调用 NtCreateUserProcess,可以将有效负载重新父进程设置为 explorer.exe 并逃避检测 : )
该解决方案无法检测执行进程注入或内存代码执行的高级利用。它仅检测此 CVE 的常见利用,即生成新的(恶意)进程。