Windows 名称解析机制探究及缺陷利用
字数 1936 2025-08-29 08:31:53
Windows 名称解析机制深入解析及安全防御指南
一、Windows 名称解析概述
名称解析是将计算机名称转换为IP地址的过程,Windows系统主要支持两种名称类型:
-
主机名称(Host Name)
- 狭义指计算机名称,广义包含互联网域名
- 最大长度255字符,允许A-Z、a-z和"-"
- 完全限定域名(FQDN)格式:主机名.主域名后缀(如seclab.her0in.org)
-
NetBIOS名称
- Windows网络编程接口使用的名称
- 最大长度16字符(15字符名称+1字符服务类型标识)
- 常见服务类型标识:
- 0x20:文件和打印服务
- 0x00:工作站服务
- 0x03:报信者服务
管理命令:
- 查看NetBIOS名称:
nbtstat -n - 查看指定IP主机的NetBIOS名称:
nbtstat -A ipaddress
二、Windows名称解析协议详解
1. DNS协议
- 特点:首选协议,支持IPv4/IPv6,完全依赖DNS服务器
- 端口:UDP/53
- 解析流程:
- 检查本地DNS缓存(包含hosts文件内容)
- 查询配置的DNS服务器
- 服务器无响应则请求失败
管理命令:
- 查看DNS缓存:
ipconfig /displaydns - 清除DNS缓存:
ipconfig /flushdns
2. NetBIOS协议
- 特点:早期Windows使用,基于广播的名称解析
- 端口:UDP/137
- 增强服务:WINS(Windows Internet Name Service)服务器实现单播通信
- 解析流程:
- 检查NetBIOS缓存
- 查询WINS服务器(如配置)
- 子网广播
- 读取lmhosts文件(位于C:\Windows\System32\drivers\etc\)
管理命令:
- 查看NetBIOS缓存:
nbtstat -c - 清除NetBIOS缓存:
nbtstat -R
3. LLMNR协议(本地链路多播名称解析)
- 特点:Vista后引入,支持IPv4/IPv6,端到端解析
- 端口:UDP/5355
- 广播地址:
- IPv4:224.0.0.252
- IPv6:FF02:0:0:0:0:0:1:3或FF02::1:3
- 解析流程:
- 检查NetBIOS缓存
- 子网广播
- 无响应则请求失败
三、Windows名称解析顺序
影响因素
-
操作系统版本:
- Windows 2K/XP/2K3:DNS → NetBIOS
- Vista及之后系统:DNS → LLMNR → NetBIOS
-
网络节点模式(通过
ipconfig /all查看):- B-节点(广播):广播 → 检查LMHOSTS缓存 → 检查LMHOSTS文件
- P-节点(对等):完全依赖WINS服务器
- M-节点(混合):默认B节点,失败转P节点
- H-节点(混合):默认P节点,失败转B节点(Windows默认模式)
四、名称解析安全威胁与防御
常见攻击技术
- DNS Spoof:伪造DNS响应
- NBNS Poison:NetBIOS名称服务投毒
- LLMNR Poison:LLMNR协议投毒
- ICMP Redirection:ICMP重定向攻击
攻击演示:LLMNR Poison
环境:
- 攻击者(Linux):192.168.237.133
- 受害者(Win8.1):192.168.237.129
攻击过程:
- 受害者访问不存在的主机(如
ping nonexist) - Responder工具响应LLMNR广播
- 受害者NetBIOS缓存被污染
- 通过SMB共享或HTTP 401认证获取受害者HASH
- 对HASH进行暴力破解(如使用john)
工具:
- Responder(SpiderLabs)
- ZARP工具包
防御措施
-
禁用不必要的协议:
- 组策略禁用LLMNR:
计算机配置→管理模板→网络→DNS客户端→关闭多播名称解析 - 禁用NetBIOS:网络适配器属性→TCP/IPv4高级→WINS→禁用NetBIOS over TCP/IP
- 组策略禁用LLMNR:
-
网络分段:限制广播域范围
-
启用SMB签名:防止中间人攻击
-
使用强认证:避免使用NTLMv1,启用NTLMv2或Kerberos
-
监控网络流量:检测异常的LLMNR/NBNS流量
-
教育用户:避免访问不明共享或链接
五、参考资源
- LLMNR协议规范:https://en.wikipedia.org/wiki/Link-Local_Multicast_Name_Resolution
- Responder工具:https://github.com/SpiderLabs/Responder
- Microsoft名称解析文档