垃圾桶

EL PSY CONGROO.

Lz1y's avatar Lz1y

Ghost potato实际利用

Ghost Potato

在11月十二日那一天,Danyal Drew (@danyaldrew)公开了土豆系列的一个新漏洞 – Ghost Potato 。
关于这个漏洞的描述,作者已经写的非常详细了:
https://shenaniganslabs.io/2019/11/12/Ghost-Potato.html
文中也对土豆家族(Ntlm Relay)历史有着比较详细的介绍。
此次公开的漏洞就是对之前微软出具的补丁的绕过手段。关于这一块儿,我也不懂,都是代表告诉我的,相关文章:
https://mp.weixin.qq.com/s/hACLQ4UgdFXDdlB4CKKhXg
顺便帮代表打个广告:

奇安信 A-TEAM 北京招攻击队队长(资深redteam专家)、队员(两年左右攻击经验)。 欢迎有兴趣的私聊代表。简历发到 wufangdong@qianxin.com。

所以简单点的描述就是,这次的Ghost Potato实际上就是一种Ntlm反射,也就是relay受害者自己,过往对于net-Ntlm的常规利用手段,无外乎两种,第一种就是获取到Net-Ntlmv2 Hash,然后彩虹表爆破,而第二种就是使用Ntlm relay去攻击内网中其他同身份凭证的机器。实际在渗透过程当中,使用的并不多。
而Ntlm 反射可以直接去攻击受害者,而并不需要依赖其他主机存在同账号同密码的情况,可以说是非常的方便了,至于哪里方便,在后续利用相关具体说明。

漏洞简单介绍

根据文章作者的介绍,微软防护NTLM反射攻击的手段是根据challenge值的比对,而challenge值每过五分钟就可以清除一次,清除的触发条件就是有新的用户认证。
那么攻击流程就非常简单了:

  1. 受害者使用恶意Ntlm鉴权的服务
  2. 等待五分钟(+15S的容错期)的清除challenge的冷却期
  3. 攻击者使用错误的账号密码去登录受害者的SMB服务
  4. 等待十五秒容错期,保证challenge被清除
  5. relay到受害者的SMB服务中

这里作者使用的是WEBDAV服务,猜测是因为这个的POC比较好改2333。
魔改Impacket:
https://shenaniganslabs.io/files/impacket-ghostpotato.zip
这里我不知道是不是作者手误,在ntlmrelayx.py的215行,他将新加的参数给设置了缺省值,搞的只能使用他给的方式,将木马丢到目标启动目录2333,实在是不够优雅,将default删除掉即可。
我将其修改并且传到了Github:
https://github.com/Lz1y/impacket-ghostpotato
修改完后,就可以开始安装工作了,这里需要重新安装一次魔改后的impacket。
cd impacket-ghostpotato
pip uninstall impacket
pip install .

然后进入example直接运行ntlmrelayx.py即可:
python ntlmrelayx.py --no-smb-server -smb2support·

这里由于使用的是WEBDAV,而SMB在UNC中优先级要高一点,所以得手动关闭。

然后直接在受害者机器上访问我们的WEBDAV试试

攻击者端:

等待五分十五秒即可。
这里需要注意的是这里当然也受到kb2871997的限制,所以在Windows 2012以及之后的版本中也需要rid500的账户才能成功,后续也一样

实际利用

这个洞最可怕的就是在现实中通过各种组合拳可以达到非常恐怖的效果。这里简单列举几个:

PS:
关于Ntlm relay的玩法都可以在此基础上升级
https://osandamalith.com/2017/03/24/places-of-interest-in-stealing-netntlm-hashes/

在实际的测试过程当中,我们需要目标将其Net Hash自动的发送到我们这儿,但是之前提供的方式都是不支持WEBDAV自动认证的…

  1. Windows下的服务应用任意文件操作(读取,包含,写入等)
    由于Windows下有关于涉及UNC的文件操作都是会调用WebClient(未考证),所以造成了一个通杀的效果,只需要有文件操作就能通过NTLM反射直接GetShell。

  2. 钓鱼

  1. 内网ARP/DNS6/DHCP6劫持
    更加夸张,内网收割机,通过劫持让内网机器访问恶意资源,直接反射打掉权限。