jtaw5649/MyPortIO-Exploit
GitHub: jtaw5649/MyPortIO-Exploit
通过 ASRock Polychrome RGB 捆绑的 Nuvoton 驱动中的任意物理内存读写原语,在启用 HVCI 的 Windows 11 25H2 上实现从管理员到 SYSTEM 的本地提权。
Stars: 0 | Forks: 0
# MyPortIO-Exploit
通过 `MyPortIO_x64.sys`(Nuvoton Technology,随 ASRock Polychrome RGB 捆绑提供)中的
任意物理内存读写实现本地权限提升。

有关漏洞分析,请参阅 [docs/ANALYSIS.md](docs/ANALYSIS.md),
有关存在漏洞的 IOCTL 处理程序的 Ghidra 反编译(带注释),
请参阅 [docs/ghidra_decompile.c](docs/ghidra_decompile.c)。
## 构建
需要支持 UCRT 的 `x86_64-w64-mingw32-gcc`(从 Linux 交叉编译)。
```
make
```
## 用法
易受攻击的驱动程序包含在 `driver/` 目录中。
```
MyPortIO-POC.exe # full exploit chain
MyPortIO-POC.exe --load driver\MyPortIO_x64.sys
MyPortIO-POC.exe --elevate
MyPortIO-POC.exe --test-rw
MyPortIO-POC.exe --test-port
MyPortIO-POC.exe --dump 0x1000 256
MyPortIO-POC.exe --info
MyPortIO-POC.exe --unload
```
## 利用链
1. 模块覆盖 (Module stomp) - 将 wmiutils.dll 作为 SEC_IMAGE 映射以提供内存掩护
2. AMSI 绕过 - 通过 VEH 在 AmsiScanBuffer 上设置硬件断点
3. ETW 禁用 - EtwEventWrite 被修补为直接返回 (ret)
4. 通过 NtQuerySystemInformation 类 79 查询 Superfetch VA-to-PA 转换缓存
5. 通过句柄表 (NtOpenProcess + SystemHandleInformation) 泄露 System EPROCESS
6. 通过 Superfetch 转换 + 物理读取遍历 ActiveProcessLinks
7. 使用 System 令牌覆盖当前进程令牌
8. PPL 自身提升至 WinTcb-Light (将 0x61 写入 EPROCESS.PS_PROTECTION)
9. 通过 NtCreateUserProcess 生成 SYSTEM shell
对 HVCI 安全。不进行页表遍历或通过 MmMapIoSpace 扫描低内存 stub。所有
VA-to-PA 转换均使用 Superfetch PFN 数据库。
所有 NT 调用均通过 SysWhispers4 间接 syscall stub 进行,
并使用 RecycledGate 进行 SSN 解析。SSN 表在静态存储时使用逐条目
分层密码(XOR + ROL/ROR + ADD/SUB)和从 ntdll .text 派生的运行时环境密钥进行
加密。每次构建都会通过 `scripts/gen_ssn_cipher.py` 生成唯一的密码材料。
## 规避技术
- **SysWhispers4** - 间接 syscall,内核进入时 RIP 位于 ntdll 中
- **分层 SSN 加密** - 逐条目的三层加密 + 运行时环境密钥
- **AMSI 绕过** - 在 AmsiScanBuffer 上的硬件断点 + VEH,无内存补丁
- **ETW 禁用** - EtwEventWrite 修补为直接返回,抑制用户模式遥测
- **PPL WinTcb-Light** - 签名者级别 6,高于 Defender 的反恶意软件级别 3
- **模块覆盖** - wmiutils.dll 作为 SEC_IMAGE 映射以提供内存掩护
- **Superfetch VA-to-PA** - 通过 PFN 数据库进行对 HVCI 安全的地址转换
- **字符串消除** - 高价值字符串在运行时于栈上构建
- **IAT 最小化** - 漏洞利用代码通过 PEB 遍历解析 API(CRT 启动会添加其自身的)
- **PE 净化** - 剥离 GCC/MinGW 工具链字符串,COFF 时间戳置零
- **构建卫生** - -fno-ident,-ffile-prefix-map,--no-insert-timestamp
## 免责声明
本仓库仅出于教育和授权的安全研究目的而发布。代码、文档和驱动程序二进制文件均
按“原样”提供,旨在演示第三方内核驱动程序中的漏洞。
作者对使用本软件进行的误用、损害或任何非法活动不承担任何责任。您需自行
负责确保您的使用符合所有适用的地方、州、国家和国际法律。严禁在您不拥有或
未获得明确书面授权进行测试的系统上使用。
易受攻击的驱动程序 (MyPortIO_x64.sys) 为 Nuvoton Technology Corporation 的
知识产权,仅出于复现已记录漏洞的目的而包含在此。
## 致谢
- [SysWhispers4](https://github.com/JoasASantos/SysWhispers4) - 间接 syscall stub 生成
- [Cloakwork](https://github.com/ck0i/Cloakwork) - 分层多态加密
- [obfuscxx](https://github.com/nevergiveupcpp/obfuscxx) - XTEA 编译时混淆
- [S12/0x12Dark Development](https://medium.com/@s12deff) - Cloakwork 2.0,PPL 操纵,内存中驱动程序加载
- [Outflank](https://www.outflank.nl/blog/2023/12/14/mapping-virtual-to-physical-adresses-using-superfetch/) - Superfetch VA-to-PA 转换
- [I3r1h0n/SuperFetch](https://github.com/I3r1h0n/SuperFetch) - Superfetch PFN 查询实现
标签:AMSI绕过, Chrome扩展, CVE, EDR绕过, ETW盲化, Ghidra, Hpfeeds, HVCI, IOCTL漏洞, MinGW编译, MyPortIO_x64.sys, Nuvoton, Polychrome RGB, PPL提权, SSH蜜罐, Token窃取, Web报告查看器, Windows 11, WinTcb-Light, 云资产清单, 内核驱动, 华擎, 协议分析, 威胁检测, 客户端加密, 数字签名, 数据展示, 本地提权, 权限提升, 流量嗅探, 物理内存读写, 系统调用, 红队, 网络协议, 进程注入, 逆向工程, 间接系统调用, 高交互蜜罐