LLMNR和NetBIOS欺骗攻击分析及防范

article/2025/9/17 19:28:14

本文首发于先知社区:https://xz.aliyun.com/t/9714

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

在DNS 服务器不可用时,DNS 客户端计算机可以使用本地链路多播名称解析 (LLMNR—Link-Local Multicast Name Resolution)(也称为多播 DNS 或 mDNS)来解析本地网段上的名称。例如,如果路由器出现故障,从网络上的所有 DNS 服务器切断了子网,则支持 LLMNR 的子网上的客户端可以继续在对等基础上解析名称,直到网络连接还原为止。

LLMNR和NetBIOS

LLMNR的工作过程

(1) 主机在自己的内部名称缓存中查询名称。如果在缓存中没有找到名称,那么主机就会向自己配置的主DNS服务器发送查询请求。如果主机没有收到回应或收到了错误信息,主机还会尝试搜索配置的备用DNS服务器。如果主机没有配置DNS服务器,或者如果在连接DNS服务器的时候没有遇到错误但失败了,那么名称解析会失败,并转为使用LLMNR。

(2) 主机通过UDP写发送多播查询,查询主机名对应的IP地址,这个查询会被限制在本地子网(也就是所谓的链路局部)内。

(3) 链路局部范围内每台支持LLMNR,并且被配置为响应传入查询的主机在收到这个查询请求后,会将被查询的名称和自己的主机名进行比较。如果没有找到匹配的主机名,那么计算机就会丢弃这个查询。如果找到了匹配的主机名,这台计算机会传输一条包含了自己IP地址的单播信息给请求该查询的主机。

NetBIOS的定义

Netbios(Network Basic Input Output System):网络基本输入输出系统,它提供了OSI模型中的会话层服务,让在不同计算机上运行的不同程序,可以在局域网中,互相连线,以及分享数据。严格来说,Netbios是一种应用程序接口(API),系统可以利用WINS服务、广播及Lmhost文件等多种模式将NetBIOS名解析为相应IP地址,几乎所有的局域网都是在NetBIOS协议的基础上工作的。NetBIOS也是计算机的标识名称,主要用于局域网内计算机的互访。NetBIOS的工作流程就是正常的机器名解析查询应答过程。在Windows操作系统中,默认情况下在安装 TCP/IP 协议后会自动安装NetBIOS。

windows系统名称解析顺序

1. 本地hosts文件(%windir%\System32\drivers\etc\hosts)2. DNS缓存/DNS服务器3. 链路本地多播名称解析(LLMNR)和NetBIOS名称服务(NBT-NS)

也就是说,如果在缓存中没有找到名称,DNS名称服务器又请求失败时,Windows系统就会通过链路本地多播名称解析(LLMNR)和Net-BIOS名称服务(NBT-NS)在本地进行名称解析。这时,客户端就会将未经认证的UDP广播到网络中,询问它是否为本地系统的名称。这就产生了一个安全问题。由于该过程未被认证,并且广播到整个网络,从而允许网络上的任何机器响应并声称是目标机器。通过工具监听LLMNR和NetBIOS广播,攻击者可以伪装成受害者要访问的目标机器,并从而让受害者交出相应的登陆凭证。

LLMNR和NetBIOS欺骗

原理探究

在使用传输控制协议 (TCP) 和互联网协议 (IP) 堆栈的网络(包括当今大多数网络)上,需要将资源名称转换为 IP 地址以连接到这些资源。因此,网络需要将“resource.domain.com”解析为“xxxx”的 IP 地址,以便准确知道将流量发送到何处。Microsoft Windows 客户端在尝试将名称解析为地址时遵循一系列方法,在成功将名称与 IP 地址匹配时停止搜索。

当计算机请求网络资源时,它通常遵循下面指定的查询层次结构(使用略有不同的配置)来识别目标资源。一旦名称被识别,它就会停止。

1. 检查以确认请求是否针对本地机器名称。2. 检查最近成功解析的名称的本地缓存。3. 搜索本地主机文件,该文件是存储在本地计算机上的 IP 地址和名称列表。根据设备的不同,此文件可能已加载到本地缓存中。4. 查询 DNS 服务器(如果已配置)。5. 如果启用了 LLMNR,则跨本地子网广播 LLMNR 查询以询问其对等方进行解析。6. 如果启用了 NetBIOS,如果名称不在本地 NetBIOS 缓存中,则通过向本地子网广播 NetBIOS-NS 查询来尝试 NetBIOS 名称解析。如果如此配置,此步骤可能会使用 Windows Internet 名称服务 (WINS) 服务器以及 LAN 管理器主机 (LMHOSTS) 文件。

注意,计算机的 NetBIOS 名称及其主机名可以不同。但是,在大多数情况下,NetBIOS 名称与完整主机名相同或截断后的版本。IP 的 NetBIOS 名称解析可以通过广播通信、使用 WINS 服务器或使用 LMHOSTS 文件进行。

深入探究

这些协议的主要问题是受害计算机对其网络段内的其他设备的固有信任。如果计算机无法在上面列出的前四个步骤中识别出它正在寻找的资源,我们最喜欢的本地名称解析协议就会发挥作用。最好的例子是当用户输入错误的资源名称或请求不再可访问的资源时。

这种情况经常发生在网络的用户段,这就是攻击者进入的地方。一旦攻击者注意到网络上正在通过 LLMNR 或 NetBIOS-NS 请求这些资源,攻击者就无法阻止对受害计算机的响应,并且实际上是在告诉请求资源的主机自己就是被寻找的那个资源。事实上,我们可以更进一步的受害计算机,你应该尽快使用凭证跟我进行认证。果然,受害计算机使用其网络凭据的散列版本来响应攻击者。

与易受攻击的网络发现协议相关的利用步骤如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k7Jc7DvS-1654619950055)(/images/NetBIOS分析/QQ截图20210608102413.jpg)]

这里的通常目标是让攻击者从受害机器获取用户凭据。最后,要以“明文”形式获得实际密码,以便可用于获得网络身份验证,必须以 NetNTLMv2 格式破解散列密码。

另一个可能的攻击向量是攻击者将凭据在内网环境内进行碰撞。这种方法类似于前面描述的方法,不同之处在于攻击者不是简单地保存凭据,而是将它们瞄准内网内的其他系统。如果该帐户的凭据在其他系统上有效,则攻击者可以成功访问该系统,这里跟hash传递的思路有一点类似。

攻击

使用responder工具,在kali里自带。

Responder是监听LLMNR和NetBIOS协议的工具之一,能够抓取网络中所有的LLMNR和NetBIOS请求并进行响应,获取最初的账户凭证。

Responder会利用内置SMB认证服务器、MSSQL认证服务器、HTTP认证服务器、HTTPS认证服务器、LDAP认证服务器,DNS服务器、WPAD代理服务器,以及FTP、POP3、IMAP、SMTP等服务器,收集目标网络中的明文凭据,还可以通过Multi-Relay功能在目标系统中执行命令。

在渗透测试中,使用responder并启动回应请求功能,responder会自动回应客户端的请求并声明自己就是被输入了错误主机名称的那台主机,然后尝试建立SMB连接。对于SMB协议,客户端在连接服务端时,默认先使用本机的用户名和密码hash尝试登录,此时攻击者就可以得到受害机的Net-NTML Hash,并用john、hashcat等工具破解出客户端当前用户的明文密码。

开启监听

responder -I eth0 -f  
  • -I:指定使用的网卡
  • -f: 允许攻击者查看受害者指纹

这里可以看到LLMNRNBT-NS都已经打开

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xbZHougC-1654619950056)(/images/NetBIOS分析/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy8zUmh1VnlzRzlMZVFwSTNzdWhhVmhXQWNsZ1dJMnd5bnkzUFFGQmp0VDhXOWNjbW1CVlhYRTJoaENIN2lhTXJQNWVPM3U4dWNkNmRJeGNoWUhER0lFdkEvNjQw.jpg)]

靶机操作

这里需要注意的是靶机需要在家庭网络或公共网络下,因为必须要确保凭据通过smb协议传输

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wBbOgKS7-1654619950057)(/images/NetBIOS分析/image-20210608111046098.png)]

这里让靶机访问一个不存在的主机地址,也可以命令行输入net use \\gha

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PEFz5XTx-1654619950058)(/images/NetBIOS分析/image-20210608111240427.png)]

因为在一轮寻找过程后会调用NetBIOS去寻找,这时候攻击者就可以伪造一个LLMNR欺骗去获取靶机的凭证

这里就会返回靶机的用户名、NTMLv2 hash

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z8UlElnA-1654619950058)(/images/NetBIOS分析/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy8zUmh1VnlzRzlMZVFwSTNzdWhhVmhXQWNsZ1dJMnd5bkc0bVJ3MEZoZmZ3Q2JDelRwMGlidHg0MmlhMzNOV3l3VGVLU3hUTHZQRVdHcERGeTFJNzZ4d3V3LzY0MA.jpg)]

破解hash

这里我们可以让responder一直运行以尽可能捕捉更多的hash,在停止responder之后会在安装目录的log目录下生成一个txt文件保存捕捉到的hash

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PmjpsXMi-1654619950059)(/images/NetBIOS分析/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy8zUmh1VnlzRzlMZVFwSTNzdWhhVmhXQWNsZ1dJMnd5bkY0WmdXWVJQTGVZeXpmZkQwVVdaZzJhU2RXc3hCY3VpYUdpYWlib2ljZ01rekZPNDNqaWJzSlBpYlNrZy82NDA.png)]

这里破解hash一般用到两个软件,一个是hashcat,另外一个就是kali里面自带的John。这里使用John破解密码,因为这里密码设置得很简单所以就不需要外部字典,有些复杂的hash利用John不能够破解出来的就需要加载外部字典进行破解

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tus9RXYG-1654619950060)(/images/NetBIOS分析/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy8zUmh1VnlzRzlMZVFwSTNzdWhhVmhXQWNsZ1dJMnd5bkpkMTZjejdYOUZYOW5kMFZKN01pYkhrR3N4aERHZHIxUG94REhWWU85eUNFT2NnVGE5Y3YwTncvNjQw.jpg)]

LLMNR和NetBIOS的防范

端口剖析

这里我总结一下能够利用LLMNR和NetBIOS进行欺骗的前提如下:

必须在受害计算机上启用 NetBIOS 或 LLMNR。此外,受害计算机上的防火墙必须允许此流量进入机器,默认情况下,机器使用端口 UDP 137、UDP 138、TCP 139、TCP 5355 和 UDP 5355。攻击者系统必须与受害计算机位于同一网段(本地子网)。本质上,攻击者计算机必须能够接收到受害计算机的流量。

NetBIOS最常用的三个端口就是137、138、139

137端口:137端口主要用于“NetBIOS Name Service”(NetBIOS名称服务),属于UDP端口,使用者只需要向局域网或互联网上的某台计算机的137端口发送一个请求,就可以获取该计算机的名称、注册用户名,以及是否安装主域控制器、IIS是否正在运行等信息。

138端口:主要提供NetBIOS环境下计算机名的浏览功能。

139端口:通过这个端口进入的连接试图获得NetBIOS/SMB服务。这个协议被用于Windows"文件和打印机共享"和SAMBA。

PORT    STATE SERVICE    VERSION
137/udp open  netbios-ns Samba nmbd netbios-ns (workgroup: WORKGROUP)
138/udp open|filtered netbios-dgm
139/tcp   open  netbios-ssn  Microsoft Windows netbios-ssn

为什么会产生漏洞的原因或许存在于137端口呢?因为在Windows网络通信协议–“NetBIOS over TCP/IP(NBT)”的计算机名管理功能中使用的是137端口。

计算机名管理是指Windows网络中的电脑通过用于相互识别的名字–NetBIOS名,获取实际的IP地址的功能。可以用两种方法使用137端口。

一种方法是,位于同一组中的电脑之间利用广播功能进行计算机名管理。电脑在起动时或者连接网络时,会向位于同组中的所有电脑询问有没有正在使用与自己相同的NetBIOS名的电脑。每台收到询问的电脑如果使用了与自己相同的NetBIOS名,就会发送通知信息包。这些通信是利用137端口进行的。

另一种方法是利用WINS(Windows因特网名称服务)管理计算机名。被称为WINS服务器的电脑有一个IP地址和NetBIOS名的对照表。WINS客户端在系统起动时或连接网络时会将自己的NetBIOS名与IP地址发送给WINS服务器。与其他计算机通信时,会向WINS服务器发送NetBIOS名,询问IP地址。这种方法也使用137端口。

如上所述,为了得到通信对象的IP地址,137端口就要交换很多信息包。在这些信息包中,包括有很多信息。利用广播管理计算机名时,会向所有电脑发送这些信息。如果使用NBT,就会在用户没有查觉的情况下,由电脑本身就会向外部散布自己的详细信息。

防范

1.最实用的方法在每台计算机的 NIC 上禁用 NetBIOS 并通过 DHCP 禁用 LLMNR ,但是这对于一些需要使用到NetBIOS和LLMNR服务的组织不太友好,所以更好的方法是每个系统的主机防火墙上通过阻止 NetBIOS 协议和 TCP 端口 139 以及 LLMNR UDP 端口来限制出站 NetBIOS 和 LLMNR 流量5355。这样就可以有效的防止这几个端口流量出站。

2.但是使用禁用端口流量的方法并不保险,可能攻击者会使用端口的方法从另外端口将NetBIOS和LLMNR的流量转发出站。所以另外一种防范办法就是将默认端口改成一些不会引起攻击者注意的高端口,即将端口重定向。这种重定向的方法修改注册表里面的PortNumber修改即可。

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TerminalServer\Wds\rdpwd\Tds\tcp]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TerminalServer\WinStations\RDP-Tcp]

3.跟第一点防范方法比较相似的另外一种方法便是给这几个端口配置IPsec安全策略,这样在攻击者试图这几个端口进行扫描的时候就不会得到任何回应。


http://chatgpt.dhexx.cn/article/rTTPpDoI.shtml

相关文章

llmnr协议 名称解析缺陷劫持内网指定主机会话

目录 0x00 LLMNR 简介 0x01 LLMNR 协议分析 0x02 LLMNR 名称解析过程 0x03 编程实现 LLMNR 的质询和应答 0x04 LLMNR Poison 攻击原理 0x05 利用伪造源 IP LLMNR Poisone 劫持内网指定主机会话 0x06 LLMNR Poison 实战攻击思路 0x07 总结 0x00 LLMNR 简介 从 Windows …

NetBIOS名称欺骗和LLMNR欺骗

本文原创作者: 贺兰山缺口 原创投稿详情:重金悬赏 | 合天原创投稿等你来! NetBIOS和LLMNR简介 NetBIOS和Link-LocalMulticast NameResolution(LLMNR)是Microsoft针对工作组和域设计的名称解析协议,主要用于…

【内网学习笔记】18、LLMNR 和 NetBIOS 欺骗攻击

0、前言 如果已经进入目标网络,但是没有获得凭证,可以使用 LLMNR 和 NetBIOS 欺骗攻击对目标进行无凭证条件下的权限获取。 1、基本概念 LLMNR 本地链路多播名称解析(LLMNR)是一种域名系统数据包格式,当局域网中的…

LLMNR Poison技术详解

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

最简单的动态数据源配置

动态数据源配置 操作步骤:一、数据源配置配置方式:二、动态数据源相关类1. 枚举类定义如下:2. 重写查找当前数据源的方法:3. 用ThreadLocal变量存储查询数据源的字符串:4. 用动态数据源替换掉普通的数据源 二、测试结果。1. Mapper类2.TestMapper 二、重点来了!! 操作步骤: 提…

几种数据源的配置方式

目录 1.c3p0配置方式 2.dbcp配置方式 3.DriverManagerDataSource配置方式 4.HikariDataSource配置方式 5.多数据源整合&#xff08;编程式事务&#xff09; 1.c3p0配置方式 lib: applicationContext.xml <?xml version"1.0" encoding"UTF-8"?&g…

多数据源配置-springBoot

前言 这里展示的是springBoot项目双数据源的配置&#xff0c;为了增加一定的代表性&#xff0c;这里采用两个不同的数据库Orcale和Mysql作为数据源。 依赖 <!-- orcale驱动包 --> <dependency><groupId>com.oracle.database.jdbc</groupId><arti…

若依多数据源配置

1.修改application-druid.yml文件&#xff0c;这里使用mysql数据源&#xff0c;分别有ry-vue、ry-test1、ry-test2三个数据库。 2.修改DataSourceType类&#xff08;MASTER主库&#xff0c;SLAVE、LOGIN两个从库&#xff09;。 3.修改DruidConfig类。 以上配置完成后&#xff0…

如何配置数据源

(一&#xff09;官网 Spring Initializrhttps://start.spring.io/ &#xff08;二&#xff09;各依赖 &#xff08;三&#xff09;打印一下数据源 &#xff08;四&#xff09;查看有哪些bean &#xff08;五&#xff09;不用spring boot自己配置bean 1、数据源相关 • DataSou…

SpringBoot 之数据源配置

文章目录 市面上的几种数据源比对SpringBoot自动装配DataSource原理HiKariCP 数据源配置Druid 数据源配置SpringBoot集成Druid连接池Druid 多数据源配置&#xff08;不同Mapper操作不同数据源&#xff09;HikariCP 多数据源动态配置 springboot2.0整合druid&#xff0c;以及spr…

P值 卡方值

P值&#xff1a; P值即概率&#xff0c;反映某一事件发生的可能性大小。 不同的P数值所表达的含义也是不一样的。 统计学根据显著性检验方法所得到的P 值&#xff0c;一般以P < 0.05 为有统计学差异&#xff0c; P<0.01 为有显著统计学差异&#xff0c;P<0.001为有…

Python数据挖掘学习6卡方检验

1.定义&#xff1a;一种用途很广的计数资料的假设检验方法。它属于非参数检验的范畴&#xff0c;主要是比较两个及两个以上样本率( 构成比&#xff09;以及两个分类变量的关联性分析。 2.基本思想&#xff1a;统计样本的实际观测值与理论推断值之间的偏离程度&#xff0c;实际…

python scipy 密度函数 分位数 累计函数计算p值 卡方检验 t检验 F检验 假设检验 AB实验 显著性检验

AB实验&#xff1a; 1. 人均类->t检验 # 计算t值 def get_t(x):# 遍历看x需要几次的显著性检验。可能有多个实验组&#xff0c;需要一对一检验x1 x[x.分组.astype(str)1].iloc[0] # 对照组&#xff0c;组号固定为1&#xff0c;转为Series格式for i in x[x.分组.astype(st…

卡方检验c语言算法,R语言 | 卡方检验(Chi-squaretest)

卡方检验在计数资料中的应用,包括推断两个总体率或构成比之间有无差别、多个总体率或构成比之间有无差别、多个样本率间的多重比较、两个分类变量之间有无关联性、多维列联表的分析和频数分布拟合优度的卡方检验。选自:周支瑞老师 下面分别介绍计数资料怎么进行卡方检验。 目…

SPSS篇—卡方检验

今天依旧跟大家分享一个在SPSS中使用率比较高的分析方法&#xff1a;卡方检验。 在开始做分析之前&#xff0c;我们需要明白两件事情&#xff1a;卡方检验是什么&#xff1f;一般用来干什么&#xff1f;我们只有充分了解分析方法以后才能够正确的使用它。 卡方检验在百科中的…

四格表卡方检验.医学统计实例详解-医学统计助手★卡方检验,t检验,F检验,秩和检验,方差分析

四格表卡方检验是医学统计学中常用的一种方法&#xff0c;用于确定两个分类变量之间是否存在关联。在医学研究中&#xff0c;四格表卡方检验被广泛应用于研究疾病和治疗方法之间的关联&#xff0c;以及预测疾病发展的风险因素。 四格表卡方检验基于一个二维表格&#xff0c;也…

卡方检验四格表怎么做_运用SPSS进行医学诊断数据的Kappa一致性检验 ——【杏花开医学统计】...

杏花开生物医药统计 一号在手,统计无忧! 关 注 运用SPSS进行医学诊断数据的 Kappa一致性检验 关键词:SPSS、 Kappa 导读 在医学诊断试验中,经常会遇到将待评价的诊断实验方法的诊断结果与金标准的诊断结果进行比较的情况,或者是将两种不同的诊断方法用于同一样本的诊断结果…

卡方检验四格表怎么做_等级变量的假设检验怎么做?

作者&#xff1a;丁点helper 来源&#xff1a;丁点帮你 今天&#xff0c;我们讲等级变量的假设检验。首先&#xff0c;回顾一下&#xff0c;什么叫等级变量&#xff0c;也称有序变量。 一般而言&#xff0c;等级变量属于分类变量(如上)的一种&#xff0c;与之相对的就是无序变…

Pearson卡方该如何计算?

一、Pearson卡方 Pearson卡方可用研究定类和定类数据的差异&#xff0c;比如性别和是否吸烟之间的差异关系。 二、分析 SPSSAU通用方法里面的‘交叉&#xff08;卡方&#xff09;’研究方法默认使用Pearson卡方&#xff0c;并且提供百分比按行或者按列两种方式。如下图&…

卡方检验概述

前言、什么是卡方检验 卡方检验是一种用途很广的计数资料的假设检验方法。它属于非参数检验的范畴&#xff0c;主要是比较两个及两个以上样本率( 构成比&#xff09;以及两个分类变量的关联性分析。其根本思想就是在于比较理论频数和实际频数的吻合程度或拟合优度问题。 它在…