一种新型攻击手段可让威胁攻击者仅通过插入恶意 USB 设备,就能获取 Windows 电脑的管理员权限。 该攻击名为 Plug and Pwn,利用了 Windows 一项不为人知的特性:当对应厂商的设备通过 USB 接入时,系统会自动下载并安装厂商配套的软件与驱动程序。
借助这款恶意 USB 设备,攻击者可以迫使 Windows 安装存在安全漏洞的驱动程序,再利用漏洞获取更高的系统权限。 整个攻击无需任何用户交互,还可通过 RDP USB 重定向功能远程执行。
在今年的 DEF CON 34 黑客大会上,两位安全研究员 Alejandro Hernando 与 Borja Martinez 发布了名为 Plug & Pwn 的研究,彻底撕开了 Windows 即插即用机制背后的安全隐患。他们的项目站点plugandpwn.com公开了全套工具与验证流程,证明只靠模拟 USB 设备甚至不用真实硬件,就能让 Windows 系统以最高权限执行恶意代码。

很多人可能觉得插个 USB 没什么大不了,大不了不点里面的文件。但这项研究最可怕的地方在于全程零点击,不需要用户做任何操作,甚至电脑停在登录界面没人登录,攻击都能完成。
Windows 的 PnP (即插即用) 是大家习以为常的功能。插上鼠标、U 盘或者打印机,系统自动识别自动装驱动,不用我们手动下载安装。
这个便利的背后,是一套默认开启的自动流程:只要插入 USB 设备,系统会读取设备的硬件 ID,去 Windows Update 匹配对应的驱动包,下载完成后直接以 NT AUTHORITY\\SYSTEM 权限执行厂商的安装代码。
NT AUTHORITY\\SYSTEM 是 Windows 系统内置的最高权限账号,权限比普通管理员还要高,可以修改系统任意文件、访问所有数据。正常情况下用户要执行这么高权限的操作,必须经过 UAC 用户账户控制弹窗确认。但 PnP 的驱动安装全程静默,不需要用户同意,也不会弹出任何提示。
研究员抓住的核心问题就是,这套受系统完全信任的安装流程,加载的厂商驱动质量参差不齐,大量驱动包存在低风险的逻辑漏洞。单个漏洞可能影响有限,但把不同厂商的漏洞拼接起来,就能拼成完整的权限提升攻击链。
第一种攻击路径叫 Plug & Pwn,需要物理接触目标电脑,但全程零用户交互,哪怕电脑停在登录界面也能成功。


攻击方用一台运行 Linux 的设备,通过 FaceDancer 工具模拟 USB 硬件,不需要做真实的硬件改装,纯靠软件就能伪造出任意厂商的 USB 设备。
完整攻击链组合了 Sierra 无线网卡与 Sony Felica 读卡器两个厂商的漏洞,一共七步,全程约五分钟:
第一步,模拟 Sierra EM7340 无线网卡设备。Sierra 的配套服务 SwiService.exe 会以 SYSTEM 权限运行,并且开放了一个所有用户都能读写的命名管道。攻击者连接这个管道,就能直接调用 SetDNS 函数修改系统的默认 DNS 地址。
第二步,攻击者把系统 DNS 指向自己控制的服务器,只把 Sony 相关的域名解析到攻击机,其他流量正常转发,避免被发现。
第三步,模拟 Sony Felica 读卡器设备。系统识别到新设备后自动下载驱动,驱动里的协同安装模块 felica_coinst.dll 会通过明文 HTTP 从 Sony 服务器下载配置文件。因为 DNS 已经被劫持,请求会发到攻击者的服务器上。
第四步,利用 Sony 驱动的路径遍历漏洞。这个模块解析下载地址的时候,只会用最后一个斜杠分割文件名,没有过滤反斜杠。攻击者构造特殊的下载地址,就能把恶意 DLL 文件写入系统 System32 目录,整个写入过程都是 SYSTEM 权限。
第五步到第七步,再次模拟 Sierra 无线网卡,触发系统重新加载驱动,这时候刚才植入 System32 的恶意 DLL 就会被加载执行,攻击者直接拿到 SYSTEM 权限的 shell。

整个过程不需要用户点击任何按钮,不需要登录系统,只要把模拟设备插在电脑上,等几分钟就能完成入侵。
如果说物理攻击还需要接触电脑,第二种 NoPlug & Pwn 攻击路径就突破了这个限制,全程不需要任何真实 USB 硬件,只靠 RDP (远程桌面协议) 就能完成。
这个攻击利用了 Windows 的 RDP USB 重定向功能。这个功能本来是为了方便用户在远程桌面里使用本地的 USB 设备,比如插在自己电脑上的 U 盾、打印机,可以直接在远程桌面里调用。
但这个机制有个核心问题,远程桌面的服务器端会完全信任客户端发来的设备描述信息,客户端说有什么设备,服务器就认为有什么设备,根本不会验证硬件是否真实存在。
攻击的门槛只有一个,目标服务器开启了 USB 重定向的组策略,对应参数是 fDisablePNPRedir。这个功能默认是关闭的,但在很多企业的 VDI 虚拟桌面环境里,为了方便用户使用外设,都会主动开启。
研究员基于 aardwolf 库开发了纯 Python 的 RDP 客户端,普通用户登录远程桌面后,通过 URBDRC 通道发送伪造的设备添加请求,凭空捏造出一个 Intel RealSense 摄像头设备。
服务器端的 USB 集线器驱动会枚举这个不存在的设备,Windows PnP 机制照常工作,自动从 Windows Update 下载签名过的官方驱动并以 SYSTEM 权限安装。
这个 Intel RealSense 的驱动在安装时,会把一个可执行文件放到普通用户可写的目录,再用 SYSTEM 权限运行这个程序。攻击者只需要提前在对应目录放好恶意的 CRYPTBASE.dll,利用 DLL 劫持就能让 SYSTEM 权限的进程加载恶意代码,完成提权。
简单来说,只要你有目标机器的普通用户远程桌面权限,又刚好遇上开启了 USB 重定向的环境,不用传任何木马,不用点任何文件,就能从普通用户升级成系统最高权限。

为了搞清楚整个攻击的底层逻辑,研究员还开发了一款叫 PNP simulate 的工具,不用真实硬件就能模拟完整的 PnP 设备安装流程,方便漏洞验证与测试。

完整的 PnP 安装可以分成四个阶段: 第一阶段是身份识别。系统读取 USB 设备的描述符,拿到厂商 ID (VID)、产品 ID (PID) 和设备类别等信息,拼接成硬件 ID 字符串,用来匹配对应的驱动 INF 文件。攻击者只要能控制设备描述符,就能决定系统去匹配哪款驱动。

第二阶段是创建设备节点。USB 集线器驱动识别到新设备后,会创建物理设备对象,通知 PnP 管理器生成对应的设备节点。
PNP simulate 工具可以直接在用户态调用系统 SetupDI 系列 API,跳过真实硬件步骤,直接创建虚拟设备节点。
第三阶段是触发安装。调用 CM_Setup_DevNode 函数把设备节点推入正式的安装队列,这个过程会从用户态进入内核态的配置管理器,异步执行后续的安装逻辑。
第四阶段是驱动安装执行。系统的设备安装服务 DSMSVC 在 svchost 进程中以 SYSTEM 权限运行,先查本地驱动库,没有匹配项就通过服务端解析去 Windows Update 下载驱动包,解压到驱动存储区后启动安装流程。如果驱动包带有协同安装程序、配套服务或者额外逻辑,这些代码都会直接获得 SYSTEM 权限。
研究员特别提到一个研究里的陷阱,很多人以为 Windows Update 能搜到的驱动就会被自动安装,其实不是。Windows Update 的 COM 接口会返回大量驱动元数据,但真正会被 PnP 自动下载安装的只是其中一小部分。漏洞挖掘的时候必须区分查询结果和真实安装行为,不然很容易出现误判。
这项研究最有价值的地方,是展示了漏洞组合的威力。很多单个厂商的问题单独看都不算严重,甚至厂商自己都不认为是漏洞,但拼接在一起就能造成致命后果。
比如 Wacom 数位板的驱动服务里,藏着一个特殊的注册表开关。只要在对应注册表位置写入特定的二进制值 PowerT,重启服务后就会直接弹出一个交互式的 SYSTEM 权限命令行窗口。这个功能可能是厂商留下的调试入口,单独看风险不大,因为普通用户根本没有权限修改这个系统级注册表项。

再比如 Atheros 网卡的驱动服务,有一个 2019 年就公开的漏洞 CVE-2019-10617。服务接收特定控制码后,会读取 ProgramData 目录下的 INI 文件执行注册表操作,相当于普通用户可以让 SYSTEM 权限的服务帮自己改注册表。这个漏洞已经过去七年,研究员原本以为对应的驱动包早就被微软吊销,结果发现它依然能通过 PnP 自动安装。
研究员最初想直接用 Atheros 的注册表写入功能去触发 Wacom 的调试开关,但因为字符编码的问题没有成功。于是他们又加了一层跳板,利用 Atheros 的权限创建一个恶意打印监视器注册表项,指向用户放置的 DLL 文件。系统重启后,打印服务 spoolsv.exe 会以 SYSTEM 权限加载这个 DLL,拿到执行权限后再去修改 Wacom 的注册表,最终弹出交互式 SYSTEM shell。

整个攻击链没有用到任何内核漏洞,全靠厂商驱动里的逻辑功能组合而成。对于红队攻击来说,这种方式更稳定,也更难被安全软件检测到。
几个问题解答
这是 Windows 的0day漏洞吗
不是。PnP 自动安装驱动、以 SYSTEM 权限运行厂商代码,都是 Windows 官方文档里写明的正常行为,是功能设计而非漏洞。
整个攻击没有利用 Windows 系统本身的漏洞,滥用的是厂商驱动包里的安全缺陷,以及多个厂商缺陷的组合效果。不存在单一的 CVE 编号,也没法靠一个 Windows 补丁彻底解决。
是不是所有电脑都有这个风险
物理攻击需要能接触到电脑的 USB 接口,同时系统开启了自动驱动安装,这也是系统的默认设置。
远程 RDP 攻击的限制更多,必须目标开启了 RDP USB 重定向功能,而这个功能默认是关闭的,主要存在于企业的 VDI 虚拟桌面环境中。普通个人用户的电脑默认不会受远程攻击影响。
没人登录电脑也会中招吗
物理攻击链可以。哪怕电脑停在登录界面,没有任何用户登录,插入模拟 USB 设备后,PnP 机制依然会在后台运行,完成驱动下载和安装,攻击照样能成功。
禁用协同安装程序能防住吗
开启 DisableCoInstallers 策略能挡住一部分攻击,比如 Sony 和 Intel RealSense 的协同安装程序漏洞都会失效。
但它不是万能的。有些驱动包不需要协同安装程序,也能通过服务、驱动本身的逻辑执行 SYSTEM 权限代码。不能只靠这一个防护措施就高枕无忧。

从早年的 Razer 鼠标提权漏洞到今天的 Plug & Pwn,Windows 即插即用的安全问题一直存在。便利和安全永远是天平的两端,即插即用的设计初衷是让用户插上硬件就能用,但也把系统最高权限的入口开放给了所有 USB 设备。
这项研究的价值,就是让更多人看到这个默认功能背后的风险,推动厂商收紧驱动的安全设计,也让企业和个人能针对性地做好防护。毕竟在网络安全里,最容易被忽略的正常功能,往往最容易成为攻击的突破口。

声明:本文来自黑鸟,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。