Kerberos协议认证
域环境
由于Kerberos
主要是用在域环境下的身份认证协议,所以在说之前先说下域环境的一些概念。首先域的产生为了解决企业内部的资源管理问题,比如一个公司就可以在网络中建立一个域环境,更方便内部的资源管理。在一个域中有域控、域管理员、普通用户、主机等等各种资源。
在下图中YUNYING.LAB
为其他两个域的根域,NEWS.YUNYING.LAB
和DEV.YUNYING.LAB
均为YUNYING.LAB
的子域,这三个域组成了一个域树。子域的概念可以理解为一个集团在不同业务上分公司,他们有业务重合的点并且都属于YUNYING.LAB
这个根域,又独立运作。同样TEST.COM
也是一个单独的域树,两个域树YUNYING.LAB
和TEST.COM
组合起来被称为一个域林。
Kerberos 简介
在Kerberos
认证中,最主要的问题是如何证明「你是你」的问题,如当一个Client
去访问Server
服务器上的某服务时,Server
如何判断Client
否有权限来访问自己主机上的服务,同时保证在这个过程中的通讯内容即使被拦截或篡改也不影响通讯的安全性,这正是Kerberos
解决的问题。在域渗透过程中Kerberos
协议的攻防也是很重要的存在。
Kerberos 协议框架
在Kerberos协议中主要是有三个角色的存在:
- 访问服务的
Client
; - 提供服务的
Server
; KDC(Key Distribution Center)
密钥分发中心。
其中KDC
服务默认会安装在一个域的域控中,而Client
和Server
为域内的用户或者是服务,如HTTP
服务, SQL
服务。在Kerberos
中Client
否有权限访问Server端的服务由KDC发放的票据来决定。
如果把Kerberos
中的票据类比为一张火车票,那么Client
端就是乘客,Server
端就是火车,而KDC
就是就是车站的认证系统。如果Client
端的票据是合法的(由你本人身份证购买并由你本人持有)同时有访问Server
端服务的权限(车票对应车次正确)那么你才能上车。当然和火车票不一样的是Kerberos
中有存在两张票,火车票从头到尾只有一张。
由上图中可以看到KDC
又分为两个部分:
Authentication Server
: AS
的作用就是验证Client
端的身份(确定你是身份证上的本人),验证通过就会给一张TGT (Ticket Granting Ticket)
票给Client
。
Ticket Granting Server
: TGS
的作是通过AS
发送给Client
的票(TGT
)换取访问Server
端的票(上车的票ST
)。ST (ServiceTicket)
也有资料称为TGS Ticket
,为了和TGS
区分,在这里就用ST
来说明。
KDC
服务框架中包含一个 KRBTGT
账户,它是在创建域时系统自动创建的一个账号,你可以暂时理解为他就是一个无法登陆的账号,在发放票据时会使用到它的密码 HASH
值。
Kerberos 认证流程
当 Client
想要访问Server
上的某个服务时,需要先向 AS
证明自己的身份,然后通过AS
发放的 TGT
向 Server
发起认证请求,这个过程分为三块:
The Authentication Service Exchange
:Client
与AS
的交互The Ticket-Granting Service (TGS) Exchange
:Client
与TGS
的交互The Client/Server Authentication Exchange
:Client
与Server
的交互。
TheAuthentication Service Exchange
Client
向AS
发送自己的ID
、网络地址等信息,经过Client
的hash
加密。(KRB_AS_REQ
)AS
向Client
发送两条消息,一条是经过Client
密码加密的TGS-Session-Key
,用作与TGS
交互的密钥.另一条消息就是TGT
,TGT
包括TGS-Session-Key
以及时间戳等信息,由KRBTGT
账户的hash
加密,该账户是域创建时自动创建的账号。(KRB_AS_REP
)
TheTicket-Granting Service (TGS) Exchange
Client
接收到了加密后的TGS-Session-Key
和TGT
之后,用自身密码解密得到Sessionkey-as
,TGT
是由KDC
密码加密,Client
无法解密。这时Client
再用Sessionkey-as
加密TimeStamp
和TGT
一起发送给KDC
中的TGS
(TicketGranting Server
)票据授权服务器换取能够访问Server
的票据。TGS
收到Client
发送过来的TGT
和Sessionkey-as
加密的TimeStamp
之后,首先会检查自身是否存在Client
所请求的服务。如果服务存在,则用KRBTGT
密码解密TGT
。一般情况下TGS
会检查TGT
中的时间戳查看TGT
是否过期,且原始地址是否和TGT
中保存的地址相同。验证成功之后将用sessionkey-as
加密的sessionkey-tgs
和Server
密码HASH
加密的Sessionkey-tgs
发送给Client
。
TheClient/Server Authentication Exchange
Client
收到sessionkey-as
加密的sessionkey-tgs
和Server
密码HASH
加密的sessionkey-tgs
之后用sessionkey-as
解密得到sessionkey-tgs
,然后把sessionkey-tgs
加密的TimeStamp
和ST
一起发送给Server
。server
通过自己的密码解密ST
,得到sessionkey-tgs
, 再用sessionkey-tgs
解密Authenticator3
得到TimeStamp
,验证正确返回验证成功。
PAC
在 Kerberos
最初设计的几个流程里说明了如何证明 Client
是 Client
而不是由其他人来冒充的,但并没有声明Client
有没有访问Server
服务的权限,因为在域中不同权限的用户能够访问的资源是有区别的。
所以微软为了解决这个问题在实现 Kerberos
时加入了 PAC
的概念,PAC
的全称是 Privilege Attribute Certificate
(特权属性证书)。可以理解为火车有一等座,也有二等座,而PAC
就是为了区别不同权限的一种方式。
PAC 的实现
当用户与 KDC
之间完成了认证过程之后,Client
需要访问Server
所提供的某项服务时,Server
为了判断用户是否具有合法的权限需要将Client
的 User SID
等信息传递给KDC
,KDC
通过 SID
判断用户的用户组信息,用户权限等,进而将结果返回给 Server
,Server
再将此信息与用户所索取的资源的ACL
进行比较,最后决定是否给用户提供相应的服务。
PAC
会在KRB_AS_REP
中 AS
放在 TGT
里加密发送给 Client
,然后由 Client
转发给 TGS
来验证 Client
所请求的服务。
在PAC
中包含有两个数字签名 PAC_SERVER_CHECKSUM
和 PAC_PRIVSVR_CHECKSUM
,这两个数字签名分别由Server
端密码 HASH
和 KDC
的密码 HASH
加密。
同时 TGS
解密之后验证签名是否正确,然后再重新构造新的 PAC
放在ST
里返回给客户端,客户端将ST
发送给服务端进行验证。
Server 与 KDC
PAC
可以理解为一串校验信息,为了防止被伪造和串改,原则上是存放在 TGT
里,并且TGT
由KDC hash
加密。同时尾部会有两个数字签名,分别由 KDC
密码和 server
密码加密,防止数字签名内容被篡改。
同时PAC
指定了固定的User SID
和 Groups ID
,还有其他一些时间等信息,Server
的程序收到 ST
之后解密得到PAC
会将PAC
的数字签名发送给 KDC
,KDC
再进行校验然后将结果已RPC
返回码的形式返回给 Server
。
同时 PAC
指定了固定的 User SID
和 Groups ID
,还有其他一些时间等信息,Server
的程序收到 ST
之后解密得到PAC
会将PAC
的数字签名发送给 KDC
,KDC
再进行校验然后将结果已RPC
返回码的形式返回给 Server
。
Golden Ticket(黄金票据)
TGT
是由KRBTGT
用户生成的,有了该票据你可以访问任何通过kerberos
认证的服务,如果我们拿到了该用户的Hash
,那么我们就可以伪造TGT,
该用户只存在于域控中,所以前提是你要拿到域控的权限,有了域控权限干啥不行…
Silver Ticket(白银票据)
如果我们有服务器上的用户Hash
,就可以伪造一个Server-Ticket
绕过认证,达到访问服务的目的。白银票据只能访问特定的服务。
MS14-068
MS14-068
是密钥分发中心(KDC
)服务中的Windows
漏洞。它允许经过身份验证的用户在其Kerberos
票据(TGT
)中插入任意PAC
(表示所有用户权限的结构)。该漏洞位于kdcsvc.dll
域控的KDC中。用户可以通过呈现具有改变的PAC
的Kerberos TGT
来获得票据。
一句话,可以在拥有一个普通域用户的情况下可以提升为域管理权限。
原文链接:
https://www.freebuf.com/articles/system/196434.html
https://mp.weixin.qq.com/s?__biz=Mzg3NzE5OTA5NQ==&mid=2247483807&idx=1&sn=59be50aa5cc735f055db596269a857ce&chksm=cf27ea07f850631
Kerberos协议认证相关推荐
- windows认证之域认证:Kerberos协议认证
目录 1.域的基本概念 1.1域的介绍 1.2 域和组的区别 1.3 域名服务器 2.Kerberos协议简介 3.Kerberos认证的简单流程 3.1客户端和AS进行通信 3.2 客户端和TGS ...
- Kerberos协议认证介绍 超详细
转载:https://blog.csdn.net/wulantian/article/details/42418231 内容太多,可直接看总结 前几天在给人解释Windows是如何通过Kerberos ...
- 三步轻松理解Kerberos协议
Kerberos是一种身份验证协议,它作为一种可信任的第三方认证服务,通过使用对称加密技术为客户端/服务器应用程序提供强身份验证.在域环境下,AD域使用Kerberos协议进行验证,熟悉和掌握Kerb ...
- Windows认证机制之Kerberos协议
Windows认证机制 首先,我们简短介绍下Windows的认证机制.主要有以下三种, 本地认证 网络认证 域内认证 如图所示: Kerberos协议 Kerberos 是一种由 MIT(麻省理工大学 ...
- windows认证原理kerberos协议详解
这里写目录标题 什么是kerberos协议 kerberos协议简略流程以及详细流程 kerberos协议局限性 什么是kerberos协议 kerberos是一种网络认证协议,通过密钥系统为客户端以 ...
- Kerberos协议
Kerberos协议 Kerberos由MIT于1988年开发,用于分布式环境中的应用层协议,这是一个身份认证协议.其设计目标是通过密钥系统为客户机/服务器应用程序提供强大的认证服务.Kerberos ...
- ASP.NET : Kerberos网络认证过程
今天抽时间初略学习了一下kerberos网络认证过程,作为笔记整理如下,希望与大家分享. 一.Kerberos初步定义: Kerberos这一名词来源于希腊神话"三个头的狗--地狱之门守护者 ...
- kerberos安全认证
1.kerberos安全认证原理: 客户端跟服务端可以对对方进行身份认证,防止窃听,防止replay攻击.保护数据完成性,是一种应用对称密钥体制进行密钥管理的系统. 2.基本概念 Principal( ...
- Kerberos协议简介
1.Kerberos协议 Kerberos协议主要用于计算机网络的身份鉴别(Authentication), 其特点是用户只需输入一次身份验证信息就可以凭借此验证获得的票据(ticket-granti ...
最新文章
- oracle个性化,Oracle:个性化营销成功的五细则
- Swarm 如何存储数据?- 每天5分钟玩转 Docker 容器技术(103)
- sicp 4.2.1两题
- Excel2000的数字签名功能
- 2022年的东南亚跨境市场风口,越南电商市场一定不要错过
- C#中的变量、常量、数据类型
- node mysql 连接池创建_Node.js使用MySQL连接池的方法实例
- tensorflow2.0中的Broadcasting用法
- 线段树——思维(Codeforces 339D Xenia and Bit Operations/Billboard HDU - 2795)
- MySQL学习(三)
- 来博客园居然有一年了
- python怎么安装requests模块_python安装requests第三方模块
- MYSQL创建、删除、修改索引语法
- mahout AbstractJDBCModel log
- 查询优化器内核剖析第六篇:谈谈Join的顺序问题,纠正江湖偏方
- 普华永道:AI到2030年将带动全球GDP增长14%,中国成最大受益国
- 弹性容器中 子元素的flex属性介绍
- 计算机辅助设计技术领域的应用,关于计算机辅助设计技术在规划设计中的应用...
- opencv 视频中画矩形
- 多看阅读设置自动翻页教程
热门文章
- CSDN,我的良师益友
- jmeter 跳板机_jmeter本地通过跳板机连接塔内数据库
- 银河麒麟项目经验记录2
- 《BREW进阶与精通——3G移动增值业务运营、定制与开发》一书的网店地址
- nacos项目启动报错:Connection refused: no further information
- 消防栓系统市场现状及未来发展趋势
- 考研数学:秩为1的矩阵的特征值分析
- 【BiSeNet】《BiSeNet:Bilateral Segmentation Network for Real-time Semantic Segmentation》
- Android实现类淘宝多图评价
- 【转】C#sm2签名验签实现