由于互联网的广泛性和开放性,使得互联网上存在着许多假冒、钓鱼等网站。用户需要登录正确的网站进行在线操作或其它交易活动,需要确认网站身份的时候,只需要点击浏览器地址栏里面的锁头标志即可。
互联网上面的数据是在链路上面传输的,中间要经过很多个节点,同时数据是由运营商托管服务的,数据在传输过程中很容易遭受窃取和攻击,运营商或者不法分子由于黑色利益也会在传输数据当中加入一些广告或者其它信息,需要对传输数据进行加密处理,防止数据在传输过程被篡改。
HTTPS,是HTTP over SSL的意思,是在HTTP基础上,增加一层SSL加密通道。SSL协议是用于解决传输层安全问题的网络协议,其核心是基于公钥密码学理论实现了对服务器身份认证、对数据的加密保护以及对数据完整性的校验等功能,确保传输数据的机密性和完整性,以及服务器身份的真实性。
因为SSL协议提供了对服务器的身份认证,所以DNS劫持导致连接错误服务器的情况将会被发现进而被终止,最终导致DNS挟持攻击无法实现;而SSL协议提供的数据加密和完整性校验,也解决了关键信息被嗅探以及数据内容被修改的问题。
流量劫持的方式有很多种,常见的主要有DNS劫持、CDN入侵、网关劫持、ARP攻击、Hub嗅探等等。不同的劫持方式,获得的流量有所差异。DNS 劫持,可以截获通过域名发起的流量,直接使用 IP 地址的通信则不受影响;CDN 入侵,只有浏览网页或下载时才有风险,其他场合则毫无问题;而网关被劫持,用户所有流量都难逃魔掌。
目前互联网上发生的流量劫持基本是两种手段来实现的:
域名劫持:通过劫持掉域名的DNS解析结果,将HTTP请求劫持到特定IP上,使得客户端和攻击者的服务器建立TCP连接,而不是和目标服务器直接连接,这样攻击者可以对内容进行窃取或篡改。在极端的情况下甚至攻击者可能伪造目标网站页面进行钓鱼攻击。