LLMNR/NBTNS欺骗投毒

前言:作为内网渗透的一个知识点的笔记

参考文章:https://xz.aliyun.com/t/1679

windows 名称解析机制

在内网中通信的时候,基于计算机名称解析的时候走的就是windows名称解析机制,其中参与协议的有三个,分别是 DNS LLMNR NETBIOS 这三种

其中LLMNR,从 Windows Vista 起,Windows 操作系统开始支持一种新的名称解析协议 —— LLMNR,主要用于局域网中的名称解析。

原因就是 LLMNR 能够很好的支持 IPv4 和 IPv6,因此在 Windows 名称解析顺序中是一个仅次于 DNS 的名称解析方式,更重要的是在 Linux 操作系统中也实现了 LLMNR。

什么是DNS协议

DNS相关的解析过程可以参考:https://www.cnblogs.com/zpchcbd/p/12293596.html

DNS 协议是一种最主要的也是操作系统首选的进行名称解析的协议,几乎每一种操作系统都支持 DNS 协议,同时, DNS 协议支持 IP v4 和 IP v6。DNS 协议在实现名称解析的过程中,在客户机上没有任何本地的数据库文件,完全依赖于 DNS 服务器,所监听的端口是 UDP/53 。在客户机上可以使用ipconfig /displaydns命令来查看本机的 DNS 缓存,使用ipconfig /flushdns命令清除本机的 DNS 缓存。

这里就讲下它相关的解析寻址过程

DNS 的名称解析过程:

  • 读取本机 DNS 缓存(已经包含本机 hosts 文件内容)
  • 如果缓存中没有,则会请求网络配置中配置的 DNS 服务器
  • 如果 DNS 服务器未作出响应,则请求失败。反之,DNS 服务器则会处理用户请求。

什么是NetBIOS协议

NETBIOS服务监听的端口为 UDP/137,其进行名称解析的形式为向当前主机所在的子网域发送广播包。所以,当你使用抓包工具在局域网中抓包时总会收到很多 NBNS 数据包。

由于 NetBIOS 协议进行名称解析是发送的 UDP 广播包。这样做虽然速度快且无需额外的配置,但是广播包不能跨越网域同时也会增加一些网络流量,因此微软在后来推出了 WINS(Windows Internet Name Service)服务器,当计算机配置为使用 WINS 服务器进行名称解析时,客户机将直接和 WINS 服务器进行单播通讯,这样就可以弥补 NetBIOS 协议使用广播进行名称解析的不足。

注意:一般内网中都没有配置相关的WINS服务器

综上所述,NetBIOS 协议进行名称解析的过程如下:

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

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

1、使用nbtstat -c命令查看本机的 NetBIOS 缓存

2、使用nbtstat -R命令清除本机的 NetBIOS 缓存

什么是LLMNR

从 Windows Vista 起,Windows 操作系统开始支持一种新的名称解析协议 —— LLMNR,主要用于局域网中的名称解析。LLMNR 能够很好的支持 IPv4 和 IPv6,因此在 Windows 名称解析顺序中是一个仅次于 DNS 的名称解析方式,更重要的是在 Linux 操作系统中也实现了 LLMNR。

链路本地多播名称解析(LLMNR)是一个基于域名系统(DNS)数据包格式的协议,IPv4和IPv6的主机可以通过此协议对同一本地链路上的主机执行名称解析。

LLMNR 也称作多播 DNS ,因为其数据包格式类似于 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出现的原因

出现的原因:DNS 协议的名称解析虽然高效但是需要在局域网中单独配置一台服务器作为 DNS 服务器,NetBIOS 协议的名称解析在一些情况下也需要单独配置一台 WINS 服务器,而且 NetBIOS 协议不支持 IP v6。因此,为了弥补这些不足,微软在 Windows Vista 之后推出了基于端到端的名称解析协议 — 本地链路多播名称解析(Link-Local Multicast Name Resolution)简称为 LLMNR。

在老系统中比如win2000 winXP win2003中还是不存在LLMNR的解析协议的,从Windows Vista开始这个协议才开始启用

Windows 2K , XP , 2K3 只支持 DNS 和 NetBIOS。 所以此类版本的 Windows 都是先进行 DNS 名称解析,如果 DNS 解析名称失败,才会进行 NetBIOS 名称解析。

Windows Vista 之后(包括 2K8 , Win7,Win8.x,Win 10)都支持上述三种协议,在这类 Windows系统中的名称解析顺序为:先进行 DNS 名称解析,如果 DNS 解析名称失败,则会使用 LLMNR 进行名称解析,最后才会使用 NetBIOS 名称解析。

LLMNR 进行名称解析的过程为:

  • 检查本地 NetBIOS 缓存
  • 如果缓存中没有则会像当前子网域发送广播包
  • 当前子网域的其他主机收到并检查广播包,如果没有主机响应则请求失败

三个协议的wireshark抓包流程

我这里搭建的环境是如下

域机器 WIN7-PC:192.168.4.135

域控机器 WIN12:192.168.4.11

网关:192.168.4.2

然后在 WIN7-PC 上进行访问:dir \\aaaaaa\c$,正常的访问流程如下

然后接下来进行学习基于LLMNR投毒攻击方式

LLMNR投毒

常见的利用 Windows 名称解析机制的缺陷进行攻击的技术有 DNS Spoof ,NBNS Poison ,LLMNR Poison , ICMP Redirection,这里的话介绍的就是LLMNR投毒

关于LLMNR投毒原理:如果DNS服务器解析失败,则要求解析的系统使用LLMNR(UDP 5355)或NBNS(UDP 137)在Windows系统上的网段上广播问题或查询。而后攻击者做出优先响应,请求系统将根据广播期间使用的服务(例如FTP)提供Net-NTLM哈希或明文凭据。

这里实现投毒的重点就是,LLMNR广播是在当前网段上进行广播的,所以如果在内网中就可以优先抢答回复相关的广播包,那么久可以来实现欺骗对方机器LLMNR解析地址。

LLMNR投毒 - Net NTLMv2

域机器 WIN-SKE-PC:192.168.4.130

域控机器 WIN12:192.168.4.11

域控上进行执行:dir \\asdasd\c$,接着在WIN-SKE-PC上捕获到相关的NET-NTLMv2的相关信息

posted @ 2021-12-28 18:51  zpchcbd  阅读(1295)  评论(0)    收藏  举报