1.4 Windows常用协议
1.4.1 LLMNR
1.LLMNR简介
链路本地多播名称解析(LLMNR)是一个基于域名系统(DNS)数据包格式的协议,可用于解析局域网中本地链路上的主机名称。它可以很好地支持IPv4和IPv6,是仅次于DNS解析的名称解析协议。
2.LLMNR解析过程
当本地hosts和DNS解析失败时,会使用LLMNR解析。LLMNR解析过程如图1-26所示。
1)主机在本地NetBIOS缓存名称中进行查询。
2)如果在缓存名称中没有查询到,则以此向配置的主备DNS服务器发送解析请求。
3)如果主备DNS服务器没有回复,则向当前子网域发送多播,获取对应的IP地址。
4)本地子网域中的其他主机收到并检查多播包。如果没有响应,则请求失败。
从以上工作过程可以明白,LLMNR是以多播形式进行查询的,类似于ARP通过MAC寻找IP地址。这样就存在一个欺骗攻击问题。
图1-26 LLMNR解析过程
3.LLMNR欺骗攻击
假设用户访问一个域名xxx,如图1-27所示,在hosts文件和DNS解析失败时,会通过LLMNR进行广播请求。攻击者利用该广播请求时间向请求用户回复响应IP地址,这时域名xxx映射的IP就是攻击者IP,用户访问域名xxx就会解析到攻击IP,这样攻击者便可以拿到NetNTLM哈希。
4.LLMNR防御措施
1)在Windows系统中依次选择“开始”→“运行”选项,然后输入gpedit.msc命令打开本地组策略管理器,如图1-28所示。
2)依次选择“计算机配置”→“管理模板”→“网络”→“DNS客户端”,如图1-29所示。
3)双击打开“关闭多播名称解析”策略设置,如图1-30所示。
4)将“关闭多播名称解析”策略设置中的状态改为“已禁用”,如图1-31所示。
图1-27 LLMNR欺骗攻击
图1-28 打开本地组策略管理器
图1-29 打开配置DNS客户端
图1-30 打开“关闭多播名称解析”
图1-31 将“关闭多播名称解析”策略设置中的状态改为“已禁用”