Abusing Tokens
Last updated
Last updated
学习和实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习和实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)
如果你不知道 Windows 访问令牌是什么,请在继续之前阅读此页面:
Access Tokens也许你可以通过滥用你已经拥有的令牌来提升权限
这是任何进程持有的特权,允许对任何令牌进行 impersonation(但不允许创建),前提是可以获得其句柄。可以通过诱使 Windows 服务(DCOM)对一个漏洞执行 NTLM 认证来获取特权令牌,从而启用以 SYSTEM 权限执行进程。可以使用各种工具利用此漏洞,例如 juicy-potato、RogueWinRM(需要禁用 winrm)、SweetPotato 和 PrintSpoofer。
RoguePotato, PrintSpoofer, SharpEfsPotato, GodPotatoJuicyPotato它与 SeImpersonatePrivilege 非常相似,将使用 相同的方法 来获取特权令牌。 然后,此特权允许将主令牌分配给新的/挂起的进程。使用特权 impersonation 令牌可以派生出主令牌(DuplicateTokenEx)。 使用该令牌,可以通过 'CreateProcessAsUser' 创建一个 新进程,或创建一个挂起的进程并设置令牌(通常,无法修改正在运行的进程的主令牌)。
如果你启用了此令牌,可以使用 KERB_S4U_LOGON 为任何其他用户获取 impersonation 令牌,而无需知道凭据,向令牌添加任意组(管理员),将令牌的 完整性级别 设置为 "中等",并将此令牌分配给 当前线程(SetThreadToken)。
此特权使系统能够授予对任何文件的所有读取访问控制(仅限读取操作)。它用于从注册表中读取本地管理员帐户的密码哈希,随后可以使用像 "psexec" 或 "wmiexec" 这样的工具与哈希一起使用(Pass-the-Hash 技术)。然而,在以下两种情况下,此技术会失败:当本地管理员帐户被禁用,或当有政策限制本地管理员的远程连接的管理权限时。 你可以通过以下方式滥用此特权:
或如在以下内容中所述的 使用备份操作员提升权限 部分:
此特权提供对任何系统文件的 写访问 权限,无论文件的访问控制列表(ACL)如何。它为提升权限打开了许多可能性,包括修改服务、执行 DLL 劫持以及通过图像文件执行选项设置 调试器等多种技术。
SeCreateTokenPrivilege 是一种强大的权限,特别是在用户具备 impersonate 令牌的能力时,但在缺乏 SeImpersonatePrivilege 的情况下也很有用。此能力依赖于能够 impersonate 代表同一用户的令牌,并且其完整性级别不超过当前进程的完整性级别。
关键点:
在没有 SeImpersonatePrivilege 的情况下进行 impersonation: 可以利用 SeCreateTokenPrivilege 在特定条件下通过 impersonate 令牌实现权限提升。
令牌 impersonation 的条件: 成功的 impersonation 要求目标令牌属于同一用户,并且其完整性级别小于或等于尝试 impersonation 的进程的完整性级别。
创建和修改 impersonation 令牌: 用户可以创建一个 impersonation 令牌,并通过添加特权组的 SID(安全标识符)来增强它。
此特权允许加载和卸载设备驱动程序,通过创建具有特定值的注册表项 ImagePath
和 Type
。由于对 HKLM
(HKEY_LOCAL_MACHINE)的直接写访问受到限制,因此必须使用 HKCU
(HKEY_CURRENT_USER)。然而,为了使 HKCU
对内核可识别以进行驱动程序配置,必须遵循特定路径。
此路径为 \Registry\User\<RID>\System\CurrentControlSet\Services\DriverName
,其中 <RID>
是当前用户的相对标识符。在 HKCU
中,必须创建整个路径,并设置两个值:
ImagePath
,即要执行的二进制文件的路径
Type
,值为 SERVICE_KERNEL_DRIVER
(0x00000001
)。
遵循的步骤:
由于写访问受限,访问 HKCU
而不是 HKLM
。
在 HKCU
中创建路径 \Registry\User\<RID>\System\CurrentControlSet\Services\DriverName
,其中 <RID>
代表当前用户的相对标识符。
将 ImagePath
设置为二进制文件的执行路径。
将 Type
设置为 SERVICE_KERNEL_DRIVER
(0x00000001
)。
这与 SeRestorePrivilege 类似。其主要功能允许一个进程 假定对象的所有权,绕过通过提供 WRITE_OWNER 访问权限的明确自由裁量访问要求。该过程首先确保获得所需注册表项的所有权以进行写入,然后更改 DACL 以启用写入操作。
此权限允许调试其他进程,包括读取和写入内存。可以利用此权限采用各种内存注入策略,能够规避大多数杀毒软件和主机入侵防御解决方案。
您可以使用ProcDump来自SysInternals Suite来捕获进程的内存。具体来说,这可以应用于本地安全授权子系统服务(LSASS**)**进程,该进程负责在用户成功登录系统后存储用户凭据。
然后,您可以在mimikatz中加载此转储以获取密码:
如果你想获得一个 NT SYSTEM
shell,你可以使用:
显示为禁用的令牌可以被启用,您实际上可以利用_启用_和_禁用_令牌。
如果您有禁用的令牌,可以使用脚本EnableAllTokenPrivs.ps1来启用所有令牌:
或嵌入在这个帖子中的脚本。
完整的令牌权限备忘单在https://github.com/gtworek/Priv2Admin,下面的摘要将仅列出直接利用该权限以获得管理员会话或读取敏感文件的方法。
SeAssignPrimaryToken
管理员
第三方工具
"这将允许用户模拟令牌并使用诸如potato.exe、rottenpotato.exe和juicypotato.exe等工具提升到nt系统"
感谢Aurélien Chalot的更新。我会尽快尝试将其重新表述为更像食谱的内容。
SeBackup
威胁
内置命令
使用robocopy /b
读取敏感文件
- 如果您可以读取%WINDIR%\MEMORY.DMP,可能会更有趣
- SeBackupPrivilege
(和robocopy)在打开文件时没有帮助。
- Robocopy需要同时具有SeBackup和SeRestore才能使用/b参数。
SeCreateToken
管理员
第三方工具
使用NtCreateToken
创建任意令牌,包括本地管理员权限。
SeLoadDriver
管理员
第三方工具
1. 加载有缺陷的内核驱动程序,如szkg64.sys
2. 利用驱动程序漏洞
或者,该权限可用于卸载与安全相关的驱动程序,使用ftlMC
内置命令。即:fltMC sysmondrv
1. szkg64
漏洞被列为CVE-2018-15732
2. szkg64
利用代码由Parvez Anwar创建
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”中的服务二进制文件
SeTakeOwnership
管理员
内置命令
1. takeown.exe /f "%windir%\system32"
2. icalcs.exe "%windir%\system32" /grant "%username%":F
3. 将cmd.exe重命名为utilman.exe
4. 锁定控制台并按Win+U
攻击可能会被某些AV软件检测到。
替代方法依赖于使用相同权限替换存储在“Program Files”中的服务二进制文件。
SeTcb
管理员
第三方工具
操纵令牌以包含本地管理员权限。可能需要SeImpersonate。
待验证。
查看定义Windows令牌的此表: https://github.com/gtworek/Priv2Admin
查看关于使用令牌进行privesc的这篇论文。
学习和实践AWS黑客攻击:HackTricks培训AWS红队专家(ARTE) 学习和实践GCP黑客攻击: HackTricks培训GCP红队专家(GRTE)