链路本地多播名称解析(LLMNR)是一个基于域名系统(DNS)数据包格式的协议,使用此协议可以解析局域网中本地链路上的主机名称。它可以很好地支持IPv4和IPv6,是仅次于DNS解析的名称解析协议。
LLMNR解析前提是本地hosts和DNS解析失败时,会使用LLMNR解析。LLMNR解析过程如图1-1所示。
1)主机在本地NetBIOS缓存名称中进行查询。
2)如果缓存名称中没有查询到,则以此向配置的主备DNS服务器发送解析请求。
3)如果主备DNS服务器没有回复,则向当前子网域发送多播,获取对应的IP地址。
4)本地子网域的其他主机收到并检查多播包,如果没有响应则请求失败。
从以上工作过程可以明白LLMNR是以多播形式进行查询的,类似于ARP通过MAC寻找IP地址。这样就存在一个欺骗攻击问题。
假设用户访问一个域名xxx,如图1-2所示,在hosts文件和DNS解析失败,此时会通过LLMNR协议进行广播请求,攻击者利用该广播请求时间向请求用户回复响应IP地址,这时xxx映射的IP就是攻击者IP,当用户访问xxx域名就会解析到攻击IP,进而攻击者便可以拿到net-ntlm hash。
1)点击开始——运行——输入命令——打开本地组策略管理器,如图1-3所示。
gpedit.msc
2)打开计算机配置——管理模版——网络——DNS客户端,如图1-4所示。
3)双击打开“关闭多播名称解析”,如图1-5所示。
4)将关闭多播名称解析中的状态改为“已禁用”,如图1-6所示。
NetBIOS是Network Basic Input/Output System(网上基本输入输出系统)的缩写,它是一种接入服务网络的接口标准,主机系统通过WINS服务、广播及Lmhost文件等多种模式,把NetBIOS名解析成对应的IP地址,实现信息通讯。因其占用资源小、传输快的特点,广泛应用于局域网内部消息通信及资源的共享。
NetBIOS支持面向连接(TCP)和无连接(UDP)通信。它提供三个分开的服务:命名(NetBIOS names)、会话(NetBIOS sessions)、数据报(NetBIOS datagrams)。NetBIOS names为其他两个服务的基础。
NetBIOS服务类型在TCP/IP上的基本架构如图1-7所示。
下面我们针对三种常见的NetBIOS服务类型进行详细说明,如表1-1所示。
表1-1 三种常见的NetBIOS报文类型
服务类型 | 端口 | 具体描述 |
---|---|---|
Net BIOS names(NetBIOS名称服务) | UDP 137 | 鉴别资源。程序、主机都有独特的NetBIOS名称 |
Net BIOS datagrams(Net BIOS数据报) | UDP 138 | 无连接的将数据报发送到特定的地点、组、整个局域网。 |
Net BIOS sessions(Net BIOS会话服务) | TCP 139 | 提供给面向连接,可靠的,完全双重的信息服务。 |
NetBIOS 协议进行名称解析的过程如下。
1)首先主机先检查本地NetBIOS缓存。
2)如果缓存中没有请求的名称,但是配置类WINS服务器,则向WINS服务器发送请求。
3)如果没有配置WINS服务器或WINS服务器无响应时,则和LLMNR一样向当前子网域发送广播。
4)如果子网域其他主机无响应,则读取本地的lmhosts(C:\Windows\System32\drivers\etc\)文件。
NetBIOS协议是发送UDP广播包进行解析,如果不配置WINS服务器,则和LLMNR一样会有欺骗攻击问题。
1)输入命令ncpa.cpl,打开网络连接,如图1-33所示。
2)通过“本地连接——属性—Internet协议版本4——属性——高级”来配置,如图1-9、图1-10、图1-11所示。
3)在WINS标签栏的NetBIOS设置中禁用NetBIOS,如图1-12所示。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。