目标是“翻译”Windows操作系统权限,使其指向以下路径之一:
权限列表及说明见:https://learn.microsoft.com/en-us/windows/win32/secauthz/privilege-constants
如果可以通过多种方式达成目标,优先级如下:
你可以通过 whoami /priv 检查自己的权限。已禁用的权限与已启用的同等重要。唯一关键的是你是否拥有列表中的权限。
注意 1: 当攻击路径以令牌创建结束时,可以假设下一步是使用该令牌创建新进程,进而控制操作系统。
注意 2:
a. 对于直接调用 NtQuerySystemInformation()/ZwQuerySystemInformation(),所需权限见 此处。
b. 对于 NtSetSystemInformation()/ZwSetSystemInformation(),所需权限列在 此处。
注意 3: 我仅关注操作系统本身。如果某个权限在AD中有效但在操作系统中无效,我将其描述为“未在操作系统中使用”。希望有人能深入探讨面向AD的场景。
欢迎贡献和/或讨论提出的想法。
鸣谢:
| 权限 | 影响 | 工具 | 执行路径 | 备注 |
|---|
SeAssignPrimaryToken | 管理员 | 第三方工具 | “它将允许用户模拟令牌,并使用诸如 potato.exe、rottenpotato.exe 和 juicypotato.exe 等工具提升至 NT 系统权限。” | 感谢 Aurélien Chalot 的更新。我很快会尝试将其改写为更像操作指南的格式。 |
SeAudit | 威胁 | 第三方工具 | 向安全事件日志写入事件,以欺骗审计或覆盖旧事件。 | 可通过 Authz Report Security Event API 写入自定义事件。- 参见 PoC 作者 @daem0nc0re |
SeBackup | 管理员 | 第三方工具 | 1. 备份 HKLM\SAM 和 HKLM\SYSTEM 注册表配置单元 2. 从 SAM 数据库中提取本地帐户哈希 3. 作为本地 Administrators 组成员进行哈希传递攻击 或者,可用于读取敏感文件。 | 更多信息,请参阅 SeBackupPrivilege 文件。- 参见 PoC 作者 @daem0nc0re |
SeChangeNotify | 无 | - | - | 每个用户都拥有此权限。撤销它可能导致操作系统(Windows Server 2019)无法启动。 |
SeCreateGlobal | ? | ? | ? | |
SeCreatePagefile | 无 | 内置命令 | 创建 hiberfil.sys,离线读取,查找敏感数据。 | 需要离线访问,这无论如何都会导致管理员权限。 - 参见 PoC 作者 @daem0nc0re |
SeCreatePermanent | ? | ? | ? | |
SeCreateSymbolicLink | ? | ? | ? | |
SeCreateToken | 管理员 | 第三方工具 | 使用 NtCreateToken 创建任意令牌,包括本地管理员权限。- 参见 PoC 作者 @daem0nc0re | |
SeDebug | 管理员 | PowerShell | 复制 lsass.exe 令牌。 | 脚本可在 FuzzySecurity 找到。 - 参见 PoC 作者 @daem0nc0re |
SeDelegateSession-UserImpersonate | ? | ? | ? | 权限名称已拆分以使列变窄。 |
SeEnableDelegation | 无 | - | - | 该权限在 Windows 操作系统中未使用。 |
SeImpersonate | 管理员 | 第三方工具 | Potato 家族 工具(potato.exe、RottenPotato、RottenPotatoNG、Juicy Potato、SweetPotato、RemotePotato0)、RogueWinRM、PrintSpoofer 等。 | 与 SeAssignPrimaryToken 类似,设计上允许使用另一个用户的令牌句柄在该用户的安全上下文中创建进程。多种工具和技术可用于获取所需令牌。 |
SeIncreaseBasePriority | 可用性 | 内置命令 | start /realtime SomeCpuIntensiveApp.exe | 在服务器上可能更有意思。 |
SeIncreaseQuota | 可用性 | 第三方工具 | 将 CPU、内存和缓存限制更改为某些值,使操作系统无法启动。 | - 配额在安全模式下不检查,这使得修复相对容易。 - 同样的权限也用于管理注册表配额。 |
SeIncreaseWorkingSet | 无 | - | - | 每个用户都拥有此权限。在调用微调内存管理函数时进行检查。 |
SeLoadDriver | 管理员 | 第三方工具 | 1. 加载有问题的内核驱动程序,如 szkg64.sys2. 利用驱动程序漏洞 或者,该权限可用于使用内置命令 fltMC 卸载安全相关驱动程序,例如:fltMC sysmondrv | 1. szkg64 漏洞编号为 CVE-2018-157322. szkg64 利用代码 由 Parvez Anwar 创建。 |
SeLockMemory | 可用性 | 第三方工具 | 通过移动页面耗尽系统内存分区。 | PoC 由 Walied Assar (@waleedassar) 发布 |
SeMachineAccount | 无 | - | - | 该权限在 Windows 操作系统中未使用。 |
SeManageVolume | 管理员 | 第三方工具 | 1. 在令牌中启用该权限 2. 使用 SYNCHRONIZE | FILE_TRAVERSE 创建 \\.\C: 的句柄3. 发送 FSCTL_SD_GLOBAL_CHANGE 将 S-1-5-32-544 替换为 S-1-5-32-5454. 覆盖 utilman.exe 等文件。 | FSCTL_SD_GLOBAL_CHANGE 可以使用此 代码片段 实现。 |
SeProfileSingleProcess | 无 | - | - | 在更改(以及在非常有限的命令集中,查询)Prefetch、SuperFetch 和 ReadyBoost 的参数之前会检查此权限。由于实际效果未知,影响程度可能会调整。 |
SeRelabel | 威胁 | 第三方工具 | 由合法管理员修改系统文件 | 参见:MIC 文档 完整性标签在众所周知的 ACL 之外提供了额外保护。两种主要场景包括: - 防止利用易受攻击的应用程序(如浏览器、PDF 阅读器等)进行的攻击。 - 保护操作系统文件。 令牌中存在 SeRelabel 将允许对资源(包括文件和文件夹)使用 WRITE_OWNER 访问。不幸的是,完整性级别低于 High 的令牌将禁用 SeRelabel 权限,使其对非管理员用户无用。详情请参阅 @tiraniddo 的优秀 博客文章。 |
SeRemoteShutdown | 可用性 | 内置命令 | shutdown /s /f /m \\server1 /d P:5:19 | 当关机/重启请求来自网络时会验证此权限。127.0.0.1 场景有待研究。 |
SeReserveProcessor | 无 | - | - | 该权限似乎不再使用,仅出现在少数几个版本的 winnt.h 中。例如,你可以在微软发布的源代码 此处 看到它列出。 |
SeRestore | 管理员 | PowerShell | 1. 启动具有 SeRestore 权限的 PowerShell/ISE。 2. 使用 Enable-SeRestorePrivilege 启用该权限。 3. 将 utilman.exe 重命名为 utilman.old 4. 将 cmd.exe 重命名为 utilman.exe 5. 锁定控制台并按 Win+U | 某些 AV 软件可能检测到此攻击。 另一种方法是利用相同权限替换存储在 "Program Files" 中的服务二进制文件。 - 参见 PoC 作者 @daem0nc0re |
SeSecurity | 威胁 | 内置命令 | - 清除安全事件日志:wevtutil cl Security- 将安全日志缩小至20MB以使事件很快被刷新: wevtutil sl Security /ms:0- 读取安全事件日志以了解系统中其他用户的进程、访问和操作。 - 了解哪些内容被记录以便低调行事。 - 了解哪些内容被记录以生成大量事件,有效清除旧事件而不留下明显的清理痕迹。 - 查看和更改对象 SACL(实际上:审核设置) | 参见 PoC 作者 @daem0nc0re |
SeShutdown | 可用性 | 内置命令 | shutdown.exe /s /f /t 1 | 允许调用大多数 NtPowerInformation() 级别。有待研究。允许调用 NtRaiseHardError() 立即导致蓝屏和内存转储,可能导致敏感信息泄露 - 参见 PoC 作者 @daem0nc0re |
SeSyncAgent | 无 | - | - | 该权限在 Windows 操作系统中未使用。 |
SeSystemEnvironment | 未知 | 第三方工具 | 该权限允许使用 NtSetSystemEnvironmentValue、NtModifyDriverEntry 和其他一些系统调用来操作 UEFI 变量。 | 运行 sysprep.exe 需要此权限。 此外: |
SeSystemProfile | ? | ? | ? | |
SeSystemtime | 威胁 | 内置命令 | cmd.exe /c date 01-01-01cmd.exe /c time 00:00 | 该权限允许更改系统时间,可能导致审计跟踪完整性问题,因为事件将以错误的日期/时间存储。 - 注意日期/时间格式。如果不确定,请始终使用安全值。 - 有时该权限名称使用大写 "T",称为 SeSystemTime。 |
SeTakeOwnership | 管理员 | 内置命令 | 1. takeown.exe /f "%windir%\system32"2. icacls.exe "%windir%\system32" /grant "%username%":F3. 将 cmd.exe 重命名为 utilman.exe 4. 锁定控制台并按 Win+U | 某些 AV 软件可能检测到此攻击。 另一种方法是利用相同权限替换存储在 "Program Files" 中的服务二进制文件。 - 参见 PoC 作者 @daem0nc0re |
SeTcb | 管理员 | 第三方工具 | 操纵令牌以包含本地管理员权限。 | 示例代码+exe 用于创建任意令牌,可在 PsBits 找到。 |
SeTimeZone | 混乱 | 内置命令 | 更改时区。 tzutil /s "Chatham Islands Standard Time" | |
SeTrustedCredManAccess | 威胁 | 第三方工具 | 从凭据管理器转储凭据 | 优秀的 博客文章 由 @tiraniddo 撰写。 - 参见 PoC 作者 @daem0nc0re |
SeUndock | 无 | - | - | 该权限在取消停靠时启用,但从未观察到它被用于授予/拒绝访问。实际上,它意味着它实际上未被使用,且无法导致任何权限提升。 |
SeUnsolicitedInput | 无 | - | - | 该权限在 Windows 操作系统中未使用。 |