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

image-20191122155114548

受害者在Hosts 文件里面没有找到,通过DNS解析失败。就会通过LLMNR协议进行广播。

image-20191122145347129

这个时候攻击者就发个响应包 hhhhhhhhhhhhhhhhhhhh对应的IP是x.x.x.x(这个ip是攻击者IP)进行LLMNR投毒。

image-20191124171717500

这一步可以通过Responder 实现。

image-20191122153515913

image-20191122152250157

这个时候hhhhhhhhhhhhhhhhhhhh映射的ip就是攻击者的IP,当受害者访问hhhhhhhhhhhhhhhhhhhh就会访问攻击者的IP,攻击者就能拿到net-ntlm hash.

image-20191122152020668

2. NBNS

全称是NetBIOS Name Service。

NetBIOS 协议进行名称解析的过程如下:

  • 检查本地 NetBIOS 缓存
  • 如果缓存中没有请求的名称且已配置了 WINS 服务器,接下来则会向 WINS 服务器发出请求
  • 如果没有配置 WINS 服务器或 WINS 服务器无响应则会向当前子网域发送广播
  • 如果发送广播后无任何主机响应则会读取本地的 lmhosts 文件

lmhosts 文件位于C:\Windows\System32\drivers\etc\目录中。

NetBIOS 协议进行名称解析是发送的 UDP 广播包。因此在没有配置 WINS 服务器的情况底下,LLMNR协议存在的安全问题,在NBNS协议里面同时存在。使用Responder也可以很方便得进行测试。这里不再重复展示。

image-20191122154208850

posted @ 2020-07-28 15:04  mrhonest  阅读(2208)  评论(0编辑  收藏  举报