目录
在上一篇笔记中,介绍了ntlm网络认证的原理 ——> NTLM网络认证协议分析及Net-NTLMhash的获取,我们获取了Net-NTLMhash值,但是我们爆破不出密码,可以使用NTLM-relay攻击,relay就是中继的意思。
NTLM Relay原理
- 在Client视角下,Attacker是它的服务端,模拟客户端完成访问请求。
- 在Server视角下,Attacker是它的客户端,伪造客户端完成身份验证。
攻击者所做的事情只是把所有客户端的请求relay到服务端,并把所有服务端的请求relay到客户端。而在服务端看来,一直以来只有攻击者在跟他交互,所以自然而然就认为攻击者就是客户端,这样攻击者就达到了伪造成真正客户端的目的。
NTLM Relay攻击方式
工作组:
NTLM Relay攻击在工作组环境下感觉用处不大,因为工作组只是在一个内网环境中,各个机器并没有明确关系,所以这个时候relay的话需要账号密码相同,但是如果账号密码相同的话,为什么不直接用哈希传递呢?
域:
域环境中的hash都统一存储在域控的NTDS.dit中,如果域内没有限制域用户登录到指定机器,那么就能域用户relay到其他机器或者直接使用域控relay到域机器(域控默认开启smb签名,而其他域机器默认不开启
)
实验环境:
- 域控 192.168.10.2
- 域成员 192.168.10.5、192.168.10.6(域管理员登录)
攻击前提:
- 域内主机的 SMB 签名需禁用(false)默认禁用。但是域控默认开启smb签名。可以先用responder工具包里面的RunFinger.py脚本扫描域内机器的SMB签名的开放情况 RunFinger.py -i ip段
Responder
1. 修改一下responder的配置文件 Responder.conf,不让其对 hash 进行抓取。将SMB和HTTP的On改为Off:

2. 启动 Responder.py
./Responder.py -I eth1
重启 Responder.py,准备毒化(这里responder的作用就是当访问一个不存在的共享路径,将名称解析降到LLMNR/NBNS时,来抓取网络中所有的LLMNR和NetBIOS请求并进行响应)

3. 启动MultiRelay.py
python3 MultiRelay.py -t 要攻击的域内目标 -u ALL
这里获取 10.5的权限
4. 域管理员账号或域控所在机器触发无效名称解析
为什么要域管理员账号或域控所在机器触发无效名称解析了?因为net use进行网络连接时,我们可以使用普通域账号进行连接,但是权限很低,查看不了目录。所以需要使用域管理员进行net use连接
192.168.10.6使用域管理账号进行了登录,然后访问一个随机的名称。此时kali就会获取到10.6机器域管理员的net ntlm-hash对目标进行登录
获取到权限
认证过程
真实环境中如何攻击?
当我们拿下内网一台web机器时,在其如管理后台Web插入一条XSS,当受害者访问后台时,我们便可以自动获取其Net-NTLM Hash。双击html就能出发攻击
