// 红队渗透 · 2025-03-30

域渗透中不同 Hash 的区别及其攻击方式

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 的有效性,而不要求提供原始密码。

攻击流程通常如下:

  1. 攻击者通过工具(如 Mimikatz)从目标系统中提取 NTLM Hash。
  2. 使用 PtH 工具(如 pth-winexe 或 impacket)将 Hash 注入到认证请求中。
  3. 成功认证后,攻击者获得目标系统的访问权限。

示例命令:

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。攻击者可通过以下步骤利用此特性:

  1. 使用 NTLM Hash 请求 Kerberos TGT(Ticket Granting Ticket)。
  2. 利用 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)。
  • 攻击者位于受害者与目标服务器之间的网络路径上。

攻击流程如下:

  1. 诱导受害者向攻击者控制的恶意服务器发起 NTLM 认证(如通过伪造的 SMB 共享)。
  2. 捕获受害者的 Net-NTLM Hash。
  3. 将 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),直接将其注入当前会话,从而访问域内资源。

攻击流程:

  1. 从内存中提取票据(如使用 Mimikatz 的 sekurlsa::tickets)。
  2. 使用工具将票据导入会话。

示例命令:

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