大数跨境
0
0

【视频】今日头条劫持流量遭凤凰新闻谴责?如何防止DNS污染?

【视频】今日头条劫持流量遭凤凰新闻谴责?如何防止DNS污染? 物联网安全号
2016-10-29
0
导读:凤凰新闻客户端在下载自己的升级安装包时,被导向了今日头条。一个简单的判断:这可能源于DNS劫持或本机Hosts污染,那么该如何防止DNS污染呢?

视频:凤凰新闻强烈谴责今日头条恶意劫持其客户端流量
 
根据这位手机用户的录像,凤凰新闻客户端在下载自己的升级安装包时,被导向了今日头条。一个简单的判断:这可能源于DNS劫持或本机Hosts污染。
 

DNS与Hosts都是起着方便记忆的字母域名查找IP地址的作用。例如:百度的域名“www.baidu.com”,实际的IP地址是113.13.101.208,如果我们“修改”一下DNS(也就是非法劫持)。将www.baidu.com定向到了218.60.112.127,那所有想输入“www.baidu.com”打开百度的用户就都打开了虎嗅网。当然,虎嗅可不会这样做。

 
图:baidu.com与huxiu.com的IP地址

今天凤凰新闻曝光这事,很可能就是这样,客户端给出下载网址时,结果查找到了错误的地址,于是就将错误地址中存放的今日头条安装包下载了下来。
 
图:凤凰新闻更新下载成功但显示安装包是今日头条

 

DNS服务器对互联网运行至关重要,这也就是为什么上周末,美国的一组DNS根服务器被DDoS攻击会导致半个美国网络瘫痪。DNS服务器分级设立,根服务器是最高一级,全球一共只有632台根服务器,分为13组(也就是13个IP),下面则根据层级由各级电信运营商设立DNS服务器,省、市、县级的DNS服务器都可能成为被劫持的目标。


劫持DNS这并不是什么新鲜事,甚至用在App下载上也绝不是头一回。早在今年1月,漏洞平台乌云网就曾曝光利用某地电信运营商漏洞劫持APK下载(将小米商店劫持至UC浏览器)的案例。这样的DNS劫持,受益人是显而易见的。
 
对于DNS劫持,上海浦东新区法院在2015年11月宣判了首例流量劫持犯罪案,两名被告人被判处有期徒刑三年、缓刑三年。而民事案例也已有数起,如优信二手车起诉58同城劫持流量一案,以赔偿10万元及公开道歉结案,当然这样的赔偿额度并不高。
 
在首起流量劫持案后,今日头条和腾讯、小米、360、微博、新美大这六家举足轻重的互联网公司共同成立了抵制流量劫持的“六国联军”。一年不到,今日头条就成了流量劫持的疑犯,也是挺尴尬。
 
什么是DNSCrypt?
 
传统DNS和DNSCrypt的关系,就像HTTP和HTTPS的关系。将通信进行加密,防止内容被窃取、篡改。传统DNS是明文的,就像一张明信片,明信片上在指定的位置,你写上了你是谁,发给谁,想询问什么信息。

这样一来,负责传递明信片的人可以看到你写的东西,只要他不高兴,就可以直接把你的明信片拿来,伪造一份改过内容的发过去骗你,或者干脆给你拦截下来,只要他想怎样都行。其实,DNS服务器发给你的回答,也是同理。

        而DNSCrypt将DNS信息进行加密处理,写在明信片上的,是另一种你和DNS服务器能看懂,但是邮递员以及其他人看不懂的语言,他会以为你发的只是一封正常的邮件,就把这个邮件当作普通的邮件处理,于是原封不动地送到目的地。

         当然了,也许有一天,邮递员们觉得,这个DNS服务器的东西似乎不太健康呢,于是他们也可以把目的地为某个服务器的所有信件全部瞎改或者扔掉,只是他们目前还没这么做。

DNSCrypt是可以使用UDP的,当然TCP也算是一个额外的选择。但注意,加密只是防止各种流量被监听干扰的通用方法,并不是针对DNS污染的手段。

那么,如何防止被DNS污染?

首先要明白DNS被污染的原因,就目前而言,DNS受污染的途径主要要有两种:

一是攻击者监测到DNS查询的请求报文时,伪装成DNS服务器向发出请求主机发送响应报文。因为DNS报文通常是无连接的UDP报文,没有确认机制,源主机不能识别出这个报文并非出自DNS服务器。攻击者并不需要丢弃真正DNS服务器发回来的响应报文,因为DNS的机制会导致源主机只接受最先到达的响应报文(甚至不管是谁发的)而忽略后继到达的其他报文。这样,源主机得到的就是攻击者伪造的域名解析结果。

二是本地DNS服务器的缓存已受到污染,里面缓存的是错误的结果。DNS服务器通常将DNS查询的结果缓存在本地一段时间,这本意是为了减少重复DNS查询,从而降低DNS报文占用的网络带宽。可如果某次DNS查询的结果受到污染,则后继一段时间内向该DNS服务器查询的结果都会受到污染。
 
因为绝大部分的DNS报文都是UDP的,所以就目前而言,墙做的是最简单的伪造基于UDP的DNS响应报文来欺骗源主机,正确的解析结果还是能到达源主机的,只是被忽略了而已。
 
图:默认用UDP查询Twitter的IP地址得到错误结果

 图:wireshark抓包可看到正确结果能到达主机
 
而如果采用TCP来查询DNS,是可以得到正确的解析结果的。

图:换成TCP查询Twitter的IP地址是正确的

图:抓包结果显示无伪造的数据包到达
 

结合上面的分析,如果想得到未被污染的解析结果,而不必通过第三方(比如代理),有以下几个途径:



1、还是利用UDP的53号端口,只不过在报文中加入一些标识,这样做需要重新设计服务器端和客户端。

2、换成别的端口来运行DNS协议,如果攻击者是只是根据端口号来识别DNS数据包的话也可以免受污染,但这样做也要重新设计服务器端和客户端。

3、用TCP来获得DNS解析结果,这样服务器端可以不做修改,但是TCP是面向连接的,建立连接时需要先三次握手,还要发送确认报文,而报文开销也大,必定会使访问网站的响应时间正常。

4、干脆重写一个类似的协议来代替DNS。

但无论如何,只能获得正确的IP地址的话本身也没多大意义,毕竟DNS只是起到一个“指路”的作用,如果直接把路封了你知道怎么走也没用是吧。所以想封DNSCrypt是很简单的,封DNS服务器的IP或者端口都可以。只是你需要评估,有没有必要这样做而已。


【声明】内容源于网络
0
0
物联网安全号
物联网安全号是国内首家专注报道物联网安全领域的新媒体,致力于打造该领域最具价值的情报站和智库,建设物联网安全爱好者们交流、分享技术的新型社群。
内容 447
粉丝 0
物联网安全号 物联网安全号是国内首家专注报道物联网安全领域的新媒体,致力于打造该领域最具价值的情报站和智库,建设物联网安全爱好者们交流、分享技术的新型社群。
总阅读133
粉丝0
内容447