hacktricks/windows-hardening/windows-local-privilege-escalation/privilege-escalation-abusing-tokens
2024-02-07 04:49:09 +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 ['ctf-write-ups/challenge-0521.intigriti.io.md', 'ctf-write-u 2024-02-07 04:49:09 +00:00

滥用令牌

☁️ HackTricks Cloud ☁️ - 🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

令牌

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

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

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

SeImpersonatePrivilege3.1.1

持有此特权的任何进程都可以模拟(但不能创建)其能够获取句柄的任何令牌。您可以从Windows 服务DCOM获取一个特权令牌,使其对漏洞执行NTLM 认证,然后以SYSTEM身份执行进程。使用 juicy-potatoRogueWinRM(需要禁用 winrmSweetPotatoPrintSpoofer 来利用它:

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

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

SeAssignPrimaryPrivilege3.1.2

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

SeTcbPrivilege3.1.3

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

SeBackupPrivilege3.1.4

此特权导致系统授予对任何文件的所有读取访问权限(仅限读取)。
使用它来从注册表中读取本地管理员帐户的密码哈希,然后使用“psexec”或“wmicexec”与哈希PTH
如果本地管理员已禁用,或者配置为远程连接时本地管理员不是管理员,则此攻击将无效。
您可以使用以下工具滥用此特权

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

SeRestorePrivilege3.1.5

对系统上的任何文件具有写入访问权限,无论文件的 ACL 如何。
您可以修改服务、DLL 劫持、设置调试器Image File Execution Options... 有很多升级选项。

SeCreateTokenPrivilege3.1.6

此令牌仅当用户可以模拟令牌时才能用作 EoP 方法(即使没有 SeImpersonatePrivilege
在可能的情况下,如果用户可以模拟令牌且完整性级别小于或等于当前进程的完整性级别,则用户可以创建模拟令牌并向其添加一个特权组 SID。

SeLoadDriverPrivilege3.1.7

加载和卸载设备驱动程序。
您需要在注册表中创建具有 ImagePath 和 Type 值的条目。
由于无法写入 HKLM您必须使用 HKCU。 但是对于内核来说HKCU 没有任何意义,引导内核的方法并使用预期的路径进行驱动程序配置的方式是使用路径:“\Registry\User\S-1-5-21-582075628-3447520101-2530640108-1003\System\CurrentControlSet\Services\DriverName”ID 是当前用户的RID)。
因此,您必须在 HKCU 中创建所有这些路径,并设置 ImagePath(要执行的二进制文件的路径)和 TypeSERVICE_KERNEL_DRIVER 0x00000001

{% content-ref url="abuse-seloaddriverprivilege.md" %} abuse-seloaddriverprivilege.md {% endcontent-ref %}

SeTakeOwnershipPrivilege3.1.8

此特权与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 (3.1.9)

它允许持有者调试另一个进程,包括读取和写入进程的内存
有许多各种内存注入策略可以利用这个特权,规避大多数 AV/HIPS 解决方案。

转储内存

滥用这个特权的一个例子是运行ProcDumpSysInternals转储进程内存。例如,本地安全性子系统服务(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

或者在这个帖子中嵌入的脚本

表格

完整的令牌权限速查表在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创建包括本地管理员权限在内的任意令牌。
SeDebug 管理员 PowerShell 复制lsass.exe的令牌。 脚本可在FuzzySecurity找到
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

某些杀毒软件可能会检测到攻击。

替代方法依赖于使用相同权限替换存储在“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

某些杀毒软件可能会检测到攻击。

替代方法依赖于使用相同权限替换存储在“Program Files”中的服务二进制文件。

SeTcb 管理员 第三方工具

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

待验证。

参考

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥