利用PAC新特性对抗黄金票据

admin 2022年9月29日01:14:49评论109 views字数 2060阅读6分52秒阅读模式

利用PAC新特性对抗黄金票据

黄金票据简介


黄金票据是一种常见的域内权限维持手段,这种攻击主要是利用了Kerberos认证过程中TGT票据由KRBTGT用户的hash加密的特性,在掌握KRBTGT用户密码之后可以通过签发一张高权限用户的TGT票据,再利用这个TGT向KDC获取域内服务的ST来实现对域的控制。那么这里的“高权限用户”是通过什么来判断的呢,答案就是PAC。

1

PAC的作用

PAC的结构如下图所示(MS-PAC)


利用PAC新特性对抗黄金票据


整个结构详解可以参考daiker师傅的这篇文章,由于TGT是krbtgt用户的hash加密的,我们在wireshark抓包是看不到TGT的结构的,不过我们可以写了一个工具来解密TGT和PAC。


PAC解析后内容如下:

利用PAC新特性对抗黄金票据


利用PAC新特性对抗黄金票据

可以看到在没有更新之前PAC中一共由5种类型的INFO_BUFFER:


·KERB_VALIDATION_INFO(0x1)

·PAC_CLIENT_INFO(0x0A)

·UPN_DNS_INFO(0x0C)

·PAC_SERVER_CHECKSUM (0x06)

·PAC_PRIVSVR_CHECKSUM(0x07)


当用户通过Kerberos预认证之后,KDC会给用户返回TGT票据,在TGT票据中包含了用户的SID、组等信息。在后续的TGS请求中KDC会将TGT中的PAC直接复制到返回给用户的ST票据中,最终由服务向KDC申请验证该PAC来确认用户是否有权访问该服务。

通过上面的描述,可以看出PAC在Kerberos认证的权限校验过程起着非常关键的作用,在历史上也因为PAC的问题出现过非常严重的安全漏洞(如著名的ms14-068),然而这个过程在微软针对CVE-2021-422287漏洞修复更新之后发生了一些变化。



2

PAC_REQUESTOR


2021年11月9日,微软发布了针对CVE-2021-42287漏洞的修复补丁,跟据微软的文章描述,此次更新后,在PAC中添加了一个新属性PAC_REQUESTORKDC将会在PAC的PAC_REQUESTOR结构体填充原始请求者的SID,并且在TGS_REQ过程验证请求用户(cname)是否和PAC_REQUESTOR中的SID相匹配。我们用工具解析安装CVE-2021-42287补丁更新之后的域控返回的TGT。


利用PAC新特性对抗黄金票据


考虑到更新之后票据的兼容问题,微软增加了一个注册表

PACRequestorEnforcement来对验证规则进行控制,该注册表位于

HKEY_LOCAL_MACHINESystemCurrentControlSetServicesKdc

PACRequestorEnforcement的默认值为1,当该注册表项的值为0时表示不验证PAC_REQUESTOR, 值为1时表示如果PAC中存在PAC_REQUESTOR结构就验证,如果不存在就不验证,当值为2时所有PAC都需要验证PAC_REQUESTOR, 不包含PAC_REQUESTOR结构的PAC将会被拒绝。


微软将整个更新过程分为三个阶段:


1.初始部署阶段更新时间为2021年11月9日,在这个阶段增加了对PacRequestorEnforcement注册表项的支持,用户可以通过设置该注册表项对PAC新增属性的验证规则进行控制。


2.第二个部署阶段更新时间为2022年7月12日,在这个阶段的更新执行之后,PacRequestorEnforcement等于0的情况将不被支持,将这个注册表设置为0将等同于设置成1。


3.强制执行阶段安装了这次更新的域控将移除PacRequestorEnforcement注册表,也就是只支持带有PAC_REQUESTOR结构的TGT,并且和存在以下情况的域控不兼容 

· 未安装 2021 年 11 月 9 日或更高版本更新的域控制器。

· 已安装 2021 年 11 月 9 日或更高版本更新,但尚未安装 2022 年 7 月 12 日更新的域控制器以及 PacRequestorEnforcement 注册表值为 0 的域控制器。


与此同时,这次更新也新增了新的系统日志,日志ID和对应的含义如下:

事件 ID

事件类型

含义

35

警告

KDC 遇到不带 PAC 属性缓冲区的 TGT

36

部署阶段警告

 执行阶段出错

KDC 遇到没有 PAC 的 TGT 或其他证据票证

37

部署阶段警告 

执行阶段出错

KDC 遇到没有 PAC 请求程序缓冲区的 TGT 或其他证据票证

38

错误

请求 TGT 或证据票证的帐户与生成服务票证的帐户不匹配

3

基于PAC更新的黄金票据检测

在这次更新之后,一些黑客工具也对此进行了相应的更新

利用PAC新特性对抗黄金票据


不过需要注意这些工具(impacket、mimikatz、Rubeus)在生成黄金票据的过程中伪装的用户SID默认都是500。

利用PAC新特性对抗黄金票据

利用PAC新特性对抗黄金票据


利用PAC新特性对抗黄金票据


大部分情况下,攻击者不会去修改默认的用户SID,如果在制作黄金票据时对应的用户名不存在或者其SID不是500的话,域控上将会触发event 38日志,如果使用的工具没有更新PAC结构的话将会触发event 37日志,通过这两条日志就可以对黄金票据攻击进行检测。

利用PAC新特性对抗黄金票据


利用PAC新特性对抗黄金票据


利用PAC新特性对抗黄金票据


原文始发于微信公众号(中安网星):利用PAC新特性对抗黄金票据

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年9月29日01:14:49
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   利用PAC新特性对抗黄金票据http://cn-sec.com/archives/1322603.html

发表评论

匿名网友 填写信息