本文由CSDN-蚍蜉撼青松【主页:http://blog.csdn.net/howeverpf】原创,转载请注明出处!
自SSL问世以来,在其应用范围越来越广泛同时,多种针对SSL协议本身的缺陷或者其不规范引用的SSL会话劫持方法也随之出现,下面将详细分析两种典型的SSL会话劫持的实现原理和实现条件。【读者如果想要参考SSL中间人的实际案例,可以阅读因特尔开发人员专区的这篇文章《针对SSL的中间人攻击》】
1.1 会话劫持原理
当SSL客户端与SSL服务端建立连接时,在正常的连接握手阶段,客户端必定会要求服务端出示其X.509公钥证书,并根据以下3个要素验证服务器证书的有效性:
a)该公钥证书的subject name(主题名)和所访问的服务器站点的名称是否一致;
b)该公钥证书的是否过期;
c)该公钥证书及其签发者证书链中的证书的数字签名是否有效(层层验证,一直验证到根CA证书为止)。
当SSL客户端访问一个基于HTTPS的加密Web站点时,只要上述三个要素有一个验证没有通过,SSL协议就会发出告警,大多数浏览器会弹出一个提示框,提示服务器证书存在的问题,但不会直接断开SSL连接,而是让用户决定是否继续。图1-1展示了IE浏览器弹出的安全警报提示框。
图1-1 IE浏览器验证服务器证书失败后弹出的提示框
大多数浏览器在验证到服务器证书存在问题后的处理方式是存在巨大隐患的,因为用户往往由于缺乏安全意识或者图方便而选择接受不安全的证书,这就使得伪造一个和合法证书极为相似的“伪证书”骗取SSL 客户端用户信任的手段成为可能。【要伪造证书就必然要先获取真正的证书,手工获取方法可参见我去年写的一篇博文《怎样手工获取我们所感兴趣网站的公钥证书? 》】图1-2展示了这种SSL会话劫持的主要流程(图中,C为SSL客户端,M为监测主机,S为SSL服务端)
图1-2 基于伪造证书进行劫持的流程
文字描述如下:
经过以上步骤,主机M成功实现了主机C(SSL客户端)与主机S(SSL服务端)之间的会话劫持,并可以对明文形式的会话内容进行监测。
1.2 成功的必要条件
这种类型的SSL会话劫持成功的必要条件如下:
2.1 会话劫持原理
用户浏览网页时,使用SSL协议的方式一般有两种。一种是在浏览器地址栏输入网址时直接指定协议类型为HTTPS,另一种是通过HTTP响应的302状态将网页重定向到HTTPS 链接。2009年2月在美国拉斯维加斯举行的BlackHat黑客大会上,安全研究人员Moxie Marlinspike演示了通过自己研发的SSLstrip工具劫持SSL会话来截获注册数据的方法,为SSL会话劫持提供了新思路。
SSLstrip使用了社会工程学的原理:许多人为了图方便省事,在输入网址时一般不考虑传输协议,习惯上只是简单输入主机名,浏览器默认在这种情况下会使用HTTP协议。例如用户为了使用Gmail邮箱,直接输入accounts.google.com,浏览器会给谷歌服务器发送一个HTTP 请求,谷歌服务器认为电子邮件属于应加密的重要事务,使用HTTP不恰当,应改为使用HTTPS,于是它返回一个状态码为302的HTTP 响应,给出一个重定向网址https://accounts.google.com/ServiceLogin?passive=1209600&continue=https%3A%2F%2Faccounts.google.com%2FManageAccount&followup=https%3A%2F%2Faccounts.google.com%2FManageAccount,浏览器再使用这个重定向网址发出HTTPS 请求。一个原本应该从头到尾使用HTTPS加密会话的过程中混入了使用明文传输的HTTP会话,一旦HTTP会话被劫持,HTTPS会话就可能受到威胁。SSLstrip 正是利用这一点,通过劫持HTTP 会话劫持了SSL会话,如图2-1所示。
图2-1 SSLstrip原理示意图
下面具体阐述基于SSLstrip的SSL会话劫持流程(阐述中依然以主机C为SSL客户端,主机M为监测主机,主机S为SSL服务端):
2.2 成功的必要条件
这种类型的SSL会话劫持成功的必要条件如下:
传统的基于伪造X.509证书的SSL会话劫持方式,其最大的问题就在于客户端浏览器会弹出警告提示对话框,这个提示是如此醒目,以至于只要用户有一定的安全意识和网络知识,劫持成功的概率就会大大降低。随着网络知识的慢慢普及,这种技术的生存空间会越来越小。
基于HTTP与HTTPS之间跳转验证漏洞的SSL会话劫持方式,是近几年新出的一种技术。在此种方式下,客户端浏览器不会有任何不安全的警告或提示,只是原先的HTTPS连接已经被HTTP连接所替换,迷惑性大大增强。一般为了进一步加强欺骗效果,监测主机还可以一个银色的“安全锁”图案显示在非安全的网址前面。但其缺陷也很明显,一旦用户在浏览器地址栏的输入中指定使用HTTPS协议,就会发现网页根本无法打开。因此只要用户养成良好的上网习惯,这种方式的会话劫持就会失败。
------本文由CSDN-蚍蜉撼青松【主页:http://blog.csdn.net/howeverpf】原创,转载请注明出处!------