LLMNR(Link-Local Multicast Name Resolution)协议是一个用于对特定网络中没有 DNS 服务器的机器进行命名解析的协议。在 Windows Vista 和之后的版本中,LLMNR 已经被默认开启。LLMNR 使用组播地址和多播 DNS 查询协议来实现单个主机名的解析。
一、LLMNR 的工作原理
在一个网络中,如果一个主机需要解析另一台主机的名称时,它会首先轮询自己的 DNS 解析器。但是,如果在本地 DNS 中找不到该主机名,则该查询将会失败。在这种情况下,LLMNR 就会发挥作用。
当 LLMNR 启用时,当一个主机发现它无法使用 DNS 解析某个名称时,它会向一个带有相同的 LLMNR 回答的同一组中的主机发送一个请求。如果请求被另一个主机收到,该主机将会使用 ICMPv6 协议发回一条回答,该回答将包含它的 IPv6 地址。
如果请求在 IPv6 网络上未能被处理,那么该主机将转而使用 IPv4 的多播查询协议,这种协议称为“NetBIOS Name Service (NBT-NS)”。这个协议查找在机器上运行的 NetBIOS 服务,以便解决主机名。如果可以找到 NetBIOS 服务,则 NBT-NS 将会返回该服务的 IP 地址。
二、LLMNR 的应用场景
LLMNR 使用于在同一本地网络中的两台 Windows 主机之间进行通讯。LLMNR 的优势是在于它可以让不同操作系统的主机名解析更加容易,并且开启 LLNMR 能够在没有 DNS 服务器的网络中使主机能够互相发现、互相通信。
其他我们在这里列举一下 LLMNR 的一些适用场景:
1、当 DNS 服务器不可用时,LLMNR 可以用来帮助计算机对于其他计算机进行名称解析。
2、当两台 Windows 计算机连接在同一局域网内时,LLMNR 可以将所有主机都作为相同的广播域项呈现,进而在它们之间实现基本的名称解析服务。
三、LLMNR 的流量安全性问题
LLMNR 使用组播地址和多播查询协议,因此由于其开放的传输方式,可能会引发一些网络安全问题。攻击者可以通过监听网络流量、伪造回答数据信息等方式,从而对 LLNMR 实现的局域网进行钓鱼或劫持攻击。
为了防止 LLNMR 的安全问题,以下是一些建议:
1、尝试禁用 LLMNR 协议,这样就可以避免基于 LLMNR 的攻击。这样可以通过增加特定的组策略来实现:计算机配置 - 管理模板 - 网络 - DNS 客户端 - "禁用 Link-Local Multicast Name Resolution"。
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\DNSClient] "EnableMulticast"=dword:00000000
2、在网络边界上采取策略和安全措施来防止未经授权的网络访问和窃听。
3、在网络上设置合适的访问控制,同时禁止不必要的服务和协议。
四、总结
LLMNR 协议是一个用于对特定网络中没有 DNS 服务器的机器进行命名解析的协议。LLMNR 已经被默认开启。LLMNR 使用组播地址和多播 DNS 查询协议来实现单个主机名的解析。LLMNR 适用于在同一本地网络中的两台 Windows 主机之间进行通讯。由于其开放的传输方式,可能会引发一些网络安全问题。为了防止 LLNMR 的安全问题,建议采取一些安全措施。