从安全角度分析NetBIOS/LLMNR协议

# NetBIOS

NetBIOS(Network Basic Input/Output System)是一种早期的网络通信协议,它的主要功能是提供局域网(LAN)内的名称解析、会话管理和数据交换

主要应用在早期的 Windows 网络(如 Windows 95/98/NT)中扮演核心角色。

NetBIOS 主要通过 三种服务 实现网络通信:

1、名称服务(Name Service)

# NBNS(重点)

NBNS(NetBIOS Name Service,也称为 NetBIOS-over-UDP)是早期用于局域网(LAN)内主机名解析的协议,工作在 UDP 137 端口。它的主要作用是将 NetBIOS 名称(如 COMPUTERNAME)解析为 IP 地址,类似于 DNS,但仅用于本地网络。

2、会话服务(Session Service)

  • 作用:在两台计算机之间建立 面向连接的通信(如文件共享、打印机服务)。

  • 协议:SMB(Server Message Block,TCP 139 端口)。

  • 示例
    通过 \\MYPC\Share 访问共享文件夹时,实际使用 NetBIOS 会话服务建立 SMB 连接。

3、数据报服务(Datagram Service)

  • 作用:提供 无连接的广播/组播通信(如网络发现、消息通知)。

  • 协议:UDP 138 端口。

  • 示例
    Windows 的“网络邻居”功能依赖此服务发现局域网内的其他计算机。

# NetBIOS 的安全风险

由于设计老旧,NetBIOS 存在严重安全隐患:

风险攻击方式影响
NTLM 中继攻击攻击者伪造 NetBIOS 名称响应,窃取 NTLM 哈希提权、横向移动
信息泄露通过 UDP 137/138 端口扫描获取主机名和共享列表网络拓扑暴露
拒绝服务(DoS)发送恶意 NetBIOS 数据包导致系统崩溃服务中断

# NBNS 的典型使用场景

1. Windows 网络环境(传统局域网)

  • 在较老版本的 Windows(如 WinXP、Win7)或 Samba(Linux/Unix 的 Windows 文件共享兼容服务)中,NBNS 用于:

    • 主机名解析(如 \\COMPUTERNAME\Share)。

    • 文件和打印机共享(SMB/CIFS 协议依赖 NetBIOS)。

    • 网络发现(查看“网络邻居”中的其他计算机)。

同上面的:NetBIOS 主要通过 三种服务 实现网络通信。

  • 现代 Windows(Win10/11)默认使用 LLMNR(Link-Local Multicast Name Resolution)和 DNS,但 NBNS 仍可能被启用以兼容旧设备。

2. 无 DNS 服务的局域网

  • 在没有 DNS 服务器的小型网络(如家庭网络、临时工作组)中,NBNS 提供基本的主机名解析。

  • 例如:

    • 两台电脑直连(没有路由器或 DNS),仍然可以通过主机名访问共享文件夹。

3. 嵌入式设备或旧系统

  • 一些旧设备(如打印机、NAS、工业控制系统)可能仍依赖 NBNS 进行名称解析。

4. 恶意利用(NBNS 欺骗 / Poisoning)(后面会详细说明)

  • 由于 NBNS 使用 无认证的广播查询,攻击者可以伪造响应(类似 ARP 欺骗),进行:

    • 中间人攻击(MitM):劫持 NetBIOS 名称解析,重定向到恶意服务器。

    • 凭据窃取:诱骗用户向攻击者的机器发送 SMB 登录请求,窃取 NTLM 哈希。

  • 工具如 Responder 常利用 NBNS/LLMNR 缺陷进行渗透测试或攻击。

# 协议区分

协议用途端口现状
NBNSNetBIOS 名称解析UDP 137旧系统使用,逐渐淘汰
LLMNR本地多播名称解析UDP 5355WinVista+ 默认,但仍不安全
DNS标准域名解析UDP 53现代网络首选
mDNS(Bonjour/Avahi)零配置名称解析UDP 5353Apple/Linux 常用(如 .local 域名)
  • 现代 Windows 默认优先使用 DNS > LLMNR > NBNS

  • Linux(Samba)仍可能启用 NBNS,但推荐使用 nsswitch.conf 配置更安全的解析方式。

# 协议安全风险防御

  1. 禁用 NBNS(如无必要)

    • Windows

      # powershell
      
      Set-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Services\NetBT\Parameters" -Name "EnableLMHOSTS" -Value 0

    • Linux(Samba)
      在 smb.conf 中设置 disable netbios = yes

  2. 使用更安全的替代方案

    • 部署本地 DNS 服务器(如 Pi-hole、Windows AD DNS)。(下面详细说明)

    • 禁用 LLMNR(同样易受欺骗攻击):

      # powershell
      
      Set-ItemProperty "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient" -Name "EnableMulticast" -Value 0

  3. 防范 NBNS 欺骗

    • 使用 网络分段(VLAN)隔离敏感设备。

    • 启用 SMB 签名 或 强制 Kerberos 认证(防止 NTLM 中继攻击)。

# 总结

  • NBNS 主要用于旧版 Windows/Samba 网络的主机名解析,现代系统已逐步淘汰。

  • 在无 DNS 的局域网中仍可能使用,但安全性较差。

  • 攻击者可能利用 NBNS 进行欺骗攻击,建议禁用并改用更安全的协议(如 DNS+mDNS)。

## 本地部署DNS服务器

Pi-hole 与 Windows AD DNS 的区别

特性Pi-holeWindows AD DNS
主要用途广告拦截、隐私保护企业内网域名解析
部署难度简单(一键脚本安装)较复杂(需 Windows Server)
适用场景家庭、小型网络企业 Active Directory 环境
广告拦截✔️ 支持❌ 不支持
统计面板✔️ 提供可视化数据❌ 无
开源免费✔️ 是❌ 需 Windows 授权

## 本地DNS的意义

部署本地DNS服务器(如Pi-hole、Windows AD DNS)的主要目的是减少对LLMNR/NBT-NS等不安全协议的依赖,从而降低NTLM中继攻击的风险。然而,如果攻击者仍然可以利用LLMNR/NBT-NS广播进行欺骗,那么本地DNS的意义主要体现在以下几个方面:

1. 减少广播查询的触发条件

  • DNS缓存优化:本地DNS服务器可以缓存常见域名解析结果,减少客户端因DNS查询失败而回退到LLMNR/NBT-NS的概率。

2. 结合安全策略,彻底禁用不安全的协议

  • 禁用LLMNR/NBT-NS

    • 在部署本地DNS后,应通过组策略(GPO)禁用LLMNR和NetBIOS,强制系统仅使用DNS解析26。

    • Windows禁用方法

      • LLMNR:gpedit.msc → 计算机配置 → 管理模板 → 网络 → DNS客户端 → 关闭多播名称解析。(默认开启未配置,下面会有解释)

      • NetBIOS:网络适配器属性 → IPv4高级设置 → WINS选项卡 → 禁用NetBIOS over TCP/IP26。

  • Linux/mDNS:类似地,禁用mDNS(如systemctl stop avahi-daemon)以避免替代协议的风险

3. 增强DNS的安全性

  • DNSSEC:部署DNSSEC可防止DNS缓存投毒攻击,确保解析结果的真实性9。

  • 强制使用安全DNS:配置客户端仅信任本地DNS服务器,阻断对外部不可控DNS的查询(如通过防火墙规则)。

4. 监控与日志分析

  • Pi-hole的日志功能:可记录所有DNS请求,及时发现异常查询(如频繁解析不存在的内部主机名),这可能表明攻击者在诱导LLMNR/NBT-NS广播9。

  • SIEM集成:将DNS日志与安全信息事件管理(SIEM)系统关联,实时检测攻击行为。


5. 减少攻击面

  • WPAD防护:本地DNS可正确配置WPAD(Web代理自动发现协议),防止攻击者通过LLMNR/NBT-NS伪造代理设置9。

  • SMB签名强制:在域环境中,强制所有主机的SMB签名(默认域控制器已启用),使NTLM中继攻击失效

# 总结

措施作用
部署本地DNS减少DNS查询失败,降低LLMNR/NBT-NS触发概率
禁用LLMNR/NBT-NS彻底阻断广播协议的攻击面
DNSSEC与日志监控增强DNS安全性,快速发现异常行为
强制SMB签名防止NTLM中继攻击(即使哈希被捕获也无法重用)

### 多播名称解析(默认配置-未配置)

LLMNR:gpedit.msc → 计算机配置 → 管理模板 → 网络 → DNS客户端 → 关闭多播名称解析

默认情况下,LLMNR 的行为

  1. “未配置的网络适配器” 指的是:

    • 那些 没有手动禁用 LLMNR 的网卡(比如新插入的网卡、未通过组策略或注册表显式关闭 LLMNR 的接口)。

    • 例如:

      • 你有一台 Windows 电脑,插入了有线网卡(Ethernet)和无线网卡(Wi-Fi),但未在组策略或注册表中禁用 LLMNR。

      • 那么 这两个网卡都会启用 LLMNR,并在 DNS 解析失败时发送广播查询。

  2. “所有可用但未配置的网络适配器” 的含义:

    • Windows 默认在所有活动的网络接口(如以太网、Wi-Fi、VPN 虚拟网卡)上启用 LLMNR,除非你明确禁用它(通过组策略、注册表或 PowerShell)。

    • 即使某些网卡未加入域(如家庭网络),LLMNR 仍然会工作。


攻击面分析

  • 如果未禁用 LLMNR

    • 当计算机尝试解析一个名称(如 \\fileserver),而 DNS 查询失败时,它会通过 所有启用的网卡 发送 LLMNR 广播(UDP 5355)。

    • 攻击者可以在同一局域网(或 VLAN)内监听并伪造响应,诱导计算机向恶意服务器发送 NTLM 认证请求(用于哈希窃取或中继攻击)。

  • 多网卡的影响

    • 如果计算机有多个网卡(如 Wi-Fi + 有线网),LLMNR 查询可能通过 所有活跃接口 广播,增加被攻击的风险。

## DNS的单播查询

DNS > LLMNR > NBNS,相比于其它DNS不会触发无认证的广播查询。

DNS(尤其是经过安全加固的本地DNS)不会触发无认证的广播查询,而 LLMNR 和 NBNS 会依赖广播机制,容易遭受欺骗攻击(如 NTLM 中继攻击)。

1. DNS(域名系统)

  • 工作方式

    • 使用 单播(Unicast) 查询,直接向指定的 DNS 服务器(如本地 Pi-hole、AD DNS)发起请求。

    • 如果 DNS 服务器能解析域名(如 net abc),直接返回结果,不会触发广播

  • 安全性

    • 无广播:不依赖网络层广播,避免被同一局域网内的攻击者嗅探或伪造响应。

    • 可加固:支持 DNSSEC(防篡改)、DoH/DoT(加密)、ACL(访问控制)等安全机制。

  • 触发广播的条件

    • 仅当 DNS 查询失败(如域名不存在或 DNS 服务器无响应)时,系统可能回退到 LLMNR/NBNS。


2. LLMNR(链路本地多播名称解析)

  • 工作方式

    • 使用 多播(Multicast, UDP 5355) 向本地网络所有设备广播查询(如 net abc)。

    • 任何设备均可响应,无认证机制

  • 攻击风险

    • NTLM 中继攻击:攻击者可伪造响应,诱骗受害者向恶意服务器发送 NTLM 认证请求。

    • 工具如 Responder 专门利用此协议窃取哈希。


3. NBNS(NetBIOS 名称服务)

  • 工作方式

    • 使用 广播(Broadcast, UDP 137) 解析主机名(如旧版 Windows 的 NETBIOS 名称)。

    • 设计老旧,完全无加密或认证

  • 攻击风险

    • 与 LLMNR 类似,但更易受欺骗(尤其在混合网络环境中)。

# 协议区别

协议查询方式端口是否广播是否易受欺骗典型攻击场景
DNS单播(客户端→服务器)UDP 53❌ 否❌ 低(需加固)DNS 投毒(需其他漏洞配合)
LLMNR多播(全网广播)UDP 5355✔️ 是✔️ 高NTLM 中继、哈希窃取
NBNS广播(全网广播)UDP 137✔️ 是✔️ 极高同上,兼容性更差

# 总结

  • DNS 本身不广播,但需确保其解析成功,否则系统可能回退到不安全的 LLMNR/NBNS。

  • 完全防御广播攻击需三步:

    1. 部署可靠的本地 DNS(覆盖所有内部域名)。

    2. 彻底禁用 LLMNR/NBNS

    3. 加固认证协议(如强制 Kerberos/SMB 签名)。

# Kerberos协议

现代网络环境(尤其是 Active Directory 域环境)中,Kerberos 已成为默认的身份认证协议,取代了老旧的 NTLM(NT LAN Manager)。但这并不意味着 NTLM 已经完全消失,它仍可能在某些场景下被使用,并带来安全风险。

特性KerberosNTLM
认证方式基于票据(Ticket)基于 Challenge-Response
加密强度强(AES/SHA)弱(RC4/MD4/MD5)
防重放攻击✔️(时间戳+票据)❌(易受中继攻击)
跨平台支持✔️(Linux/macOS兼容)❌(Windows为主)
默认启用✔️(AD域环境)❌(仅回退使用)

Kerberos 的优势

✅ 更安全

  • 使用 AES 加密,避免 NTLM 的弱哈希(如 NTLMv1/NTLMv2)被破解。

  • 防中继攻击:Kerberos 票据(Ticket)包含客户端 IP 和服务信息,防止攻击者重放认证请求。

✅ 更高效

  • 支持 单点登录(SSO),用户登录后获取票据,无需重复输入密码。

  • 减少域控制器(DC)的负载,因为票据可缓存和复用。

# 为什么 NTLM 仍然存在?

尽管 Kerberos 更安全,但 NTLM 仍可能被使用,原因包括:

(1) 兼容性需求

  • 旧版应用/设备:某些老旧系统(如 Windows Server 2003、NAS 设备)可能仅支持 NTLM。

  • 非域环境:在工作组(Workgroup)模式下,Kerberos 不可用,系统默认回退到 NTLM。

(2) 某些场景强制使用 NTLM

  • HTTP 认证:某些 Web 应用(如 IIS)可能配置了 NTLM 认证。

  • SMB 1.0/CIFS:旧版文件共享协议依赖 NTLM(尽管 SMB 2.0+ 支持 Kerberos)。

  • 跨域信任问题:如果两个 AD 域未建立信任关系,可能回退到 NTLM。

(3) 攻击者可能强制降级

  • NTLM 中继攻击:攻击者可伪造身份,诱使系统使用 NTLM 而非 Kerberos(如通过 LLMNR/NBNS 欺骗)。

## 改进建议

  完全禁用 NTLM?(仅允许 Kerberos)

方法 1:组策略(推荐)

  1. 打开 组策略管理(GPMC) 或 gpedit.msc(本地策略)。

  2. 导航至:

    text

    计算机配置 → 策略 → Windows 设置 → 安全设置 → 本地策略 → 安全选项
  3. 找到 “网络安全:限制 NTLM”,设置为:

    • “拒绝所有 NTLM 流量”(最严格)

    • “仅允许 NTLMv2”(兼容性折中方案)

方法 2:注册表(非域环境)

powershell

# 完全禁用 NTLM
Set-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" -Name "LmCompatibilityLevel" -Value 5
  • LmCompatibilityLevel=5 表示 仅允许 Kerberos(拒绝 NTLM)。

方法 3:监控 NTLM 使用情况

powershell

# 查看事件日志(NTLM 使用记录)
Get-WinEvent -LogName "Security" -FilterXPath "*[System[EventID=4624]]" | Where-Object { $_.Message -match "NTLM" }

如果发现 NTLM 仍在使用,需排查具体应用并升级兼容 Kerberos。

# 总结

  • Kerberos 是现代 AD 域环境的默认协议,比 NTLM 更安全高效。

  • NTLM 仍可能被使用(因兼容性、旧设备或配置问题),需主动禁用。

  • 完全禁用 NTLM 的步骤

    1. 通过组策略或注册表限制 NTLM。

    2. 确保所有应用支持 Kerberos(如升级 SMB 版本、配置 SPN)。

    3. 监控日志,防止攻击者强制降级到 NTLM。

最终目标
✅ 仅允许 Kerberos,彻底关闭 NTLM,减少攻击面(如 Pass-the-Hash、NTLM 中继)。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值