公司动态
Plug And Pwn实战:USB模拟触发Windows11 PnP自动安装获取SYSTEM权限
摘要Plug And Pwn不是Windows内核0day漏洞它是一套攻击方法论。攻击者借助USB硬件仿真设备伪造硬件ID触发Windows即插即用自动下载微软签名的第三方驱动包驱动包内部协同安装器(co‑installer)以SYSTEM权限运行。研究人员把多个厂商软件缺陷串联在完全打满补丁的Windows11上拿到完整系统权限。攻击分两条路径物理USB接入攻击开启USB重定向的RDP远程攻击。整套流程不需要管理员权限甚至目标机器没有用户登录状态下即可触发。微软无法推送单一系统补丁封堵风险根源分散在各家外设厂商驱动包。企业运维、红队、终端安全人员需要理解这套攻击链路搭建检测规则修改组策略缩小攻击面。本文会拆解Windows PnP底层执行逻辑完整复现两条攻击链给出可直接复制的PowerShell检测脚本、组策略配置模板梳理历史同类漏洞给出落地防御方案最后讨论该攻击对Windows终端安全带来的长期启发。一、Windows PnP与co‑installer底层运行逻辑1.1 PnP设备安装完整流程普通用户眼里插入USB设备就是系统识别硬件、弹出设备可用提示。底层执行链条远比表层复杂。Windows内核PnP管理器捕获USB设备上报的HardwareID、CompatibleID。系统本地驱动库没有匹配驱动就请求Windows Update服务器拉取对应厂商驱动包INF、二进制文件。驱动包经过微软数字签名校验校验通过后交付给SetupAPI执行安装流程。SetupAPI运行上下文为NT AUTHORITY\SYSTEM。INF文件中声明的co‑installer协同安装器DLL/可执行文件会在设备安装各个阶段被调用。协同安装器由硬件厂商编写用来完成驱动之外的业务逻辑创建系统服务、写入受保护注册表键、拉取配置文件、创建用户态后台程序。关键点厂商代码运行权限是SYSTEM这个权限由Windows PnP框架直接赋予和当前登录用户权限无关。低权限本地用户、未登录会话只要硬件事件被触发厂商代码就拿到最高权限执行机会。否是USB设备上报HardwareIDPnP管理器内核接收事件本地驱动库是否匹配请求Windows Update获取签名驱动包加载本地INF驱动包微软签名校验驱动包SetupAPI以SYSTEM上下文启动安装执行INF注册逻辑调用厂商co‑installer协同安装器厂商自定义业务逻辑写注册表、创建服务、HTTP拉取配置设备安装完成1.2 co‑installer为什么会成为攻击突破口微软文档里co‑installer设计初衷是弥补原生驱动能力不足。2023年之后微软不再对新提交co‑installer组件做签名但存量大量历史外设驱动包依旧携带该组件继续通过Windows Update分发到终端机器。厂商开发人员编写协同安装器时经常犯下安全错误使用明文HTTP协议拉取外部配置文件没有校验服务端身份没有过滤路径穿越字符外部可控输入直接拼接文件路径创建命名管道、本地IPC接口没有做调用者权限校验普通用户会话可以调用SYSTEM服务接口DLL搜索路径配置不当存在DLL劫持机会。这些漏洞单独看危害有限。但组件运行在SYSTEM上下文攻击者只要能够触发驱动包自动安装小缺陷直接升级为系统接管入口。过去Razer Synapse外设驱动就爆出同类攻击插入USB设备触发SYSTEM权限安装程序本地低权限用户实现提权。1.3 SetupAPI日志唯一完整记录PnP安装事件所有PnP设备安装、co‑installer调用行为全部写入C:\Windows\INF\SetupAPI.dev.log。Windows事件查看器默认不会完整记录协同安装器调用细节排查这类攻击必须读取该日志文件。日志关键标记字段coinstaller标记协同安装器加载事件Downloading driver package从Windows Update下载驱动包Installing device设备安装阶段ExitCode安装执行返回码。很多安全产品默认不会采集这份日志企业终端检测经常丢失这一类攻击线索。二、Plug And Pwn物理USB攻击链完整拆解硬件工具FaceDancer USB仿真设备运行在Linux主机软件层面伪造USB设备描述符、硬件ID目标Windows11机器完全打满系统补丁无预安装第三方厂商软件不需要目标机器登录用户零交互触发攻击链。FaceDancer仿真Sierra Wireless调制解调器USB设备Windows识别HardwareIDWU下载SwiService.exe驱动包SwiService.exe安装注册SYSTEM服务暴露SetDNS命名管道IPC攻击者本地调用命名管道篡改系统DNS服务器指向攻击者服务器FaceDancer切换仿真Sony FeliCa读卡器设备Windows自动下载索尼签名驱动包执行co‑installerco‑installer走明文HTTP请求拉取配置存在路径穿越漏洞DNS劫持将请求路由到攻击者服务器返回带路径穿越恶意配置co‑installer把恶意DLL写入C:\Windows\System32目录再次仿真Sony读卡器重新触发设备安装流程SYSTEM上下文加载放置完成的恶意DLL拿到完整SYSTEM权限2.1 第一步仿真Sierra Wireless设备获取DNS篡改原语FaceDancer模拟Sierra无线调制解调器硬件ID。Windows识别硬件ID自动从Windows Update拉取微软签名驱动包安装SwiService.exe程序注册为SYSTEM自动启动服务。该服务对外暴露本地命名管道\\.\pipe\SwiService提供SetDNS接口。接口没有做调用者安全校验本机任意用户会话都可以调用直接修改系统全局DNS配置。攻击者不需要管理员权限低权限用户即可调用IPC接口改写DNS服务器地址。这一步没有代码执行能力仅拿到DNS篡改能力作为整个链路前置跳板。2.2 第二步仿真Sony FeliCa读卡器触发路径穿越漏洞DNS已经被指向攻击者可控服务器FaceDancer切换设备身份仿真Sony FeliCa非接触读卡器硬件ID。Windows再次触发PnP自动安装逻辑下载索尼官方签名驱动包调用自带co‑installer。该协同安装器业务逻辑启动阶段访问厂商HTTP接口拉取设备配置文件。代码实现缺陷使用HTTP明文传输没有TLS加密配置文件路径参数直接来自HTTP返回内容未过滤../路径穿越字符。攻击者受控服务器返回构造过的配置内容携带路径穿越字符串让co‑installer把后续DLL输出写入系统目录C:\Windows\System32\。文件写入动作运行于SYSTEM权限普通用户无法直接写入该目录这里借助厂商组件完成文件落地。2.3 第三步重触发设备安装加载恶意DLL完成权限接管恶意DLL已经落地System32目录。攻击者再次向目标主机推送Sony读卡器仿真信号。PnP再次执行设备安装流程co‑installer加载目标目录下DLLDLL代码直接在SYSTEM权限上下文执行攻击者完成系统接管。整套PoC执行时间数十秒。目标机器就算停留在锁屏未登录界面只要USB物理接口可达攻击链完整生效。三、NoPlug‑PwnRDP远程攻击链不需要物理硬件很多人误以为该攻击必须物理接触USB接口。研究同时公开远程向量攻击代号NoPlug‑Pwn条件目标RDP服务端开启PnP/底层USB重定向RemoteFX USB重定向Windows默认关闭该策略管理员手动开启才会暴露风险。现代Windows新版本已经废弃RemoteFX组件但部分企业服务器、云桌面环境管理员手动配置遗留组策略开启USB重定向方便远程会话使用U‑Key、加密狗外设引入攻击面。攻击者建立RDP会话开启USB重定向通道客户端虚拟仿真Intel RealSense设备通过RDP通道推送虚拟USB信号目标服务端PnP子系统收到虚拟USB硬件IDWindows Update拉取Intel签名驱动包驱动包执行阶段触发CRYPTBASE.dll DLL搜索顺序劫持加载攻击者植入DLL远程获取SYSTEM权限远程链路不需要DNS篡改、路径穿越串联直接利用Intel RealSense驱动包内部DLL加载逻辑缺陷通过RDP虚拟USB信号触发整套PnP自动安装网络侧完成提权全程无物理接触机器。RDP重定向开启判定两条关键组策略计算机配置\管理模板\Windows组件\远程桌面服务\设备和资源重定向\允许RemoteFX USB设备重定向RDP文件参数usbdeviceredirection:i:1开启底层USB重定向通道。企业云桌面、堡垒机接入服务器经常为了兼容U盾外设打开该开关很多运维人员不清楚开启后附带的安全风险。四、攻击链底层风险归纳这套攻击和普通漏洞利用有本质区别不是单一CVE修复就能解决。信任链错位Windows信任微软签名的第三方驱动包自动以SYSTEM运行厂商代码。微软只校验二进制签名无法审查厂商业务逻辑全部安全缺陷。厂商软件出现漏洞风险直接传导到操作系统最高权限。触发条件低物理场景只要USB接口可达远程场景只要RDP USB重定向开启。本地普通低权限账号也可以在本机复现这套链路不需要管理员。无弹窗无交互全部后台静默执行用户看不到任何安装弹窗。锁屏状态攻击依旧有效取证难度高。没有全局补丁微软无法修改所有第三方厂商驱动代码。只能靠厂商更新修复自身co‑installer缺陷管理员调整Windows组策略限制PnP行为。历史同类漏洞Razer Synapse、SteelSeries外设协同安装器同样依托PnP自动安装实现本地提权。Plug And Pwn研究把单台漏洞利用扩展成完整链式攻击同时新增RDP远程向量把风险边界进一步扩大。五、检测脚本与日志分析实战下面提供PowerShell脚本读取SetupAPI日志扫描异常驱动下载、co‑installer调用事件同时检查本机RDP USB重定向组策略状态。脚本支持Windows10/Windows11直接复制运行不需要第三方依赖。注意脚本需要管理员权限执行才能读取C:\Windows\INF目录下SetupAPI日志。# PlugAndPwn 风险本地检测脚本 功能1.解析SetupAPI.dev.log提取驱动下载、co‑installer事件 2.检查RDP RemoteFX USB重定向组策略配置状态 输出控制台文本可导出到csv保存日志证据 ##Requires -RunAsAdministrator$setupApiLogPath$env:windir\INF\SetupAPI.dev.log$outputCsv.\PnP_Detect_Report.csvWrite‑Host Plug And Pwn 风险检测工具 -ForegroundColor Cyan# 1.检查SetupAPI日志是否存在if(-not(Test‑Path$setupApiLogPath)){Write‑WarningSetupAPI.dev.log 文件不存在无法分析PnP安装事件}else{Write‑Hostn[1] 解析SetupAPI驱动安装日志提取风险事件-ForegroundColor Yellow$logContent Get‑Content$setupApiLogPath-Encoding Unicode$riskLines ()foreach($linein$logContent){if($line-matchDownloading driver package|coinstaller|Installing device){$obj[PSCustomObject]{TimeStamp $lineEventType $matches[0]}$riskLines$obj}}if($riskLines.Count-gt0){Write‑Host共扫描到$($riskLines.Count)条PnP高风险事件$riskLines|Format‑Table‑AutoSize$riskLines|Export‑Csv‑Path$outputCsv‑Encoding UTF8‑NoTypeInformationWrite‑Host风险事件已导出至$outputCsv}else{Write‑Host日志中未发现下载驱动包、co‑installer调用记录}}# 2.读取注册表检查RemoteFX USB重定向策略Write‑Hostn[2] 检测RDP RemoteFX USB重定向策略状态‑ForegroundColor Yellow$rdpRegPathHKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services\Client$usbRedirValue Get‑ItemProperty‑Path$rdpRegPath‑ErrorAction SilentlyContinue|Select‑Object‑ExpandPropertyfEnableUsbRedirection‑ErrorAction SilentlyContinueif($usbRedirValue‑eq 1){Write‑Warning⚠️ RemoteFX USB重定向策略已开启存在NoPlug‑Pwn远程攻击风险}elseif($usbRedirValue‑eq 0){Write‑Host✅ RemoteFX USB重定向策略已关闭‑ForegroundColor Green}else{Write‑Host✅ 未配置USB重定向策略系统使用默认关闭状态‑ForegroundColor Green}Write‑Hostn检测完成。注意该脚本仅做线索告警不能判定机器已经被入侵。5.1 日志人工排查要点拿到日志输出之后重点关注这几类行为机器没有接入对应真实硬件设备日志出现陌生厂商驱动包下载记录大量co‑installer加载事件设备ID对应机器不存在的外设锁屏时间段非用户操作时段触发设备驱动完整安装流程。安全设备规则建议SIEM接入SetupAPI.dev.log日志告警条件非工作时段发生Windows Update驱动包下载 co‑installer加载。六、Windows组策略加固配置清单没有系统补丁防御重心落在组策略限制PnP自动安装行为关闭高危RDP重定向。下面给出可落地配置域环境可以下发GPO单机本地gpedit.msc配置。6.1 关闭RDP RemoteFX USB底层重定向远程攻击向量的核心开关所有RDP服务器、云桌面机器必须关闭。路径计算机配置 - 管理模板 - Windows组件 - 远程桌面服务 - 设备和资源重定向策略名允许RemoteFX USB设备重定向设置已禁用注册表等效配置脚本批量部署Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services\Client] fEnableUsbRedirectiondword:000000006.2 限制PnP自动安装未授权硬件驱动两条关键策略阻止系统自动安装不在允许列表内的设备驱动。阻止安装未由其他策略设置描述的设备→ 启用配置允许安装的硬件ID列表只加入业务真实需要外设HardwareID。路径计算机配置\管理模板\系统\设备安装\设备安装限制副作用开启后新外设插上不会自动安装驱动需要管理员手动添加硬件ID白名单适合企业标准化终端个人工作站不建议直接全开会影响普通USB外设使用。6.3 设备安装源限制禁止从Windows Update获取驱动策略指定搜索驱动程序的位置启用勾选“不要搜索Windows Update”。该策略会完全阻止PnP自动从WU下载第三方驱动包直接切断Plug And Pwn攻击链触发源头。代价终端无法自动获取外设驱动更新需要IT运维本地推送驱动包。适合高安全等级服务器普通办公机器权衡业务后开启。6.4 物理层面安全管控物理访问不可控机器仅靠软件策略无法完全防御。攻击者使用FaceDancer硬件仿真绕过系统软件层面校验。高安全设备禁用闲置USB端口BIOS层面锁USB不允许不受控外来USB设备接入业务主机。七、同类攻击历史复盘与攻击面拓展co‑installer提权不是新问题Plug And Pwn研究把攻击面做完整同时拓展远程向量把行业忽略的风险放大。Razer Synapse漏洞插入雷蛇外设PnP触发协同安装器安装程序以SYSTEM运行安装GUI窗口可以通过对话框弹出SYSTEM命令行本地低权限直接提权。漏洞曝光之后微软调整INF签名策略不再允许新co‑installer签名但存量旧驱动包继续分发到终端机器。这类攻击底层思想利用合法高权限组件的业务逻辑缺陷完成提权。和普通内存漏洞不同不需要漏洞利用堆溢出目标瞄准业务逻辑漏洞。未来潜在攻击面还包括蓝牙设备PnP自动安装蓝牙设备同样上报HardwareID触发驱动自动下载PCIe热插拔设备同样会调用SetupAPI与co‑installer虚拟机虚拟硬件仿真虚拟硬件ID触发宿主机或者虚拟机内PnP安装流程。很多安全团队红队测试过去只关注内核漏洞、服务漏洞很少专门针对PnP协同安装器做审计。外设驱动包属于经常被忽略的攻击面。八、防御局限性与现实权衡所有加固方案都存在取舍没有完美方案。直接关闭Windows Update驱动下载彻底阻断攻击触发但新外设无法自动安装驱动运维成本上涨使用硬件ID白名单策略企业标准化终端可行个人、外勤笔记本设备经常接入各类未知外设维护白名单工作量巨大日志检测只能做告警不能阻止攻击。攻击者使用合法签名驱动包杀毒软件基于签名校验无法拦截第三方厂商驱动包缺陷只能等待厂商修复终端管理员没有能力修改驱动包内部代码。真实环境中采用分层防御思路服务器、云桌面强制关闭RDP USB重定向关闭WU驱动自动下载企业办公终端开启SetupAPI日志采集SIEM配置告警规则不强制全盘禁用驱动下载用检测手段兜底高安全物理主机BIOS层面禁用闲置USB接口。九、对终端安全体系带来的启发Plug And Pwn暴露出Windows安全模型一处长期被忽视的信任假设只要驱动包经过微软签名包内厂商全部业务代码都可信可以直接SYSTEM执行。签名只能证明文件发布者身份不能保证代码没有业务逻辑漏洞。过去安全建设大量投入内核防护、驱动签名拦截却忽视签名软件内部业务逻辑缺陷带来的权限风险。很多安全厂商EDR产品重点监控可执行文件落地、进程创建行为但PnP场景恶意动作全部由合法签名厂商二进制完成恶意DLL落地动作藏在co‑installer内部传统行为检测容易漏报。安全产品需要增加针对SetupAPI、co‑installer调用的专项检测能力。软件厂商编写INF协同安装组件时必须遵守几条底线禁止明文HTTP拉取配置文件外部输入严格过滤路径穿越字符IPC、命名管道接口做调用者完整性级别校验拒绝低权限会话调用高风险接口尽量放弃co‑installer改用服务程序降低特权执行场景攻击面。结尾互动问题你的企业终端SIEM/EDR是否采集SetupAPI.dev.log日志实际运维中遇到过PnP协同安装器相关告警吗如果业务必须开启RDP USB重定向兼容U‑Key你会设计哪些补偿性安全策略来规避NoPlug‑Pwn这类远程风险我之前也写过类似的文章更多相关内容、心得经验可以来我博客看看~