深入研究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系统中主要涉及三种哈希类型:
-
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
- Mimikatz:
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的部署以及异常活动的监控。