hacktricks/windows-hardening/windows-local-privilege-escalation/privilege-escalation-abusing-tokens
2024-07-30 11:11:18 +00:00
..
abuse-seloaddriverprivilege.md Translated ['ctf-write-ups/challenge-0521.intigriti.io.md', 'ctf-write-u 2024-02-07 04:49:09 +00:00
README.md Translated ['windows-hardening/windows-local-privilege-escalation/privil 2024-07-30 11:11:18 +00:00

Abusing Tokens

{% hint style="success" %} 学习和实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE)
学习和实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)

支持 HackTricks
{% endhint %}

Tokens

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

{% content-ref url="../access-tokens.md" %} access-tokens.md {% endcontent-ref %}

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

SeImpersonatePrivilege

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

{% content-ref url="../roguepotato-and-printspoofer.md" %} roguepotato-and-printspoofer.md {% endcontent-ref %}

{% content-ref url="../juicypotato.md" %} juicypotato.md {% endcontent-ref %}

SeAssignPrimaryPrivilege

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

SeTcbPrivilege

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

SeBackupPrivilege

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

{% content-ref url="../../active-directory-methodology/privileged-groups-and-token-privileges.md" %} privileged-groups-and-token-privileges.md {% endcontent-ref %}

SeRestorePrivilege

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

SeCreateTokenPrivilege

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

关键点:

  • 在没有 SeImpersonatePrivilege 的情况下进行 impersonation 可以利用 SeCreateTokenPrivilege 在特定条件下通过 impersonate 令牌来实现权限提升。
  • 令牌 impersonation 的条件: 成功的 impersonation 要求目标令牌属于同一用户,并且其完整性级别小于或等于尝试 impersonation 的进程的完整性级别。
  • 创建和修改 impersonation 令牌: 用户可以创建一个 impersonation 令牌,并通过添加特权组的 SID安全标识符来增强它。

SeLoadDriverPrivilege

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

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

  • ImagePath,即要执行的二进制文件的路径
  • Type,值为 SERVICE_KERNEL_DRIVER0x00000001)。

遵循的步骤:

  1. 由于写访问受限,访问 HKCU 而不是 HKLM
  2. HKCU 中创建路径 \Registry\User\<RID>\System\CurrentControlSet\Services\DriverName,其中 <RID> 代表当前用户的相对标识符。
  3. ImagePath 设置为二进制文件的执行路径。
  4. Type 设置为 SERVICE_KERNEL_DRIVER0x00000001)。
# 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

您可以使用ProcDump来自SysInternals Suite捕获进程的内存。具体来说,这可以应用于**本地安全授权子系统服务(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

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

启用所有令牌

如果您有禁用的令牌,可以使用脚本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.

Privilege Impact Tool Execution path Remarks
SeAssignPrimaryToken Admin 3rd party tool "这将允许用户模拟令牌并使用诸如 potato.exe、rottenpotato.exe 和 juicypotato.exe 等工具提升到 nt 系统" Thank you Aurélien Chalot for the update. I will try to re-phrase it to something more recipe-like soon.
SeBackup Threat Built-in commands 使用 robocopy /b 读取敏感文件

- 如果您可以读取 %WINDIR%\MEMORY.DMP可能会更有趣

- SeBackupPrivilege(和 robocopy在处理打开的文件时没有帮助。

- Robocopy 需要同时具有 SeBackup 和 SeRestore 才能使用 /b 参数。

SeCreateToken Admin 3rd party tool 使用 NtCreateToken 创建任意令牌,包括本地管理员权限。
SeDebug Admin PowerShell 复制 lsass.exe 令牌。 Script to be found at FuzzySecurity
SeLoadDriver Admin 3rd party tool

1. 加载有缺陷的内核驱动程序,例如 szkg64.sys
2. 利用驱动程序漏洞

或者,该特权可用于使用 ftlMC 内置命令卸载与安全相关的驱动程序。即:fltMC sysmondrv

1. szkg64 漏洞被列为 CVE-2018-15732
2. szkg64 利用代码 是由 Parvez Anwar 创建的

SeRestore Admin 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 Admin Built-in commands

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 Admin 3rd party tool

操纵令牌以包含本地管理员权限。可能需要 SeImpersonate。

待验证。

Reference

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}