温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Windows Token九种权限的利用分别是怎么样的

发布时间:2021-10-22 17:33:04 来源:亿速云 阅读:162 作者:柒染 栏目:系统运维

今天就跟大家聊聊有关Windows Token九种权限的利用分别是怎么样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

0x00 前言

普通用户(或者LocalService用户)的特殊Token有哪些可利用方法呢?能否提权?如何判断?

本文将要结合自己的经验,参考多个开源工具和资料,尝试对这个技巧做总结,分享学习心得。

参考的开源工具和资料:

  • Hot Potato: https://github.com/foxglovesec/Potato

  • powershell版本Hot Potato: https://github.com/Kevin-Robertson/Tater

  • Rotten Potato: https://github.com/breenmachine/RottenPotatoNG

  • lonelypotato: https://github.com/decoder-it/lonelypotato

  • Juicy Potato: https://github.com/ohpe/juicy-potato

  • https://github.com/hatRiot/token-priv

  • https://foxglovesecurity.com/2017/08/25/abusing-token-privileges-for-windows-local-privilege-escalation/

  • https://foxglovesecurity.com/2016/01/16/hot-potato/

  • https://foxglovesecurity.com/2016/09/26/rotten-potato-privilege-escalation-from-service-accounts-to-system/

  • https://foxglovesecurity.com/2017/08/25/abusing-token-privileges-for-windows-local-privilege-escalation/

0x01 简介

本文将要介绍以下内容:

  • 简要利用思路

  • SeImpersonatePrivilege权限对应的利用思路和开源代码

  • SeAssignPrimaryPrivilege权限对应的利用思路和开源代码

  • SeTcbPrivilege权限对应的利用思路和开源代码

  • SeBackupPrivilege权限对应的利用思路和开源代码

  • SeRestorePrivilege权限对应的利用思路和开源代码

  • SeCreateTokenPrivilege权限对应的利用思路和开源代码

  • SeLoadDriverPrivilege权限对应的利用思路和开源代码

  • SeTakeOwnershipPrivilege权限对应的利用思路和开源代码

  • SeDebugPrivilege权限对应的利用思路和开源代码

Windows Token九种权限的利用分别是怎么样的

0x02 简要利用思路

1、取得了目标的访问权限后,查看可用权限

whoami /priv

例如,普通用户具有的权限如下图。

Windows Token九种权限的利用分别是怎么样的

管理员用户具有的权限如下图。

Windows Token九种权限的利用分别是怎么样的

iis用户具有的权限如下图。

Windows Token九种权限的利用分别是怎么样的

Privilege Name项表示具有的权限,State表示权限的状态,我们可以通过WinAPI  AdjustTokenPrivileges将权限设置为Disabled或者Enabled

可供参考的实现代码:

https://github.com/3gstudent/Homework-of-C-Language/blob/master/EnablePrivilegeandGetTokenInformation.cpp

代码实现了开启指定权限(SeDebugPrivilege),并且查看当前用户名称和具有的权限

2、如果包含以下九个权限,我们就可以对其进一步利用

  • SeImpersonatePrivilege

  • SeAssignPrimaryPrivilege

  • SeTcbPrivilege

  • SeBackupPrivilege

  • SeRestorePrivilege

  • SeCreateTokenPrivilege

  • SeLoadDriverPrivilege

  • SeTakeOwnershipPrivilege

  • SeDebugPrivilege

注:

  • iis或者sqlserver的用户通常具有SeImpersonatePrivilege和SeAssignPrimaryPrivilege权限

  • Backup service用户通常具有SeBackupPrivilege和SeRestorePrivilege权限

0x03 SeImpersonatePrivilege权限的利用思路

参考资料:

https://github.com/hatRiot/token-priv/blob/master/abusing_token_eop_1.0.txt#L327

SeImpersonatePrivilege

身份验证后模拟客户端(Impersonatea client after authentication)

拥有该权限的进程能够模拟已有的token,但不能创建新的token

以下用户具有该权限:

  • 本地管理员组成员和本地服务帐户

  • 由服务控制管理器启动的服务

  • 由组件对象模型 (COM) 基础结构启动的并配置为在特定帐户下运行的COM服务器

通常,iis或者sqlserver用户具有该权限

利用思路

  • 利用NTLM Relay to Local Negotiation获得System用户的Token 可使用开源工具Rotten  Potato、lonelypotato或者Juicy Potato

  • 通过WinAPI CreateProcessWithToken创建新进程,传入System用户的Token  具有SeImpersonatePrivilege权限才能创建成功

  • 该Token具有System权限

可供参考的测试代码:

https://github.com/3gstudent/Homework-of-C-Language/blob/master/EnableSeImpersonatePrivilege.cpp

代码实现了开启当前进程的SeImpersonatePrivilege权限,调用CreateProcessWithToken,传入当前进程的Token,创建一个进程,配合RottenPotato,可用来从LocalService提权至System权限。

0x04 SeAssignPrimaryPrivilege权限的利用思路

参考资料:

https://github.com/hatRiot/token-priv/blob/master/abusing_token_eop_1.0.txt#L359

SeAssignPrimaryPrivilege

向进程(新创建或者挂起的进程)分配token

通常,iis或者sqlserver用户具有该权限

利用思路1

· 利用NTLM Relay to Local Negotiation获得System用户的Token

· 通过WinAPI CreateProcessAsUser创建新进程,传入System用户的Token

· 该Token具有System权限

可供参考的测试代码:

https://github.com/3gstudent/Homework-of-C-Language/blob/master/EnableSeAssignPrimaryTokenPrivilege.cpp

代码实现了开启当前进程的SeAssignPrimaryTokenPrivilege权限,调用CreateProcessAsUser,传入当前进程的Token,创建一个进程,配合RottenPotato,可用来从LocalService提权至System权限。

利用思路2

  • 利用NTLM Relay to Local Negotiation获得System用户的Token

  • 通过WinAPI CreateProcess创建一个挂起的新进程,参数设置为CREATE_SUSPENDED

  • 通过WinAPI NtSetInformationProcess将新进程的Token替换为System用户的Token

  • 该Token具有System权限

0x05 SeTcbPrivilege权限的利用思路

参考资料:

https://github.com/hatRiot/token-priv/blob/master/abusing_token_eop_1.0.txt#L418

SeTcbPrivilege

等同于获得了系统的***权限

利用思路

· 调用LsaLogonUser获得Token

  • 将该Token添加至Local System account组

  • 该Token具有System权限

可供参考的测试代码:

https://github.com/3gstudent/Homework-of-C-Language/blob/master/EnableSeTcbPrivilege.cpp

代码实现了开启当前进程的SeTcbPrivilege权限,登录用户test1,将其添加至Local System  account组,获得System权限,创建注册表项HKEY_LOCAL_MACHINE\SOFTWARE\testtcb

0x06 SeBackupPrivilege权限的利用思路

参考资料:

https://github.com/hatRiot/token-priv/blob/master/abusing_token_eop_1.0.txt#L495

SeBackupPrivilege

用来实现备份操作,对当前系统任意文件具有读权限

利用思路

 读取注册表HKEY_LOCAL_MACHINE\SAM、HKEY_LOCAL_MACHINE\SECURITY和HKEY_LOCAL_MACHINE\SYSTEM

导出当前系统的所有用户hash mimikatz的命令如下:

lsadump::sam /sam:SamBkup.hiv /system:SystemBkup.hiv

可供参考的测试代码:

https://github.com/3gstudent/Homework-of-C-Language/blob/master/EnableSeBackupPrivilege.cpp

代码实现了开启当前进程的SeBackupPrivilege权限,读取注册表,将其保存成文件C:\\test\\SAM、C:\\test\\SECURITY和C:\\test\\SYSTEM

0x07 SeRestorePrivilege权限的利用思路

参考资料:

https://github.com/hatRiot/token-priv/blob/master/abusing_token_eop_1.0.txt#L528

SeRestorePrivilege

用来实现恢复操作,对当前系统任意文件具有写权限

利用思路1

  • 获得SeRestorePrivilege权限,修改注册表HKLM\SOFTWARE\Microsoft\Windows  NT\CurrentVersion\Image File Execution Options

  • 劫持exe文件的启动

  • 实现提权或是作为后门

利用思路2

  • 获得SeRestorePrivilege权限,向任意路径写入dll文件

  • 实现dll劫持

  • 实现提权或是作为后门

可供参考的测试代码:

https://github.com/3gstudent/Homework-of-C-Language/blob/master/EnableSeRestorePrivilege.cpp

代码实现了开启当前进程的SeRestorePrivilege权限,创建注册表项HKEY_LOCAL_MACHINE\SOFTWARE\testrestore

0x08 SeCreateTokenPrivilege权限的利用思路

参考资料:

https://github.com/hatRiot/token-priv/blob/master/abusing_token_eop_1.0.txt#L577

SeCreateTokenPrivilege

用来创建Primary Token

利用思路

 通过WinAPI ZwCreateToken创建Primary Token

  • 将Token添加至local administrator组

  • 该Token具有System权限

可供参考的测试代码:

https://github.com/3gstudent/Homework-of-C-Language/blob/master/EnableSeCreateTokenPrivilege.cpp

代码实现了开启当前进程的SeCreateTokenPrivilege权限,创建Primary Token,将其添加至local  administrator组,开启SeDebugPrivilege和SeTcbPrivilege权限

0x09 SeLoadDriverPrivilege权限的利用思路

参考资料:

https://github.com/hatRiot/token-priv/blob/master/abusing_token_eop_1.0.txt#L626

SeLoadDriverPrivilege

用来加载驱动文件

利用思路

  • 创建驱动文件的注册表

reg add hkcu\System\CurrentControlSet\CAPCOM /v ImagePath /t REG_SZ /d "\??\C:\test\Capcom.sys" reg add hkcu\System\CurrentControlSet\CAPCOM /v Type /t REG_DWORD /d 1
  • 加载驱动文件Capcom.sys

  • Capcom.sys存在漏洞,系统加载后,可从普通用户权限提升至System权限,利用代码可参考:https://github.com/tandasat/ExploitCapcom

  • 获得System权限

可供参考的测试代码:  https://github.com/3gstudent/Homework-of-C-Language/blob/master/EnableSeLoadDriverPrivilege.cpp

代码实现了开启当前进程的SeLoadDriverPrivilege权限,读取注册表项hkcu\System\CurrentControlSet\CAPCOM,加载驱动文件Capcom.sys

0x0A SeTakeOwnershipPrivilege权限的利用思路

参考资料:

https://github.com/hatRiot/token-priv/blob/master/abusing_token_eop_1.0.txt#L688

SeTakeOwnershipPrivilege

同SeRestorePrivilege类似,对当前系统任意文件具有写权限

利用思路1

  • 获得SeTakeOwnershipPrivilege权限,修改注册表HKLM\SOFTWARE\Microsoft\Windows  NT\CurrentVersion\Image File Execution Options

  • 劫持exe文件的启动

  • 实现提权或是作为后门

利用思路2

  • 获得SeTakeOwnershipPrivilege权限,向任意路径写入dll文件

  • 实现dll劫持

  • 实现提权或是作为后门

可供参考的测试代码:

https://github.com/3gstudent/Homework-of-C-Language/blob/master/EnableSeTakeOwnershipPrivilege.cpp

代码实现了开启当前进程的SeTakeOwnershipPrivilege权限,修改注册表项hklm\SOFTWARE\Microsoft\Windows  NT\CurrentVersion\Image File Execution Options的权限,普通用户权限对其具有完整操作权限

后续的写操作:

reg add "hklm\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File  Execution Options" /v takeownership /t REG_SZ /d  "C:\\Windows\\System32\\calc.exe"

0x0B SeDebugPrivilege权限的利用思路

参考资料:

https://github.com/hatRiot/token-priv/blob/master/abusing_token_eop_1.0.txt#L736

SeDebugPrivilege

用来调试指定进程,包括读写内存,常用作实现dll注入

利用思路

  • 找到System权限的进程

  • dll注入

  • 获得System权限

可供参考的测试代码:

https://github.com/3gstudent/Homework-of-C-Language/blob/master/EnableSeDebugPrivilege.cpp

代码实现了开启当前进程的SeDebugPrivilege权限,向指定进程注入dll

0x0C 小结

本文总结了普通用户(或者LocalService用户)Token中九种权限的利用方法,分析利用思路,完善实现代码。

看完上述内容,你们对Windows Token九种权限的利用分别是怎么样的有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI