kerberos 认证学习

前言

内网渗透大多数为域渗透。学习域渗透kerberos协议就是绕不过的一个难点,白银票据、黄金票据、攻击域控都离不开kerberos。这里把对kerberos认证的过程进行整理,理解错误的地方也请各位指正。

kerberbos 协议

简介

Kerberos协议是一种基于第三方可信主机的计算机网络协议,它允许两个实体之间在非安全网络环境(可能被窃听、被重放攻击)下以一种安全的方式证明自己的身份。
简单说,就是A和B之间有一个秘密,A需要向B证明自己是A。

来源

直接的方式就是A用秘密做秘钥加密文字生成密文,把密文和文字一块发送给B,B再用秘密解密得到明文,把明文和文字进行对比。若一致,则证明是A。
但是网络中,密文和文字很有可能被窃取。只要时间足够,总能破解秘钥。所以不能使用这种长期有效的秘钥。
改为短期的临时秘钥。那么这个临时秘钥需要一个第三方可信任的机构来提供(KDC)。
到此,kerberbos 三个狗头就到齐了,Client、Server、KDC。

key 概念

刚刚我们说过,因为在网络中,需要使用临时秘钥来代替长期有效的秘钥。这里就有两个概念。
Long-term Key/Master Key
有些长期保持不变的秘钥(Key),比如你的密码、存储在计算机的NTLM-Hash。这样的Key被称为Long-term Key,也叫Master Key。这样的Key不应该在网络上传输,因为容易被截获、被解密。
Short-term Key/Session Key
短暂临时的Key来取代Master Key,这种Key被称为Short-term Key,也叫Session Key。用Session Key来加密需要进行网络传输的数据。因为这种Key只在一段时间内有效,即使被加密的数据包被黑客破解,等他把Key计算出来的时候,这个Key早就已经过期了。

概念

下面我们通过一张图来介绍几个概念。(自己画的比较丑)

图片

Domain Controller (域控制器),简称DC,一台计算机,实现用户、计算机的统一管理。
KeyDistribution Center(秘钥分发中心),简称KDC,默认安装在域控。
Authentication Service(身份验证服务),简称AS,用于KDC对Client认证。
Ticket Grantng Service (票据授予服务),简称TGS,用于KDC向Client和Server分发Session Key。
Active Directory(活动目录),简称AD,用于存储用户、用户组、域相关的信息。
Client 客户端,指用户。
Server 服务端,可能是某台计算机,也可能是某个服务。

粗略理解

我们开始看图说话,先大致走一遍这个流程。从图一我们可以看到大致分为6步。
1.
首先Client向DC请求访问Server,DC判断Client是否可信。怎么判断?去AD中查找依次区分Client。这就是AS服务完成的工作。
2.
认证通过后返回TGT给Client,Client 得到TGT(Ticket Granting Ticket)。
3.
Client继续拿着TGT请求DC访问Server,TGS通过Client消息中的TGT,判断Client是否有访问权限。
4.
如果有,给了Client访问Server的权限ticket,也叫ST(Service Ticket)。
5.
Client得到ticket,再去访问Server,且该ticket只针对这个Server。
6.
Server和Client建立通信。
总结来看
Client要访问Server,先去AS认证自己的身份。认证通过后AS返回给Client一个TGT。Client再拿着TGT在TGS中判断是否有访问Server的权限。如果有权限,TGT交换成Ticket,给Client用于和Server通信。

细细解读

我们简单走了一遍kerberos认证的流程。下面我们分为三步认证(Authentication)细细解读。

Authentication 1

Client和AS的认证,我们结合下图仔细解析。

Authentication 1

首先Client要发送自己的信息向AS请求TGT票据。
该请求称为KRB_AS_REQ:即Client 哈希值NTLM-hash对数据(timestamp、client-info、server-info) 进行加密。
当Client发送身份信息给AS后,AS会先向AD请求,询问是否有此用户,如果有的话,就会取出它的NTLM hash,然后生成一个随机秘钥称为Session-Key as(临时秘钥Session-Key)。并使用Client NTLM-hash 加密Session-key as 作为一部分为内容。
还有一部分内容就是TGT:使用KDC一个特定账户的NTLM-hash对Session-key as、timestamp、Client-info进行的加密。这个特定账户就是krbtgt(创建域控时自动生成)。
然后将这两部分回复给Client。即KRB_AS_REP

至此,kerberos 第一步请求完成。

Authentication 2

Client和TGS的认证,我们结合下图仔细解析。

Authentication 2

Client收到回复KRB_AS_REP,先用自己的Client NTLM-hash 解密得到Session-Key as,并使用Session-Key as 加密数据(timestamp、Client-info、Server-info)作为一部分。
TGT是用krbtgt 账户的NTLM加密的,Client无法解密,将TGT作为另一部分继续发送给TGS。
两部分组成即为KRB_TGS_REQ

TGS收到该请求,用krbtgt NTLM-hash 先解密TGT得到Session-key as、timestamp、Client-info、Server-info。再用Session-key as 解密第一部分内容,得到Client-info、timestamp。

将两部分获取到时间戳timestamp进行比较,如果时间戳跟当前时间相差太久,就需要重新认证。
TGS还会将这个Client的信息与TGT中的Client信息进行比较,如果两个相等的话,还会继续判断Client有没有权限访问Server,如果都没有问题,认证成功,返回ST(也叫Ticket)给Client。

认证都通过后,TGS会生成一个随机秘钥(Session-Key tgs)。向Client回复KRB_TGS_REP两部分内容。
一部分:Session-key as 加密的Session-key tgs
一部分ST(ticket):Server NTLM-hash加密的数据(Session-key tgs、timestamp、Client-info)
注意Session-key tgs 主要用在Client和Server的通信上。

至此,Client和KDC的通信就结束了,然后是和Server进行通信。

Authentication 3

Client和Servre的认证,我们结合下图仔细解析。

Authentication 3

Client收到KRB_TGS_REP,先解密出了Session tgs。再使用Session tgs加密Client-info、timestamp作为一部分内容。ST因为使用的是Server NTLM-hash 进行的加密,无法解密。原封不动发送给Server。两部分一块发送给Server即是KRB_AP_REQ

Server 收到请求,用自身的Server NTLM解密了ST,得到Session tgs,再解密出Client-info、timestamp。然后与ST的Client-info、timestamp进行对比。timestamp 一般时间为8小时。验证通过后,回复KRB_AP_REP,建立通信。

至此。kerberos 认证流程结束。

扩展

黄金票据
krbtgt 的NTLM Hash如果泄露了,那么TGT就能被解密甚至伪造。伪造的TGT叫做黄金票据。
白银票据
ST(Ticket )是由Server的NTLM Hash进行加密的,如果该Hash泄露,那么就可以解密甚至伪造Ticket。伪造的Ticket 叫做白银票据。
PAC
Privilege Attribute Certificate(特权属性证书),简称PAC,为了增加了认证过程中的权限认证。PAC会被放在TGT里发送给Client,然后由Client发送给TGS。
ms14-068 漏洞,就是基于PAC认证的错误,从而导致域内普通用户可以伪造凭据,提权到管理员权限。

kerberos 认证存在的漏洞

参考资料

深入解读MS14-068漏洞:微软精心策划的后门?
Kerberos协议探索系列之扫描与爆破篇
Windows认证 | 域认证
彻底理解windows认证

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,905评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,140评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,791评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,483评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,476评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,516评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,905评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,560评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,778评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,557评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,635评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,338评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,925评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,898评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,142评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,818评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,347评论 2 342