jeffaf/CVE-2025-3464-AsIO3-LPE

GitHub: jeffaf/CVE-2025-3464-AsIO3-LPE

针对华硕 AsIO3.sys 驱动的本地提权利用,结合 TOCTOU 绕过认证和 PreviousMode 减一技术实现 SYSTEM 权限获取。

Stars: 8 | Forks: 2

# CVE-2025-3464-AsIO3-LPE CVE-2025-3464:针对 ASUS AsIO3.sys 的非特权 LPE 漏洞利用 - TOCTOU 认证绕过 + PreviousMode 减一 # CVE-2025-3464: AsIO3.sys 本地权限提升 此漏洞利用仅在 Windows 11 22H2 或更早版本上有效。Microsoft 已修复了 PreviousMode 相关的技巧。 针对 ASUS AsIO3.sys 驱动程序的本地权限提升漏洞利用。获取 `NT AUTHORITY\SYSTEM` 权限。 image ## 概述 此漏洞利用将认证绕过 (CVE-2025-3464) 与减一原语 (decrement primitive) 链接起来,将任何本地用户的权限提升至 SYSTEM。 | 属性 | 值 | |----------|-------| | **CVE** | CVE-2025-3464 | | **类型** | 本地权限提升 | | **驱动** | AsIO3.sys (ASUS) | | **测试环境** | Windows 11 22H2 (Build 22621) | ## 漏洞详情 ### CVE-2025-3464 - 通过 TOCTOU 绕过认证 AsIO3.sys 驱动程序通过检查调用进程的可执行路径是否包含 `AsusCertService` 并验证 SHA256 哈希来验证调用进程。此检查容易受到使用 NTFS 硬链接的 Time-of-Check-Time-of-Use (TOCTOU) 竞争条件攻击。 **攻击流程:** 1. 在包含 `AsusCertService` 的路径创建指向漏洞利用程序可执行文件的硬链接 2. 通过硬链接生成子进程(进程映像路径现在通过了子字符串检查) 3. 将硬链接交换为指向 `AsusCertService.exe` 4. 子进程打开设备句柄 5. 授权授予受攻击者控制的进程 **注意:** 驱动程序仅通过子字符串匹配检查路径是否 *包含* `AsusCertService`。任何用户可写的路径都有效(例如 `C:\Users\Public\AsusCertService\`),这使得无需管理员权限即可利用此漏洞。 ### 减一原语 (IOCTL 0xA0402450) 该驱动程序暴露了一个 IOCTL,它在用户控制的指针上调用 `ObfDereferenceObject`。这会在 `(ObjectPtr - 0x30)` 处执行 8 字节原子减一,提供了一个任意减一原语。 **通过 PreviousMode 进行利用:** - 通过 `NtQuerySystemInformation(SystemHandleInformationEx)` 泄露 KTHREAD 地址 - 目标:`KTHREAD + 0x232` (PreviousMode 字段) - 将 PreviousMode 从 1 (UserMode) 减一至 0 (KernelMode) - 当 PreviousMode=0 时,`NtReadVirtualMemory`/`NtWriteVirtualMemory` 可以访问内核内存 - 遍历 EPROCESS 链表,窃取 SYSTEM token - 在生成 shell 之前将 PreviousMode 恢复为 1 ## 用法 ``` # 编译 (Linux 交叉编译) x86_64-w64-mingw32-gcc -O2 -o AsIO3_FullExploit.exe AsIO3_FullExploit.c -lntdll -lshlwapi ``` # 在目标机器上(需要加载 AsIO3.sys) AsIO3_FullExploit.exe 前置条件: - AsIO3.sys 驱动程序已加载(随 ASUS Armoury Crate、AI Suite 等附带) - AsusCertService.exe 可访问(搜索常见的 ASUS 安装路径) 结构偏移 (Windows 11 22H2) KTHREAD + 0x232 = PreviousMode KTHREAD + 0x220 = Process (EPROCESS 指针) EPROCESS + 0x440 = UniqueProcessId EPROCESS + 0x448 = ActiveProcessLinks EPROCESS + 0x4B8 = Token 注意:偏移量因版本而异。请针对您的目标 Windows 内部版本进行验证。Windows 23H2 会抛出 PREVIOUS_MODE_MISMATCH (0x1f9)。这是针对这些 PreviousMode 技巧的一种缓解措施。 技术说明 - 在 KTHREAD+0x232 处的 8 字节减一会影响相邻字段 (UserAffinityPrimaryGroup, BasePriority) - 关键:在调用 CreateProcess 或任何用户模式地址空间操作之前,必须将 PreviousMode 恢复为 1 - 未能恢复 PreviousMode 会导致进程创建期间在 nt!PspLocateInPEManifest 中发生 BSOD 参考 - https://blog.talosintelligence.com/decrement-by-one-to-rule-them-all/ - ASUS Armoury Crate / AI Suite 驱动程序组件 免责声明 此代码仅用于授权的安全研究和教育目的。请仅针对您拥有或明确获得测试许可的系统使用。未经授权访问计算机系统是违法的。
标签:0day, 0day挖掘, Arbitrary Decrement, AsIO3.sys, ASUS, CVE-2025-3464, Exploit, Gophish, LPE, NTFS硬链接, PoC, PreviousMode, TOCTOU, Web报告查看器, Windows 11, 内核安全, 协议分析, 子域名枚举, 客户端加密, 暴力破解, 本地提权, 权限提升, 竞态条件, 系统安全, 认证绕过, 驱动漏洞