域环境

由于Kerberos主要是用在域环境下的身份认证协议,所以在说之前先说下域环境的一些概念。首先域的产生为了解决企业内部的资源管理问题,比如一个公司就可以在网络中建立一个域环境,更方便内部的资源管理。在一个域中有域控、域管理员、普通用户、主机等等各种资源。
在下图中YUNYING.LAB为其他两个域的根域,NEWS.YUNYING.LABDEV.YUNYING.LAB均为YUNYING.LAB的子域,这三个域组成了一个域树。子域的概念可以理解为一个集团在不同业务上分公司,他们有业务重合的点并且都属于YUNYING.LAB这个根域,又独立运作。同样TEST.COM也是一个单独的域树,两个域树YUNYING.LABTEST.COM组合起来被称为一个域林。

Kerberos 简介

Kerberos认证中,最主要的问题是如何证明「你是你」的问题,如当一个Client去访问Server服务器上的某服务时,Server如何判断Client否有权限来访问自己主机上的服务,同时保证在这个过程中的通讯内容即使被拦截或篡改也不影响通讯的安全性,这正是Kerberos解决的问题。在域渗透过程中Kerberos协议的攻防也是很重要的存在。

Kerberos 协议框架

在Kerberos协议中主要是有三个角色的存在:

  • 访问服务的Client;
  • 提供服务的Server;
  • KDC(Key Distribution Center)密钥分发中心。

其中KDC服务默认会安装在一个域的域控中,而ClientServer为域内的用户或者是服务,如HTTP服务, SQL服务。在KerberosClient否有权限访问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发放的 TGTServer发起认证请求,这个过程分为三块:

  1. The Authentication Service ExchangeClientAS的交互
  2. The Ticket-Granting Service (TGS) ExchangeClientTGS 的交互
  3. The Client/Server Authentication ExchangeClientServer 的交互。

TheAuthentication Service Exchange

  1. ClientAS发送自己的ID 、网络地址等信息,经过Clienthash加密。(KRB_AS_REQ)
  2. ASClient发送两条消息,一条是经过Client密码加密的TGS-Session-Key,用作与TGS交互的密钥.另一条消息就是TGT,TGT包括TGS-Session-Key以及时间戳等信息,由KRBTGT账户的hash加密,该账户是域创建时自动创建的账号。(KRB_AS_REP)

TheTicket-Granting Service (TGS) Exchange

  1. Client接收到了加密后的TGS-Session-KeyTGT 之后,用自身密码解密得到 Sessionkey-asTGT是由KDC密码加密,Client无法解密。这时 Client再用 Sessionkey-as 加密 TimeStampTGT 一起发送给KDC中的 TGSTicketGranting Server)票据授权服务器换取能够访问 Server的票据。

  2. TGS 收到 Client发送过来的 TGTSessionkey-as加密的 TimeStamp 之后,首先会检查自身是否存在 Client 所请求的服务。如果服务存在,则用 KRBTGT 密码解密TGT。一般情况下 TGS会检查 TGT中的时间戳查看 TGT是否过期,且原始地址是否和 TGT 中保存的地址相同。验证成功之后将用 sessionkey-as加密的 sessionkey-tgsServer 密码HASH加密的 Sessionkey-tgs发送给Client

TheClient/Server Authentication Exchange

  1. Client收到sessionkey-as加密的 sessionkey-tgsServer密码 HASH 加密的 sessionkey-tgs之后用 sessionkey-as解密得到sessionkey-tgs,然后把 sessionkey-tgs 加密的 TimeStampST一起发送给Server
  2. server 通过自己的密码解密ST,得到 sessionkey-tgs, 再用 sessionkey-tgs解密Authenticator3 得到 TimeStamp,验证正确返回验证成功。

PAC

Kerberos 最初设计的几个流程里说明了如何证明 ClientClient而不是由其他人来冒充的,但并没有声明Client有没有访问Server服务的权限,因为在域中不同权限的用户能够访问的资源是有区别的。

所以微软为了解决这个问题在实现 Kerberos时加入了 PAC的概念,PAC 的全称是 Privilege Attribute Certificate(特权属性证书)。可以理解为火车有一等座,也有二等座,而PAC 就是为了区别不同权限的一种方式。

PAC 的实现

当用户与 KDC之间完成了认证过程之后,Client需要访问Server所提供的某项服务时,Server为了判断用户是否具有合法的权限需要将ClientUser SID等信息传递给KDCKDC通过 SID判断用户的用户组信息,用户权限等,进而将结果返回给 ServerServer 再将此信息与用户所索取的资源的ACL进行比较,最后决定是否给用户提供相应的服务。

PAC 会在KRB_AS_REPAS放在 TGT 里加密发送给 Client,然后由 Client转发给 TGS来验证 Client所请求的服务。

PAC中包含有两个数字签名 PAC_SERVER_CHECKSUMPAC_PRIVSVR_CHECKSUM,这两个数字签名分别由Server端密码 HASHKDC的密码 HASH加密。

同时 TGS解密之后验证签名是否正确,然后再重新构造新的 PAC 放在ST 里返回给客户端,客户端将ST发送给服务端进行验证。

Server 与 KDC

PAC可以理解为一串校验信息,为了防止被伪造和串改,原则上是存放在 TGT 里,并且TGTKDC hash 加密。同时尾部会有两个数字签名,分别由 KDC 密码和 server 密码加密,防止数字签名内容被篡改。

同时PAC 指定了固定的User SIDGroups ID,还有其他一些时间等信息,Server的程序收到 ST之后解密得到PAC 会将PAC的数字签名发送给 KDCKDC再进行校验然后将结果已RPC返回码的形式返回给 Server
同时 PAC指定了固定的 User SIDGroups ID,还有其他一些时间等信息,Server的程序收到 ST之后解密得到PAC 会将PAC 的数字签名发送给 KDCKDC再进行校验然后将结果已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中。用户可以通过呈现具有改变的PACKerberos 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协议认证相关推荐

  1. windows认证之域认证:Kerberos协议认证

    目录 1.域的基本概念 1.1域的介绍 1.2  域和组的区别 1.3 域名服务器 2.Kerberos协议简介 3.Kerberos认证的简单流程 3.1客户端和AS进行通信 3.2 客户端和TGS ...

  2. Kerberos协议认证介绍 超详细

    转载:https://blog.csdn.net/wulantian/article/details/42418231 内容太多,可直接看总结 前几天在给人解释Windows是如何通过Kerberos ...

  3. 三步轻松理解Kerberos协议

    Kerberos是一种身份验证协议,它作为一种可信任的第三方认证服务,通过使用对称加密技术为客户端/服务器应用程序提供强身份验证.在域环境下,AD域使用Kerberos协议进行验证,熟悉和掌握Kerb ...

  4. Windows认证机制之Kerberos协议

    Windows认证机制 首先,我们简短介绍下Windows的认证机制.主要有以下三种, 本地认证 网络认证 域内认证 如图所示: Kerberos协议 Kerberos 是一种由 MIT(麻省理工大学 ...

  5. windows认证原理kerberos协议详解

    这里写目录标题 什么是kerberos协议 kerberos协议简略流程以及详细流程 kerberos协议局限性 什么是kerberos协议 kerberos是一种网络认证协议,通过密钥系统为客户端以 ...

  6. Kerberos协议

    Kerberos协议 Kerberos由MIT于1988年开发,用于分布式环境中的应用层协议,这是一个身份认证协议.其设计目标是通过密钥系统为客户机/服务器应用程序提供强大的认证服务.Kerberos ...

  7. ASP.NET : Kerberos网络认证过程

    今天抽时间初略学习了一下kerberos网络认证过程,作为笔记整理如下,希望与大家分享. 一.Kerberos初步定义: Kerberos这一名词来源于希腊神话"三个头的狗--地狱之门守护者 ...

  8. kerberos安全认证

    1.kerberos安全认证原理: 客户端跟服务端可以对对方进行身份认证,防止窃听,防止replay攻击.保护数据完成性,是一种应用对称密钥体制进行密钥管理的系统. 2.基本概念 Principal( ...

  9. Kerberos协议简介

    1.Kerberos协议 Kerberos协议主要用于计算机网络的身份鉴别(Authentication), 其特点是用户只需输入一次身份验证信息就可以凭借此验证获得的票据(ticket-granti ...

最新文章

  1. oracle个性化,Oracle:个性化营销成功的五细则
  2. Swarm 如何存储数据?- 每天5分钟玩转 Docker 容器技术(103)
  3. sicp 4.2.1两题
  4. Excel2000的数字签名功能
  5. 2022年的东南亚跨境市场风口,越南电商市场一定不要错过
  6. C#中的变量、常量、数据类型
  7. node mysql 连接池创建_Node.js使用MySQL连接池的方法实例
  8. tensorflow2.0中的Broadcasting用法
  9. 线段树——思维(Codeforces 339D Xenia and Bit Operations/Billboard HDU - 2795)
  10. MySQL学习(三)
  11. 来博客园居然有一年了
  12. python怎么安装requests模块_python安装requests第三方模块
  13. MYSQL创建、删除、修改索引语法
  14. mahout AbstractJDBCModel log
  15. 查询优化器内核剖析第六篇:谈谈Join的顺序问题,纠正江湖偏方
  16. 普华永道:AI到2030年将带动全球GDP增长14%,中国成最大受益国
  17. 弹性容器中 子元素的flex属性介绍
  18. 计算机辅助设计技术领域的应用,关于计算机辅助设计技术在规划设计中的应用...
  19. opencv 视频中画矩形
  20. 多看阅读设置自动翻页教程

热门文章

  1. CSDN,我的良师益友
  2. jmeter 跳板机_jmeter本地通过跳板机连接塔内数据库
  3. 银河麒麟项目经验记录2
  4. 《BREW进阶与精通——3G移动增值业务运营、定制与开发》一书的网店地址
  5. nacos项目启动报错:Connection refused: no further information
  6. 消防栓系统市场现状及未来发展趋势
  7. 考研数学:秩为1的矩阵的特征值分析
  8. 【BiSeNet】《BiSeNet:Bilateral Segmentation Network for Real-time Semantic Segmentation》
  9. Android实现类淘宝多图评价
  10. 【转】C#sm2签名验签实现