gtworek/Priv2Admin

GitHub: gtworek/Priv2Admin

系统性记录 Windows 操作系统各项特权可被滥用于提权、破坏机密性或造成拒绝服务的攻击路径参考手册。

Stars: 2420 | Forks: 304

此想法旨在将 Windows OS 权限“转化”为导致以下结果的路径: 1. 管理员权限, 2. 完整性和/或机密性威胁, 3. 可用性威胁, 4. 仅造成混乱。 权限列表及其说明位于:https://learn.microsoft.com/en-us/windows/win32/secauthz/privilege-constants 如果可以通过多种方式实现目标,优先级顺序为 1. 使用内置命令 2. 使用 PowerShell(仅在存在可用脚本时) 3. 使用非操作系统工具 4. 使用任何其他方法 你可以使用 `whoami /priv` 检查自己的权限。被禁用的权限与被启用的权限一样有效。唯一重要的是你的权限是否在列表中。 **注 1:** 每当攻击路径以创建 token 结束时,你可以假定下一步是使用此类 token 创建新进程,然后接管操作系统。 **注 2:**
**a.** 对于直接调用 `NtQuerySystemInformation()`/`ZwQuerySystemInformation()` 的情况,你可以在[此处](https://github.com/gtworek/Priv2Admin/blob/master/NtQuerySystemInformation.md)找到所需的权限。
**b.** 对于 `NtSetSystemInformation()`/`ZwSetSystemInformation()`,所需的权限列在[此处](https://github.com/gtworek/Priv2Admin/blob/master/NtSetSystemInformation.md)。 **注 3:** 我仅关注操作系统本身。如果某个权限在 AD 中有效但在操作系统本身中无效,我会将其描述为在操作系统中未使用。如果有人能深入挖掘面向 AD 的场景,那就太好了。 欢迎贡献和/或讨论所提出的想法。 | 权限 | 影响 | 工具 | 执行路径 | 备注 | | --- | --- | --- | --- | --- | |`SeAssignPrimaryToken`| ***管理员*** | 第三方工具 | *"这将允许用户模拟 token,并使用 potato.exe、rottenpotato.exe 和 juicypotato.exe 等工具提权至 nt system"* | 感谢 [Aurélien Chalot](https://twitter.com/Defte_) 提供的更新。我会尽快尝试将其改写为更类似配方的内容。 | |`SeAudit`| **威胁** | 第三方工具 | 将事件写入安全事件日志以欺骗审计或覆盖旧事件。 | 可以使用 [`Authz Report Security Event`](https://learn.microsoft.com/en-us/windows/win32/api/authz/nf-authz-authzreportsecurityevent) API 写入自己的事件。
- 参见 [@daem0nc0re](https://twitter.com/daem0nc0re) 的 [PoC](https://github.com/daem0nc0re/PrivFu/tree/main/PrivilegedOperations/SeAuditPrivilegePoC) | |`SeBackup`| ***管理员*** | 第三方工具 | 1. 备份 `HKLM\SAM` 和 `HKLM\SYSTEM` 注册表配置单元
2. 从 `SAM` 数据库中提取本地账户哈希
3. 以本地 `Administrators` 组成员的身份进行哈希传递

或者,可用于读取敏感文件。 | 更多信息,请参阅 [`SeBackupPrivilege` 文件](SeBackupPrivilege.md)。
- 参见 [@daem0nc0re](https://twitter.com/daem0nc0re) 的 [PoC](https://github.com/daem0nc0re/PrivFu/tree/main/PrivilegedOperations/SeBackupPrivilegePoC) | |`SeChangeNotify`| 无 | - | - | 所有人持有的权限。撤销它可能会使操作系统(Windows Server 2019)无法启动。 | |`SeCreateGlobal`| ? | ? | ? || |`SeCreatePagefile`| 无 | ***内置命令*** | 创建 hiberfil.sys,离线读取,寻找敏感数据。 | 需要离线访问,而这本身就会导致获得管理员权限。
- 参见 [@daem0nc0re](https://twitter.com/daem0nc0re) 的 [PoC](https://github.com/daem0nc0re/PrivFu/tree/main/PrivilegedOperations/SeCreatePagefilePrivilegePoC) | |`SeCreatePermanent`| ? | ? | ? || |`SeCreateSymbolicLink`| ? | ? | ? || |`SeCreateToken`| ***管理员*** | 第三方工具 | 使用 `NtCreateToken` 创建包含本地管理员权限的任意 token。
- 参见 [@daem0nc0re](https://twitter.com/daem0nc0re) 的 [PoC](https://github.com/daem0nc0re/PrivFu/tree/main/PrivilegedOperations/SeCreateTokenPrivilegePoC) || |`SeDebug`| ***管理员*** | **PowerShell** | 复制 `lsass.exe` 的 token。 | 脚本可在 [FuzzySecurity](https://github.com/FuzzySecurity/PowerShell-Suite/blob/master/Conjure-LSASS.ps1) 找到。
- 参见 [@daem0nc0re](https://twitter.com/daem0nc0re) 的 [PoC](https://github.com/daem0nc0re/PrivFu/tree/main/PrivilegedOperations/SeDebugPrivilegePoC) | |`SeDelegateSession-`
`UserImpersonate`| ? | ? | ? | 权限名称已断开处理以缩减列宽。 | |`SeEnableDelegation`| 无 | - | - | 该权限在 Windows 操作系统中未使用。 | |`SeImpersonate`| ***管理员*** | 第三方工具 | 来自 *Potato 家族* 的工具(potato.exe, RottenPotato, RottenPotatoNG, Juicy Potato, SweetPotato, RemotePotato0)、RogueWinRM、PrintSpoofer 等。 | 与 `SeAssignPrimaryToken` 类似,设计上允许在另一个用户的安全上下文中创建进程(使用该用户 token 的句柄)。

可以使用多种工具和技术来获取所需的 token。 | |`SeIncreaseBasePriority`| 可用性 | ***内置命令*** | `start /realtime SomeCpuIntensiveApp.exe` | 在服务器上可能更有意义。 | |`SeIncreaseQuota`| 可用性 | 第三方工具 | 将 cpu、内存和缓存限制更改为某些值,使操作系统无法启动。 | - 安全模式下不检查配额,这使得修复相对容易。
- 同一权限用于管理注册表配额。 | |`SeIncreaseWorkingSet`| 无 | - | - | 所有人持有的权限。在调用微调内存管理函数时检查。 | |`SeLoadDriver`| ***管理员*** | 第三方工具 | 1. 加载有缺陷的内核驱动程序,例如 `szkg64.sys`
2. 利用驱动程序漏洞

或者,该权限可用于使用内置的 `fltMC` 命令卸载与安全相关的驱动程序。例如:`fltMC sysmondrv` | 1. `szkg64` 漏洞被列为 [CVE-2018-15732](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-15732)
2. `szkg64` [漏洞利用代码](https://www.greyhathacker.net/?p=1025) 由 [Parvez Anwar](https://twitter.com/parvezghh) 创建 | |`SeLockMemory`| 可用性 | 第三方工具 | 通过移动页面耗尽系统内存分区。 | PoC 由 [Walied Assar (@waleedassar)](https://twitter.com/waleedassar/status/1296689615139676160) 发布 | |`SeMachineAccount`| 无 | - | - |该权限在 Windows 操作系统中未使用。 | |`SeManageVolume`| ***管理员*** | 第三方工具 | 1. 在 token 中启用该权限
2. 使用 `SYNCHRONIZE \| FILE_TRAVERSE` 创建到 \\.\C: 的句柄
3. 发送 `FSCTL_SD_GLOBAL_CHANGE` 以将 `S-1-5-32-544` 替换为 `S-1-5-32-545`
4. 覆盖 utilman.exe 等 | 可以使用此[代码片段](https://github.com/gtworek/PSBits/blob/master/Misc/FSCTL_SD_GLOBAL_CHANGE.c)执行 `FSCTL_SD_GLOBAL_CHANGE`。 | |`SeProfileSingleProcess`| 无 | - | - | 该权限在更改(以及在非常有限的命令集中,在查询之前)Prefetch、SuperFetch 和 ReadyBoost 的参数之前检查。影响可能会被调整,因为实际效果尚不清楚。 | |`SeRelabel`| **威胁** | 第三方工具 | 合法管理员修改系统文件 | 参见:[MIC 文档](https://learn.microsoft.com/en-us/windows/win32/secauthz/mandatory-integrity-control)

完整性标签在众所周知的 ACL 之上提供了额外的保护。两个主要场景包括:
- 防御利用易受攻击应用程序(如浏览器、PDF 阅读器等)发起的攻击
- 保护操作系统文件。

token 中存在的 `SeRelabel` 将允许对资源(包括文件和文件夹)使用 `WRITE_OWNER` 访问权限。不幸的是,IL(完整性级别)低于 *High* 的 token 会禁用 SeRelabel 权限,这使得它对任何尚未是管理员的人来说毫无用处。

有关详情,请参阅 [@tiraniddo](https://twitter.com/tiraniddo) 出色的[博客文章](https://www.tiraniddo.dev/2021/06/the-much-misunderstood.html)。| |`SeRemoteShutdown`| 可用性 | ***内置命令*** | `shutdown /s /f /m \\server1 /d P:5:19` | 当来自网络的关机/重启请求时,会验证该权限。127.0.0.1 场景有待调查。 | |`SeReserveProcessor`| 无 | - | - | 看起来该权限已不再使用,并且只出现在 winnt.h 的几个版本中。你可以看到它被列出,例如在微软发布的源代码[此处](https://code.msdn.microsoft.com/Effective-access-rights-dd5b13a8/sourcecode?fileId=58676&pathId=767997020)中。 | |`SeRestore`| ***管理员*** | **PowerShell** | 1. 启动包含 SeRestore 权限的 PowerShell/ISE。
2. 使用 [Enable-SeRestorePrivilege](https://github.com/gtworek/PSBits/blob/master/Misc/EnableSeRestorePrivilege.ps1)) 启用该权限。
3. 将 utilman.exe 重命名为 utilman.old
4. 将 cmd.exe 重命名为 utilman.exe
5. 锁定控制台并按 Win+U| 攻击可能会被某些 AV 软件检测到。

替代方法依赖于使用相同的权限替换存储在“Program Files”中的服务二进制文件。
- 参见 [@daem0nc0re](https://twitter.com/daem0nc0re) 的 [PoC](https://github.com/daem0nc0re/PrivFu/tree/main/PrivilegedOperations/SeRestorePrivilegePoC) | |`SeSecurity`| **威胁** | ***内置命令*** |- 清除安全事件日志:`wevtutil cl Security`

- 将安全日志缩小至 20MB,使事件很快被刷新:`wevtutil sl Security /ms:0`

- 读取安全事件日志以了解系统中其他用户的进程、访问和操作。

- 了解记录了什么内容以便在雷达之下行动。

- 了解记录了什么内容以生成大量事件,从而有效清除旧事件而不留下明显的清理证据。

- 查看和更改对象的 SACL(实际上是:审计设置) | 参见 [@daem0nc0re](https://twitter.com/daem0nc0re) 的 [PoC](https://github.com/daem0nc0re/PrivFu/tree/main/PrivilegedOperations/SeSecurityPrivilegePoC) | |`SeShutdown`| 可用性 | ***内置命令*** | `shutdown.exe /s /f /t 1` | 允许调用大多数 NtPowerInformation() 级别。有待调查。允许调用导致立即蓝屏(BSOD)和内存转储的 NtRaiseHardError(),可能导致敏感信息泄露 - 参见 [@daem0nc0re](https://twitter.com/daem0nc0re) 的 [PoC](https://github.com/daem0nc0re/PrivFu/tree/main/PrivilegedOperations/SeShutdownPrivilegePoC) | |`SeSyncAgent`| 无 | - | - | 该权限在 Windows 操作系统中未使用。 | |`SeSystemEnvironment`| _未知_ | 第三方工具 | 该权限允许使用 `NtSetSystemEnvironmentValue`、`NtModifyDriverEntry` 和其他一些系统调用来操纵 UEFI 变量。 |运行 sysprep.exe 需要此权限。

此外:
- 固件环境变量过去通常用于非 Intel 平台,现在正慢慢回归 UEFI 世界。
- 该领域高度缺乏文档。
- 潜力可能很大(即破坏 Secure Boot),但提高影响级别至少需要一个 PoC。
- 参见 [@daem0nc0re](https://twitter.com/daem0nc0re) 的 [PoC](https://github.com/daem0nc0re/PrivFu/tree/main/PrivilegedOperations/SeSystemEnvironmentPrivilegePoC) | |`SeSystemProfile`| ? | ? | ? || |`SeSystemtime`| **威胁** | ***内置命令*** | `cmd.exe /c date 01-01-01`
`cmd.exe /c time 00:00` | 该权限允许更改系统时间,可能导致审计跟踪完整性问题,因为事件将使用错误的日期/时间存储。
- 注意日期/时间格式。如果不确定,请使用始终安全的值。
- 有时该权限的名称使用大写的 "T",被称为 `SeSystemTime`。 | |`SeTakeOwnership`| ***管理员*** | ***内置命令*** |1. `takeown.exe /f "%windir%\system32"`
2. `icacls.exe "%windir%\system32" /grant "%username%":F`
3. 将 cmd.exe 重命名为 utilman.exe
4. 锁定控制台并按 Win+U| 攻击可能会被某些 AV 软件检测到。

替代方法依赖于使用相同的权限替换存储在“Program Files”中的服务二进制文件。
- 参见 [@daem0nc0re](https://twitter.com/daem0nc0re) 的 [PoC](https://github.com/daem0nc0re/PrivFu/tree/main/PrivilegedOperations/SeTakeOwnershipPrivilegePoC) | |`SeTcb`| ***管理员*** | 第三方工具 | 操纵 token 以包含本地管理员权限。 | 创建任意 token 的示例代码和 exe 可在 [PsBits](https://github.com/gtworek/PSBits/tree/master/VirtualAccounts) 找到。 | |`SeTimeZone` 混乱 | ***内置命令*** | 更改时区。 `tzutil /s "Chatham Islands Standard Time"` || |`SeTrustedCredManAccess`| **威胁** | 第三方工具 | 从 Credential Manager 中转储凭据 | 出色的[博客文章](https://www.tiraniddo.dev/2021/05/dumping-stored-credentials-with.html),作者 [@tiraniddo](https://twitter.com/tiraniddo)。
- 参见 [@daem0nc0re](https://twitter.com/daem0nc0re) 的 [PoC](https://github.com/daem0nc0re/PrivFu/tree/main/PrivilegedOperations/SeTrustedCredManAccessPrivilegePoC) | |`SeUndock`| 无 | - | - | 该权限在拔出(undocking)时被启用,但从未观察到它被检查以授予/拒绝访问。实际上这意味着它未被使用,不能导致任何提权。 | |`SeUnsolicitedInput`| 无 | - | - | 该权限在 Windows 操作系统中未使用。 | **致谢:**
- [Aurélien Chalot](https://twitter.com/Defte_) - 关于 SeAssignPrimaryToken 的初始信息。 - [vletoux](https://github.com/vletoux) - SeLoadDriver 问题报告。 - [Walied Assar](https://twitter.com/waleedassar) - 使用 SeLockMemoryPrivilege 和 NtManagePartition() 进行 DoS 攻击 - [Qazeer](https://github.com/Qazeer) - SeBackupPrivilege 漏洞利用细节。

标签:0day挖掘, AD安全, AI合规, Conpot, CSV导出, Potato攻击, SeAssignPrimaryToken, Windows安全, 令牌伪造, 令牌模拟, 内核安全, 协议分析, 提权, 操作系统, 数据展示, 权限提升, 特权滥用, 私有化部署, 端点可见性, 系统权限, 红队, 网络安全, 防御加固, 防御规避, 隐私保护