• Kerberos认证


    kerberos认证是内网渗透中黄金票据与白银票据伪造学习的前置知识,了解了什么是kerberos认证金票据银票据的伪造会有很大的理解与帮助。

    前言

    在古希腊神话中Kerberos指的是:有着一只三头犬守护在地狱之门外,禁止任何人类闯入地狱之中。

    而在网络中的Kerberos是一种网络身份验证协议,旨在通过密钥加密技术为客户端/服务器应用程序提供身份验证,主要用在域环境下的身份验证。也是三次认证的过程,可以称为三次握手或者直接理解为三头犬。

    上面这张图中存在的名词其实除了KDC之前我都有提到过一点,这里介绍一下这个验证过程中出现的名词:

    KDC: Key Distribution Center,密钥分发中心,负责管理票据、认证票据、分发票据,但是KDC不是一个独立的服务,它由AS(Authentication Service)和TGS(Ticket Granting Service)组成。

    AS: Authentication Service,验证服务,为client生成TGT的服务,其中TGT的伪造就是后面要说的金票。

    TGS: Ticket Granting Service,票据授予服务,为client生成某个服务端的ticket,也叫ST,是后面要说的银票。

    TGT: Ticket Granting Ticket,入场券,通过入场券能够获得票据,是一种临时凭证的存在。

    ST :Service Ticket,与TGT作用大致相同,不过一个是由AS发放,一个是由TGS发放。

    Ticket:票据,是网络中各对象之间互相访问的凭证

    AD: Account Database,活动目录,可以理解为一个数据库,存储所有client的白名单,只有存在于白名单的client才能顺利申请到TGT。

    DC: Domain Controller,没什么好说的就是域控。

    KRBTGT: 每个域控制器都有一个krbtgt账户,是KDC的服务账户,用来创建TGS加密的密钥。

    LSASS:Windows系统的安全机制(系统进程)。用于本地安全和登陆策略

    NTML认证

    当然除了上面的几个名词其实还有几个前置的知识,当然可以不用了解其太深的原理也可以,我这里简单的介绍一下NTLM认证的过程。NTLM认证,这个有兴趣可以去看看别的师傅写的:

    NTLM认证_嘎嘎不是鸭的博客-CSDN博客_ntlm认证

    当然其实我们只需要理解下面几个步骤:

    1、在客户端输入用户与密码,然后LSASS会把密码的NTLM Hash后的值先存储到本地。

    2、客户端把用户名的明文发送给服务端。

    3、服务端对客户端发来的用户认证,在AD中判断是否存在用户,不存在则代表认证失败。存在的话服务端会生成一个16位的随机数(Challenge),并且从本地查找客户端中登陆用户名对应的NTLM Hash(每个用户对应的NTLM Hash是不相同的),使用NTLM Hash加密Chanllenge,生成一 个Net-NTLM Hash存在内存中,并将Chanllenge发送给客户端。

    4、当客户端收到Challenge后,用在第一步中存储的NTLM Hash对其加密,然后再将加密后的Challenge发送给服务器,也就是Response,表现形式是Net-NTLM Hash,通过Net-NTLM Hash与服务端的进行二次确认。

    5、服务端在收到Response后,会向DC发送针对客户端的验证请求。该请求主要包含以下三方面的内容:客户端用户名、客户端NTLM Hash加密的Challenge、原始的Challenge。

    6、当DC接到过来的这三个值的以后,会根据用户名到DC的账号数据库(ntds.dit)里面找到该用户名对应的NTLM Hash,然后把这个hash拿出来和传过来的challenge值进行比较,相同则认证成功,反之,则失败。

    这就是一个NTML的认证过程,可能开始有点难接受,多看几遍多想想就通透了。

    Kerberos认证

    根据开始我给的那张图片我们可以知道,Kerberos认证有六个步骤,但是其实也可以理解为三次握手,第一次与KDC中的AS进行一次握手,第二次与KDC中的TGS进行一次握手,第三次与服务端进行握手。

    AS交互

    Client ==>  AS:

    用户在Client中输入账号密码后,Client会对密码进行hash code,得到NTLM Hash这是上面提到的。NTML认证成功后利用NTLM Hash 对 timestamp(一个当前时间的时间戳)、client-info(用户的一些信息)、server-info等数据进行加密,发送给AS,向AS请求TGT票据。

    AS ==> Client:

    当AS收到Client发来的信息后,AS会先向活动目录AD请求,查看是否有此Client用户,如果有的话,就会取出该Client的NTLM hash,然后生成一个随机秘钥称为Session-Key as(临时秘钥Session-Key)。并使用Client NTLM-hash 加密 Session-key as 作为一部分内容。还有一部分内容就是TGT:使用KDC一个特定账户krbtgt的NTLM-hash对Session-key as、timestamp、Client-info进行的加密。然后将这两部分回复给Client。

    该阶段是ClientAS的认证。TGT中用户唯一不知道的是krbtgt这个hash,有了的话就可以自己伪造TGT,也就是上面说的黄金票据

    TGS交互

    Client ==> TGS:

    Client 收到AS发来的两段数据后,先使用自身的 NTLM Hash 解密其中一段被Client 的NTLM Hash加密的 Session-key as最后得到这个密匙,然后再使用 Session-key as 对 Client-Info、timestamp、Server-Info 加密作为一部分数据,加上TGT (因为没有krbtgt 的 NTLM Hash 所以无法解密),一并发送给 KDC中的 TGS。

    TGS ==> Client:

    TGS 收到请求后,使用 krbtgt 的 NTLM Hash 解密 TGT,得到 Session-key as、timestamp、Client-info,同时,使用 TGT 解密出的 Session-key as 解密第一部分内容,得到Client-info、timestamp。 比对这两部分解密得到的内容以验证是否通过。通过后,生成一个新的随机秘钥(Session-Key tgs),就是Server session key并向Client发送两部分内容:

    1. 一部分是Session-key as 加密的Session-key tgs
    2. 另一部分是ST(ticket),即Server NTLM-hash加密的数据(Session-key tgs、timestamp、Client-info)

    该阶段是ClientKDC的通信。ST中用户唯一不知道的是Server的密码hash,所以有了这个hash,就可以自己伪造ST,也就是之前提到的白银票据

    Service交互

    Client ==> Service:

    Client收到TGS发送的数据后,先用自己保存的Session-key as解密出了Session-key tgs。再使用Session-key tgs加密Client-info、timestamp作为一部分内容,另一部分是ST,一并发送给Server。

    Service ==> Client:

    Server 收到Client发来的加密数据后,用自身的NTLM Hash解密了ST,得到Session-key tgs,再用Session-key tgs解密第一部分得到Client-info、timestamp。然后与ST的Client-info、timestamp进行对比。timestamp 一般时间为5min(这个不是绝对的,可以设置,如果超过时间戳的限制,那么票据则会失效)。验证通过后,回复Client,最终建立通信。

    Service认证

    服务端对客户端的认证成功后,客户端也需要对服务端那边进行确认,判断其是否为钓鱼服务。

    Server需要将Client发的ST中解密出来的Timestamp再次用Session-Key as 进行加密,并发送给ClientClient再用缓存的Session-Key as进行解密,如果Timestamp和之前的内容完全一样,则可以证明此时的ServerClient想访问的Server

    参考:一文搞定Kerberos - 知乎

    Windows认证及其票据传递 - R0ser1 - 博客园

    https://www.jianshu.com/p/23a4e8978a30

  • 相关阅读:
    【NI-RIO入门】CompactRIO介绍及环境安装
    【强化学习论文合集 | 2019年合集】二. AAAI-2019 强化学习论文
    云计算与ai人工智能对高防cdn的发展
    狂神redis笔记09
    使用EasyExcel进行读写操作
    【探花交友】用户登录、代码优化
    AI图书下载:《ChatGPT打造赚钱机器》
    SVM 超平面计算例题
    【Touchstone 1.0&2.0数据格式解析】
    JWT简介& JWT结构& JWT示例& 前端添加JWT令牌功能& 后端程序
  • 原文地址:https://blog.csdn.net/qq_51295677/article/details/126246506