Windows SeBackupPrivilege 与 SeRestorePrivilege 特权利用

在 Windows 操作系统中,SeBackupPrivilege (备份文件和目录)和 SeRestorePrivilege (还原文件和目录)是两个极其强大的用户权限(Privilege),它们允许持有者在备份/还原语义下绕过 NTFS 文件系统的标准访问控制列表(DACL/ACL),从而读取或写入几乎任意文件,包括那些被 SYSTEM、TrustedInstaller 或高保护级别文件所守护的敏感资源(如 SAM、SYSTEM、NTDS.dit 等)。

这两个特权通常授予 AdministratorsBackup Operators 组成员,但默认情况下处于 Present(存在)但 Disabled(未启用) 状态。Microsoft 的设计原则是"最小特权"(Least Privilege):特权必须显式启用才能生效,以防止意外或恶意滥用。

一、核心原理:Privilege 的 Present vs Enabled 状态

Windows Token(访问令牌)中的每个特权都有两种主要状态(通过 whoami /priv 查看):

  • Present(存在):用户/组被授予该特权,但进程启动时默认 Disabled。
  • Enabled (启用):进程通过 AdjustTokenPrivileges API 主动启用后,系统才会真正允许绕过 ACL 检查。

Microsoft 官方文档强调 :SeBackupPrivilege 和 SeRestorePrivilege 在使用时必须 Enabled,否则系统仍会执行标准 ACL 检查。

关键机制

  • 当进程以 FILE_FLAG_BACKUP_SEMANTICS 标志调用 CreateFile 时,系统会检查调用者 Token 是否拥有并已启用 SeBackupPrivilege(读)或 SeRestorePrivilege(写)。
  • 如果特权仅 Present 但 Disabled ,即使指定备份标志,CreateFile 也会失败(Access Denied),除非工具内部自动调用启用 API。

SeBackupPrivilege 具体赋予的访问权(当启用时):

  • READ_CONTROL、ACCESS_SYSTEM_SECURITY、FILE_GENERIC_READ、FILE_TRAVERSE 等。
  • 完全绕过读 ACL 检查,但写/其他操作仍受 ACL 限制。

SeRestorePrivilege 具体赋予的访问权(当启用时):

  • WRITE_DAC、WRITE_OWNER、ACCESS_SYSTEM_SECURITY、FILE_GENERIC_WRITE、FILE_ADD_FILE、FILE_ADD_SUBDIRECTORY、DELETE 等。
  • 完全绕过写 ACL 检查,甚至允许设置任意所有者(包括修改 TrustedInstaller 保护文件的所有权)。

二、几种打法对比

以下四种最经典手法,基于内核行为、API 调用链和社区/红队多年实测。

打法序号 手法名称 读/写类型 所需特权(必须拥有) 是否必须手动启用(Enabled)? 内部机制与自动启用说明 典型场景 & 风险
1 reg save HKLM\SAM / SYSTEM 纯读 SeBackupPrivilege 不需要 RegSaveKey API 内部自动调用 AdjustTokenPrivileges 启用特权,只要特权 Present 且进程 Elevated 即可成功 本地/域成员机 hash dump,最低噪音
2 robocopy /b + diskshadow 影子拷贝 读+写 SeBackup + SeRestore 不需要 robocopy.exe 内部在 /b 模式下自动启用两者(BackupRead + BackupWrite API) 域控 NTDS.dit / locked 文件
3 粘连键(sethc.exe)/Utilman.exe 替换 纯写 SeRestorePrivilege 需要 普通 copy/rename 不带备份语义,必须手动启用 SeRestore 才能覆盖受保护文件(无自动机制) 登录屏 SYSTEM cmd 提权
4 Copy-FileSeBackupPrivilege (DLL) 纯读 SeBackupPrivilege 需要 自定义 .NET 代码使用 CreateFile + FILE_FLAG_BACKUP_SEMANTICS,必须显式调用 Set-SeBackupPrivilege 任意文件读取,最灵活 PoC
打法1:reg save
  • API 调用链RegSaveKey → 内核以备份模式打开 registry hive 文件(本质是文件读操作)。
  • 为什么不需要手动启用reg.exe 作为系统内置工具,在检测到需要备份语义时,会自动对当前 Token 执行 AdjustTokenPrivileges 启用 SeBackupPrivilege。
  • 前提 :必须在 Elevated(管理员权限)cmd/PowerShell 中运行,否则 UAC 会阻挡。即使特权 Present,在非提升上下文中也可能失败。

示例

cmd 复制代码
reg save HKLM\SAM C:\temp\sam.hive
reg save HKLM\SYSTEM C:\temp\system.hive
打法2:robocopy /b
  • API 调用链CreateFile(带 FILE_FLAG_BACKUP_SEMANTICS)→ BackupRead(源) + BackupWrite(目标)。
  • 为什么不需要手动启用:robocopy.exe 是专为备份设计的内置工具,在解析到 /b 参数时,会主动启用 SeBackupPrivilege 和 SeRestorePrivilege。
  • 影子拷贝配合:diskshadow 创建 Volume Shadow Copy(VSS),robocopy 从影子卷读取锁定文件(如 NTDS.dit)。

示例

cmd 复制代码
diskshadow /s shadow.txt
robocopy /b Z:\Windows\NTDS C:\temp ntds.dit
打法3:Utilman.exe / sethc.exe 替换
  • 为什么必须手动启用 :普通 copyxcopymoverename 不指定 FILE_FLAG_BACKUP_SEMANTICS,因此不触发备份/还原语义检查。系统严格执行目标文件的写 ACL(通常 TrustedInstaller:Full + Administrators:RX)。
  • 启用后效果:SeRestorePrivilege 赋予 WRITE_DAC / WRITE_OWNER / DELETE 等,允许覆盖 System32 下受保护 exe。
  • 触发:锁屏后 Win+U → SYSTEM 权限 cmd。

示例(需先启用):

powershell 复制代码
# 使用 gtworek/PSBits 的脚本
. .\Enable-SeRestorePrivilege.ps1
Enable-SeRestorePrivilege

copy /Y C:\Windows\System32\cmd.exe C:\Windows\System32\utilman.exe
打法4:Copy-FileSeBackupPrivilege
  • 项目来源:giuliano108/SeBackupPrivilege(开源 PoC)。
  • 为什么必须手动启用 :这是自定义 .NET 代码,使用 CreateFile + FILE_FLAG_BACKUP_SEMANTICS + BackupRead API。不像内置工具,它不会自动启用特权
  • 使用步骤
    1. 上传 SeBackupPrivilegeUtils.dll 和 SeBackupPrivilegeCmdLets.dll。
    2. Set-SeBackupPrivilege(内部调用 AdjustTokenPrivileges)。
    3. Copy-FileSeBackupPrivilege <源> <目标>
  • 优势:支持 UNC 路径(\dc\c$...),无需影子卷。

三、总结

  1. whoami /priv → 检查 Backup 和 Restore 是否 Present(即使 Disabled 也极大概率可用)。
  2. 首选 reg save → 自动、无需额外代码、最低检测风险。
  3. 域控 → robocopy /b → 自动双特权,获取域 hash 的核武器。
  4. 快速 shell → Utilman 替换 → 需手动启用 SeRestore,但成功后直接 SYSTEM。
  5. 灵活读取 → DLL PoC → 需手动启用,但支持任意路径。
相关推荐
caimouse7 小时前
Reactos 第 8 章 结构化异常处理 — 8.2 系统空间的结构化异常处理
windows
caimouse7 小时前
Reactos 第 7 章 视窗报文 — 7.3 Win32k 的用户空间回调机制
windows
caimouse7 小时前
Reactos 第 9 章 设备驱动 — 9.5 一组PnP设备驱动模块的实例
网络·windows
神成17 小时前
vmware 上 win7 系统按照 vmware tool
windows
虾壳云官方8 小时前
OpenClaw 2.7.9 Windows 一键部署教程:零基础也能搭建 AI 自动化助手
运维·人工智能·windows·自动化·openclaw·openclaw一键部署
xcLeigh10 小时前
鸿蒙平台 KeePass 密码管理器适配实战:从 Windows 到 鸿蒙PC 的 Electron 迁移指南
windows·electron·web·harmonyos·加密算法·keepass
caimouse13 小时前
Reactos 第 9 章 设备驱动 — 9.1 Windows的设备驱动框架
windows
宸丶一13 小时前
Day 10:LangGraph - Agent 的图执行引擎
java·windows·python
ylscode13 小时前
GreatXML BitLocker绕过漏洞深度解析:Windows Defender离线扫描如何被改造成本地提权后门
windows·安全
caimouse14 小时前
Reactos 第 8 章 结构化异常处理 — 8.1 结构化异常处理的程序框架
windows