freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Potato家族本地提权分析
2020-09-15 09:30:27

0x00 前言

在实际渗透中,我们用到最多的就是 Potato 家族的提权。本文着重研究 Potato 家族的提权原理以及本地提权细节。

0x01 原理讲解

1. 利用 Potato 提权的是前提是拥有SeImpersonatePrivilegeSeAssignPrimaryTokenPrivilege权限,以下用户拥有 SeImpersonatePrivilege 权限(而只有更高权限的账户比如 SYSTEM 才有 SeAssignPrimaryTokenPrivilege 权限):
- 本地管理员账户 (不包括管理员组普通账户) 和本地服务账户
- 由 SCM 启动的服务

PS:本机测试时即使在本地策略中授予管理员组普通用户SeImpersonatePrivilege特权,在 cmd.exe 中 whoami /priv 也不显示该特权,且无法利用;而SeAssignPrimaryTokenPrivilege特权则可以正常授予普通用户

2.Windows 服务的登陆账户
- Local System(NT AUTHORITY\SySTEM)
- Network Service(NT AUTHORITY\Network Service)
- Local Service(NT AUTHORITY\Local Service)

也就是说该提权是
- Administrator——>SYSTEM
- Service——>SYSTEM

服务账户在 windows 权限模型中本身就拥有很高的权限
在实际渗透过程中,拿到 webshell 下,用户权限是 IIS 或者 apache,或通过 SQLi 执行 xp_cmdshell, 此时手里的服务账户在进行操作时是低权限账户,而使用该提权手法可以直接获取 SYSTEM 权限

3.windows token
windows token 是描述安全上下文的对象,用户登陆后系统就会生成 token,创建新进程或新线程时这个 token 会不断拷贝
Token 成员:

用户账户的 (SID)
用户所属的组的 SID
用于标识当前登陆会话的登陆 SID
用户或用户组所拥有的权限列表
所有者 SID
所有者组的 SID
访问控制列表
访问令牌的来源
主令牌/模拟令牌
限制 SID 的可选列表
模拟等级:
Anonymous: server 无法模拟或识别 client
Identification: 可识别 client 的身份和特权,不能模拟
Impersonation: 可在本地系统模拟
Delegation: 可在远程系统上模拟
C:\WINDOWS\system32>whoami /priv
PRIVILEGES INFORMATION
----------------------
Privilege Name                  Description                                 State  
=============================== =========================================== =======
SeAssignPrimaryTokenPrivilege   Replace a process level token               Enabled
SeImpersonatePrivilege          Impersonate a client after authentication   Enabled


当用户具有SeImpersonatePrivilege特权,则可以调用**CreateProcessWithTokenW**以某个Token的权限启动新进程
当用户具有SeAssignPrimaryTokenPrivilege特权,则可以调用CreateProcessAsUserWToken权限启动新进程

0x02 历史土豆解析

1.HOT Potato(需要等待 windows update)
repo: https://github.com/foxglovesec/Potato
DBNS 欺骗,WPAD 和 Windows update 服务

原理:
(1)通过 HOST-DNS 使 UDP 端口耗尽——NBNS
(2)通过 fake WPAD prxy Server(劫持 http)
IE -http://Wpad/Wpaddat 刷新 WPAD 文件可能需要 30-60 分钟 
(3)HTTP>SMB NTML Relay(302-http://127.0.0.1/GETHASHSxxxx& #8221;-响应 401 是 NTML 身份验证请求,当是 Windows Update 服务请求时候,此命令将以「NT AUTHORITY \ SYSTEM」特权运行)

2.Rotten Potato
repo: https://github.com/foxglovesec/RottenPotato
它是通过 DCOM call 来使服务向攻击者监听的端口发起连接并进行 NTLM 认证, 需要SelmpersonatePrivilege权限

3.Jucy Potato(Rotten Potato 的加强版)
repo: https://github.com/ohpe/juicy-potato
需要 Selmpersonate、SeAssignPrimaryToken  两个权限
* 本地支持 RPC 或远程服务器支持 RPC 并能成功登陆
* 用户支持 Selmpersonate 或 SeAssignPrimaryToken 权限
* 开启 DCOM
* 可用的 COM 对象
常用:

JuicyPotato -p "whoami /priv"

4.Ghost Potato
repo: https://github.com/Ridter/GhostPotato
利用 CVE-2019-1384(Ghost Potato) Bypass MS-08068
原理:
(1)主机 A 向主机 B(访问|\B) 进行 SMB 认证的时候,将 pszTargetName 设置为 cifs/B, 然后在 type 2 拿到主机 B 发送 Challenge 之后,在 lsass 里面缓存 (Challenge,cifs/B).

(2)然后主机 B 在拿到主机 A 的 type 3 之后,会去 lsass 里面有没有缓存 (Challenge,cifs/b), 如果存在缓存,那么认证失败。

(3)这种情况底下,如果主机 B 和主机 A 是不同的主机的话,那 Isass 里面就不会缓存 (Challenge,cifs/B). 如果是同- -台主机的话, 那 Isass 里面肯定有缓存,这个时候就会认证失败。
(4)绕过了缓存的限制,因为 lsass 中的缓存,在 300s 后会自动消失,315s 后在发送 Type3

5.Pipe Potato
攻击者通过pipeserver.exe注册一个名为pipexpipespoolss的恶意的命名管道等待高权限用户来连接以模拟高权限用户权限,然后通过 spoolssClient.exe 迫使 system 用户来访问攻击者构建的恶意命名管道, 从而模拟 system 用户运行任意应用程序
原理:
(1)调用 CreateN amedPipe() 创建一个命名管道
(2)调用 ConnectNamedPipe() 接受该命名请求连接
(3)迫使高权限进程连接该命名管道并写入数据
(4)调用 ImpersonateNamedPipeClient() 派生 一个高权限进程的客户端

衍生版本:

PrintSpoofer
repo:
https://github.com/itm4n/PrintSpoofer
利用 spoolsv.exe 进程的 RPC 服务器强制 Windows 主机向其他计算机进行身份验证 
需要SelmpersonatePrivilegeSeAssignPrimaryToken权限

6.Sweet Potato(Juicy 土豆的重写)
repo: https://github.com/CCob/SweetPotato
COM/WinRM/Spoolsv 的整合版,也就是 Juicy/PrintSpoofer
从 Windows 7 到 windows10/windows server2019 的本地服务到 system 特权升级

0x03 小结

Potato 提权原理简单来说就是如下三条:
(1)诱使 "SYSTEM" 账户通过 NTLM 向控制的 TCP 节点进行身份验证
(2)以本地协商 "NT AUTHORITY \ SYSTEM" 账户的安全令牌进行 NTLM Relay
(3)模拟刚刚协商的令牌,达到提权的目的

0x04 参考链接

https://www.anquanke.com/post/id/204510
https://www.t00ls.net/articles-56281.html
https://docs.ioin.in/writeup/tools.pwn.ren/_2016_01_17_potato_windows_html/index.html
https://foxglovesecurity.com/2016/01/16/hot-potato/

# 本地提权 # 内网渗透 # 原理分析 # 红蓝对抗
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者