// 红队渗透 · 2025-02-06

AD 域渗透中的哈希种类与 Hashcat 破解模式详解

在进行 Active Directory(AD)域渗透测试时,往往需要从域内获取各种形式的密码哈希。通过提取这些哈希,渗透测试人员可以利用离线密码破解工具(如 Hashcat)对其进行暴力破解、规则破解或组合攻击,从而获取明文密码,并进一步进行横向移动或权限提升。本文将详细介绍在 AD 域渗透中可能遇到的所有常见哈希类型,以及 Hashcat 对应的破解模式和使用场景。


1. NTLM 哈希

概述

NTLM 哈希是 Windows 认证体系中最常见的密码存储方式。AD 中的账户(通常通过工具如 secretsdump.py 提取)会以 NTLM 哈希形式存储密码。

Hashcat 破解模式

  • 模式:1000
    • 描述:Hashcat 中的模式 1000 用于破解标准的 NTLM 哈希。
    • 命令示例:
      hashcat -m 1000 ntlm.hash /usr/share/wordlists/rockyou.txt
    • 应用场景:适用于通过 pwdump、secretsdump 等工具提取的 NTLM 密码哈希。

2. Kerberos 哈希

在 AD 环境中,Kerberos 协议是身份验证的核心。由于其设计特点,渗透测试中会出现两类针对 Kerberos 的离线破解哈希:AS-REP 与 TGS。

2.1 Kerberos AS-REP 哈希

概述

当账户未启用预身份验证(Pre-Authentication)时,攻击者可以请求 AS-REP 消息,并提取包含加密票据的数据。这种攻击手法称为 ASREP Roasting。获取的哈希格式通常类似于:

$krb5asrep$23$username@DOMAIN$<ticket_data>

Hashcat 破解模式

  • 模式:18200
    • 描述:Hashcat 模式 18200 专门用于破解 Kerberos 5 AS-REP 哈希(etype 23)。
    • 命令示例:
      hashcat -m 18200 asrep.hash /usr/share/wordlists/rockyou.txt
    • 应用场景:适用于针对未启用预认证的账户进行 ASREP Roasting,从而离线破解密码。

2.2 Kerberos TGS 哈希(Kerberoasting)

概述

Kerberoasting 攻击针对的是 AD 中存在 SPN(Service Principal Name)的服务账户。通过向域控制器请求服务票据(TGS),渗透测试人员可以获得经过 RC4-HMAC 加密的票据哈希,其格式一般为:

$krb5tgs$23$*username$DOMAIN$SPN*$ticket_data

Hashcat 破解模式

  • 模式:13100
    • 描述:Hashcat 模式 13100 用于破解 Kerberos 5 TGS-REP 哈希(etype 23),也就是 Kerberoasting 攻击得到的哈希。
    • 命令示例:
      hashcat -m 13100 tgs.hash /usr/share/wordlists/rockyou.txt
    • 应用场景:通过工具如 getuserspn.py 获取的 TGS 票据哈希,可以利用该模式进行离线密码猜解。

3. NetNTLM 挑战响应哈希

在渗透测试中,当利用网络捕获工具(例如 Responder 或 Metasploit 模块)截获挑战响应时,可能会获得 NetNTLMv1 或 NetNTLMv2 哈希。这类哈希常用于对 Windows 身份验证挑战-响应协议进行攻击。

3.1 NetNTLMv1

  • 模式:5500
    • 描述:Hashcat 模式 5500 用于破解 NetNTLMv1 哈希。
    • 命令示例:
      hashcat -m 5500 netntlmv1.hash /usr/share/wordlists/rockyou.txt
    • 应用场景:在捕获到 NetNTLMv1 挑战响应时使用,但由于 NetNTLMv1 安全性较低,实际环境中较少见。

3.2 NetNTLMv2

  • 模式:5600
    • 描述:Hashcat 模式 5600 专用于破解 NetNTLMv2 哈希。
    • 命令示例:
      hashcat -m 5600 netntlmv2.hash /usr/share/wordlists/rockyou.txt
    • 应用场景:较常见于捕获的网络挑战响应中,NetNTLMv2 是当前 AD 环境中更为常见的挑战响应哈希格式。

4. Cached Domain Credentials(DCC2)

概述

Windows 系统中存储的域缓存凭证(Cached Domain Credentials)通常也以哈希形式保存。通过工具(例如 secretsdump.py)可以提取这些哈希,用于离线破解。其格式通常为:

$DCC2$[iteration]#[username]#[domain]#[salt]#[hash]

Hashcat 破解模式

  • 模式:2100
    • 描述:Hashcat 模式 2100 专门用于破解 Windows Cached Domain Credentials(DCC2)。
    • 命令示例:
      hashcat -m 2100 dcc2.hash /usr/share/wordlists/rockyou.txt
    • 应用场景:针对 Windows 系统中缓存的域凭证进行离线破解,常见于针对笔记本电脑或其他离线系统的调查中。

总结与建议

综上所述,常见的哈希类型及其对应的 Hashcat 破解模式总结如下:

哈希类型 格式示例 Hashcat 模式 获取工具或场景
NTLM 32位16进制字符串 1000 secretsdump.py、pwdump
Kerberos AS-REP(PreAuth 未启用账户) $krb5asrep$23$username@DOMAIN$<ticket_data> 18200 getasreproast.py、Rubeus
Kerberos TGS(Kerberoasting) $krb5tgs$23$*username$DOMAIN$SPN*$<ticket_data> 13100 getuserspn.py、impacket 等
NetNTLMv1 挑战响应格式(特定格式的字符串) 5500 捕获网络流量(Responder、Metasploit)
NetNTLMv2 挑战响应格式(特定格式的字符串) 5600 捕获网络流量(Responder、Metasploit)
Cached Domain Credentials (DCC2) $DCC2$[iteration]#[username]#[domain]#[salt]#[hash] 2100 secretsdump.py、Windows 系统缓存凭证提取

在实际渗透测试中,识别不同的哈希类型是破解过程的第一步。由于上述列出的哈希类型较多,记忆起来可能较为困难。为了使用时方便查找相关的哈希类型,可以用 hashcat -h | grep Kerberos 命令来手动查阅。

在这里插入图片描述 以下是对各种 Kerberos 哈希模式的解释:

  • 19600: Kerberos 5, etype 17, TGS-REP(Ticket Granting Service Reply)
    用于破解经过加密的 Kerberos 服务票据哈希(etype 17)。

  • 19800: Kerberos 5, etype 17, Pre-Auth
    用于破解 Kerberos 认证中的预认证哈希。

  • 19700: Kerberos 5, etype 18, TGS-REP
    对应于 etype 18 加密类型的 TGS-REP 哈希。

  • 19900: Kerberos 5, etype 18, Pre-Auth
    针对 Kerberos etype 18 的预认证哈希。

  • 7500: Kerberos 5, etype 23, AS-REQ Pre-Auth
    适用于 Kerberos 5 认证中的请求预认证哈希。

  • 13100: Kerberos 5, etype 23, TGS-REP
    针对 etype 23 加密类型的 TGS 票据哈希。

  • 18200: Kerberos 5, etype 23, AS-REP
    用于破解 Kerberos 认证中的 AS-REP 哈希,适用于攻击未启用预身份验证的账户(ASREP Roasting)。

此外,还可以使用 haiti(Hash Identifier),它是一个命令行工具,通过 gem install haiti-hash 命令,即可轻松安装。haiti 可以自动分析输入的哈希值,并准确识别其对应的哈希类型,从而帮助测试人员选择正确的破解策略。

以下是一个使用示例:

haiti 'enterprise-security::VULNNET:e3ce6172d5c46f70:C9D337B801D753F7C7A99B86B03E799C:010100000000000000C14A988FF2D7013F2685222C47BE030000000002000800420053005300450001001E00570049004E002D0044003300370033004D0046004A005A0030004F00350004003400570049004E002D0044003300370033004D0046004A005A0030004F0035002E0042005300530045002E004C004F00430041004C000300140042005300530045002E004C004F00430041004C000500140042005300530045002E004C004F00430041004C000700080000C14A988FF2D7010600040002000000080030003000000000000000000000000030000098A6EBD82A72AAFE8801CE20C7E617EA16CC5F12E45BD3FD3F8F6B40F7840A730A0010000000000000000000000000000000000009001E0063006900660073002F00310030002E0039002E00310039002E00370037000000000000000000'

在这里插入图片描述

通过该工具,你可以轻松地识别哈希类型,从而选择合适的破解方法。


Hashcat 使用建议

  • 字典与规则:针对不同的哈希类型,建议先使用常用的字典(如 rockyou.txt),再根据情况结合 Hashcat 内置的规则或自定义规则进行二次破解。
  • 硬件加速:由于哈希破解(尤其是 Kerberos 哈希)的计算量较大,建议使用支持 OpenCL/CUDA 的 GPU 加速版 Hashcat,以提高破解速度。
  • 提权与横向移动:一旦成功破解出密码,应当结合 AD 域内权限、SPN 账户及 Kerberos 协议的特性,进行后续的横向移动和权限提升操作。

原文 https://blog.csdn.net/2301_79518550/article/details/145441372