☰
伪造USB设备提权SYSTEM?拆解Windows攻击链与终端防护实战
2026/9/28 3:08:36 网站建设 项目流程

最近网安圈对一条 Windows 攻击链的讨论热度很高:攻击者只要把一个伪造的 USB 设备插入电脑,在不知道管理员密码的情况下,就能把权限提升到 SYSTEM。这个说法听起来像演示脚本,但它反映的是终端安全里最容易被低估的一类入口——物理接入。本文将这条攻击链拆开,讲清楚它为什么能在 Windows 上成立,企业终端防护又该从设备接入、系统加固、日志检测三个层面补哪些技术手段。阅读这篇文章,你会理解 Windows 对 USB 设备的信任模型、SYSTEM 与管理员权限的差异、设备安装限制和 WDAC 的配置思路,也能够在安全审计和应急响应时知道该找哪些日志。

1. 攻击链的技术本质:为什么不需要管理员密码也能影响 SYSTEM 权限

1.1 先确认权限基础:SYSTEM、管理员、用户三者是什么关系

Windows 的权限体系里,“SYSTEM”是一个经常被误读的概念。普通用户容易把它理解成“最高管理员”,但它实际上是一个独立的账户实体,属于 Windows 内核和核心服务所在的安全上下文。SYSTEM 账户的权限大于管理员账户,它可以访问系统内核对象、修改驱动、操作注册表受保护项,并且在大多数时候不受 UAC 的管理员审批限制。攻击链最终盯上 SYSTEM,是因为拿到这个权限之后,安全软件很难再通过普通用户态的方式拦截后续动作。

三者之间的关系可以用一张表说明:

账户级别默认获取方式权限范围在攻击链中的价值
普通用户登录后默认状态只能读写自己的文件、运行普通应用程序攻击入口,能启动进程,但无法直接操作系统级配置
管理员本地管理员组成员,受 UAC 控制可以安装软件、修改系统服务、访问大多数系统目录容易被 UAC 拦截,部分操作需要管理员审批
SYSTEM系统服务、内核进程默认使用内核级对象、驱动、系统账户注册表、全盘任意文件攻击目标,获得后基本等同于完整控制终端

“不需要管理员密码就能拿 SYSTEM”这句话的含义,并不是绕过密码验证,而是通过一条更隐蔽的路径,让 Windows 自身的组件替攻击者代执行高权限操作。管理员密码只是 Windows 权限体系中一层“人的验证”,而攻击链攻击的是“系统如何处理外部设备”和“设备接入后的自动化动作”这两条默认信任链路。

1.2 攻击链中的“USB 伪造”扮演什么角色

USB 设备在 Windows 中并不是一个单一的整体,它通过总线枚举、驱动匹配、接口协议、上层功能等多个阶段被系统识别。常见的 U 盘被识别为“大容量存储设备”,键盘被识别为“HID 输入设备”,网卡被识别为“网络接口”。伪造 USB 攻击的第一步,通常是让系统把一个本来不带输入功能的设备误认为键盘、鼠标或复合 HID 设备。

这样做的价值在于:Windows 对键盘和鼠标的信任度非常高。键盘输入是操作系统与用户交互的最基础通道,系统在启动阶段、登录界面、锁屏状态甚至 UAC 提示框弹出时,都允许键盘输入。而杀毒软件和 ED R 产品通常不会对“键盘输入”做内容拦截,因为输入数据量很少,并且大部分输入都会被用户操作掩盖。当设备伪装成键盘后,它就能在极短时间内自动“输入”一串字符或组合键,触发系统内置的快捷键和功能,完成后续操作。

这就是 USB 伪造在该攻击链中的角色:它不是直接攻击某个系统漏洞,而是利用 Windows 对输入设备的默认信任,把攻击者的意图转换成系统能理解的合法输入,再借助系统自身的高权限功能完成提权。

1.3 攻击链的四个典型阶段

从公开安全研究和类似事件来看,这类攻击链可以抽象成四个阶段。这里不针对特定硬件或脚本做复现说明,而是给出防御视角的阶段拆分,便于后续配置检测项时对齐思路。

阶段技术动作在 Windows 侧的表现
设备接入攻击者物理插入伪造 USB 设备setupapi.dev.log 中出现设备枚举记录,系统尝试加载驱动
输入注入设备以 HID 键盘协议发送按键合成序列短时间内出现大量键盘输入事件,屏幕可能无实际用户操作
高权限触发通过快捷键、运行窗口、系统组件触发特权操作出现一条以管理员或 SYSTEM 权限启动的新进程
提权落地利用系统服务或计划任务固化权限系统服务列表或计划任务中出现异常项

关键判断是:这四步里面,真正决定攻击成败的是“输入注入”和“高权限触发”两步。如果设备接入后系统根本没有办法把它当作键盘,或者键盘输入触发的动作没有得到足够权限,链条就会断裂。因此,放在设备接入层做限制,是最早也最有效的阻断点。

2. 一条默认配置下的 Windows 设备信任链路,存在哪些可以被利用的空档

2.1 PnP 默认行为:设备接入后自动下载并加载驱动

Windows 即插即用(PnP)子系统有一个默认逻辑:当新设备接入时,系统会根据设备描述符在本地驱动库和 Windows Update 驱动分发中寻找匹配驱动,然后自动安装。这个设计是为了用户便利,却也让设备接入成为一个“可被外部输入影响”的入口。

从防御角度观察,这里有两个实际风险。一是系统没有对设备本身的身份做强校验,设备描述符是可以由固件自定义的,普通杀毒软件无法通过描述符判断设备真实身份。二是驱动安装过程发生在较高权限上下文中,如果在驱动加载阶段触发漏洞,攻击者可能直接跳到内核态。因此,安全运维团队不能假设杀毒软件会在设备插入时进行有效拦截,更稳妥的方法是预先制定“哪些设备允许安装”的规则。

2.2 键盘等 HID 设备为什么无法通过杀毒软件判断恶意

杀毒软件的工作方式一般是扫描文件内容、监控进程行为、匹配特征库。但键盘输入不是文件,它只是一串瞬时的硬件事件流。系统把键盘事件交给上层窗口管理器后,应用层才能看到输入内容。杀毒软件既不能像扫描 EXE 文件那样对按键序列做静态检测,也很难在输入过程中判断“这是用户本人操作”还是“设备自动注入”。

因此,很多攻击链会刻意选择“不落地文件”的执行方式。只要字符串能通过按键输入到运行窗口或 PowerShell 命令行,就等于在系统里执行了一段代码,而且这段代码从来没有作为文件写入磁盘。缺少文件特征,杀毒软件就少了一个关键判断依据。这一点是 HID 类攻击反复出现、却难被传统 AV 发现的核心原因。

2.3 UAC 与高完整性进程不是最终防线

在 Windows 的完整性和令牌体系中,普通进程默认运行在“中完整性”级别,管理员进程通常运行在“高完整性”级别,而系统服务运行在“系统完整性”级别。UAC 的作用是在中完整性进程向高完整性进程跃迁时弹出审批框,要求用户确认。但如果攻击链借助系统自身的受信任组件完成权限提升,这个审批框不一定出现。

这也是“不需要管理员密码”成立的原因之一。攻击者不是通过管理员身份去操作,而是先把代码带到一个已经具备高权限或系统权限的进程里,再借助那个进程执行后续动作。UAC 拦截的是登录和审批流程,但拦截不了“系统组件自身被恶意输入触发”的过程。所以,终端防御不能只依赖 UAC 和管理员密码复杂度,必须深入到设备接入、进程创建、脚本执行和日志记录多个层面。

3. 设备接入层防御:让不合规 USB 在系统启动前就被拒绝

3.1 使用组策略限制设备安装

设备安装限制是 Windows 自带的一组策略,位置在“计算机配置-管理模板-系统-设备安装-设备安装限制”下。它可以控制哪些设备允许安装、哪些设备禁止安装,并且能够在设备枚举阶段就生效,比事后检测更早。

推荐先开启几个基础策略:

策略项建议配置说明
禁止安装可移动设备已启用禁止 U 盘、移动硬盘等可移动存储设备
禁止安装未由其他策略设置描述的设备已启用按“白名单”思想管理,未明确允许的一律禁止
允许管理员覆盖设备安装限制已启用便于运维人员在受控时间使用自己的管理工具
当策略阻止安装时显示自定义提示已启用用户可以看到阻止原因,减少误判

配置完成后,可以通过gpupdate /force刷新策略,然后插入一个测试 U 盘验证是否被阻止。如果被阻止,设备管理器窗口中通常会显示一个黄色感叹号,且在“事件查看器-系统”日志中可能出现设备安装被策略阻止的记录。

这里要特别注意:设备安装限制只能限制新设备安装,不能限制已经在系统中安装过的设备继续使用。因此,策略上线前要对公司现有终端的外设情况做盘点,把正常的键盘、鼠标、扩展坞设备加入“允许安装”的例外列表,避免大规模误伤。

3.2 用 WDAC 限制驱动和可执行文件的信任根

Windows Defender Application Control 是微软提供的应用白名单方案,它可以指定系统允许运行的驱动和程序,比杀毒软件的文件扫描更可控。对于 USB 攻击链,WDAC 的价值在于:即使设备被伪装成键盘并成功注入按键,系统也只会运行被 WDAC 信任的应用程序,攻击者临时注入的未知 EXE 或脚本解释器调用会被阻断。

生成策略的基本流程是在干净的管理员环境中,先扫描已知可信的应用程序或驱动,然后生成策略 XML,再将其转成二进制的 CIP 文件并部署到目标机器。示例如下:

# 扫描当前系统中的可信驱动和程序,生成策略文件 New-CIPolicy -FilePath .\WDAC-Policy.xml -Level Publisher -Fallback Hash # 将 XML 策略转换为系统可加载的二进制文件 ConvertFrom-CIPolicy -XmlFilePath .\WDAC-Policy.xml -BinaryFilePath .\WDAC-Policy.bin

部署之前,建议先在测试环境以“审计模式”运行一段时间,观察哪些正常业务软件被误拦截。WDAC 策略一旦进入强制模式,被阻止的应用会直接无法启动,因此要特别谨慎。从实践角度看,WDAC 更适合标准化程度较高的企业终端,不适合对所有业务部门一刀切,否则维护成本会很高。

3.3 BIOS/UEFI 与物理端口管理的配合

软件层面的限制可以被驱动绕过,但物理层限制更难被绕过。如果企业的办公终端存在固定的物理位置,可以在 BIOS/UEFI 中关闭未使用的 USB 端口,或者使用机箱锁、USB 安全锁等物理措施。这个动作的收益是:即使攻击者拿到设备,也无法在物理端口上完成第一步接入。

BIOS/UEFI 的配置项因主板和品牌不同而差异较大,常见思路是:进入 BIOS 后找到 “USB Configuration” 或 “Peripherals” 相关菜单,关闭前置 USB 端口或全部 USB 端口为 Disabled。对于需要通过 BIOS 管理维护的机器,要设置 BIOS 密码并定期更换。这样做会带来一定运维成本,建议先在高敏感岗位或服务器、财务终端等场景推行,而不是一上来覆盖全部机器。

4. 系统加固:即使攻击接入成功,如何阻止它从用户态跳到 SYSTEM

4.1 提升 UAC 通知等级并启用管理员审批模式

UAC 并不是把“通知等级调到最高”就够了。真正关键的是管理员审批模式是否对内置管理员账户也生效。在组策略“计算机配置-Windows 设置-安全设置-本地策略-安全选项”下,有两个配置项需要重点检查:

策略项建议配置
用户账户控制:管理员审批模式已启用
用户账户控制:内置管理员账户的管理员审批模式已启用
用户账户控制:仅提升已签名和验证的可执行文件已启用
用户账户控制:切换到安全桌面以提示提升已启用

启用这些配置之后,即使是内置管理员账户登录,需要提升权限的操作也会经过 UAC 审批,并且提示会出现在安全桌面。这样能够增加“按键注入触发高权限操作”的难度,因为攻击者注入的按键无法预先知道用户何时点击“是”。

4.2 开启 LSA Protection 和 Credential Guard

LSASS 进程是 Windows 登录和认证体系的核心,一旦被攻击者注入,攻击链可以更轻松地获取凭据或与 SYSTEM 权限交互。开启 LSA Protection 可以让进程以受保护进程轻量级(PPL)方式运行,阻止非系统进程的打开和注入操作。

可以通过注册表启用:

Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" -Name "RunAsPPL" -Value 1 -Type DWord Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" -Name "RunAsPPLBoot" -Value 1 -Type DWord

配置完成后需要重启系统。受保护模式下,部分使用“本地安全机构”接口的第三方工具可能失效,因此生产环境上线前要确认兼容性。Credential Guard 的开启需要满足虚拟化安全和 TPM 条件,它主要保护的是凭据派生过程,建议在支持虚拟化的硬件上开启。

4.3 通过 AppLocker 或 WDAC 限制脚本和 PowerShell 执行

USB 攻击链经常通过 PowerShell 或系统脚本完成命令执行,因为脚本内容可以不落地,直接在内存里运行。Windows 默认对 PowerShell 并不做严格限制,因此需要在组策略中启用 PowerShell 脚本块日志和转录日志,同时使用 AppLocker 或 WDAC 控制脚本解释器的调用范围。

PowerShell 日志配置位置在“计算机配置-管理模板-Windows 组件-Windows PowerShell”下。建议启用“打开脚本块日志记录”和“打开 PowerShell 转录”。记录日志本身不会阻止攻击执行,但它能为应急响应留下详细痕迹。要真正阻止来自 USB 设备的脚本执行,需要依赖 AppLocker 或 WDAC 对脚本宿主、脚本路径和发布者进行白名单限制。考虑到攻击者可能在临时目录里释放脚本,尽量把“允许执行脚本的路径”缩小到受控目录,而不是全盘开放。

5. 日志与检测:当攻击发生之后,应急响应应该看什么

5.1 启用关键日志基础

日志记录是检测攻击链的前提。默认情况下,Windows 只开启很少一部分审计功能,需要安全运维人员主动启用。以下是一组基础日志配置:

日志来源事件 ID用途
安全日志4688进程创建,记录新进程和父进程信息
安全日志4697服务安装,发现异常系统服务
安全日志4720新用户创建,发现异常的账号添加行为
Sysmon1进程创建,带命令行参数的完整进程树
Sysmon3网络连接,发现攻击链落地后的回连
Sysmon11文件创建,发现临时目录中的可疑脚本
PowerShell 日志4104脚本块内容
代码完整性日志3076WDAC 拦截程序运行事件

对于 4688 进程创建日志,需要在“审核进程创建”策略中开启,并且建议在“安全设置-高级审核策略配置”中打开“在命令行中包含命令行参数”,否则看不到攻击进程的完整命令,排查会非常吃力。

5.2 攻击行为的日志特征

结合攻击链的四个阶段,日志上往往呈现以下特征:

  1. 在一两秒内出现多次键盘输入相关事件或瞬时进程,数量明显高于正常用户操作。
  2. 进程创建日志中出现父进程与子进程不匹配的情况,例如由 SYSTEM 发起的进程运行了网络下载工具,或由 Office/浏览器发起的进程运行了 PowerShell。
  3. 命令行中出现从http或https地址拉取数据的痕迹,或者进程从C:\Windows\Temp、C:\Users\Public等目录启动。
  4. 计划任务列表中出现随机短名称任务,触发时间靠近设备接入时间。

这些特征单独出现时也可能是误报,需要结合设备接入日志和用户操作行为做关联分析。一个常见排查方式是:先找到设备接入的大致时间范围,再筛选该时间点前后 10 到 30 分钟内的 4688 和 Sysmon 日志,看是否存在异常进程创建。

5.3 从 setupapi.dev.log 还原 USB 设备接入痕迹

Windows 的系统驱动安装日志位于C:\Windows\inf\setupapi.dev.log,这个文件记录了每一次设备接入、驱动安装和失败原因。在应急响应场景中,它可以帮助判断攻击者是否插入过 USB 设备以及设备的基本描述符信息。

查看日志时,先按时间排序,找到设备接入那一刻前后的事件记录,记录设备制造商、设备实例 ID 和首次安装驱动的时间。设备实例 ID 通常包含设备的 Vendor ID 和 Product ID,格式类似USB\VID_xxxx&PID_xxxx。把 VID/PID 与企业内部外设资产清单做比对,可以快速判断该设备是否为未知设备。

需要注意的是,setupapi.dev.log 是纯文本日志,默认情况下不会主动删除,但它可以被清理。因此日志可用性是前提,删除和篡改日志的攻击行为本身也应纳入告警处理。

6. 从攻击链到终端安全基线:企业落地清单与常见误区

6.1 终端安全基线检查清单

以下清单可用于企业内部终端安全审计,也可以作为新项目上线前的自查项:

检查项完成标准
设备安装限制策略已启用,未授权设备无法安装驱动
可移动磁盘访问控制办公终端禁止非授权 U 盘写入和读取
管理员审批模式内置管理员账户也开启 UAC 审批
进程创建审计4688 已启用且包含命令行参数
PowerShell 日志脚本块日志和转录日志均开启
WDAC 或 AppLocker对脚本和执行文件有明确的信任策略
LSA 保护RunAsPPL 已设置为 1
BIOS 密码和端口管理高敏感区域已配置物理控制
日志集中收集至少保留 30 天以上安全日志,支持关联检索
外设资产台账厂商、设备实例 ID、使用人信息已登记

6.2 常见误区:只做其中一项并不能解决问题

第一个误区是“装了杀毒软件就安全”。杀毒软件擅长拦截已知恶意文件,但对 HID 输入注入和无文件执行覆盖较弱,不能把它作为唯一防线。

第二个误区是“设置了高强度管理员密码就安全”。本攻击链本质上没有依赖密码破解,密码再复杂,攻击链依然可以走设备接入和后门触发路径。

第三个误区是“把 UAC 关掉更方便”。关闭 UAC 会让普通用户进程与管理员进程之间的完整性边界更薄,攻击者一旦拿到用户权限,更容易提升到管理员,甚至借助系统服务提升到 SYSTEM。

第四个误区是“只看异常进程不看外设日志”。如果日志里只有进程数据,没有设备接入数据,攻击链的第一步就永远是盲区。设备接入与进程创建、服务安装需要放在同一个检索平台里做关联分析。

6.3 优先行动建议

从投入产出比看,建议按短期、中期、长期三个节奏推进。

短期:先在域控或本地组策略层面下发设备安装限制,开启进程创建审计和 PowerShell 日志,再部署 Sysmon 采集进程创建事件。这组动作不需要额外采购产品,就能让安全团队在攻击发生时看到关键痕迹。

中期:对高敏感终端启用 WDAC 或 AppLocker,限制脚本执行位置,开启 LSA Protection,并逐步完成外设资产盘点。此时攻击链即使进入第二阶段,也会在第三阶段被白名单策略阻断。

长期:推动 BIOS/UEFI 物理控制、硬件安全模块和终端 ED R 的联动,建立“设备接入-日志告警-工单响应”的闭环流程。同时每周或每月抽检日志,验证日志是否完整、告警是否可达、响应团队是否熟悉排查路径。

6.4 对安全运维团队的一个提醒

这类攻击链最难的并不是技术细节,而是“物理接入”这个前提。很多企业的物理门禁、访客管理、工位安全做得并不到位,攻击者只需要短暂接触终端几秒钟就能完成关键操作。因此,终端防护不能只靠软件补丁,还要把物理安全纳入同一套风险管理体系。建议安全团队定期组织外设插入演练,用测试设备验证组策略是否真正生效,再根据验证结果持续调整策略。这样,每次安全公告或攻击链曝光之后,企业就不只是“看个新闻”,而是真正知道自己的终端能不能挡住这一类攻击。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询