NTLM-Relay攻击
介绍
也叫 NTLM 重放攻击,NTLM 中继攻击。
漏洞点
这里要先了解 Windows系统名称解析顺序 。
当我们访问一个共享时 net use \aaa ,其寻找这个主机名称会遵循以下的步骤:
- 本地
hosts文件(%windir%\System32\drivers\etc\hosts) DNS缓存/DNS服务器- 链路本地多播名称解析(
LLMNR)和NetBIOS名称服务(NBT-NS)
如果没有在1、2项中找到对应名称,系统就会通过链路本地多播名称解析( LLMNR )和 Net-BIOS 名称服务( NBT-NS )在本地进行名称解析。这时,客户端就会将未经认证的 UDP 广播到网络中,询问它是否为本地系统的名称,由于该过程未被认证,并且广播到整个网络,从而允许网络上的任何机器响应并声称是这台机器。
因此当用户输入不存在、包含错误或者 DNS 中没有的主机名时,通过 Responder 工具( kali 自带)监听 LLMNR 和 NetBIOS 广播,就可以伪装成受害者要访问的这台机器,并从而让受害者交出相应的登陆凭证。核心过程与 arp 欺骗类似,我们可以让攻击者作中间人,截获到客户端的 Net-NTLM Hash 。
注意
Net-NTLM Hash和NTLM Hash加密的规则不一样,因此不能用Net-NTLM Hash去使用哈希传递攻击,但是它们原文中都包含用户的登录密码,因此被破解后都可以得到受害者的登录密码。
攻击前提
如果被攻击主机开启了 SMB 签名,被攻击主机就会验证攻击机的身份,因此就无法使用这个攻击,不过域内用户是默认关闭 SMB 签名的,域控是默认开启 SMB 签名的。
攻击实验
先要准备 Responder 工具。
https://github.com/lgandx/Responder
这个工具中在 kali 中也有,在 /usr/share/responder 目录。不过重新下载,使用新版的会更好。
方式一:破解Net-NTLM Hash
使用 Responder 工具监听被攻击机所在网络的广播信息。
1 | sudo responder -I eth0 |
之后在被攻击机上模拟发起 NTLM 请求
1 | net use \\aaaa\bbb |
responder 就会截获被攻击机的数据包,然后伪装自己是被攻击机要访问的机器,从而索取被攻击机的 Net-NTLM Hash 。

然后执行下面的操作破解 Hash 。
1 | # 将历史捕捉到的Hash都再次Dump出来,然后存到DumpNTLMv1.txt和DumpNTLMv2.txt |
方式二:重放Net-NTLM Hash
上面的方式一需要暴力破解 Hash ,难度往往较大,这里可以考虑使用重放攻击。
重放到SMB利用
NTLM 重放到 SMB 利用需要被攻击主机关闭 SMB 签名,因此我们先通过 Responder 工具的 tools 目录里的 RunFinger.py 工具来看一下某个网段的主机是否开启了 SMB 签名(对应下图中的 Signing 字段)。
1 | python RunFinger.py -i 192.168.163.0/24 |

这里需要重放的
Net-NTLM Hash是administrator的才行,不然别的机器也不会让你访问。
先修改 Responder.conf ,将其中的 SMB 和 HTTP 修改为 Off 。

然后在两个不同的终端分别执行下面两个命令。 MultiRelay.py 在 tools 目录下。
1 | sudo responder -I eth0 |
然后在某个主机用管理员权限执行 net use \\aaa\bb ,攻击机 kali 就会截获其 Net-NTLM Hash ,然后 MultiRelay.py 就会将其重放给 192.168.163.140 这个机器,如果成功了在运行 MultiRelay.py 的终端就会得到 140 这台机器的 shell ,从而拿下 140 这台主机。
其它
类似地,使用 NTLM 认证的服务有很多,我们还可以重放 Net-NTLM 到 Exchange ,LDAP ,AD CS 来利用,这里就不细说了。最常用的还是重放到 SMB 。
实战利用
上面的攻击最关键的前提是域内有主机发起了 NTLM 请求,所以在实战中通过钓鱼诱导域内人员发起 NTLM 请求很关键。在 Windows 中,通过设置指向恶意服务器的 UNC 路径,能够使受害机使用当前用户凭证向恶意服务器发起 NTLM 认证。这里概括介绍几种常用的诱导方法。
- 执行会发起
NTLM请求的命令。(不过可能性比较小) - 利用
desktop.ini文件,修改其IconResource属性(文件夹的图标路径)为指向恶意服务器的UNC路径,从而域内用户一访问此文件夹就会自动发起NTLM请求。类似的还有SCF文件,PDF文件,Office文档。 - 利用
XSS漏洞发起NTLM请求。 - 利用
SQL注入发起NTLM请求。
参考文章
https://xz.aliyun.com/t/12627
https://www.freebuf.com/articles/system/194549.html




