1、Kerberos协议简介
Kerberos是一种基于密钥的网络认证协议,其设计目标是通过密钥系统为客户机/服务器应用程序提供强大的认证服务。
该认证过程的实现不依赖于主机操作系统的认证,无需基于主机地址的信任,不要求网络上所有主机的物理安全,并假定网络上传送的数据包可以被任意地读取、修改和插入数据。
在以上情况下,Kerberos作为一种可信任的第三方认证服务,是通过传统的密码技术(如:共享密钥)执行认证服务的。
参与域认证的角色
Client:希望访问服务的用户或应用程序。
Server:提供服务的应用程序或系统。
KDC:(Key Distribution Center)密钥分发中心,作为可信的第三方,负责分发加密密钥和认证票据。
在Kerberos中Client是否有权限访问Server端的服务由KDC发放的票据来决定。
2、协议基础知识
1.票据(Ticket)
定义:票据是Kerberos协议中用于验证用户或服务身份的加密信息,允许持有者访问特定资源。
类型:包括Ticket-Granting Ticket(TGT)和Service Ticket。
2.AD(Account Database)
·存储域中所有用户的用户名和对应的NTLM Hash,可以理解为域中的SAM数据库
·KDC可以从AD中提取域中所有用户的NTLM Hash,这是Kerberos协议能够成功实现的基础。
3.KDC(Key Distribution Center)
组成:KDC由Authentication Server(AS)和Ticket--Granting Server(TGS)组成,负责生成、分发和管理票据。
4.AS(Authentication Server)
·身份认证服务,为Client生成TGT的服务,也用来完成对Client的身份验证
5.TGT(Ticket Granting Ticket)
用来生成Ticket的Ticket,由身份认证服务授予的票据(也叫作黄金票据),用于身份认证,存储在内存,默认有效期为10小时6.TGS(Ticket Granting Server)
票据授予服务,为Client生成允许对某个服务访问的ticket
TGS基于用户持有的TGT,发放Service Ticket,允许用户访问特定的服务。
Client从AS那里拿到TGT之后,来TGS这里再申请对某个特定服务或服务器访问的Ticket,只有获取到这个Ticket,Client才有权限去访问对应的服务,该服务提供的票据也称为TGS或者叫白银票据
7.安全密钥
在Kerberos中,密钥通常指的是加密密钥,用于加密和验证会话密钥,确保通信的安全性。
Client密钥、TGS密钥和Service密钥均为对应用户的NTLM Hash
作用是确保会话密钥Session key的安全传输
TGS密钥=KDC Hash==krbtgt用户的NTLM Hash
7.会话密钥(Session Key)
·会话密钥是用于加密客户端与服务端通信的密钥,确保数据传输的安全性。
C1ient/(TGS/Server)Sessionkey可以看作客户端与TGS服务和尝试登陆的Server之间会话
时用来加密的密钥
7.注意
·Server和Service可以当作一个东西,就是Client想要访问的服务器或者服务
3、kerberos全流程

这里总体可以分为三部分:1、请求身份认证,2、请求服务授权,3、发送服务请求
首先是用户登录

用户输入用户名和密码,其中用户的输入的密码会计算生成ntlm哈希做为client密钥
1、请求身份认证
a、客户端向AS(身份认证服务)发送认证请求

客户端会是先向as发送用户名,然后as再经数据库比对判断是否存在该用户
ps:此时并未发送密码/密钥信息
b、AS确认client端登陆用户信息

as收到认证请求后如果存在该用户就会像客户端发送MSG A(会话密钥)和MSG B(TGT)
as用数据库中该用户的ntlm hash做为as生成的客户端密钥加密包含client/TGS会话密钥的MSG A,如果客户端输入的密码正确,则该密钥与用户登录的客户端密钥相等,也就可以解密MSG A获得TGS会话密钥,但是无法解密获取TGT,因为TGS密钥只存在于KDC中
2、请求服务授权
a、客户端向TGS发送服务授权请求

MSG C包含俩个信息:一个是所要访问服务的id,还有一个是as返回的TGT
msgd是被TGS话密钥加密的,里面包含clientid,时间戳
TGS会先对TGT解密,然后再用tgs会话密钥对authenticator进行解密,在使用TGT解密获得的时间戳,客户端id与对authenticator解密获得的时间戳,客户端进行比对。
如果客户端伪造了TGS会话密钥,此时TGS则解不开authenticator
b、TGS为client响应服务授权票据

MsgE使用服务密钥(服务器NTML HASH)加密的CLIENT-TO-SERVER TICKET。
MsgF使用TGS会话密钥加密的服务端会话密钥
MsgF使用了TGS会话加密,因此,该消息对Clienti可见。c1ient对其解密以后可获取到服务会话密钥
而MsgE使用了服务密钥加密,该消息可视作是TGS给Service Server的消息,只不过由
lient一起携带发送给Service Server
3、发送服务请求
a、客户端向服务端发送请求

msg g用服务会话密钥加密的时间戳以及客户端id
msg e为上一步TGS发送过来的MSGE
b、服务端响应客户端

1.SS收到客户端的服务请求之后,先利用自身的服务密钥对MsgE进行解密
2.SS使用服务会话密钥解密MsgG,提取Client ID信息,而后将该Client ID与
Client-To-Server Ticket中的Client ID进行比对,如果匹配则说明Client拥有正确的
CLIENT/SERVER SESSIONKEY
3.而后,SS向C1ient响应MsgH(包含使用服务会话密钥加密的Timestamp信
息)。
4.Client收到SS的响应消息MsgH之后,再使用服务会话密钥对其解密,提取
Timestamp信息,然后确认该信息与Client发送的Authenticator2中的Timestamp信息一
致。
该交互过程起到了Client与SS之间的“双向认证”作用。
以上就是kerberos认证全流程。
黄金票据(tgt)
krbtgt 是 KDC 专属的系统账户,其 Hash(哈希值)是 KDC 用来加密 TGT的关键密钥
原理:
就是伪造的TGT,它会在第二步认证被发送到KDC的TGS,如果我们有了krbtgt用户的hash就可以直接伪造TGT,其中的KDC需要的session key,是KDC解密TGT之后获取的,所以session key也是和TGT一起伪造的,那么后续的认证,就可以随意的制造想要的票据了。
前提:
就是拿下域控获得krbtg的hash
白银票据
原理:
上述流程可以看到服务器原本是并不知道会话密钥的所以我们就可以伪造一个ticket直接去服务器验证
前提:
获得服务的hash
对比
| 对比维度 | 黄金票据(Golden Ticket) | 白银票据(Silver Ticket) |
|---|---|---|
| 密钥要求 | 需获取域内 KRBTGT 账户的密码哈希(域控制器核心账户,管理 Kerberos 票据签发) | 需获取 目标特定服务的密钥 / 密码哈希(如文件服务 CIFS、数据库服务 MSSQL、终端服务 RDP 等) |
| 票据类型 | 伪造的 TGT(Ticket-Granting Ticket,票据授予票据) | 伪造的 ST(Service Ticket,服务票据) |
| 访问范围 | 域内全范围:可凭 TGT 向 KDC 申请任意服务的 ST,访问域控制器、文件服务器等所有资源 | 限定范围:仅能访问伪造票据对应的单个特定服务,无法跨服务访问其他资源 |
| 有效期 | 可自定义设置(通常设为 10 年以上),持久性极强,无需频繁重生成 | 受 Kerberos 协议默认限制(通常为 10 小时),有效期短,需定期重生成以维持访问 |
| 权限控制 | 可伪造 “域管理员(Domain Admin)” 等最高权限身份,直接实现域控制器权限提升与域控控制 | 仅能获得目标服务的权限(如文件服务的读写权、数据库的查询权),无法提升至域级权限 |
| 复杂度 | 生成 / 使用复杂:需获取 KRBTGT 哈希(通常需先拿下域控制器权限),且需构造完整 TGT 结构 | 生成 / 使用简单:无需接触域控制器,仅需目标服务主机的本地管理员权限(获取服务密钥) |
| 攻击的隐蔽性 | 高隐蔽性:可通过 “合法” TGT 申请多个服务的 ST,访问行为分散,不易被单一日志监测 | 低隐蔽性:仅固定访问某一服务,访问路径单一,易被 “异常服务访问频率” 类规则检测 |
| 攻击前提 | 1. 已获取域控制器权限(或窃取 KRBTGT 哈希);2. 已知域名称、域 SID;3. 存在可通信的 KDC 服务器 | 1. 已获取目标服务主机的本地管理员权限;2. 已知服务名称、服务 SID;3. 无需与 KDC 通信 |
| 攻击流程 | 1. 入侵域控制器,用工具(如 Mimikatz)提取 KRBTGT 哈希;2. 构造伪造 TGT(指定高权限身份);3. 注入 TGT 至内存,向 KDC 申请任意 ST;4. 使用 ST 访问资源 | 1. 入侵目标服务主机,提取服务密钥;2. 直接构造伪造 ST(无需 KDC 签发);3. 注入 ST 至内存,直接访问服务;4. 过期后重生成 |
| 检测难度 | 高:TGT 申请符合协议,仅能通过 “异常高权限访问”“哈希泄露痕迹” 间接检测 | 低:无需与 KDC 交互,易被 “无签发记录的服务访问”“异常票据结构” 规则检测 |
| 风险影响 | 毁灭性:获得域内最高权限,可长期控制整个域,难以溯源 | 局限性:仅影响单个服务,无法横向渗透,风险可控 |
| 典型应用场景 | 1. 拿下域控制器后长期控制域;2. 绕过域内密码定期修改策略 | 1. 仅需访问特定服务(如文件服务器);2. 域控制器防护严密时的替代方案 |

1685

被折叠的 条评论
为什么被折叠?



