NTLM中继攻击

@wintry大约 2 分钟

NTLM Relay

NTLM Relay 利用NTLM协议漏洞,允许攻击者在网络中获取用户凭据并获得对其他计算机的访问权限

1)截获NTLM Hash

在内部网络中使用 Responderopen in new window 截获目标计算机向其他计算机发送的NTLM身份验证请求,提取Hash。

配置文件设置 CaptureMultipleCredentials=On,并把对应协议的 server 监听服务打开

responder -wfF -I eth0 # 开始毒化,监听所有请求信息

-I  # 设置监听的网络接口,`eth0`
-f  # 收集NBT_NS或LLMNR的信息
-w  # 设置WPAD服务器

可以抓到其他机器用于验证身份的NTLM Hash

img

使用以下工具可以监测网络中是否存在截获请求的响应器

https://github.com/codeexpress/respounderopen in new window

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就无法进行攻击。

14

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 里面肯定有缓存,这个时候就会认证失败。