致谢
https://twitter.com/R00tkitSMM ([email protected]) telegram 用户名:https://telegram.me/firozi
不久前,我在 win10pcap 驱动程序中发现了可导致权限提升的漏洞。我已报告该漏洞,现在该 bug 已修复:
因此我决定发布示例漏洞利用代码
Win10Pcap 是一个基于 WinPcap 的新型以太网数据包捕获库。 与原始 WinPcap 不同,Win10Pcap 兼容 NDIS 6.x 驱动模型,从而能在 Windows 10 上稳定工作。Win10Pcap 还支持捕获 IEEE802.1Q VLAN 标签。
所以如果你在 Windows 10 上安装 Wireshark,你就需要这个玩意儿 :)
Win10Pcap 内核模式驱动程序没有检查从用户模式传入的虚拟地址,IOCTL 使用 Neither Buffered Nor Direct I/O(非缓冲也非直接 I/O),且未使用 ProbeForWrite 来验证传入地址。
你需要在运行时找到准确的设备名称来发送 IOCTL,硬编码的设备名称不会触发漏洞代码。
IOCTL 处理程序会在传入的地址写入一个字符串,该字符串类似于 "Global\WTCAP_EVENT_3889023063_1"。
这个漏洞有很多利用方式,我决定通过覆盖 _SEP_TOKEN_PRIVILEGES 来设置进程 TOKEN 中的特权。
用字符串 "Global\WTCAP_EVENT" 覆盖地址 0x034 处的 token,可以在不破坏敏感字段的情况下设置 SeDebugPrivilege。
81687cf8 cc int 3
2: kd> dt nt!_TOken
+0x000 TokenSource : _TOKEN_SOURCE
+0x010 TokenId : _LUID
+0x018 AuthenticationId : _LUID
+0x020 ParentTokenId : _LUID
+0x028 ExpirationTime : _LARGE_INTEGER
+0x030 TokenLock : Ptr32 _ERESOURCE
+0x034 ModifiedId : _LUID
+0x040 Privileges : _SEP_TOKEN_PRIVILEGES
+0x058 AuditPolicy : _SEP_AUDIT_POLICY
