LLMNR (Link-Local Multicast Name Resolution) 是一种用于在局域网中解析主机名到IP地址的协议。它通常用于替代基于DNS的主机名解析,特别是在没有DNS服务器或者DNS服务器不可用的情况下。
LLMNR(Link-Local Multicast Name Resolution)虽然是一个有用的协议,但在安全性方面也存在一些公开的漏洞和安全风险,主要集中在以下几个方面:
1.中间人攻击:
- LLMNR使用UDP协议进行通信,并且消息未加密,因此容易受到中间人攻击的影响。攻击者可以在局域网内截取LLMNR消息,并篡改其中的内容,例如向客户端发送虚假的响应,导致客户端与攻击者控制的恶意服务进行通信。
2.信息泄露:
- LLMNR消息通常包含设备的主机名等信息,这可能导致信息泄露问题。攻击者可以通过监听LLMNR消息获取到设备的主机名,进而对网络进行侦察或识别特定设备。
3.拒绝服务攻击(DoS攻击):
- 攻击者可以发送大量的伪造LLMNR查询请求,从而占用网络带宽或消耗目标设备的处理能力,导致服务不可用或网络延迟增加。
4.缓存投毒:
- 在某些情况下,LLMNR响应可能被缓存到设备中,攻击者可以发送虚假的LLMNR响应以缓存投毒的方式影响设备对特定主机名的解析,从而引导设备与攻击者控制的恶意服务通信。
5.安全配置不当:
- 一些设备可能默认启用LLMNR而没有提供关闭选项,这可能增加了安全风险,特别是在需要高度安全性的环境中。
为了减少这些安全风险,建议在企业网络中,特别是需要高度安全性的场所,考虑禁用或限制LLMNR的使用,并采取其他更安全的名字解析和服务发现机制,如DNS-SD(DNS Service Discovery)和mDNS(Multicast DNS)。
要禁用 LLMNR (Link-Local Multicast Name Resolution) 流量,最彻底的方法是在防火墙上同时封锁其使用的特定端口 UDP 5355 以及多播地址 224.0.0.252。
在管理员权限的 CMD 终端中,请执行以下命令:
禁止 LLMNR 出站流量(防止本机发起查询)
1 | netsh advfirewall firewall add rule name="禁止LLMNR出站" dir=out action=block protocol=UDP remoteport=5355 remoteip=224.0.0.252 |
禁止 LLMNR 入站流量(防止响应他人的查询)
1 | netsh advfirewall firewall add rule name="禁止LLMNR入站" dir=in action=block protocol=UDP localport=5355 |
彻底禁用的建议
虽然防火墙可以拦截流量,但在 Windows 系统层彻底关闭该功能是更“优雅”的做法。如果你有权限修改注册表,可以在 CMD 中直接执行以下命令:
1 | reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient" /v "EnableMulticast" /t REG_DWORD /d 0 /f |
执行此命令后需重启电脑生效,这会从系统底层直接停止发送 LLMNR 包。
如何查看规则?
1 | netsh advfirewall firewall show rule name="禁止LLMNR出站" |