LLMNR和NetBIOS欺骗攻击分析及防范
字数 1633 2025-08-05 08:18:04

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

1. 协议概述

1.1 LLMNR协议

链路本地多播名称解析(LLMNR)是基于DNS数据包格式的协议,允许IPv4和IPv6主机在同一本地链路上执行名称解析。

特点

  • 在DNS服务器不可用时使用
  • 适用于临时对等网络(如机场候机区域)
  • 通过UDP发送多播查询
  • 查询范围限制在本地子网内

工作流程

  1. 主机检查内部名称缓存
  2. 查询配置的主DNS服务器
  3. 尝试备用DNS服务器(如果配置)
  4. 如果DNS解析失败,转为使用LLMNR
  5. 通过UDP发送多播查询
  6. 支持LLMNR的主机比较查询名称与自身主机名
  7. 匹配则返回单播响应

1.2 NetBIOS协议

NetBIOS(网络基本输入输出系统)提供OSI模型中的会话层服务,主要用于局域网内计算机互访。

特点

  • 提供名称解析服务(将NetBIOS名解析为IP地址)
  • 默认随TCP/IP协议安装
  • 使用多种解析模式:WINS服务、广播及Lmhost文件

相关端口

  • 137/UDP:NetBIOS名称服务
  • 138/UDP:NetBIOS数据报服务
  • 139/TCP:NetBIOS会话服务

2. Windows名称解析顺序

Windows系统按以下顺序进行名称解析:

  1. 检查是否为本地机器名称
  2. 检查本地缓存
  3. 搜索本地hosts文件(%windir%\System32\drivers\etc\hosts)
  4. 查询DNS缓存/DNS服务器
  5. 使用LLMNR(链路本地多播名称解析)
  6. 使用NetBIOS名称服务(NBT-NS)

3. 攻击原理

3.1 漏洞成因

当DNS解析失败时,Windows会通过LLMNR和NetBIOS在本地进行名称解析:

  • 客户端广播未经认证的UDP查询
  • 网络上的任何机器都可以响应并声称是目标机器
  • 攻击者可伪装为目标机器,诱使受害者交出登录凭证

3.2 攻击步骤

  1. 攻击者监听网络中的LLMNR和NetBIOS广播
  2. 受害者尝试访问不存在或不可达的资源
  3. 系统前四个解析步骤失败,转为使用LLMNR/NetBIOS
  4. 攻击者响应广播,声称拥有被请求的资源
  5. 受害者尝试与攻击者建立认证连接
  6. 攻击者获取受害者的Net-NTLMv2哈希
  7. 攻击者破解哈希获取明文密码或进行哈希传递攻击

3.3 攻击工具

Responder工具

  • 监听LLMNR和NetBIOS请求
  • 内置多种认证服务器(SMB、MSSQL、HTTP、HTTPS、LDAP等)
  • 可收集明文凭据
  • 支持Multi-Relay功能执行命令

基本用法

responder -I eth0 -f
  • -I:指定网卡
  • -f:允许查看受害者指纹

4. 攻击演示

4.1 环境要求

  • 靶机需在家庭网络或公共网络下
  • 确保凭据通过SMB协议传输

4.2 触发条件

  • 靶机访问不存在的主机地址(如\\gha)
  • 或命令行执行net use \\gha

4.3 获取凭证

Responder会捕获:

  • 用户名
  • NTLMv2哈希
  • 存储在log目录下的txt文件中

4.4 哈希破解

常用工具:

  1. John the Ripper
    john hash.txt
    
  2. Hashcat
    hashcat -m 5600 hash.txt wordlist.txt
    

5. 防范措施

5.1 禁用协议

  • 在每台计算机的NIC上禁用NetBIOS
  • 通过DHCP禁用LLMNR

5.2 防火墙配置

  • 阻止NetBIOS协议和TCP 139端口
  • 阻止LLMNR UDP 5355端口
  • 限制出站流量

5.3 端口重定向

修改注册表将默认端口改为高端口:

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

修改"PortNumber"值

5.4 IPsec策略

为相关端口配置IPsec安全策略,使扫描无响应

5.5 其他措施

  • 启用SMB签名
  • 使用网络访问控制(NAC)
  • 实施网络分段
  • 监控异常名称解析请求

6. 总结

LLMNR和NetBIOS欺骗攻击利用Windows名称解析机制中的设计缺陷,通过响应广播查询获取用户凭证。防范此类攻击需要综合采用禁用不必要协议、配置防火墙规则、修改默认端口和实施IPsec策略等措施,同时加强网络监控和用户安全意识教育。

LLMNR和NetBIOS欺骗攻击分析及防范 1. 协议概述 1.1 LLMNR协议 链路本地多播名称解析(LLMNR) 是基于DNS数据包格式的协议,允许IPv4和IPv6主机在同一本地链路上执行名称解析。 特点 : 在DNS服务器不可用时使用 适用于临时对等网络(如机场候机区域) 通过UDP发送多播查询 查询范围限制在本地子网内 工作流程 : 主机检查内部名称缓存 查询配置的主DNS服务器 尝试备用DNS服务器(如果配置) 如果DNS解析失败,转为使用LLMNR 通过UDP发送多播查询 支持LLMNR的主机比较查询名称与自身主机名 匹配则返回单播响应 1.2 NetBIOS协议 NetBIOS(网络基本输入输出系统) 提供OSI模型中的会话层服务,主要用于局域网内计算机互访。 特点 : 提供名称解析服务(将NetBIOS名解析为IP地址) 默认随TCP/IP协议安装 使用多种解析模式:WINS服务、广播及Lmhost文件 相关端口 : 137/UDP:NetBIOS名称服务 138/UDP:NetBIOS数据报服务 139/TCP:NetBIOS会话服务 2. Windows名称解析顺序 Windows系统按以下顺序进行名称解析: 检查是否为本地机器名称 检查本地缓存 搜索本地hosts文件(%windir%\System32\drivers\etc\hosts) 查询DNS缓存/DNS服务器 使用LLMNR(链路本地多播名称解析) 使用NetBIOS名称服务(NBT-NS) 3. 攻击原理 3.1 漏洞成因 当DNS解析失败时,Windows会通过LLMNR和NetBIOS在本地进行名称解析: 客户端广播未经认证的UDP查询 网络上的任何机器都可以响应并声称是目标机器 攻击者可伪装为目标机器,诱使受害者交出登录凭证 3.2 攻击步骤 攻击者监听网络中的LLMNR和NetBIOS广播 受害者尝试访问不存在或不可达的资源 系统前四个解析步骤失败,转为使用LLMNR/NetBIOS 攻击者响应广播,声称拥有被请求的资源 受害者尝试与攻击者建立认证连接 攻击者获取受害者的Net-NTLMv2哈希 攻击者破解哈希获取明文密码或进行哈希传递攻击 3.3 攻击工具 Responder工具 : 监听LLMNR和NetBIOS请求 内置多种认证服务器(SMB、MSSQL、HTTP、HTTPS、LDAP等) 可收集明文凭据 支持Multi-Relay功能执行命令 基本用法 : -I :指定网卡 -f :允许查看受害者指纹 4. 攻击演示 4.1 环境要求 靶机需在家庭网络或公共网络下 确保凭据通过SMB协议传输 4.2 触发条件 靶机访问不存在的主机地址(如 \\gha ) 或命令行执行 net use \\gha 4.3 获取凭证 Responder会捕获: 用户名 NTLMv2哈希 存储在log目录下的txt文件中 4.4 哈希破解 常用工具: John the Ripper : Hashcat : 5. 防范措施 5.1 禁用协议 在每台计算机的NIC上禁用NetBIOS 通过DHCP禁用LLMNR 5.2 防火墙配置 阻止NetBIOS协议和TCP 139端口 阻止LLMNR UDP 5355端口 限制出站流量 5.3 端口重定向 修改注册表将默认端口改为高端口: 修改"PortNumber"值 5.4 IPsec策略 为相关端口配置IPsec安全策略,使扫描无响应 5.5 其他措施 启用SMB签名 使用网络访问控制(NAC) 实施网络分段 监控异常名称解析请求 6. 总结 LLMNR和NetBIOS欺骗攻击利用Windows名称解析机制中的设计缺陷,通过响应广播查询获取用户凭证。防范此类攻击需要综合采用禁用不必要协议、配置防火墙规则、修改默认端口和实施IPsec策略等措施,同时加强网络监控和用户安全意识教育。