对于“证书认证中间人攻击漏洞”的验证

对于“证书认证中间人攻击漏洞”的验证

 

2006-8-24

一、      背景

Internet ExplorerSSL实现存在问题,远程攻击者可以利用这个漏洞进行中间人攻击。

在通常情况下,WEB站点的管理员通过SSL进行通信加密,要实现加密通信,管理员需要生成证书并由CA证书授权中心签发,该WEB站点的URL会保存在证书的识别名小节中的CN(公用名)字段中。

CA
会验证管理员是否合法拥有的CN字段中的URL,签发证书并返回证书。假定管理员尝试对www.thoughtcrime.org进行加密,就有如下的证书签发过程:

[CERT - Issuer: VeriSign / Subject: VeriSign]

-> [CERT - Issuer: VeriSign / Subject: www.thoughtcrime.org]

WEB浏览器接收到这个证书时,必须验证CN字段是否与它刚连接的那个域名匹配,并且是否是由一个了已知的CA证书签名,这种情况下攻击者不可能使用合法的CN名和合法的签名来替代证书,所以不存在中间人攻击。

但是有些情况下,为了方便会使用本地授权,因此这种情况下www.thoughtcrime.org会从本地授权中获得如下的证书链结构:

[Issuer: VeriSign / Subject: VeriSign]

-> [Issuer: VeriSign / Subject: Intermediate CA]

-> [Issuer: Intermediate CA / Subject: www.thoughtcrime.org]

WEB浏览器接收到此信息时,它必须验证分支证书的CN字段是否与它刚连接的那个域名匹配,以及该证书是否是由中间CA所签发,并且中间CA签发的证书是否由已知CA证书签发。最后,WEB浏览器还应该检查所有中间证书是否有合法的CA Basic Constraints,也就是说这些分支证书是否有合法授权进行证书签发。

Internet Explorer存在设计漏洞,没有检查CA Basic Constraints信息,这样,具有任意域一个名合法CA签发证书的攻击者可以生成任意其他域名的合法CA证书。

假设攻击者是www.thoughtcrime.org的合法管理者,他可以首先可以生成一合法证书并从VeriSign中请求签名:

[CERT - Issuer: VeriSign / Subject: VeriSign]

-> [CERT - Issuer: VeriSign / Subject: www.thoughtcrime.org]

然后为任意域如(www.amazon.com)生成一证书,并使用自己的证书进行签名:

[CERT - Issuer: VeriSign / Subject: VeriSign]

-> [CERT - Issuer: VeriSign / Subject: www.thoughtcrime.org]

-> [CERT - Issuer: www.thoughtcrime.org / Subject: www.amazon.com]

由于IE不会检查www.thoughtcrime.orgBasic Constraints信息,IE就会按照这个证书链合法接收www.amazon.com域。

任何人拥有任何CA签发的证书(和相应的私钥)可以欺骗任何用户。

 

http://www.microsoft.com/technet/security/bulletin/MS02-050.mspx

二、      准备工作

1.        签发根CA

n         openssl genrsa -des3 -out myrootca.key 1024

n         openssl req -new -key myrootca.key -out myrootca.req

n         openssl x509 -req -days 7305 -extfile rootca.conf  -signkey myrootca.key -in myrootca.req -out myrootca.crt

2.        签发中级CA

n         openssl genrsa -out subca.key 1024

n         openssl req -new -key subca.key -out subca.req

n         openssl x509 -req -days 3650 -sha1 -extfile subca.conf -CA myrootca.crt -CAkey myrootca.key -CAserial myrootca.srl -CAcreateserial -in subca.req -out subca.crt

三、      流程一:使用子CA签发服务器证书

1.         使用IIS产生一个证书请求名为certreq.csr

2.         使用中级CA签发一个服务器证书

openssl x509 -req -days 3650 -sha1 -extfile server.conf -CA subca.crt -CAkey subca.key -CAserial subca.srl -CAcreateserial -in certreq.txt -out serverbysubca.crt

 

3.         安装服务器证书到IIS

4.         正常建立SSL连接

四、      流程二:使用根CA签发的服务器证书签发下级服务器证书

1.         使用根CA签发一个服务器证书
openssl x509 -req -days 3650 -sha1 -extfile server.conf -CA myrootca.crt -CAkey myrootca.key -CAserial myrootca.srl -CAcreateserial -in myhost.req -out myhost.crt

 

2.         使用IIS产生一个证书请求名为certreqsub.txt

 

3.         使用服务器证书签发一个下级服务器证书
openssl x509 -req -days 3650 -sha1 -extfile server.conf -CA myhost.crt -CAkey myhost.key -CAserial myhost.srl -CAcreateserial -in certreqsub.txt -out serverbyhost.crt

 

4.         安装到服务器证书到IIS,能够启动SSL,但是无法验证

 

 

 

 

 

5.         IE里面导入根CA签发的服务器证书到“中级证书颁发机构”

 

 

结果直接察看证书显示为:

此时,IIS的SSL无法建立。

 

五、      结论

此漏洞现于2002年,对于安装了补丁的系统就不存在这样的漏洞。

六、      附录A 签发证书的扩展项

1.        CA rootca.conf

 

basicConstraints = CA:true

keyUsage = keyCertSign, cRLSign

 

2.        CAsubca.conf

 

 

basicConstraints = CA:true,pathlen:0

keyUsage = keyCertSign, cRLSign

nsCertType = sslCA, emailCA, objCA

3.        服务器SSL证书:server.conf

 

 

basicConstraints = CA:false

keyUsage=digitalSignature,keyEncipherment,dataEncipherment, keyAgreement

nsCertType = server

extendedKeyUsage = serverAuth, msSGC, nsSGC

七、      附录B 已现的SSL漏洞

1.       IE通过点击图像<img>或者在帧<iframe>中连接到一个服务器时,IE只检查SSL证书是否是由可信的根服务商提供的,而没有验证证书有效期以及其他内容。(MS00-039)

2.         在同一个IE会话中,一旦成功的建立了SSL连接,对于新的SSL连接,IE将不再对证书进行任何的检查。(MS00-039)

3.         证书认证中间人攻击漏洞:IE不检查中间证书是否有合法的CA Basic Constraints,任何人拥有任何CA签发的证书(和相应的私钥)可以签发下级证书来欺骗任何用户。(MS02-050
Certificate Validation Flaw Could Enable Identity Spoofing (Q328145)

4.         SSL漏洞 CAN-2004-0120 风险级别
微软安全套接层(Microsoft Secure Sockets Layer)函数库提供对安全通讯协议的支持,这些协议包括Transport Layer Security 1.0 (TLS 1.0), Secure Sockets Layer 3.0 (SSL 3.0),Secure Sockets Layer 2.0 (SSL 2.0), Private Communication Technology 1.0 (PCT 1.0)协议。windowsSSL函数库没有有效检查输入的数据,恶意的攻击者可以构造特殊的SSL请求,这些请求可能导致win2000winxpSSL函数库停止响应,而在win2003中可能会导致系统重新启动。(MS04-011)

八、      附录C 打了补丁的浏览器报错信息

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值