应用背景:
流量劫持,是利用各种恶意软件修改浏览器、锁定主页或不停弹出新窗口,强制用户访问某些网站,从而造成用户流量损失的情形。流量劫持是一种古老的攻击方式,比如早已见惯的广告弹窗(如下图)等,很多人已经对此麻木,并认为流量劫持不会造成什么损失。而事实上,流量劫持可以通过多种你无法觉察的方式窃取信息!
需求分析
1、网站身份认证需求
由于互联网的广泛性和开放性,使得互联网上存在着许多假冒、钓鱼网站。用户需要登录正确的网站进行在线操作或其它交易活动,需要确认网站身份的时候,只需要点击浏览器地址栏里面的锁头标志即可。
2、传输链路安全需求
互联网上面的数据是在链路上面传输的,中间要经过很多个节点,同时数据是由运营商托管服务的,数据在传输过程中很容易遭受窃取和攻击,运营商或者不法分子由于黑色利益也会在传输数据当中加入一些广告或者其它信息,需要对传输数据进行加密处理,放置数据在传输过程被篡改;
方案简介
1、HTTPS加密如何防止流量劫持
HTTPS,是HTTP over SSL的意思,是在HTTP基础上,增加一层SSL加密通道。SSL协议是用于解决传输层安全问题的网络协议,其核心是基于公钥密码学理论实现了对服务器身份认证、对数据的加密保护以及对数据完整性的校验等功能,确保传输数据的机密性和完整性,以及服务器身份的真实性。
因为SSL协议提供了对服务器的身份认证,所以DNS劫持导致连接错误服务器的情况将会被发现进而被终止,最终导致DNS挟持攻击无法实现;而SSL协议提供的数据加密和完整性校验,也解决了关键信息被嗅探以及数据内容被修改的问题。
2、HTTP协议缺陷,使流量劫持得以实现
流量劫持的方式有很多种,常见的主要有DNS劫持、CDN入侵、网关劫持、ARP攻击、Hub嗅探等等。不同的劫持方式,获得的流量有所差异。DNS 劫持,可以截获通过域名发起的流量,直接使用 IP 地址的通信则不受影响;CDN 入侵,只有浏览网页或下载时才有风险,其他场合则毫无问题;而网关被劫持,用户所有流量都难逃魔掌。
目前互联网上发生的流量劫持基本是两种手段来实现的:
域名劫持:通过劫持掉域名的DNS解析结果,将HTTP请求劫持到特定IP上,使得客户端和攻击者的服务器建立TCP连接,而不是和目标服务器直接连接,这样攻击者可以对内容进行窃取或篡改。在极端的情况下甚至攻击者可能伪造目标网站页面进行钓鱼攻击。
真实案例:
再没有使用前我司网站也同样遭到DNS流量劫持,在网页里面插入了非法广告,配置SSL证书后,网页显示正常,从这个真实的案例可以看出SSL证书在防止流量劫持方面有很显著的效果。
使用前 使用后
直接流量修改:在数据通路上对页面进行固定的内容插入,比如广告弹窗等。在这种情况下,虽然客户端和服务器是直接建立的连接,但是数据内容依然可能遭到野蛮破坏。
能够实施流量劫持的根本原因,是HTTP协议没有办法对通信对方的身份进行校验以及对数据完整性进行校验。如果能解决这个问题,则流量劫持将无法轻易发生。