NTLM中继攻击
NTLM Relay
NTLM Relay 利用NTLM协议漏洞,允许攻击者在网络中获取用户凭据并获得对其他计算机的访问权限
1)截获NTLM Hash
在内部网络中使用 Responder 截获目标计算机向其他计算机发送的NTLM身份验证请求,提取Hash。
配置文件设置 CaptureMultipleCredentials=On
,并把对应协议的 server
监听服务打开
responder -wfF -I eth0 # 开始毒化,监听所有请求信息
-I # 设置监听的网络接口,`eth0`
-f # 收集NBT_NS或LLMNR的信息
-w # 设置WPAD服务器
可以抓到其他机器用于验证身份的NTLM Hash
使用以下工具可以监测网络中是否存在截获请求的响应器
https://github.com/codeexpress/respounder
2)中继哈希
将NTLM哈希中继到目标计算机上的另一个服务,比如SMB(文件共享)。
目标计算机收到NTLM哈希后,会尝试将其发送到域控制器进行验证,但并不知道这个哈希是从攻击者那里获取的。域控制器验证NTLM哈希,并将验证结果发送给目标计算机,使攻击者获得对目标计算机的访问权限,无需知道实际密码。
首先用fscan扫描下域内主机 SMB
签名已禁用了没有,禁用了则能继续。
如果开启了可以在注册表中进行修改子健为0,默认为1
reg add HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters /v RequireSecuritySignature /t REG_DWORD /d 0 /f
Relay To SMB
利用Impacket套件中的smbrelayx.py脚本进行中继攻击。
首先使用Responder.conf关闭HTTP和SMB服务器,因为如果开启了smb Signing就无法进行攻击。
python3 smbrelayx.py -h <DC_IP> -c whoami
然后在被控主机访问一个不存在的主机 \\\abcdefg
当被控主机访问一个不存在的主机时,就会触发LLMNR协议,攻击者捕获到其NTLM Hash,然后再把这段Hash重放到DC,一旦成功,即可执行任意命令。
NTLM Reflect
JuicyPotato原理 就是利用了NTLM反射,当拿到用户的 smb 请求之后,把请求 Relay 回用户本身,即 Reflect
。从而控制机子本身。
主机 A 向主机 B(访问 \\B
) 进行 SMB 认证的时候,将 pszTargetName
设置为 cifs/B
, 然后在 type 2
拿到主机 B 发送 Challenge
之后,在 lsass
里面缓存 (Challenge
,cifs/B)。
然后主机 B 在拿到主机 A 的 type 3
之后,会去查看 lsass
里面有没有缓存 (Challenge
,cifs/b
),如果存在缓存,那么认证失败。
这种情况底下,如果主机 B 和主机 A 是不同的主机的话,那 lsass
里面就不会缓存 (Challenge
,cifs/B
)。如果是同一台主机的话,那 lsass
里面肯定有缓存,这个时候就会认证失败。