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