流量劫持与HTTPS

 

流量劫持  

检测网站是否被劫持
域名是否被墙
DNS污染检测
网站打开速度检测
网站是否被黑
被入侵
被改标题
被挂黑链 网站劫持检测  远程桌面连接软件

什么是流量劫持?

流量劫持,就是通过某种手段得到我们上网的时候传输的数据,然后对这些数据进行篡改或者窥探,以达到劫持者的目的。在我们生活中最常见的应该就属运营商流量劫持了,比如我们流量一个网页的时候,如果我们输错了网址,可能就会跳到一个运营商的提示页面,提示网址错误,同时这个页面里会有运营商的一些广告等信息。 
由于网络分为很多层,典型的OSI模型,网络分为七层:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。每一层都有发生流量劫持的可能。下面是常见的一些流量劫持: 
* Hub 嗅探 
* MAC 欺骗 
* MAC 冲刷 
* ARP 攻击 
* DHCP 钓鱼 
* DNS 劫持 
* CDN 入侵 
* 路由器 弱口令 
* 路由器 CSRF 
* PPPoE 钓鱼 
* 蜜罐代理 
* WiFi 弱口令 
* WiFi 伪热点 
* WiFi 强制断线 
* WLAN 基站钓鱼

根据手段的不同,基本可以分为两类: 
1. DNS劫持:通过将通过劫持掉域名的DNS解析结果,将HTTP请求劫持到特定IP上,使得客户端和攻击者的服务器建立TCP连接,而非和目标服务器直接连接,这样攻击者就可以对内容进行窃取或篡改。在极端的情况下甚至攻击者可能伪造目标网站页面进行钓鱼攻击。 
2. 直接流量修改:在数据通路上对页面进行固定的内容插入,比如广告弹窗等。在这种情况下,虽然客户端和服务器是直接建立的连接,但是数据内容依然可能遭到野蛮破坏。

流量劫持的危害

不同网络层次上发生的劫持造成的危害可能不太一样,但是都会造成用户信息泄露,隐私被窥探。 
不同的劫持方式,获得的流量也有所差异。DNS劫持,只能截获通过域名发起的流量,直接使用 IP 地址的通信则不受影响;CDN入侵,只有浏览网页或下载时才有风险,其他场合则毫无问题;而网关被劫持,用户所有流量都难逃魔掌。 
但流量劫持也有有用的一面,比如我们现在经常用的CDN,就可以算作一种流量劫持,它通过DNS解析,把域名解析到距离用户近的服务器上,减少了资源文件的响应时间。

各种流量劫持的原理

Hub嗅探

Hub的工作原理是通过广播将一个接口收到的数据包群发到所有的接口上,这样任意接口都能获取到所有数据,用户隐私也就无从谈起。 
这种设备目前唯一可用之处就是旁路嗅探。利用广播的特性,可以非常方便分析其他设备的通信,例如抓取机顶盒的数据包而不影响正常通信。

MAC欺骗(交换机)

交换机的工作原理与Hub不同,交换机可以绑定MAC地址和接口,数据包只发送到一个终端。但是如果没有事先配置好MAC地址和接口,而是采用自动学习的方式,即根据某个接口发出的包,自动关联该包的源地址到此接口。那么就可以被黑客通过伪造某个用户的MAC地址,而导致交换机将该用户的所有数据都发到黑客机器上。同时,被劫持的用户将无法上网。

MAC冲刷(交换机)

如果交换机发现了一个之前没有遇到过的MAC地址,那么就会将数据包广播到所有的接口。由于交换机的硬件配置有限,显然不可能无限多的记录地址对应条目。我们不停伪造不重复的源地址,交换机里的记录表很快就会填满,甚至覆盖原有的学习记录,用户的数据包无法正常转发,只能广播到所有接口上了。

ARP攻击

ARP:地址解析协议,即根据IP地址,解析出对应的MAC地址。主机A为了获取主机B的对应的MAC地址,需要广播ARP数据包,包中包含了主机B的IP地址,ARP数据包会被同一链路上的所有主机和路由器接收,主机B收到数据包之后发现自己的IP地址与ARP数据包中的IP地址一致,就将自己的MAC地址响应给主机A。 
ARP攻击就是通过冒充主机B,将自己的MAC地址抢在主机B之前发送给主机A,这样,发送到主机B的IP地址的数据就会被错误的发送给冒充方。

DHCP钓鱼

DHCP(Dynamic Host Configuration Protocol):动态主机配置协议。作用是为主机动态分配IP地址。DHCP的工作机制简单来说就是需要分配IP地址的主机向DHCP服务器广播发送报文(目的地址是255.255.255.255,由于自己还没有IP地址,所以将源地址设置为0.0.0.0),在本网络上的所有主机都能收到这个广播的数据包,但是只有DHCP服务器才对此广播报文进行回答,然后该机器分配一个IP地址。如果存在多个DHCP服务器,则分别予以回复;用户则选择最先收到的。 
DHCP钓鱼就是利用这个机制,如果一个黑客自己也启动了DHCP服务器,那么就可以收到客户主机的DHCP请求报文,如果黑客在真正的DHCP服务器返回数据之前返回一个IP地址,那么客户主机的所有数据就可以被黑客控制。

DNS劫持

DNS的作用就是将域名转换成IP地址。DNS劫持就是将某个域名解析到黑客指定的IP地址,而如果黑客在此IP地址所在机器上设置了HTTP代理,那么用户将几乎看不出任何破绽,但是黑客就可以获取所有数据流量。

CDN入侵

CDN主要用来缓存网站的静态数据文件,以提高网站加载速度,分担网站压力。如果CDN服务器被入侵,那么落到CDN服务器上的请求响应内容就可以被篡改。有些CDN厂商不太靠谱,为了省流量不按套路出牌,超过了缓存时间也不更新,甚至还有忽略URL问号后面的参数,导致程序猿们在资源更新的问题上头疼不已。

HTTPS与流量劫持

对于通过HTTP协议通讯的应用来说,发生流量劫持的根本原因是HTTP协议没有办法对通信对方的身份进行校验以及对数据完整性进行校验。没有办法校验通信对方的身份,所以DNS劫持就大行其道。而无法对数据完整性进行校验旧导致了直接数据内容的篡改。而HTTPS却能解决这两个问题。 
因为HTTPS的证书认证能够解决无法对通信对方的身份认证的问题,而内容加密传输则达到了对数据完整性校验的目的。

HTTPS原理简介

HTTPS是在HTTP与TCP层之间增加了安全层,安全层是通过SSL以及其现代替代协议TLS来实现的。 
HTTPS在请求开始之前客户端和服务器端有一个握手机制,握手的主要作用有两个: 
1. 服务端认证:客户端通过判断服务端的证书是否合法有效,以决定是否信任该服务端。 
2. 协商秘钥:客户端服务端协商确定一个秘钥,用于数据传输过程中对数据进行加密。 

关于HTTPS握手,可以参考下面两篇文章 
1. http://www.fenesky.com/blog/2014/07/19/how-https-works.html 
2. http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html

总结

  1. 流量劫持可能发生在网络通讯中的多个层次。
  2. 流量劫持大致可以分为DNS劫持和直接内容修改两种,虽然实施的手段不同,但本质都是一样的。
  3. 之所以能够发生流量劫持,原因有两个:1)无法对通信双方身份做认证2)无法对数据的完整性进行校验。HTTPS能解决这个问题,但仅限于HTTP协议应用。

参考资料

    1. http://yq.aliyun.com/articles/2666 (非常推荐)
    2. http://div.io/topic/907
    3. http://www.huxiu.com/article/135293/1.html
    4. http://fex.baidu.com/blog/2014/04/traffic-hijack/(非常推荐)
    5. http://fex.baidu.com/blog/2014/04/traffic-hijack-2/(非常推荐)

猜你喜欢

转载自www.cnblogs.com/asd667/p/9935520.html