AS_REQ&AS_REP
前言
域渗透的本质就是协议,在最近的学习中发现自己对域渗透kerberos协议这块有点模糊了,所以又回头看了一下,这次顺便记录下来,加深印象。 我会把域渗透中常见关于kerberos协议利用的方法和自己的理解都写清楚。方便自己下次看,也欢迎小伙伴一起学习。
这篇文章会先写kerberos的前2个阶段,也就是AS_REQ和AS_REP,会将自己的理解和这个阶段常见的攻击手法都写下来。
kerberos 认证流程
kerberos认证过程中会涉及到以下几个角色:
1、域控
2、KDC
3、AD(活动目录)
4、client
5、server
KeyDistribution Center秘钥分发中心简称KDC,默认是安装在域控制器(DC)上,其中KDC中又包含了Authentication Service(身份验证服务),简称AS,用于KDC对Client认证和Ticket Grantng Service (票据授予服务),简称TGS,用于KDC向Client和Server分发Session Key。
Active Directory(活动目录),简称AD,用于存储用户、用户组、域相关的信息。 Client 客户端,指用户。 Server 服务端,可能是某台计算机,也可能是某个服务。
kerberos认证的大体流程为:
大概的流程就是这样,其中会有一些细节。
在AS_REQ&AS_REP认证的时候具体过程: AS_REQ client访问域内的服务,本机会向KDC的AS 认证服务发送一个AS_REQ请求。请求主要包含用户Hash加密的时间戳、请求用户名、协商Hash的加密类型等信息。 AS_REP AS_REP在收到该请求后会先访问AD,查询是否有该用户,如果有则取出用户的hash 用来解密AS_req中PA_DATA中PA-ENC-TIMESTAMP的内容并生成一个随机密钥session_key as,使用client的hash 加密session_key as,作为TGS_REQ阶段的部分内容发送给TGS。还有一部分内容为krbtgt用户hash加密的session_key as,timestamp,client-info为TGT的内容。(这部分的session_key as 在下一阶段被解密出来会用来加密server_info,client_info,timestamp。会用来与TGT中的内容对比,如果正确,也有权限才会给ST)
AS_REQ
AS_REP
AS_REQ&AS_REP阶段常见安全问题
1、用户名枚举
kerbrute_windows_amd64.exe userenum --dc 192.168.3.144 -d rootkit.org top-usernames-shortlist.txt 该工具会对域控制器的88号端口发送kerberos-pre-auth认证 当用户名存在,密码错误,会在返回包kerberos-krb-error-error_code字段中出现 error-code: eRR-PREAUTH-REQUIRED (25) 当用户名不存在时kerberos-krb-error-error_code字段中出现 error-code: eRR-C-PRINCIPAL-UNKNOWN (6) 利用该特征枚举出正确的域用户名
2、密码喷洒
kerbrute_windows_amd64.exe passwordspray -d rootkit.org top-usernames-shortlist.txt admin!@#45
top-usernames-shortlist.txt 爆破成功的域用户名 admin!@#45 喷洒的密码 登录成功,会产生日志(4768 - A Kerberos authentication ticket (TGT) was requested)
3、AS-REP Roasting
kerberos身份预认证默认情况下是开启的,KDC会记录密码错误次数,防止在线爆破。密码错误次数多了,会被锁定账号,所以千万不要一直对一个域用户去猜解密码,可以使用上面介绍的密码喷洒的方式,对不同的用户,使用同一个密码。
如果关闭了预身份验证后,攻击者可以指定用户去请求票据,域控不会校验AS_ERQ阶段的内容,在AS_REP阶段会返回用户hash加密的session key和krbtgt hash加密的TGT。所以攻击者拿到session key,则可以进行离线爆破。
设置为不接受kerberos身份预认证 rubeus.exe获得用户Hash Rubeus.exe asreproast
将as_rep中的hash 复制下来 以固定的格式 $krb5asrep$23${0}@{1}:{2}", userName, domain, repHash
hashcat爆破
hashcat -m 18200 1.txt pass.txt --force 爆破成功
未完待续…
|