前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >DNS劫持详解

DNS劫持详解

作者头像
用户1462769
发布2019-08-08 18:08:43
4.5K0
发布2019-08-08 18:08:43
举报
文章被收录于专栏:全栈者全栈者

在前两天的时候,打开www.linux.org的时候突然发现,页面跟原来完全不一样了,里面各种fk,第一反应就是网站被黑了,攻击者对于该站非常不满,还有一张“菊花图”,场面异常火爆,有兴趣可看这个报道(http://www.10tiao.com/html/739/201812/2649445233/1.html)。后来网站官方说网站被黑是一起DNS劫持事件(https://www.linux.org/threads/linux-org-dns-hijack-incident.21073/),对于网站被黑感到啼笑之余,也同时让我好奇DNS劫持到底是什么,攻击威力如此大。

1. DNS是什么

DNS是Domain Name System的缩写, 我们称之域名系统。首先它是远程调用服务,本地默认占用53端口,它本身的实质上一个域名和ip的数据库服务器,他要完成的任务是帮我们把输入的域名转换成ip地址,之后通过ip寻址连接目标服务器。

通过一个例子说一下我的理解,当我们上网的时候如果通过域名(如www.taobao.com)访问一个网站,流程应该是输入网址,浏览器缓存中查找www.taobao.com的ip,如果你刚刚访问过,则直接返回ip,如果没找到,则先进入本机的hosts文件找有没有这个域名,有的话返回对于ip,没有的话,进入本地DNS解析器中查找缓存,找不到的情况下则需要网络中的服务器去查找,首先查找本地DNS配置的服务器,如我们熟悉的谷歌的8.8.8.8和电信的114.114.114.114这两个(mac上的配置地址文件 /etc/resolv.conf),都是在我们机器上事先配置好的,访问这个服务器如果在其缓存中查到对于的ip则直接访问给我们,同时本机的DNS解析器缓存该记录,如果服务器也没有找到这个域名的信息,这时候要看我们本地的配置是否需要转发,如果需要就需要本地DNS服务器一级一级向上查询,知道返回域名信息,不是转发的情况下,本地DNS服务器开始与根DNS服务器交互,当然根DNS服务器并没有我们想要的ip信息,由于全球都需要依赖它,它只会返回一些基本信息,在此时它先返回给我们.com这个顶级域名管理服务器的ip,本地DNS服务器拿到这个ip再向它寻找,当然.com的域名他也不会全存储,它会返回二级域名taobao.com的管理服务器ip地址,本地DNS服务器再次查找返回给我们www.taobao.com 的ip地址,本地DNS服务器返回给客户端,只会客户端根据ip寻址,连接目标服务器。

ps:说一下本地DNS服务器和路由器DNS服务器的关系,如果本地配置了DNS服务器则使用本地配置的,否则使用路由器的DNS服务器配置,路由器的DNS服务器配置可以通过http://192.168.1.1/ 输入登录信息修改.

在这个过程中你可以实践这些操作。

1. 先在浏览器打开www.taobao.com 之后在本机hosts文件中修改www.taobao.com 指向的ip,你会发现浏览器打开淘宝还是正常,这时候你换一个没有打开过淘宝的浏览器,访问跳转至你hosts中配置的ip了。

2. 利用tcpdump抓包观察。命令行执行 sudo tcpdump -v port 53, 你会发现你之前要是打开过www.taobao.com, 它是不会输出访问数据请求信息的。但是你访问一个没有访问过的域名的时候,会有一些访问DNS服务器的信息。如下图:

2. DNS劫持

在上面一个完整的域名解析过程中,我们可以看到想要获取目标网站的ip,除了在本机中的查找操作有时还需要第三方服务器(DNS)的参与,但是只要经过第三方的参与,那么网络就不属于我们可控制的范围,那么就有可能产生DNS挟持,具体体现在我们获取到的ip并不是我们想要的ip,从而打开的并不是我们的目标网站。例如网站在经过本地DNS解析时,黑客将本地DNS缓存中的www.taobao.com 替换成其他网站的ip返回,而客户端并不知情,依旧按照正常流程寻址,建立连接。请注意上面那张linux被黑的图,它的域名依旧是linux.org,这就让我们很迷惑了,如果一些黑客想要盗取我们密码的话,它可以做一个跟目标网站一模一样的页面,让我们登录,当我们输入完密码提交的时候就中招了。百度上找了一张图,浅显易懂,就把它搬过来了。

在这个过程中,黑客一般是黑进了我们的路由器里,修改了路由器的本地DNS地址,从而访问一个伪造的DNS服务器,这个伪造的服务器解析域名的时候返回错误的ip给我们,当然他要能黑进我们电脑里也可以修改我们的hosts文件?,当然我觉得黑客够牛叉,黑进谷歌域名服务器,根域名服务器也是有可能的,我想那到时候黑客可能被全球通缉了... 当然即使黑客黑掉了根域名服务器,我们也不会因此一片黑暗,因为首先我们常用的域名都在一级一级的本地DNS缓存,上一级DNS缓存中中可解析到,如果解析不到,你知道你要访问的目标服务器ip,直接拿ip访问目标网站,也是没有问题的。

我在学习的过程中发现还有一种劫持,它返回给你正确的ip,但是内容作了修改,一般是运营商所为,例如给原来的网页植入一个<iframe>展示一些广告。不过这种方式很不常见,也危害不大,毕竟运营商还不会到用这种方式骗我们密码的地步,因为他们想知道不用这么费劲?。

3. DNS劫持预防

关于怎么预防我认为在客户端还是比较费劲的,但是我们的目的是要找到合法正确的目标服务器ip,极端情况下,我们把需要用的ip都配置到hosts文件中就可以避免,但是这显然不可能。再就是我们要使用正规的DNS服务器,避免被伪造的DNS服务器解析挟持。 不过我们在平时的注意也可以避免一些,例如上面的linux.org那张图,可以看出它是不安全的,因为原来的linux.org是https的,被劫持之后证书验证不通过。正常情况下未被劫持的网站应该是如下这样子的。

当然并不是https就不能劫持,可以看看这篇文章 HTTPS 可能被这样劫持吗?(https://www.zhihu.com/question/22795329)

检查你的电脑有没有被挟持打开一个不存在的域名查看,果然我的在查找不存在的情况下重定向跳转到联通网址下面,不过友好的通知我刚访问的页面不能存在,让我百度一下。。。 我把本地DNS替换成8.8.8.8后,再次试了一下不存在的域名,这一次就被被挟持了,看下图

并且不能ping通这个域名

$ ping dadasdasdsadsadsa.com.cn

ping: cannot resolve dadasdasdsadsadsa.com.cn: Unknown host

后来我查找学习之后认为,即使如何更改DNS最终都是运营商提供的网络,不过还好的是这样的劫持并不是很严重。

4. 总结

以上就是我关于DNS一些粗浅的认识与理解,如果有错误,大家帮忙指出,共同学习,进步。

现在网络普及太快太广,各种安全问题也层出不穷,记得之前收到不封邮件,我也没多想打开点了一下连接,因为是在手机上,打开链接的域名也没有展示出来,只有中文展示“邮箱登录”,界面是qq邮箱的登录界面,我这输完点击登录没有反应,觉得有点不对,把链接拷出来在pc上打开发现,点击确定就会把账号和密码明文提交上去,取出接口后写了一个程序,死循环提交数据大概3,4个小时之后,发现对方挂了... 后来觉得很有意思,但是也不免提升了安全意识。


参考文章:

https://zh.wikipedia.org/wiki/%E5%9F%9F%E5%90%8D%E7%B3%BB%E7%BB%9F

https://yq.aliyun.com/articles/58967?spm=5176.100244.teamconlist.7.WOFDYX

https://juejin.im/post/59ba146c6fb9a00a4636d8b6

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-12-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 全栈者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库专家服务
数据库专家服务(Database Expert Service,DBexpert)为您提供专业化的数据库服务。仅需提交您的具体问题和需求,即可获得腾讯云数据库专家的专业支持,助您解决各类专业化问题。腾讯云数据库专家服务团队均有10年以上的 DBA 经验,拥有亿级用户产品的数据库管理经验,以及丰富的服务经验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档