1. 项目概述从哈希到票据的横向渗透艺术在真实的内网攻防演练或安全评估中突破边界进入内网往往只是第一步。真正的挑战在于如何在缺乏明文密码、甚至缺乏有效账户凭证的情况下在内部网络中横向移动扩大战果。这时PTHPass-the-Hash、PTKPass-the-Key和PTTPass-the-Ticket这三种技术就成为了攻击者的“王牌”。它们绕过了传统的密码验证机制直接利用Windows认证体系中的核心凭据——哈希值和Kerberos票据——来实现身份仿冒和权限提升。这篇文章我将结合自己多年的红队实战经验为你彻底拆解这三种技术的原理、应用场景、实操手法以及防御思路。无论你是安全工程师、渗透测试人员还是想深入了解内网安全的运维理解这些技术都至关重要。它们不仅是攻击路径更是理解Windows安全认证机制的一扇窗。2. 横向渗透的基石理解Windows认证机制在深入PTH/PTK/PTT之前我们必须先搞清楚它们所攻击的目标是什么。Windows内网的横向移动本质上是身份认证的滥用。现代Windows环境主要依赖两种认证协议NTLMNT LAN Manager和Kerberos。2.1 NTLM认证与哈希的诞生NTLM是一种挑战/响应认证协议。当你用密码登录一台Windows主机时系统并不会存储或传输你的明文密码。它会使用你的密码生成一个“哈希值”Hash你可以把它想象成密码的“数字指纹”。这个指纹是单向的理论上无法反推出原始密码。在NTLM认证中当客户端尝试访问服务器资源时服务器会发送一个随机挑战Challenge客户端需要用密码哈希计算出一个响应Response并传回。服务器验证这个响应是否正确从而判断客户端身份。这里就产生了攻击面如果攻击者获取了密码哈希他就可以在不知道明文密码的情况下直接使用这个哈希来计算正确的响应通过认证。这就是PTH攻击的核心逻辑。在Windows系统中最常被获取的是NTLM哈希也叫NTHash它存储在本地安全账户管理器SAM数据库或域控制器DC的NTDS.dit文件中。注意除了NTLM哈希还有一个叫LMLAN Manager哈希的古老产物因其脆弱性在现代系统中默认已禁用但在某些老旧环境或特定配置下仍可能遇到。2.2 Kerberos认证与票据的流转在域环境中更主流、更安全的是Kerberos协议。它是一个基于票据Ticket的三方认证协议涉及客户端、服务端和密钥分发中心KDC在Windows域中就是域控制器。Kerberos认证过程比NTLM复杂但理解其流程对PTT攻击至关重要。简化流程如下AS-REQ/AS-REP用户用密码向KDC认证获取一个票据授予票据TGT。TGS-REQ/TGS-REP用户用TGT向KDC申请访问特定服务如CIFS文件共享的服务票据ST。AP-REQ用户向服务端出示ST服务端验证后授予访问权限。这里的关键是一旦用户拿到了TGT在它过期默认10小时之前都可以用它来申请各种服务的ST而无需再次输入密码。如果攻击者能窃取到这个TGT他就能冒充用户身份申请访问任何该用户有权访问的服务。这就是PTT攻击的根源。2.3 横向渗透的常见入口攻击者是如何获得发起PTH/PTK/PTT攻击所需的初始凭据的呢常见入口包括凭证转储通过Mimikatz、SecretsDump等工具从已控主机的内存或注册表中提取登录用户的哈希或票据。网络嗅探在共享网络段如集线器环境或配置不当的交换机嗅探NTLM认证流量可能截获哈希。Pass-the-Hash攻击其他服务利用获取的哈希攻击允许NTLM认证的服务如SMB、WinRM、RDP受限等。Kerberoasting一种针对Kerberos的攻击通过请求服务票据并离线破解其加密部分来获取服务账户的哈希。黄金票据/白银票据在已获取域控制器密钥krbtgt账户哈希的情况下直接伪造TGT或ST这是PTT攻击的终极形态。理解了这些基础我们就能明白PTH、PTK、PTT并非独立的魔法而是针对Windows认证体系不同环节的精准打击工具。3. PTH攻击详解绕过密码验证的“哈希传递”PTH是内网横向中最经典、最直接的技术。它的前提很简单你拿到了目标用户的NTLM哈希并且目标系统允许NTLM认证。3.1 攻击原理与适用场景PTH攻击完全跳过了“密码-哈希”的生成步骤。攻击工具直接使用窃取的哈希值参与NTLM认证的挑战/响应过程。对于服务端来说它收到的响应是正确的因此认为客户端提供了正确的密码。适用场景工作组环境NTLM是主要的认证方式。域环境中的非Kerberos服务某些服务或老旧系统可能强制使用或回退到NTLM。针对本地管理员账户在同一台机器上本地管理员账户的哈希可以用于PTH到本机在受控主机上提权。“受限管理模式”下的RDPWindows的RDP默认不支持PTH但开启“受限管理模式”后可以使用哈希进行网络级认证。3.2 实战工具与操作步骤最著名的PTH工具非Mimikatz莫属。它的sekurlsa::pth模块是执行PTH的瑞士军刀。基本操作流程获取哈希首先你需要从已控机器上转储哈希。常用命令mimikatz # privilege::debug mimikatz # sekurlsa::logonpasswords这条命令会列出当前内存中所有登录会话的凭据包括NTLM哈希。找到目标用户例如域管理员Administrator的NTLM字段值。执行PTH假设我们获取到域管理员CORP\Administrator的哈希是aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0示例。mimikatz # sekurlsa::pth /user:Administrator /domain:CORP /ntlm:31d6cfe0d16ae931b73c59d7e0c089c0 /run:cmd.exe/user 目标用户名。/domain 域名工作组环境可用机器名。/ntlm 目标的NTLM哈希。/run 使用窃取的凭据启动的程序通常是一个命令行窗口(cmd.exe)或PowerShell。执行成功后会弹出一个新的命令行窗口。这个窗口发起的任何网络认证如net use \\DC01\C$都会自动使用提供的哈希。横向移动在新弹出的cmd中就可以使用标准命令进行横向移动了# 建立IPC连接 net use \\TARGET-PC\IPC$ /user:CORP\Administrator # 注意这里不需要输入密码因为认证已由PTH处理 # 复制恶意文件 copy payload.exe \\TARGET-PC\C$\Windows\Temp\ # 使用计划任务或WMI执行命令 schtasks /create /s TARGET-PC /u CORP\Administrator /tn Update /tr C:\Windows\Temp\payload.exe /sc once /st 00:00 /f schtasks /run /s TARGET-PC /tn Update3.3 注意事项与绕过技巧防病毒软件Mimikatz是几乎所有AV/EDR的重点关照对象。在实战中可能需要使用内存加载、混淆、定制编译或替代工具如Invoke-TheHashPowerShell套件来绕过检测。NTLMv1 vs NTLMv2确保你获取的是NTLMv2哈希。NTLMv1非常脆弱且已过时现代系统默认使用NTLMv2。PTH攻击对两者都有效但NTLMv1哈希更容易被破解。受限管理员模式对于RDP如前所述需要目标主机启用“受限管理员模式”。可以通过修改注册表HKLM\System\CurrentControlSet\Control\Lsa\DisableRestrictedAdmin为0来启用需管理员权限。网络隔离与主机防火墙PTH攻击仍然需要建立SMB445端口、WinRM5985/5986端口等网络连接。确保网络路径可达且防火墙规则允许。4. PTK攻击解析Kerberos密钥的传递PTK是PTH在Kerberos协议下的“表亲”。在Kerberos认证中用户密码哈希的另一个衍生品——RC4_HMAC密钥或AES密钥——被用来加密认证请求的一部分。PTK攻击就是直接传递这些密钥。4.1 PTK与PTH的异同相同点核心思想都是“传递凭据而非密码”都绕过了明文密码。不同点协议不同PTH针对NTLM协议PTK针对Kerberos协议。凭据不同PTH传递NTLM哈希PTK传递的是用于Kerberos加密的密钥由密码哈希派生但用途特定。场景不同PTK主要用于在纯Kerberos环境或需要Kerberos认证的服务如LDAP中进行横向移动而PTH可能在某些仅支持NTLM的场景下更有效。简单来说如果你的目标环境强制使用Kerberos现代域环境的默认和推荐配置那么PTH可能会失败而PTK可能成功。4.2 实战应用使用Mimikatz进行PTKPTK同样可以通过Mimikatz实现但需要获取的是aes256_hmac或aes128_hmac密钥。这些密钥也可以在sekurlsa::logonpasswords的输出中找到。操作命令mimikatz # sekurlsa::pth /user:Administrator /domain:CORP /aes256:AES256_KEY /run:powershell.exe这里用/aes256或/aes128参数替代了/ntlm参数。弹出的新PowerShell窗口将使用提供的AES密钥进行Kerberos认证。为什么PTK有时更隐蔽在一些启用了“强制Kerberos”或“始终使用Kerberos”策略的环境中NTLM认证会被日志明确标记为异常或直接被拒绝。而PTK使用的是Kerberos协议产生的网络流量和日志条目与正常认证更为相似因此可能具备更好的隐蔽性。4.3 PTK的局限性与条件PTK并非万能它需要满足一个关键条件你必须获取到对应加密类型的密钥。在sekurlsa::logonpasswords的输出中你可能看到aes256_hmac、aes128_hmac和rc4_hmac_nt即NTLM哈希用于RC4加密等多个值。如果域功能级别较高默认使用AES加密那么你需要AES密钥。如果目标账户设置了“此账户使用DES加密”或环境老旧可能需要RC4密钥即NTLM哈希此时PTK退化为PTH在Kerberos中的一种形式。如果内存中根本没有缓存AES密钥例如用户登录时系统未请求或缓存那么PTK攻击就无法进行。5. PTT攻击剖析票据窃取与传递的艺术如果说PTH/PTK是“伪造原料哈希/密钥”那么PTT就是直接“偷走成品票据”。它专注于Kerberos协议中的TGT和ST。5.1 票据窃取从内存到磁盘Kerberos票据默认缓存在用户登录会话的内存中。Mimikatz可以轻松导出这些票据。# 导出当前会话中的所有票据 mimikatz # sekurlsa::tickets /export # 或者使用更通用的命令转储所有票据 mimikatz # kerberos::list /export执行后会生成一系列.kirbi文件这就是二进制的Kerberos票据。其中以[0;xxxxx]-2-0-40e10000-Administratorkrbtgt-DOMAIN.LOCAL.kirbi命名的文件就是宝贵的TGT票据。5.2 票据传递注入与使用获取.kirbi文件后可以将其注入到当前或另一个会话中。# 将票据文件注入到当前内存 mimikatz # kerberos::ptt C:\path\to\your\ticket.kirbi # 注入后使用klist查看当前票据缓存 klist注入成功后当前命令行会话发起的任何需要Kerberos认证的请求如访问网络共享dir \\dc01\c$都会自动使用窃取的管理员TGT去申请相应的服务票据从而获得访问权限。5.3 黄金票据与白银票据票据伪造的核武器当PTT与域控制器密钥结合就产生了更具破坏性的攻击票据伪造。黄金票据攻击者获取了域中krbtgt账户的哈希存储在域控制器上。利用这个哈希可以伪造任意用户的TGT包括不存在的用户。因为TGT由krbtgt的密钥签名域内所有计算机会无条件信任。拥有黄金票据就等于拥有了域内的“万能钥匙”可以访问任何资源且不受密码更改影响除非重置krbtgt密码。mimikatz # kerberos::golden /user:FAKEAdmin /domain:CORP.LOCAL /sid:S-1-5-21-... /krbtgt:KRBTGT_NTLM_HASH /ptt白银票据攻击者获取了某个特定服务账户如CIFS/dc01.corp.local的哈希。利用这个哈希可以伪造访问该特定服务的ST。它不需要与KDC域控制器交互因此更加隐蔽。但只能访问该特定服务。mimikatz # kerberos::golden /user:Administrator /domain:CORP.LOCAL /sid:S-1-5-21-... /target:DC01.CORP.LOCAL /service:CIFS /rc4:SERVICE_ACCOUNT_NTLM_HASH /ptt重要心得黄金票据攻击是域沦陷的标志。一旦发现krbtgt哈希泄露必须立即按照应急预案处理包括重置krbtgt账户密码两次因为旧密码仍会保留一段时间用于票据续订并全面排查威胁。6. 防御、检测与响应策略了解了攻击才能更好地防御。针对PTH/PTK/PTT防御需要多层次展开。6.1 预防性控制措施最小权限原则严格限制本地管理员和域管理员账户的使用。为日常操作使用普通账户为特权操作使用专门的管理账户并实施Just-In-TimeJIT权限管理。禁用NTLM在域环境中通过组策略逐步禁用NTLM协议强制使用Kerberos。可以从审计开始然后限制最后在可能的情况下完全禁用。注意兼容性影响。启用Credential GuardWindows 10/11 和 Server 2016这是一项基于虚拟化的安全功能能将LSASS进程中的密钥和票据隔离保护起来使Mimikatz等工具无法直接从内存中读取。这是缓解凭据窃取最有效的技术控制之一。应用LSA保护配置RunAsPPL注册表项保护LSASS进程不被非受保护进程注入和读取。限制横向移动通道使用主机防火墙和网络分段限制SMB445、WinRM5985/5986、RDP3389等管理协议仅在管理网络内通信。使用强密码和定期轮换尤其是对krbtgt账户和服务账户增加哈希破解和黄金票据攻击的难度。微软建议每1年重置一次krbtgt密码。6.2 深度检测与监控预防可能失败因此检测至关重要。安全运营中心应监控以下日志和事件Windows安全日志事件ID 4624登录成功。特别关注“登录类型”Logon Type。类型3网络登录对于管理员账户需要警惕类型9NewCredentials和类型10RemoteInteractive可能与PTH/PTT相关。事件ID 4672分配特殊权限。与高权限登录结合分析。事件ID 4768, 4769Kerberos TGT和ST请求。关注来自非常规IP、非常规时间或请求异常服务如krbtgt的票据申请。事件ID 4670对象权限更改。攻击者可能修改ACL以隐藏行踪。Sysmon日志强烈推荐部署事件ID 10进程访问。监控对lsass.exe进程的PROCESS_VM_READ访问这是Mimikatz的典型行为。事件ID 7镜像加载。监控可疑DLL如mimikatz相关模块的加载。网络流量分析监控异常的Kerberos请求模式、大量的NTLM认证失败或成功、以及从非域控制器主机发起的Kerberos票据请求。6.3 事件响应与取证一旦检测到疑似PTH/PTT攻击应急响应流程应包括立即隔离受影响主机从网络层面断开可疑主机。保全现场证据在不关闭电源的情况下优先获取内存镜像使用DumpIt或FTK Imager这是获取攻击者内存中票据和工具的关键。全面调查分析被入侵主机的日志安全日志、Sysmon、PowerShell日志等。检查计划任务、服务、WMI持久化、启动项等。在所有主机上搜索与攻击时间线匹配的异常文件或进程。凭据重置与清理重置所有可能已泄露的域管理员、本地管理员账户密码。按照微软官方指南执行两次krbtgt账户密码重置以废止所有已颁发的黄金票据。审查并重置高价值服务账户密码。根源分析确定初始入侵点如钓鱼邮件、漏洞利用并修补漏洞防止再次发生。横向渗透是内网攻防的核心战场而PTH、PTK、PTT则是这个战场上最锋利的矛。理解它们不仅是为了掌握攻击技术更是为了构建更坚固的防御体系。真正的安全始于对攻击链的深刻认知。在实际工作中我始终坚持一个原则防御者的思维必须比攻击者快一步。通过部署Credential Guard、严格权限管理、深度日志监控和定期的红蓝对抗演练才能有效应对这些基于凭据的横向移动威胁将内网安全提升到一个新的水平。