深入研究Pass-the-Hash攻击与防御
字数 2485 2025-08-25 22:58:20

Pass-the-Hash攻击与防御全面指南

概述

Pass-the-Hash (PtH)攻击是一种利用Windows系统中存储的密码哈希值而非明文密码进行身份验证的攻击技术。这种攻击方式自20多年前出现以来,一直是Windows环境中横向移动的主要手段。尽管微软不断改进Windows安全机制,但PtH攻击在Windows 10 v1903环境中仍然有效。

攻击原理

哈希算法类型

Windows系统中主要涉及三种哈希类型:

  1. NT哈希(NTLM哈希)

    • 计算公式:NT_Hash(password) = MD4(UTF-16-LE(password))
    • 示例:NT_Hash("pass1") = "8D7A851DDE3E7BED903A41D686CD33BE"
    • 特点:不使用salt,容易受到彩虹表攻击
  2. NTLMv1哈希

    • 计算过程:
      1. 将NT哈希与5个零字节连接
      2. 分割为三个7字节的DES密钥
      3. 使用DES加密服务器提供的挑战值
    • 示例:NTLMv1("pass1", c) = "151814cebe6083b0551173d5a42adcfa183c70366cffd72f"
  3. NTLMv2哈希

    • 计算过程:
      1. 使用HMAC-MD5计算用户名和域名的哈希
      2. 使用结果作为密钥对服务器和客户端挑战值进行HMAC-MD5
    • 特点:比NTLMv1更安全,需要暴力破解

PtH攻击流程

  1. 哈希提取阶段

    • 从已控制的主机提取哈希
    • 通过网络从其他主机提取哈希
  2. 访问获取阶段

    • 使用提取的哈希访问同一或不同机器

哈希提取技术

从主机提取

1. 注册表中的NT哈希

  • 位置%SystemRoot%/system32/config/SAM,挂载在HKLM/SAM
  • 访问要求:SYSTEM或管理员权限
  • 工具
    • Mimikatz:privilege::debug, token::elevate, lsadump::sam
    • Meterpreter:需先迁移到LSASS进程再使用hashdump

2. 内存中的NT哈希

  • 来源:Local Security Authority Subsystem Service (LSASS)进程
  • 特点
    • 包含本地、Microsoft和域账户凭据
    • 用户注销后几分钟内仍可提取
  • 工具:Mimikatz的sekurlsa::logonpassword

3. Credential Guard环境

  • 保护机制
    • 使用虚拟化隔离LSASS进程(LSAISO)
    • 阻止非特权应用访问凭据
  • 限制
    • 不保护SAM
    • 在Windows 10 Pro上可能无效

4. Internal Monologue攻击

  • 步骤
    1. 修改注册表强制使用NTLMv1
    2. 检索进程令牌
    3. 模拟令牌获取NTLMv1响应
    4. 还原注册表
  • 特点
    • 在无Credential Guard时可提取NTLMv1哈希
    • 有Credential Guard时只能提取NTLMv2哈希

从网络提取

1. DCSync攻击

  • 原理:模拟域控制器行为通过域复制获取密码哈希
  • 权限要求:Administrators、Domain Admins、Enterprise Admins
  • 工具:Mimikatz的lsadump::dcsync

2. 中间人攻击

  • 攻击流程
    1. 诱骗用户向攻击者机器认证
    2. 转发认证消息以获取目标主机访问
  • 欺骗技术
    • SCF文件自动下载
    • Word文档嵌入SMB链接
    • ARP投毒/DNS欺骗
    • Broadcast Name Resolution Poisoning (BNRP)
  • 工具:Responder + Impacket的ntlmrelayx

哈希利用技术

1. SMB协议PtH

  • 工具
    • Metasploit的PsExec模块
    • Pass-the-Hash toolkit的pth-winexe
  • 限制
    • 本地账户默认无特权访问
    • 需设置LocalAccountTokenFilterPolicy

2. WMI协议PtH

  • 工具:Invoke-TheHash
  • 要求:目标主机上的管理员权限账户凭据

3. Kerberos协议PtH(Overpass-the-Hash)

  • 原理:使用NT哈希获取Kerberos票据
  • 工具:Mimikatz的sekurlsa::pth
  • 要求:攻击者需有管理员权限

4. RDP协议PtH

  • 条件:启用Restricted Admin设置
  • 工具:Pass-the-Hash toolkit的xfreerdp

防御措施

1. 通用安全措施

  • 保持系统更新
  • 使用强密码策略
  • 部署多因素认证
  • 限制用户权限
  • 教育用户正确注销而非断开RDP

2. 哈希保护

  • Credential Guard
    • 企业版/教育版最有效
    • 保护域账户凭据
  • 禁用NTLM:完全转向Kerberos
  • Active Directory分区
    • Privileged Access Management (PAM)
    • Just Enough Administration (JEA)
    • Protected Users安全组

3. PtH预防

  • 禁用LocalAccountTokenFilterPolicy
  • 实施Local Administrator Password Solution (LAPS)
  • 使用身份验证策略限制账户使用范围

4. PtH检测

  • 监控
    • PtH工具使用迹象
    • LSASS进程篡改尝试
    • 异常配置变更
    • 主机间异常连接
  • 工具
    • Sysmon检测LSASS操作
    • SACL高级审计
    • 蜜罐和honeycreds
    • Got-Responded检测中间人攻击

结论

尽管微软不断改进Windows安全机制,Pass-the-Hash攻击在Windows 10 v1903环境中仍然有效。企业应采取纵深防御策略,结合预防、保护和检测措施,才能有效降低PtH攻击风险。安全团队应特别关注域账户的保护、Credential Guard的部署以及异常活动的监控。

Pass-the-Hash攻击与防御全面指南 概述 Pass-the-Hash (PtH)攻击是一种利用Windows系统中存储的密码哈希值而非明文密码进行身份验证的攻击技术。这种攻击方式自20多年前出现以来,一直是Windows环境中横向移动的主要手段。尽管微软不断改进Windows安全机制,但PtH攻击在Windows 10 v1903环境中仍然有效。 攻击原理 哈希算法类型 Windows系统中主要涉及三种哈希类型: NT哈希(NTLM哈希) 计算公式: NT_Hash(password) = MD4(UTF-16-LE(password)) 示例: NT_Hash("pass1") = "8D7A851DDE3E7BED903A41D686CD33BE" 特点:不使用salt,容易受到彩虹表攻击 NTLMv1哈希 计算过程: 将NT哈希与5个零字节连接 分割为三个7字节的DES密钥 使用DES加密服务器提供的挑战值 示例: NTLMv1("pass1", c) = "151814cebe6083b0551173d5a42adcfa183c70366cffd72f" NTLMv2哈希 计算过程: 使用HMAC-MD5计算用户名和域名的哈希 使用结果作为密钥对服务器和客户端挑战值进行HMAC-MD5 特点:比NTLMv1更安全,需要暴力破解 PtH攻击流程 哈希提取阶段 : 从已控制的主机提取哈希 通过网络从其他主机提取哈希 访问获取阶段 : 使用提取的哈希访问同一或不同机器 哈希提取技术 从主机提取 1. 注册表中的NT哈希 位置 : %SystemRoot%/system32/config/SAM ,挂载在 HKLM/SAM 访问要求 :SYSTEM或管理员权限 工具 : Mimikatz: privilege::debug , token::elevate , lsadump::sam Meterpreter:需先迁移到LSASS进程再使用hashdump 2. 内存中的NT哈希 来源 :Local Security Authority Subsystem Service (LSASS)进程 特点 : 包含本地、Microsoft和域账户凭据 用户注销后几分钟内仍可提取 工具 :Mimikatz的 sekurlsa::logonpassword 3. Credential Guard环境 保护机制 : 使用虚拟化隔离LSASS进程(LSAISO) 阻止非特权应用访问凭据 限制 : 不保护SAM 在Windows 10 Pro上可能无效 4. Internal Monologue攻击 步骤 : 修改注册表强制使用NTLMv1 检索进程令牌 模拟令牌获取NTLMv1响应 还原注册表 特点 : 在无Credential Guard时可提取NTLMv1哈希 有Credential Guard时只能提取NTLMv2哈希 从网络提取 1. DCSync攻击 原理 :模拟域控制器行为通过域复制获取密码哈希 权限要求 :Administrators、Domain Admins、Enterprise Admins 工具 :Mimikatz的 lsadump::dcsync 2. 中间人攻击 攻击流程 : 诱骗用户向攻击者机器认证 转发认证消息以获取目标主机访问 欺骗技术 : SCF文件自动下载 Word文档嵌入SMB链接 ARP投毒/DNS欺骗 Broadcast Name Resolution Poisoning (BNRP) 工具 :Responder + Impacket的ntlmrelayx 哈希利用技术 1. SMB协议PtH 工具 : Metasploit的PsExec模块 Pass-the-Hash toolkit的pth-winexe 限制 : 本地账户默认无特权访问 需设置 LocalAccountTokenFilterPolicy 2. WMI协议PtH 工具 :Invoke-TheHash 要求 :目标主机上的管理员权限账户凭据 3. Kerberos协议PtH(Overpass-the-Hash) 原理 :使用NT哈希获取Kerberos票据 工具 :Mimikatz的 sekurlsa::pth 要求 :攻击者需有管理员权限 4. RDP协议PtH 条件 :启用Restricted Admin设置 工具 :Pass-the-Hash toolkit的xfreerdp 防御措施 1. 通用安全措施 保持系统更新 使用强密码策略 部署多因素认证 限制用户权限 教育用户正确注销而非断开RDP 2. 哈希保护 Credential Guard : 企业版/教育版最有效 保护域账户凭据 禁用NTLM :完全转向Kerberos Active Directory分区 : Privileged Access Management (PAM) Just Enough Administration (JEA) Protected Users安全组 3. PtH预防 禁用 LocalAccountTokenFilterPolicy 实施Local Administrator Password Solution (LAPS) 使用身份验证策略限制账户使用范围 4. PtH检测 监控 : PtH工具使用迹象 LSASS进程篡改尝试 异常配置变更 主机间异常连接 工具 : Sysmon检测LSASS操作 SACL高级审计 蜜罐和honeycreds Got-Responded检测中间人攻击 结论 尽管微软不断改进Windows安全机制,Pass-the-Hash攻击在Windows 10 v1903环境中仍然有效。企业应采取纵深防御策略,结合预防、保护和检测措施,才能有效降低PtH攻击风险。安全团队应特别关注域账户的保护、Credential Guard的部署以及异常活动的监控。