NTLM中继
其实简单来说,ntlm中继攻击就是一种中间人攻击
Windows系统域名解析顺序
- 本地hosts文件(%Systemroot%\System32\drivers\etc\hosts)
- DNS缓存/DNS服务器
- 链路本地多播名称解析(LLMNR)和NetBIOS名称服务(NBNS)
当1,2步请求失败时,Windows系统就会通过LLMNR和NetBIOS名称服务在本地进行名称解析。这时,客户端就会将未经认证的UDP广播到网络中,询问它是否为本地系统的名称。这时我们监听网段的请求,就可以对信息进行捕捉,我们可以监听到的大多都是Net-NTLM hash,他并不是我们明文的直接hash值,所以我们不可以利用它直接进行横向攻击。
smb中继
smb中继攻击是基于ntml中继攻击的一种,因为SMB的认证是可以基于NTLM协议或者kerberos协议
对于SMB协议,客户端在连接服务端时,默认先使用本机的用户名和密码hash尝试登录,所以可以模拟SMB服务器从而截获Net-NTLM hash,进行破解明文,或进行中继
演示
环境:
kali:10.10.10.160
域控:10.10.10.10
pc1:10.10.10.201
pc2:10.10.10.80
利用LLMNR和NetBIOS截取Net-NTLM Hash
使用responder监听同域内中所有主机的广播请求:
pc1上输入个错误的地址,让其通过LLMNR和NetBIOS进行名称解析:
得到hash:
利用smb 中继进行攻击
再说smb攻击之前,先介绍一下SMB签名
SMB签名是一种服务器与客户端协商以使用继承的会话密钥对所有传入的数据包进行数字签名的配置。这样的话,即使NTLM会话还是可能被Relay,服务器也不会被利用,因为攻击者缺少会话密钥。在Active
Directory 网络中只有域名控制器默认开启SMB签名,其他的所有服务器或工作组默认不受保护。所以只有被攻击的目标机器SMB签名关闭的时候,才会攻击成功
探测一波,可以看到与前面说的比较符合,只有域控默认会开启smb签名:
可以关掉:
reg add HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters /v RequireSecuritySignature /t REG_DWORD /d 0 /f
利用responder+MultiRelay.py获取shell:
修改下Responder.conf :
开启responder与MultiRelay.py,填好要攻击的目标pc2的ip:
其他机器上随便传一个smb流量:
攻击成功:
利用 smbrelayx.py 获取shell:
原理: 伪造一个我们恶意的SMB服务器,当内网中有机器访问这个我们精心构造好的SMB服务器时, smbrelayx.py 将抓到Client1 的 hash ,然后 smbrelayx.py 用抓取到的 Client1 的 hash 重 放给 Client2
指定要攻击的机器ip:
在其他机器上传一个smb的流量:
命令执行成功: