LLMNR NBT-NS mDNS Response Spoofing
1. LLMNR/NBT-NS Response Spoofing
LLMNR 和 NBT-NS(NetBIOS)欺骗/投毒是众所周知的内网攻击手段,至今仍在许多环境中有效。
LLMNR 代表链路本地多播名称解析,而 NBT-NS 代表 NetBIOS 名称服务,NetBIOS 是网络基本输入/输出系统的缩写。这些遗留协议默认启用,并且像许多其他问题一样,即使在域控制器/域功能级别升级后,它们仍可能保留在网络中。
1.1. 原理
LLMNR 和 NBT-NS(NetBIOS)欺骗/投毒是众所周知的内网攻击手段,至今仍在许多环境中有效。LLMNR 代表链路本地多播名称解析,而 NBT-NS 代表 NetBIOS 名称服务,NetBIOS 是网络基本输入/输出系统的缩写。这些遗留协议默认启用,并且像许多其他问题一样,即使在域控制器/域功能级别升级后,它们仍可能保留在网络中。
LLMNR 协议允许主机与同一内部网段上的其他主机进行名称解析,无需依赖 DNS。当 DNS 名称服务器请求失败时,如果未禁用 LLMNR 和 NBT-NS 协议,Windows 系统将尝试使用这两种协议进行备用名称解析。
LLMNR 和 NBT-NS 在内部网络广播的主要问题在于:如果 DNS 名称解析失败,客户端(系统)会向整个本地网段发送未经身份验证的 UDP 广播,询问网段内是否有其他系统拥有其正在查找的名称。由于此广播过程未经身份验证即向整个网络发送,网络上的任何机器都可以代替被请求的机器进行响应。
攻击者可以使用诸如 Responder 之类的工具监听 LLMNR/NBT-NS 广播,并伪装成客户端试图进行身份验证的目标机器来发送欺骗性响应。在此身份验证过程中,客户端机器会发送 NTLMv2 密码哈希(如果网络中启用了此传统协议,有时也可能是 NTLMv1)
1.2. 利用场景
| 滥用案例 | 描述 |
|---|---|
| 用户输入错误 | 用户误输入 UNC 路径或主机名(如 \fileservr),当 DNS 解析失败且启用了 LLMNR/NBT-NS 广播时,恶意 Responder 服务器会响应,从而捕获 NTLMv2 哈希。 |
| Windows 代理自动检测 (WPAD) | 默认情况下,Windows 尝试通过 WPAD 发现代理。若 DNS 中未定义代理主机,客户端会通过 LLMNR/NBT-NS 请求 WPAD,Responder 响应后导致哈希被捕获。 |
| Chrome 浏览器 | 在地址栏输入搜索词时,Chrome 会同时进行主机名解析。启动时解析随机主机名的行为也会激活名称解析,常导致密码哈希被捕获。 |
| 配置不当的应用程序/服务 | 某些程序自动发现网络资源(如打印机或文件共享)。若缺少正确 DNS 记录且启用了 LLMNR/NBT-NS,系统将回退使用这些协议。 |
| 未受管理/遗留设备 | 这些设备可能触发回退名称解析机制,使其容易受到欺骗性回复的影响,进而导致凭据泄露。 |
| DNS 服务器配置错误 | 客户端或服务器端的 DNS 配置错误可能导致名称解析问题,从而使通过这些协议实施的投毒攻击获得成功。 |
1.3. 缓解措施
LLMNR 与 NBT-NS 响应欺骗攻击可通过禁用这两种协议相对容易地进行修复。若仅禁用 LLMNR,Windows 系统将转而依赖 NBT-NS 进行名称解析,因此攻击仍可能发生。
1.3.1. 禁用LLMNR:
可以通过组策略禁用 LLMNR。理想的做法是创建一个新的 GPO,而不是通过默认域策略禁用它。创建一个专用的 GPO,例如 Disable LLMNR ,将使其更易于审计、更容易针对特定 OU、更容易回滚,并避免编辑域级基线策略。
- 创建新的GPO
Computer Configuration → Administrative Templates → Network → DNS Client → turn off multicast name resolution- 右键单击
Group Policy Objects并选择New - 为 GPO 命名,这里命名为
Disable LLMNR - 右键点击 GPO 并点击
edit。浏览至设置Turn off multicast name resolution,点击Enabled然后Apply
1.3.2. 禁用 NBT-NS
与 LLMNR 不同,NBT-NS 没有可全局应用的特定组策略对象设置,因此必须在主机级别进行配置
NBT-NS 可以通过每台主机的网络连接设置来禁用
具体过程参考原文
2. mDNS
2.1. 介绍
响应欺骗攻击的另一个潜在目标是多播 DNS(mDNS),
mDNS 随 Windows 10 1703 版本引入。是由苹果公司开发的,此协议旨在实现无需 DNS 服务器或用户交互的本地网络名称与服务发现。 它通过 UDP 端口 5353 应用于智能电视、打印机、机顶盒、无线音箱、无线屏幕镜像等领域
2.2. 修复 mDNS 响应欺骗
因为任何操作系统都可能同时运行多个 mDNS 解析器,且 mDNS 使用 UDP而非 TCP,因此可能有多个服务同时监听该端口。再加上很多第三方程序不依赖windows自带的mDNS,实现自己的mDNS堆栈,用于发现对等设备、共享内容、支持跨设备同步或投屏等。
所以即使禁用了windows内置的mDNS解析器,但其他应用程序仍可能发送 mDNS 查询或接受 mDNS 回复,只要其中任何一个执行 .local 查找并接受伪造的回复,它们仍然容易受到攻击(例如 Chrome)
微软的官方建议是使用防火墙。
- 在 Windows Defender 防火墙中为所有配置文件(公共、专用、域)禁用入站 mDNS。这将阻止所有入站 mDNS 流量,但可能会给远程工作人员带来问题。
- 仅在域配置文件中禁用 mDNS,这样不会影响远程工作人员,但会阻止企业网络内的 mDNS
- 在 Windows Defender 防火墙中禁用出站流量的 mDNS。这仅在需要高安全性的情况下才必要,因为通常阻止入站 mDNS 流量已足够。
与 LLMNR/NBT-NS 不同,mDNS 通常是设备和服务正常运行所必须之物。现代计算机环境下,很多设备都使用mDNS,完全阻止入站mDNS流量是不可取的,他会影响如chrome、屏幕共享、协同办公等软件的正常工作
一种折衷方案可以是结合使用 Windows Defender 防火墙配置文件、应用程序白名单以及一些缓解措施,使得响应欺骗攻击难以或几乎不可能达成目标。这包括启用 SMB 签名、LDAP 签名、LDAP 通道绑定、强密码策略、网络分段、网络访问控制(使恶意设备难以接入网络)、最小权限原则、确保特权用户(如域管理员)拥有独立账户且不使用特权账户登录工作站、健全的监控和警报机制等。


