1. 前言
在现代企业网络环境中,Windows 域作为核心身份认证和管理框架,广泛应用于组织内部的资源访问控制。然而,域环境的复杂性也为攻击者提供了可乘之机。在 Windows 域渗透测试或攻击场景中,Hash(哈希值)是攻击者窃取凭据、进行横向移动或提升权限的关键。常见的攻击手段,如 Pass-the-Hash (PtH)、Pass-the-Ticket (PtT)、NTLM Relay 等,无一不依赖于对不同类型 Hash 的利用。
本文旨在系统分析 Windows 域中常见的 Hash 类型,包括 NTLM Hash、Net-NTLM Hash、Kerberos Hash 及其衍生形式,深入探讨其生成机制、攻击方式及其在渗透测试中的应用场景,最后提供针对性的防御策略。通过对这些技术的全面理解,安全从业者可以更好地评估域环境的安全性,而企业管理员则能够采取有效措施降低潜在风险。
2. Windows 认证中的 Hash 类型概述
Windows 域环境的身份认证主要依赖 NTLM(NT LAN Manager)和 Kerberos 两种协议,而 Hash 是这些协议的核心组成部分。不同的 Hash 类型在生成方式、存储位置和使用场景上存在显著差异,这也决定了它们在攻击中的适用性。以下是常见的 Hash 类型及其特性概览:
| Hash 类型 | 是否可用于 Pass-the-Hash (PtH) | 是否可用于 NTLM Relay | 是否可用于 Pass-the-Ticket (PtT) | 主要攻击方式 |
|---|---|---|---|---|
| NTLM Hash (NT Hash) | ✅ 是 | ❌ 否 | ✅ 是 (Kerberos RC4-HMAC) | Pass-the-Hash, Kerberos PtH |
| Net-NTLM Hash (NetNTLMv1 / v2) | ❌ 否 | ✅ 是 | ❌ 否 | NTLM Relay, 暴力破解 |
| Kerberos Hash (AES/RC4-HMAC) | ❌ 否 | ❌ 否 | ✅ 是 | Pass-the-Ticket, Golden Ticket |
| LSA Secrets (Cached Credentials) | ✅ 是 | ❌ 否 | ❌ 否 | LSA 提取, 本地身份冒充 |
这些 Hash 类型在域渗透中各有其独特作用,攻击者需要根据目标环境和获取的凭据类型选择合适的攻击路径。接下来,我们将逐一深入探讨每种 Hash 的技术细节及其攻击方式。
3. NTLM Hash (NT Hash)
3.1 NTLM Hash 介绍
NTLM Hash(也称为 NT Hash)是 Windows 系统用于存储用户密码的核心哈希值。它基于 MD4 算法,通过对用户密码的 Unicode 编码进行单向加密生成,计算公式如下:
NT Hash = MD4(Unicode(密码))
与早期的 LM Hash(LAN Manager Hash)相比,NTLM Hash 不再将密码分段处理,且支持更长的密码长度(理论上无上限),因此在安全性上有所提升。自 Windows NT 4.0 开始,NTLM Hash 成为默认的本地密码存储格式。
NTLM Hash 通常存储在以下位置:
- 本地系统:存储在 SAM(Security Account Manager)数据库中,位于
C:\Windows\System32\config\SAM文件内。 - 域控制器:存储在 Active Directory 的数据库文件
NTDS.dit中,路径通常为C:\Windows\NTDS\ntds.dit。
由于 NTLM Hash 是静态的,且直接与用户密码绑定,攻击者一旦获取该 Hash,即可利用其进行多种攻击,而无需破解明文密码。
3.2 NTLM Hash 的攻击方式
(1) Pass-the-Hash (PtH) 攻击
Pass-the-Hash (PtH) 是一种经典的凭据重用攻击,攻击者通过窃取 NTLM Hash,直接将其用于身份认证,而无需知道用户的明文密码。这种攻击利用了 NTLM 协议的一个特性:认证过程只验证 Hash 的有效性,而不要求提供原始密码。
攻击流程通常如下:
- 攻击者通过工具(如 Mimikatz)从目标系统中提取 NTLM Hash。
- 使用 PtH 工具(如
pth-winexe或impacket)将 Hash 注入到认证请求中。 - 成功认证后,攻击者获得目标系统的访问权限。
示例命令:
pth-winexe -U 'admin%aad3b435b51404eeaad3b435b51404ee:e52cac67419a9a224a3b108f3fa6cb6d' //192.168.1.100 cmd.exe
上述命令中,aad3b435b51404eeaad3b435b51404ee 是空的 LM Hash(现代系统中默认禁用),而 e52cac67419a9a224a3b108f3fa6cb6d 是 NTLM Hash。
(2) Kerberos Pass-the-Hash (PtH for Kerberos)
在支持 RC4-HMAC 的 Kerberos 环境中,NTLM Hash 可以直接作为 Kerberos 的密钥进行认证。这是因为 RC4-HMAC 的加密密钥实际上等同于 NTLM Hash。攻击者可通过以下步骤利用此特性:
- 使用 NTLM Hash 请求 Kerberos TGT(Ticket Granting Ticket)。
- 利用 TGT 访问域内资源。
常用工具如 Rubeus 支持此攻击,示例命令如下:
Rubeus.exe asktgt /user:admin /rc4:e52cac67419a9a224a3b108f3fa6cb6d /domain:corp.local
成功后,攻击者将获得一个 .kirbi 格式的 TGT 文件,可进一步用于后续攻击。
3.3 NTLM Hash 的局限性与风险
尽管 NTLM Hash 在 PtH 攻击中非常有效,但其适用性依赖于目标系统是否启用了 NTLM 认证。如果企业已完全禁用 NTLM,转而使用 Kerberos,则 PtH 的成功率将显著降低。此外,NTLM Hash 本身是不可逆的,但如果密码较弱,攻击者仍可通过离线暴力破解或彩虹表还原明文。
4. Net-NTLM Hash (NetNTLMv1 / NetNTLMv2)
4.1 Net-NTLM Hash 介绍
Net-NTLM Hash(也称网络 NTLM Hash)是 NTLM 协议在网络传输中用于认证的动态哈希值。与静态的 NTLM Hash 不同,Net-NTLM Hash 并非直接存储在系统中,而是根据服务器挑战(Server Challenge)和客户端响应动态生成,主要用于 SMB、LDAP、HTTP 等协议的认证。
Net-NTLM 有两个版本:
- Net-NTLMv1:较老的版本,使用 DES 算法结合 NTLM Hash 和服务器挑战生成,安全性较弱。
NetNTLMv1 = DES(挑战 + NT Hash) - Net-NTLMv2:引入了额外的客户端挑战(Client Challenge)和时间戳,提高了抗重放攻击能力。
NetNTLMv2 = HMAC-MD5(NT-Hash, ServerChallenge + ClientChallenge + Timestamp)
Net-NTLM Hash 的动态特性使其无法直接用于 PtH 攻击,但它在网络环境中的广泛使用使其成为 NTLM Relay 和暴力破解的理想目标。
4.2 Net-NTLM Hash 的攻击方式
(1) NTLM Relay 攻击
NTLM Relay 是一种中间人攻击,攻击者通过拦截受害者的 Net-NTLM Hash,并将其“中继”到另一台服务器,从而冒充受害者身份访问资源。攻击成功的关键条件包括:
- 目标服务器未启用 SMB 签名(SMB Signing)。
- 攻击者位于受害者与目标服务器之间的网络路径上。
攻击流程如下:
- 诱导受害者向攻击者控制的恶意服务器发起 NTLM 认证(如通过伪造的 SMB 共享)。
- 捕获受害者的 Net-NTLM Hash。
- 将 Hash 中继到目标服务器,完成认证。
常用工具如 impacket-ntlmrelayx 可实现此攻击:
impacket-ntlmrelayx -t smb://192.168.1.200 -smb2support
成功后,攻击者可直接在目标服务器上执行命令或转储更多凭据。
(2) Net-NTLM Hash 破解
如果无法进行中继,攻击者可尝试对捕获的 Net-NTLMv2 Hash 进行离线破解。由于 Net-NTLMv2 包含时间戳和挑战,其计算复杂度高于 NTLM Hash,但仍可通过高性能工具暴力破解:
hashcat -m 5600 netntlmv2-hash.txt wordlist.txt -O
其中,-m 5600 表示 Net-NTLMv2 的 Hashcat 模式。破解成功后,攻击者可获得明文密码或 NTLM Hash,进一步扩展攻击范围。
4.3 Net-NTLM Hash 的应用场景与风险
Net-NTLM Hash 在域环境中非常常见,尤其是在 SMB 文件共享和跨系统认证中。攻击者通常通过钓鱼、恶意链接或 ARP 欺骗诱导受害者泄露 Net-NTLM Hash。其主要风险在于协议设计上的弱点,例如缺乏强制签名,导致中继攻击成为可能。
5. Kerberos Hash (AES/RC4-HMAC)
5.1 Kerberos Hash 介绍
Kerberos 是 Windows 域环境中默认的认证协议,相较于 NTLM 具有更高的安全性。它使用对称加密生成票据(Ticket),主要依赖以下两种 Hash:
- AES256-HMAC-SHA1:基于 AES-256 加密,安全性更高,通常用于现代域环境。
- RC4-HMAC:基于 RC4 算法,密钥直接等同于 NTLM Hash,向后兼容旧系统。
Kerberos Hash 通常与用户或服务的长期密钥绑定,存储在域控制器的 NTDS.dit 文件中。攻击者若获取这些密钥,可伪造票据或直接冒充用户。
5.2 Kerberos Hash 的攻击方式
(1) Pass-the-Ticket (PtT)
Pass-the-Ticket (PtT) 是一种基于 Kerberos 票据的攻击,攻击者通过窃取 TGT(Ticket Granting Ticket)或服务票据(Service Ticket),直接将其注入当前会话,从而访问域内资源。
攻击流程:
- 从内存中提取票据(如使用 Mimikatz 的
sekurlsa::tickets)。 - 使用工具将票据导入会话。
示例命令:
Rubeus.exe ptt /ticket:TGT.kirbi
成功后,攻击者无需提供密码即可访问目标服务。
(2) Golden Ticket 攻击
Golden Ticket 是一种更高级的攻击,攻击者利用域控制器中 krbtgt 账户的 NTLM Hash,伪造任意用户的 TGT 票据。由于 krbtgt 是 Kerberos 的核心信任账户,其 Hash 一旦泄露,攻击者可获得域内几乎无限的访问权限。
生成 Golden Ticket 的命令:
mimikatz "kerberos::golden /user:Administrator /domain:corp.local /sid:S-1-5-21-123456789-987654321-123456789 /krbtgt:aabbcc112233445566778899aabbccdd"
Golden Ticket 的有效期通常为 10 年,除非 krbtgt 的密码被重置。
5.3 Kerberos Hash 的高级攻击变种
- Silver Ticket:针对特定服务的伪造票据,仅需目标服务的 NTLM Hash。
- Overpass-the-Hash:使用 NTLM Hash 请求 TGT,变相实现 PtH。
这些攻击的成功依赖于 Kerberos 配置的弱点,如允许 RC4 加密或未及时更新 krbtgt 密钥。
6. Hash 提取方式
6.1 通过 Mimikatz 提取 Hash
Mimikatz 是域渗透中最常用的凭据提取工具,可从 LSASS(Local Security Authority Subsystem Service)进程内存中提取 NTLM Hash 和 Kerberos 票据:
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" exit
此命令需以管理员权限运行,并可能触发防病毒软件的警报。
6.2 通过 NTDS.dit 提取域用户 Hash
对于域控制器,攻击者可通过导出 NTDS.dit 文件获取所有用户的 NTLM Hash:
ntdsutil "activate instance ntds" "ifm" "create full C:\ntds" quit
随后使用工具如 secretsdump 解析:
impacket-secretsdump -ntds C:\ntds\ntds.dit -system C:\ntds\SYSTEM -outputfile hashes.txt
6.3 其他提取方法
- DCSync:通过伪装成域控制器,利用复制协议提取 Hash。
- Volume Shadow Copy:创建 SAM 文件快照以提取本地 Hash。
7. 防御措施
7.1 禁用 NTLM 认证
NTLM 协议存在固有弱点,建议在域环境中完全禁用:
gpedit.msc -> 计算机配置 -> 策略 -> 安全设置 -> 本地策略 -> 安全选项 -> 限制 NTLM:拒绝所有
7.2 启用 SMB 签名
防止 NTLM Relay 攻击的最有效方法是强制启用 SMB 签名:
Set-SmbServerConfiguration -RequireSecuritySignature $true
7.3 使用 Kerberos 并启用 AES 加密
将所有账户的 Kerberos 加密类型升级至 AES:
Set-ADAccountControl -KerberosEncryptionType AES256-SHA1 -Identity "Administrator"
7.4 LSASS 保护
启用 LSASS 的保护模式,防止 Mimikatz 等工具提取凭据:
reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa /v RunAsPPL /t REG_DWORD /d 1 /f
7.5 其他建议
- 定期重置
krbtgt账户密码,防止 Golden Ticket 长期有效。 - 部署多因素认证(MFA),增加凭据窃取后的使用难度。
- 使用入侵检测系统(IDS)监控异常认证行为。
8. 结论
在 Windows 域渗透中,不同类型的 Hash 各有其独特的生成机制和攻击用途。NTLM Hash 是 Pass-the-Hash 的核心,Net-NTLM Hash 是 NTLM Relay 的关键,而 Kerberos Hash 则是 Pass-the-Ticket 和 Golden Ticket 的基础。攻击者通过灵活运用这些技术,能够在域环境中实现从单点突破到全面控制的转变。
对于安全测试人员而言,理解这些 Hash 的区别及其攻击方式,不仅有助于评估企业网络的安全状况,还能为漏洞修复提供具体方向。对于企业管理员来说,采取多层次的防御措施,如禁用 NTLM、强制签名和启用高级加密,是降低域渗透风险的关键。
随着网络安全威胁的不断演化,Windows 域环境的认证机制也在持续改进。未来的安全实践需要更加注重凭据保护和协议升级,以应对日益复杂的攻击手段。
原文 https://blog.csdn.net/2301_79518550/article/details/146401133