hacktricks/windows-hardening/windows-local-privilege-escalation/privilege-escalation-abusing-tokens
2023-08-03 19:12:22 +00:00
..
abuse-seloaddriverprivilege.md Translated to Chinese 2023-08-03 19:12:22 +00:00
README.md Translated to Chinese 2023-08-03 19:12:22 +00:00

滥用令牌

☁️ HackTricks 云 ☁️ -🐦 推特 🐦 - 🎙️ Twitch 🎙️ - 🎥 YouTube 🎥

令牌

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

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

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

SeImpersonatePrivilege (3.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 %}

SeAssignPrimaryPrivilege (3.1.2)

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

SeTcbPrivilege (3.1.3)

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

SeBackupPrivilege (3.1.4)

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

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

SeRestorePrivilege (3.1.5)

具有写访问权限可以控制系统上的任何文件而不考虑文件的访问控制列表ACL
您可以修改服务、DLL劫持、设置调试器Image File Execution Options... 有很多升级选项。

SeCreateTokenPrivilege (3.1.6)

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

SeLoadDriverPrivilege (3.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 %}

SeTakeOwnershipPrivilege (3.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 解决方案。

转储内存

滥用这个权限的一个例子是运行 ProcDump 来自 SysInternals转储进程内存。例如,**本地安全子系统服务(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>)

检查权限

To escalate privileges on a Windows system, it is important to first check the current privileges of the user. This can be done using various methods:

1. Whoami

The whoami command can be used to display the current user and group information, including the privileges associated with the user.

whoami /priv

2. Systeminfo

The systeminfo command provides detailed information about the system, including the privileges of the current user.

systeminfo

3. PowerShell

PowerShell can also be used to check the privileges of the current user. The following command can be used:

(Get-Process -id $pid).StartInfo.EnvironmentVariables

4. AccessChk

AccessChk is a command-line tool that can be used to check the privileges of a user or process. It provides detailed information about the access rights and privileges associated with a user or process.

accesschk.exe -a <username>

By checking the privileges of the current user, you can identify potential vulnerabilities and determine the appropriate privilege escalation techniques to use.

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

某些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。

待验证。

参考资料

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