kerberos 认证之AS_REQ与AS_REP

简述

kerberos 的第一步请求与KDC的返回报文一共关注与两个问题,第一是验证“你是你”,既验证访问客户端的身份,证明你是你,第二个则是提供下一步请求的凭证。

AS_REQ

用户向KDC发起AS_REQ,请求凭据是用户 hash加密的时间戳。请求凭据放在PA_DATA里面。详情见以下每个字段的详细介绍
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cMHUQQ38-1618106536162)(9AF2DB007AAD4C98A9AE0DE4BA9BEDF8)]
同时请求时会在报文中携带版本号、用户名、请求类型等字段。

在AS_REQ阶段主要用到的有两个字段
1、ENC_TIMESTAMP
这个是预认证,就是用用户hash加密时间戳,作为value 发送给AS服务器。然后AS服务器那边有用户hash,使用用户hash进行解密,获得时间戳,如果能解密,且时间戳在一定的范围内,则证明认证通过
2、PA_PAC_REQUEST
这个是启用PAC支持的扩展。PAC(Privilege Attribute Certificate)并不在原生的kerberos里面,是微软引进的扩展。详细的内容之后将有一篇文章详细介绍PAC。PAC包含在AS_REQ的响应body(AS_REP)。这里的value对应的是include=true或者include=false(KDC根据include的值来判断返回的票据中是否携带PAC)。

AS_REP

KDC的返回报文主要可已关注 两部分内容、一部分是有kertgt账号hash加密的ticket
(使用KRBTGT密钥(即密码哈希)加密的TGT),另一部分则是使用用户(client)hash加密的内容,其中包含了下一步访问时使用的认证密钥session-key,在伪造黄金票据时,只需要伪造TGT票据便可以进行访问服务,不需要管这个session-key,这一点我有点不理解的.
详细内容可访问https://daiker.gitbook.io/windows-protocol/kerberos/1#2-yong-hu-ming-mei-ju进行学习

相关安全问题描述

**用户名枚举/密码爆破 **
用户名枚举与密码爆破,在AS_REQ请求时会携带密码以及用户hash加密过的时间戳,用户是否存在,或者密码正确与否均会影响反馈数据包内容,因此可以根据数据包反馈来进行用户名枚举,在获得用户名时可进行密码破解.

AS-REPRoasting
AS-REP Roasting是一种对用户账号进行离线爆破的攻击方式。但是该攻击方式利用比较局限,因为其需要用户账号设置 "Do not require Kerberos preauthentication(不需要kerberos预身份验证) " 。而该属性默认是没有勾选上的。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8UXEij9u-1618106536164)(236538FE0B3B4DB5A0C12B52B5086389)]

由于AS-REQ使用用户的密码哈希作为秘钥来加密时间戳,如果KDC使用用户的密码哈希成功读取时间戳,并且时间戳落在KDC允许的时间窗口内(几分钟内),KDC就会通过AS-REP发送TGT。当不需要预认证时,攻击者可以发送伪造的AS-REQ,此时由于认证过程不需要密码,KDC会立即授予TGT。由于AS-REP中的部分数据(除TGT之外)包含使用用户秘钥(即密码哈希)加密的数据(会话秘钥、TGT到期时间以及nounce),因此攻击者可以从中提取密码哈希,离线破解。

黄金票据
在AS_REP里面的ticket的encpart是使用krbtgt的hash进行加密的,KRBTGT的密码默认情况下不会被手动设置,因此与主机账户密码一样复杂。如果我们拥有krbtgt的hash,就可以给我们自己签发任意用户的TGT票据。

pass the hash ,pass the key
就是由于在进行认证的时候,是用用户hash加密时间戳,即使在使用密码进行登录的情况下,也是先把密码加密成hash,再进行认证。因此在只有用户hash,没有明文密码的情况下也是可以进行认证的。不管是rubeus还是impacket里面的相关脚本都是支持直接使用hash进行认证。其中,如果hash的ntlm hash,然后加密方式是rc4,这种就算做是pass the hash,如果是hash是aes key(使用sekurlsa::ekeys导出来),就算是pass the key。在很多地方,不支持rc4加密方式的时候,使用pass the key不失为一种好方法。

实验部分

待补充

参考
https://www.jianshu.com/p/17ad0aa73755
https://daiker.gitbook.io/windows-protocol/kerberos/1#4-ticket
https://blog.csdn.net/qq_18501087/article/details/102831053
https://www.anquanke.com/post/id/200680
https://docs.microsoft.com/zh-cn/sql/reporting-services/report-server/register-a-service-principal-name-spn-for-a-report-server?view=sql-server-ver15

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值