Rogue Potato绕过

admin 2022年11月2日02:03:30评论71 views字数 3134阅读10分26秒阅读模式

出品|博客(ID:moon_flower)

声明







以下内容,来自moon_flower作者原创,由于传播,利用此文所提供的信息而造成的任何直接或间接的后果和损失,均由使用者本人负责,长白山攻防实验室以及文章作者不承担任何责任。

Potato提权原理







通过各种方法在本地NTLM中继获取SYSTEM令牌,再通过模拟令牌执行命令,通过以上方法提权统称为potato(不管是否基于原potato修改)。就像SQL注入,通过特定SQL语句注入获取特定数据库信息统称为SQL注入,而不管如何编写的SQL语句,是否基于别人的SQL语句修改。

提权条件







1 本地NTLM中继获取SYSTEM令牌
2 SeImpersonatePrivilege特权

测试中任意用户都可以通过本地NTLM中继获取到SYSTEM令牌权限,但是由于USER默认不开户SeImpersonatePrivilege特权,无法模拟令牌创建进程无法执行命令,所以会导致很多Potato提权失败。如下方”Win7管理员提权至SYSTEM“图片上部分就是USER部分的Potato提权失败,下方是管理员权限,而其它环境都是IIS权限。所以为了方便Ladon默认也显示当前用户SeImpersonatePrivilege特权情况。

Rogue Potato







高版本的Windows DCOM解析器不允许OBJREF中的DUALSTRINGARRAY 字段指定端口号,既然这样就在一台远程主机上的135 端口做流量转发,将其转回受害者本机端口,并实现了一个恶意的RPC OXID解析器。
Rogue Potato绕过OXID解析器是rpcss服务的一部分,在每台支持COM+ 的机器上的135端口上运行 ,它执行两个重要任务:

1.存储连接远程对象所必须的 RPC 字符串绑定,并将它们提供给本地客户机。
2.将 ping 消息发送给本地机器拥有客户端的远程对象,并接收本地机器运行的对象的 ping 消息。(支持 COM+ 垃圾回收机制)

OXID解析器的工作流程如下:
Rogue Potato绕过
其中客户端就是RPCSS服务,它将尝试连接到我们的恶意OXID解析器。
在正常情况下,客户端的OXID解析序列中的所有请求都经过身份验证后,就会模拟运行我们选择的CLSID对应COM 的用户(SYSTEM)。

土豆系列的攻击就是拦截这个认证过程并窃取令牌。看一下RPC支持的协议,我们伪造的OXID解析器能选择协议序列标识(protocol sequence),也就是说可以选择调用的具体协议。

RPC transport RPC protocol sequence string
SMB ncacn_np (see section 2.1.1.2)
TCP/IP (both IPv4 and IPv6) ncacn_ip_tcp (see section 2.1.1.1)
UDP ncadg_ip_udp (see section 2.1.2.1)
SPX ncacn_spx (see section 2.1.1.3)
IPX ncadg_ipx (see section 2.1.2.2)
NetBIOS over IPX ncacn_nb_ipx (see section 2.1.1.4)
NetBIOS over TCP ncacn_nb_tcp (see section 2.1.1.5)
NetBIOS over NetBEUI ncacn_nb_nb (see section 2.1.1.6)
AppleTalk ncacn_at_dsp (see section 2.1.1.7)
RPC over HTTP ncacn_http (see section 2.1.1.8)

当使用ncacn_ip_tcp的时候,它允许RPC直接通过TCP。我们使用 IRemUnknown2接口运行RPC服务器,并尝试调用RpcImpersonateClient 的SecurityCallback来验证请求。

在resolveoxid2响应中返回ncacn_ip_tcp:loca-lhost[9998],触发RPC服务器的身份验证(但是只有一个标识符)。

综上,如果我们将OXID 解析请求重定向到我们控制下的端口135的远程服务器,并将请求转发到我们的本地 Fake RPC 服务器,我们将仅获得一个匿名登录。如果将OXID解析请求解析到一个假的RPC服务器,那么将会在 IRemUnkown2 查询的时候获得一个系统令牌(但只是个标识令牌)。

但作者后续借鉴了PrintSpoofer 的利用思路,使用了ncacn _ np(向连接的命名管道)。这里选用了 epmapper 管道(和RpcEptMapper服务有关,用于解析RPC接口标识符以传输端点)。

这个服务和rpcss服务共享进程空间,并且都在NETWORK SERVICE帐户下运行,那么如果能在这个进程下模拟该账户,就可以窃取SYSTEM令牌。但是根据协议的设计,即使使用了ncacn_np:localhost[piperoguepotato],也会最终连接到epmapper管道。


到这里已经有些眉目了,遇到的问题和PrintSpoofer 中的一样,同样也可以通过在主机名中插入/实现绕过。如果返回的绑定信息是

ncacn_np:localhost/pipe/roguepotato[pipeepmapper],那么RPCSS就会尝试连接不存在的命名管道roguepotatopipeepmapper,那我们在此管道上进行监听,就能获得SYSTEM权限的模拟令牌了!

工具地址:

https://github.com/antonioCoco/RoguePotato


Ghost potato







为防止用户relay本机,在lsass中添加缓存绕过,如果缓存中有 (Challenge,cifs/B)就会认证失败。然而这个(Challenge,cifs/B)是有时效性的(300s),所有只要等300s再发送type3就可以bypass了。
Rogue Potato绕过用修改后的impacket 

https://shenaniganslabs.io/files/impacket-ghostpotato.zip可以直接打,用法和MS08-068类似。


SweetPotato







集成了前面几种土豆触发NTLM认证的方式,包括:COM,WinRM,Spoolsv,其中WInRM的攻击原理参考:https://decoder.cloud/2019/12/06/we-thought-they-were-potatoes-but-they-were-beans/

大致思路就是当WinRM在当前系统未启用时,攻击者监听本机5985端口,BITS 服务会向 WinRM5985发起 NTLM 认证,
工具地址:https://github.com/CCob/SweetPotato

参考文献







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

    • https://www.anquanke.com/post/id/254904

    • https://decoder.cloud/2020/05/11/no-more-juicypotato-old-story-welcome-roguepotato/

    • https://xz.aliyun.com/t/7087

    • https://decoder.cloud/2019/12/06/we-thought-they-were-potatoes-but-they-were-beans/



Rogue Potato绕过
Rogue Potato绕过
Rogue Potato绕过

▇ 扫码关注我们 ▇

长白山攻防实验室

学习最新技术知识


原文始发于微信公众号(长白山攻防实验室):Rogue Potato绕过

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年11月2日02:03:30
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Rogue Potato绕过http://cn-sec.com/archives/1383804.html

发表评论

匿名网友 填写信息