Abusing Tokens

支持 HackTricks

令牌

如果你不知道 Windows 访问令牌是什么,请在继续之前阅读此页面:

也许你可以通过滥用你已经拥有的令牌来提升权限

SeImpersonatePrivilege

这是任何进程持有的特权,允许对任何令牌进行模拟(但不创建),前提是可以获得其句柄。可以通过诱使 Windows 服务(DCOM)对一个漏洞执行 NTLM 认证来获取特权令牌,从而启用以 SYSTEM 权限执行进程。可以使用各种工具利用此漏洞,例如 juicy-potatoRogueWinRM(需要禁用 winrm)、SweetPotatoPrintSpoofer

SeAssignPrimaryPrivilege

它与 SeImpersonatePrivilege 非常相似,将使用 相同的方法 来获取特权令牌。 然后,此特权允许将主令牌分配给一个新的/挂起的进程。使用特权模拟令牌可以派生出主令牌(DuplicateTokenEx)。 使用该令牌,可以通过 'CreateProcessAsUser' 创建一个 新进程 或创建一个挂起的进程并 设置令牌(一般来说,不能修改正在运行的进程的主令牌)。

SeTcbPrivilege

如果你启用了此令牌,可以使用 KERB_S4U_LOGON 为任何其他用户获取 模拟令牌,而无需知道凭据,向令牌添加任意组(管理员),将令牌的 完整性级别 设置为 "中等",并将此令牌分配给 当前线程(SetThreadToken)。

SeBackupPrivilege

此特权使系统能够授予对任何文件的所有读取访问控制(仅限读取操作)。它用于从注册表中读取本地管理员帐户的密码哈希,随后可以使用像 "psexec" 或 "wmiexec" 这样的工具与哈希一起使用(Pass-the-Hash 技术)。然而,在以下两种情况下,此技术会失败:当本地管理员帐户被禁用时,或当有政策限制本地管理员远程连接的管理权限时。 你可以通过以下方式滥用此特权

SeRestorePrivilege

此特权提供对任何系统文件的 写访问 权限,无论文件的访问控制列表(ACL)如何。它为提升权限打开了许多可能性,包括修改服务、执行 DLL 劫持以及通过图像文件执行选项设置 调试器 等多种技术。

SeCreateTokenPrivilege

SeCreateTokenPrivilege 是一种强大的权限,特别是在用户具备模拟令牌的能力时,但在缺乏 SeImpersonatePrivilege 的情况下也很有用。此能力依赖于能够模拟一个代表同一用户的令牌,并且其完整性级别不超过当前进程的完整性级别。

关键点:

  • 在没有 SeImpersonatePrivilege 的情况下进行模拟: 可以利用 SeCreateTokenPrivilege 在特定条件下通过模拟令牌进行权限提升。

  • 令牌模拟的条件: 成功的模拟要求目标令牌属于同一用户,并且其完整性级别小于或等于尝试模拟的进程的完整性级别。

  • 创建和修改模拟令牌: 用户可以创建一个模拟令牌,并通过添加特权组的 SID(安全标识符)来增强它。

SeLoadDriverPrivilege

此特权允许加载和卸载设备驱动程序,通过创建具有特定值的注册表项 ImagePathType。由于对 HKLM(HKEY_LOCAL_MACHINE)的直接写访问受到限制,因此必须使用 HKCU(HKEY_CURRENT_USER)。然而,为了使 HKCU 对内核可识别以进行驱动程序配置,必须遵循特定路径。

此路径为 \Registry\User\<RID>\System\CurrentControlSet\Services\DriverName,其中 <RID> 是当前用户的相对标识符。在 HKCU 中,必须创建整个路径,并设置两个值:

  • ImagePath,即要执行的二进制文件的路径

  • Type,值为 SERVICE_KERNEL_DRIVER (0x00000001)。

遵循的步骤:

  1. 由于写访问受限,访问 HKCU 而不是 HKLM

  2. HKCU 中创建路径 \Registry\User\<RID>\System\CurrentControlSet\Services\DriverName,其中 <RID> 代表当前用户的相对标识符。

  3. ImagePath 设置为二进制文件的执行路径。

  4. Type 设置为 SERVICE_KERNEL_DRIVER (0x00000001)。

# Example Python code to set the registry values
import winreg as reg

# Define the path and values
path = r'Software\YourPath\System\CurrentControlSet\Services\DriverName' # Adjust 'YourPath' as needed
key = reg.OpenKey(reg.HKEY_CURRENT_USER, path, 0, reg.KEY_WRITE)
reg.SetValueEx(key, "ImagePath", 0, reg.REG_SZ, "path_to_binary")
reg.SetValueEx(key, "Type", 0, reg.REG_DWORD, 0x00000001)
reg.CloseKey(key)

更多滥用此权限的方法请参见 https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges#seloaddriverprivilege

SeTakeOwnershipPrivilege

这与 SeRestorePrivilege 类似。其主要功能允许一个进程 假定对象的所有权,绕过通过提供 WRITE_OWNER 访问权限的明确自由裁量访问要求。该过程首先确保获得所需注册表项的所有权以进行写入,然后更改 DACL 以启用写入操作。

takeown /f 'C:\some\file.txt' #Now the file is owned by you
icacls 'C:\some\file.txt' /grant <your_username>:F #Now you have full access
# Use this with files that might contain credentials such as
%WINDIR%\repair\sam
%WINDIR%\repair\system
%WINDIR%\repair\software
%WINDIR%\repair\security
%WINDIR%\system32\config\security.sav
%WINDIR%\system32\config\software.sav
%WINDIR%\system32\config\system.sav
%WINDIR%\system32\config\SecEvent.Evt
%WINDIR%\system32\config\default.sav
c:\inetpub\wwwwroot\web.config

SeDebugPrivilege

此权限允许调试其他进程,包括读取和写入内存。可以利用此权限采用各种内存注入策略,能够规避大多数杀毒软件和主机入侵防御解决方案。

Dump memory

您可以使用来自SysInternals SuiteProcDump捕获进程的内存。具体来说,这可以应用于本地安全授权子系统服务(LSASS**)**进程,该进程负责在用户成功登录系统后存储用户凭据。

然后,您可以在mimikatz中加载此转储以获取密码:

mimikatz.exe
mimikatz # log
mimikatz # sekurlsa::minidump lsass.dmp
mimikatz # sekurlsa::logonpasswords

RCE

如果你想获得一个 NT SYSTEM shell,你可以使用:

# Get the PID of a process running as NT SYSTEM
import-module psgetsys.ps1; [MyProcess]::CreateProcessFromParent(<system_pid>,<command_to_execute>)

检查权限

whoami /priv

The 显示为禁用的令牌可以被启用,您实际上可以利用_启用_和_禁用_令牌。

启用所有令牌

如果您有禁用的令牌,可以使用脚本 EnableAllTokenPrivs.ps1 来启用所有令牌:

.\EnableAllTokenPrivs.ps1
whoami /priv

Or the script embed in this post.

Table

Full token privileges cheatsheet at https://github.com/gtworek/Priv2Admin, summary below will only list direct ways to exploit the privilege to obtain an admin session or read sensitive files.

Reference

Support HackTricks

Last updated