CVE-2019-0708 漏洞原理深度解析:MS_T120 信道 UAF 与 3 种 PDU 内核数据写入

CVE-2019-0708 漏洞原理深度解析:MS_T120 信道 UAF 与 3 种 PDU 内核数据写入
CVE-2019-0708 漏洞原理深度解析MS_T120 信道 UAF 与 3 种 PDU 内核数据写入远程桌面协议RDP作为Windows系统的核心组件长期承担着远程管理的重要职责。2019年曝光的CVE-2019-0708漏洞因其可蠕虫化特性引发全球关注本文将深入剖析其技术原理聚焦MS_T120信道的释放后重用UAF机制并详解三种关键PDU如何实现内核数据写入。1. 漏洞技术背景与影响范围1.1 RDP协议架构概述RDP协议栈采用分层设计核心组件包括协议协商层处理连接初始化与能力交换数据传输层通过静态/动态虚拟信道传输数据图形渲染层处理位图缓存与界面更新// 典型RDP连接流程伪代码 EstablishConnection() { NegotiateProtocol(); // 协议版本协商 EstablishChannels(); // 信道建立含MS_T120 StartSession(); // 会话初始化 }1.2 受影响系统版本操作系统版本受影响状态补丁编号Windows 7 SP1是KB4499175Windows Server 2008是KB4499149Windows XP是无官方补丁2. MS_T120 信道 UAF 漏洞机理2.1 信道管理机制缺陷MS_T120是RDP预留的内部信道正常流程中服务端创建信道控制结构体约0x2B0字节客户端请求断开时应完全释放资源实际实现中存在指针残留问题// 存在缺陷的资源释放伪代码 void FreeChannelResources() { if (pChannelStruct) { free(pChannelStruct); // 释放内存块 // 缺失指针清零操作 } // 后续仍可能通过残留指针访问 }2.2 UAF触发条件攻击者通过精心设计的时序实现强制绑定MS_T120信道发送特制断开请求触发释放快速重用内存区域控制残留函数指针执行流关键数据结构typedef struct _MS_T120_CHANNEL { DWORD signature; PVOID callback_func; // 被攻击者控制的函数指针 BYTE padding[0x2A8]; } MS_T120_CHANNEL;3. 三种PDU内核写入机制3.1 Bitmap Cache PDU 利用分析3.1.1 PDU结构解析typedef struct _TS_BITMAPCACHE_PERSISTENT_LIST_PDU { TS_SHARECONTROLHEADER shareControlHeader; WORD numEntries[5]; // 可控缓存条目数 WORD totalEntries[5]; // 可控总条目数 BYTE bBitMask; // 持久化标志位 BYTE pad2[3]; TS_BITMAPCACHE_PERSISTENT_LIST_ENTRY entries[]; } TS_BITMAPCACHE_PERSISTENT_LIST_PDU;3.1.2 内核内存操作流程服务端调用SBC_HandlePersistentCacheList处理PDU根据totalEntries计算分配大小# 计算分配大小公式 pool_size 0xC * (sum(totalEntries) 4)通过重复发送PDU实现内存布局控制3.2 Refresh Rect PDU 利用技术3.2.1 内存喷射原理void WDW_InvalidateRect(PDU_DATA* pData) { RECT rects[256]; for(int i0; ipData-numRects; i) { rects[i] pData-rects[i]; // 可控数据拷贝 IcaChannelInput(rects[i]); // 触发0x828池分配 } }3.2.2 关键参数控制字段偏移量大小控制能力numberOfAreas0x081字节完全控制left0x0C2字节部分控制top0x0E2字节部分控制3.3 RDPDR Client Name PDU 利用方法3.3.1 数据可控性优势计算机名字段长度完全可控4字节长度前缀可发送Unicode或ASCII格式数据允许重复发送实现稳定堆喷3.3.2 内核分配模式# 典型内存分配模式 ExAllocatePoolWithTag(NonPagedPool, name_len 0x20, TSic)4. 漏洞利用技术演进4.1 早期利用技术对比技术阶段可靠性适用系统所需PDU组合蓝屏攻击高全版本Bitmap PDU信息泄露中Win7 x64Refresh PDU完整RCE低Win2008 R2三种PDU组合4.2 现代防护绕过技术NLA绕过技术利用CredSSP协议缺陷伪造合法证书链内存保护对抗精确控制喷射偏移避开CFG使用已知地址的内核gadget5. 防御方案深度解析5.1 企业级防护矩阵graph TD A[网络层防护] -- B[3389端口隔离] A -- C[RDP网关部署] D[主机层防护] -- E[补丁管理] D -- F[Credential Guard] E -- G[WSUS策略配置]5.2 注册表加固配置[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp] UserAuthenticationdword:00000001 SecurityLayerdword:000000026. 漏洞研究启示录在分析BlueKeep漏洞的过程中我们发现微软在协议实现中存在三个典型问题内部信道边界检查缺失资源释放时序控制不严内存分配策略可预测性高某次实际渗透测试中通过组合使用Refresh Rect PDU和Bitmap Cache PDU我们成功在未打补丁的Windows 7系统上实现了稳定利用整个过程无需任何用户交互。这种攻击方式对医疗、工控等仍在使用旧系统的领域构成严重威胁。

最新新闻

日新闻

周新闻

月新闻