Kerberos服务响应欺骗漏洞
发布日期:2000-08-31
更新日期:2000-08-31
受影响系统:
MIT Kerberos 4 4.0 patch 10
MIT Kerberos 5 5.0-1.2beta2
MIT Kerberos 5 5.0-1.2beta1
MIT Kerberos 5 5.0-1.1.1
不受影响系统:
Microsoft Kerberos v5
- Microsoft Windows 2000
描述:
Kerberos是为TCP/IP网络设计的可信任第三方鉴别协议,网络上的Kerberos服务起着
可信任仲裁者的作用,基于对称密钥体系。Kerberos服务与网络上每个实体分别共享
一个不同的秘密密钥,是否知道该秘密密钥便是身份的证明。Kerberos协议将口令因
明文传输而泄露的风险降至最低,同时不允许客户在不知道自己口令的情况下鉴别自
己的身份。
客户首先向Kerberos服务发送一个消息,内容包括客户名以及准备使用的TGS服务器
名(TGS 票据许可服务),注意TGS服务器可以有多个。Kerberos服务在自己的数据库
中如果找到提交请求的客户名,便产生一个会话密钥用于客户到TGS服务器之间的通
信加密,同时为客户产生一个TGT(票据许可票据)用于客户向TGS证实自身身份。
Kerberos用客户的秘密密钥加密会话密钥,用TGS的秘密密钥加密TGT,将二者响应给
提交请求的客户。一般秘密密钥是自己口令的单向散列函数,客户很容易从口令得到
自身秘密密钥,进而解密第一个消息获取会话密钥。客户会保存会话密钥和TGT,并
销毁口令以及单向散列函数,减小泄密可能。会话密钥和TGT仅仅在TGT有效期内有用,
TGT过期,二者均无意义。
客户向TGS发送消息,内容包括TGT以证实自身身份,以及最终欲请求的服务名。TGS
用自己的秘密密钥解密TGT进行身份鉴别,同时获取由Kerberos产生的会话密钥,用
于到客户的通信加密。TGS会为客户和最终服务产生一个会话密钥,也会为客户产生
一个最终服务票据用于客户向最终服务证实自身身份。TGS用Kerberos产生的会话密
钥加密新产生的会话密钥,用服务器的秘密密钥加密新产生的最终服务票据,将二者
响应给提交请求的客户。
客户向最终服务发送消息,内容包括最终服务票据以证实自身身份。
如果TGS没有到Kerberos服务注册成一个实体,或者TGS没有在Kerberos服务登记自身
的秘密密钥,此时TGS不会鉴别产生自Kerberos服务的TGT而继续进行后续处理,此时
攻击者有可能伪造来自Kerberos服务的响应进而非法访问最终服务。
<* 来源:Dug Song (
dugsong@monkey.org) *>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
Dug Song提供了一个测试用程序:
http://www.monkey.org/~dugsong/kdcspoof.tar.gz
建议:
确认TGS已经在Kerberos服务注册成一个实体,并登记了自身的秘密密钥。
浏览次数:6085
严重程度:0(网友投票)