NBNS和LLMNR
原文:https://daiker.gitbook.io/windows-protocol/ntlm-pian/5
0x08 NBNS和LLMNR
windows 解析域名的顺序是
- Hosts
- DNS (cache / server)
- LLMNR
- NBNS
如果Hosts文件里面不存在,就会使用DNS解析。如果DNS解析失败,就会使用LLMNR解析,如果LLMNR解析失败,就会使用NBNS解析
1. LLMNR
LLMNR 是一种基于协议域名系统(DNS)数据包的格式,使得两者的IPv4和IPv6的主机进行名称解析为同一本地链路上的主机,因此也称作多播 DNS。监听的端口为 UDP/5355,支持 IP v4 和 IP v6 ,并且在 Linux 上也实现了此协议。其解析名称的特点为端到端,IPv4 的广播地址为 224.0.0.252,IPv6 的广播地址为 FF02:0:0:0:0:0:1:3 或 FF02::1:3。
LLMNR 进行名称解析的过程为:
- 检查本地 NetBIOS 缓存
- 如果缓存中没有则会像当前子网域发送广播
- 当前子网域的其他主机收到并检查广播包,如果没有主机响应则请求失败
也就是说LLMNR并不需要一个服务器,而是采用广播包的形式,去询问DNS,跟ARP很像,那跟ARP投毒一样的一个安全问题就会出现。
当受害者访问一个不存在的域名的时候。比如 hhhhhhhhhhhhhhhhhhhh
受害者在Hosts 文件里面没有找到,通过DNS解析失败。就会通过LLMNR协议进行广播。
这个时候攻击者就发个响应包 hhhhhhhhhhhhhhhhhhhh对应的IP是x.x.x.x(这个ip是攻击者IP)进行LLMNR投毒。
这一步可以通过Responder 实现。
这个时候hhhhhhhhhhhhhhhhhhhh映射的ip就是攻击者的IP,当受害者访问hhhhhhhhhhhhhhhhhhhh就会访问攻击者的IP,攻击者就能拿到net-ntlm hash.
2. NBNS
全称是NetBIOS Name Service。
NetBIOS 协议进行名称解析的过程如下:
- 检查本地 NetBIOS 缓存
- 如果缓存中没有请求的名称且已配置了 WINS 服务器,接下来则会向 WINS 服务器发出请求
- 如果没有配置 WINS 服务器或 WINS 服务器无响应则会向当前子网域发送广播
- 如果发送广播后无任何主机响应则会读取本地的 lmhosts 文件
lmhosts 文件位于C:\Windows\System32\drivers\etc\
目录中。
NetBIOS 协议进行名称解析是发送的 UDP 广播包。因此在没有配置 WINS 服务器的情况底下,LLMNR协议存在的安全问题,在NBNS协议里面同时存在。使用Responder也可以很方便得进行测试。这里不再重复展示。