ISP运营商常见劫持问题分析与处理

向运营商流氓劫持行为说不!

Posted by Mr.Zhou on August 17, 2018

前言

最近这两周里,因运营商劫持而导致用户访问异常的问题数量明显增加,那么本周就重点聊下“运营商劫持”这个老大难的问题,借机会科普下什么是劫持,如何避免劫持,以及当劫持发生时,我们应该如何应对。

背景

无论你在电脑、手机还是Pad上访问网页或是APP时,如果发现有以下情形的,说明你也是劫持问题的受害者之一了:

img
浏览器右下角弹出广告,有时候关都关不掉

img
页面四周可能多出来一些奇怪的图标按钮

img
页面中间莫名其妙的多出来一个对话框图标

以上这些劫持的案例危害其实还算小,至少页面都正常返回了,但只是多了一些你不想要的东西。

危害情形严重的劫持行为,会导致你访问的页面无法响应,页面出现白屏或是一直在刷新中。

情节最为恶劣的是,浏览器返回的页面并不是你真正想要访问的页面,而是“李鬼”站点!一些不怀好意的人已经完成移花接木,把你的请求发送到了恶意网站,也就是俗称的:“钓鱼网站”。

何为劫持

那么,什么是劫持呢?

一般情况下,劫持行为主要有以下几类特征:

  • 域名劫持(DNS劫持)
    用户请求的域名,DNS解析出来的IP地址,并非网站源站或其合法代理节点(如CDN节点)的IP地址。
    大部分情况下,返回的是运营商自己的节点。这些节点也能响应用户请求,但会出现内容被缓存,不是源站最新文件的情况。
    另有小部分情况,域名被解析到了非运营商的节点,这部分请求就相当危险了,很有可能会为不法分子所利用,用户个人隐私数据遭到泄露,最后造成不可挽回的损失。
  • 内容劫持(HTTP劫持)
    该劫持行为不同于域名劫持,DNS确实解析出了真实的源站IP地址,但响应的内容却不是源站给的,而是被一个隐形的“中间者”给篡改了的内容。
    这里的“中间者”,大部分情况就是运营商了,他们有时会增加一些内容(如上面贴的几张截图),有时甚至会把整个页面替换掉(如访问到不存在的页面,返回114导航之类的页面)。
    感谢我司北研的同事,再不懈的努力后,终于查到了近期出现的一例内容劫持现形,原本正常的JS文件被完全替换成了以下代码,有兴趣的同学可以看看这段代码是干嘛用的:
    img
  • 硬件设备劫持
    家中购买的路由器,如果设备提供商想要做手脚的话,同样可以被利用,厂商篡改网站响应报文,增加厂商定制的劫持内容;
    另外,用户连接不安全的WIFI热点,十分容易遭受黑客攻击,黑客如果不坏好心想要做坏事的话,也可以对其进行劫持行为。

劫持原因

从上面几点劫持行为来看,劫持的目的无非只有一个“”字。

各大网络运营商是所有网民上网的“必经之路”,随便投几个广告到页面上,用户流量自然而然就来了,转而赚取广告费。这可比百度来的更暴力,百度至少要你搜了关键字之后才会推荐给你链接来赚取流量,而劫持方式不管你要不要,直接硬“塞”给你,是不是非常简单暴力?

小运营为节省跨网间带宽结算费用,会将一些访问频次较高的内容私自进行缓存,并将缓存内容直接响应给用户,以节省运营成本。

路由器设备厂商设置后门,修改用户响应报文,赚取用户流量,也是一个道理。

而那些钓鱼网站和黑客的行为更为可怕,其行为直接已威胁用户经济利益,谋取个人利益,显然已经是违法行为了。

如何避免

重点来了,我们如何才能避免不被劫持呢?个人觉得主要包括以下几点:

用户

  • 电脑、手机或路由器的DNS配置改成靠谱的DNS,建议不要自动获取运营商提供的DNS。
  • 选择家庭宽带时,不要一味的选便宜的ISP,小运营商更容易使坏,出现劫持的概率也同样更高。
  • 用户在访问网页时,尽量不要在HTTP站点透露自己的私人敏感信息。
    有同学会问了,怎么判断我访问的页面是HTTP还是HTTPS呢?这边有个简单的判断方法,浏览器地址栏中,但凡有个绿色的锁,说明你访问的就是安全可靠的HTTPS加密协议了。 img
  • 不要随便连WIFI!特别是那些不要密码就能连接的WIFI!很难保证这些WIFI的背后是不是有人守株待兔,随时等待着套取你的小秘密呢!
  • 不要随便使用广告屏蔽软件,当运营商劫持时塞JS广告代码到网页中,如果单纯一味的屏蔽广告,很有可能会把整个正常网页都给屏蔽掉!

网站服务提供者

  • 网站服务提供商开发的程序尽量使用HTTPS协议,避免让公网用户调用HTTP协议,不安全!
  • 网站服务供应商应同时对公网配备多条访问线路,包括多路CDN线路,或是多路源站出口,当大量用户出现群体性劫持情况时,可以迅速进行切换,主动避免劫持问题对网站可用性造成的影响。

缓解

如果不巧真的遇到了劫持,我们应该怎么办呢?

用户

  • 修改你的DNS配置为靠谱的DNS
  • 如果你知道被劫持站点源站IP,修改hosts文件,绑定源站IP进行访问
  • 调整网络环境,如4G换WIFI,WIFI换4G,电信换联通等
  • 以上方式无效的话,建议用户拨打当地运营商电话进行投诉
    投诉时需要提供用户本人电话、手机号码或宽带账号,并提供访问的域名URL。
    投诉电话为:电信:10000;联通:10010;移动:10086等,具体可从运营商官网进行查询。
  • 已通过电话投诉,但仍无法解决的(一般定位3天内无法解决的),可以投诉至国家工信部网站
    国家工信部网站申诉受理中心链接:http://www.chinatcc.gov.cn:8080/cms/shensus/ ,投诉时同样也需要收集用户信息,如截图所示,处理周期通常在5个工作日左右。
    img

网站服务提供者

  • 如果有多条CDN线路的,可以尝试切换CDN线路,或直接回源,以缓解问题
  • 程序如果支持主备域名的话,提供双线给用户,当用户访问线路一被劫持时,提供给用户访问线路二的通道,以缓解问题
  • 远程用户,改DNS或hosts文件,以缓解问题

后记

有利可图,所以屡禁不止,劫持方能在劫持行为中获取多少利益我们并不清楚。但他们的这种行为却真真切切伤害了网民的自身利益,同时也造成了网站服务提供者的经济损失。

个人建议,当你遇到运营商不正当的劫持行为时,请立即投诉当地运营商,共同营造一个良好的上网环境。

备注

附1:各大厂DNS地址

  • 腾讯DNSPod: 119.29.29.29/ 182.254.116.116
  • 阿里公共DNS:223.5.5.5/ 223.6.6.6
  • 百度公共DNS:180.76.76.76
  • 114DNS: 114.114.114.114/ 114.114.114.115

附2:如何修改电脑端/移动端/路由器的DNS配置?
参考链接:http://dudns.baidu.com/support/localdns/