Kerbaros源自古希腊神话中的 Cerberus——地狱三头犬,可以识别亡灵,防止活人进入地狱,对应的就是kerbaros协议的身份检验功能。

基本概念

身份认证

  • 本地认证:登录电脑时知道用户密码才能登陆对应的账号。windows中可以使用mimikatz抓取密码,将在后文实战部分进行说明。
  • 网络认证:电脑之间的认证,此时就需要能被广泛认可的认证协议。

Kerberos协议

概念说明

  • 客户端(client):请求发送方

  • 服务端(Server):接收方

  • 密钥分发中心(Key Distribution Center,KDC):分为两个部分

    • AS(Authentication Server):认证服务器,专门认证客户端身份,发放客户用来访问TGS的TGT(票据授予票据),类似于机场中的安检处
    • TGS(Ticket Granting Ticket):票据授予服务器,发放整个认证过程和客户端访问服务端时所需的服务授予票据(Ticket),类似于买票窗口
  • 对称加密:用相同的密钥进行加解密,在保证公钥安全的条件下,效率较高。

认证过程

  1. 客户用身份信息去AS认证,认证通过后返回TGT。TGT有两个部分,第一块包括基本信息:时间、有效时间、下一步TGS的名字和一个随机数CT_SK,使用用户密码进行加密,保证了访问者拥有该用户的密码才能获取CT_SK。第二块除此之外包括身份信息中的IP地址和CT_SK,使用KDC中专门为TGT加密的密码加密。

    840B195D56CEA0728C47945D637BD0FA

  2. 用户用TGT去TGS获取ST。用户使用密码解密第一块,使用获取的CT_SK进行加密,并在末尾添加想要访问的服务器。TGS由于不知道CT_SK,只能通过解密第二块进行获取,从而在第一块进行修改,保证了TGS为AS信任的一方。
    27A26042F0A423E52B22746841C590BE

  3. 用户用ST获取服务方权限。KDC用TGT的密钥解密第二块,获取CT_SK,从而解密第一块,添加有效时间,使用生成的随机数CS_SK加密,在第二块将随机数换为CT_SK,使用目标服务方的密码加密。服务方通过相同的过程解密,对访问用户的身份进行核对。
    69E532F1A9BFBF888F894B8BCBC6759F

攻击方法

黄金白银票据

黄金票据:伪造TGT

条件:

  1. 域名称(shell net config workstation)
  2. 域的SID值(shell whoami/user)
  3. 重点:域的KRBTGT账号的Hash(isadump::dcsync /domain:test.com /all /csv)
  4. 伪造任意用户名

白银票据:伪造ST

条件:

  1. 域名
  2. 域sid
  3. 目标服务器名
  4. 可利用的服务
  5. 服务账号的NTML Hash
  6. 需要伪造的用户名

委派攻击

非约束性委派:伪造一个客户端获取服务器权限,去执行其他操作

用mimikatz抓取本地hash

渗透工具mimikatz

  • Mimikatz是法国人benjamin开发的一款功能强大的轻量级调试工具,本意是用来个人测试,但由于其功能强大,能够直接读取WindowsXP-2012等操作系统的明文密码而闻名于渗透测试,可以说是渗透必备工具。

  • 下载直接在github上,在Tags中选择最新版本:

    image-20250728170847726

    image-20250728170813813

  • 命令如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    cls:       清屏
    standard: 标准模块,基本命令
    crypto: 加密相关模块
    sekurlsa: 与证书相关的模块
    kerberos: kerberos模块
    privilege: 提权相关模块
    process: 进程相关模块
    serivce: 服务相关模块
    lsadump: LsaDump模块
    ts: 终端服务器模块
    event: 事件模块
    misc: 杂项模块
    token: 令牌操作模块
    vault: Windows 、证书模块
    minesweeper:Mine Sweeper模块
    net:
    dpapi: DPAPI模块(通过API或RAW访问)[数据保护应用程序编程接口]
    busylight: BusyLight Module
    sysenv: 系统环境值模块
    sid: 安全标识符模块
    iis: IIS XML配置模块
    rpc: mimikatz的RPC控制
    sr98: 用于SR98设备和T5577目标的RF模块
    rdm: RDM(830AL)器件的射频模块
    acr: ACR模块
    version: 查看版本
    exit: 退出

模拟高权限用户提取密码

  • 用管理员身份打开mimikatz,获取debug权限:

    1
    privilege::debug

image-20250809221221417

  • 模拟SYSTEM权限令牌,提升当前Mimikatz进程的权限,模拟高权限用户NT AUTHORITY\SYSTEM:

    1
    token::elevate

image-20250809221300867

​ 权限提升成功:

image-20250809222451441

  • 读取Windows中受保护的注册表区域SAM,获取NTLM的hash,用在线工具进行解密:

    1
    lsadump::sam

​ 以其中的WDAGUUtilityAccount账户为例,可以看到hash:

image-20250809221403522

  • 恢复权限:

image-20250809222524614

参考文献

  1. gentilkiwi/mimikatz/