本文为本人的学习笔记,不保证正确。

DNS 劫持

指DNS服务器被控制,查询DNS时,服务器直接返回给你它想让你看的信息。这种问题常为 ISP 所为。
由于一般的的电脑的 DNS 服务器 的配置都为自动获取,实际上会由 ISP 分配,因此通常会默认使用 ISP 的 DNS 服务器。ISP 控制该服务器,可实现 DNS 劫持。
ISP 使用 DNS 劫持的目的,通常是插入广告,说白了就是想赚钱。
当 ISP 的 DNS 服务器 收到你的 DNS 查询时,其实际上会返回一个中间服务器的IP,该服务器内容是你访问的网站的缓存,但是运营商通常会在该缓存中 "加料",浏览器显示的域名是正确的,可实际访问的却不是真正的服务器。
解决方法:可通过使用可信DNS服务器来解决。

HTTP 劫持

由于 HTTP 是明文通信,运营商可直接拦截 response,将广告插入其中或修改为302重定向响应来添加推广链接。
解决方法:无技术上的应对方案,打电话举报可能有效。或者使用 https

DNS 污染

也称做:DNS 缓存投毒攻击(DNS cache poisoning)

DNS 污染,指 GFW、或黑客通过技术手段将虚假数据插入 非权威 DNS 缓存中,使用户查询到虚假信息。
由于 DNS 使用明文通信,一般使用的是基于 UDP 不可靠协议,只接受最先收到的格式正确的 response,因此该查询很容易被篡改。
针对DNS的污染具有传染性,但是由于 TTL 的限制,DNS 污染具有短时性,过了时间若不进行再污染,污染就会消失。
举例 - GFW:防火长城對所有经过骨干出口路由的在UDP的53端口上的域名查询进行IDS入侵检测,一經發現與黑名單關鍵詞相匹配的域名查詢請求,防火长城會馬上伪装成目标域名的解析服务器给查询者返回虚假结果。由于通常的域名查询没有任何认证机制,而且域名查詢通常基于的UDP協議是无连接不可靠的协议,查询者只能接受最先到达的格式正确结果,并丢弃之后的结果。用户若改用TCP在53端口上进行DNS查询,虽然不会被防火长城污染,但可能会遭遇连接重置,导致无法获得目标网站的IP地址。
解决方法

  1. 需要绕过这些被污染的 DNS 服务器,并骗过国际网关处的 GFW,也就是使用加密代理。使用加密代理还可绕过 IP 黑名单机制,因为访问该 IP 的是你的国外代理。
  2. 或者将已知的可用 IP 存入本地 hosts 文件中,这样就不需要 DNS 服务。但是由于 GFW 的 IP 黑名单在不断更新,你的 hosts 也需要不断更新。

劫持与污染的区别

DNS记录污染同劫持的不同之处,在于污染针对的是 DNS 缓存或用户,是在查询信息到达目标 DNS 服务器前,经过的的节点上做手脚 ,而劫持是 DNS 服务器自己把记录改成错误的内容。对于GFW来说,DNS劫持用于国内服务器,而对于国外服务器GFW无法更改其内容,故采用DNS污染方式篡改用户收到的信息。
GFW的DNS污染过程,是当你向国外DNS服务器查询DNS记录时候,这些流量走到国外出口处即会遭到GFW的关键字审查,如果上了黑名单,GFW会立即向你返回一个虚假的DNS记录。由于默认的DNS查询方式是UDP,加上DNS查询结果只认最快返回的结果,所以你一定是先收到了GFW给你返回的虚假DNS记录;就算100ms后你收到了真正的来自国外DNS的回复,那也会被你的系统无视掉。如果GFW想彻底污染一个域名,那么不只是普通用户,连国内所有的DNS服务器也会收到虚假的DNS纪录导致全国性的DNS污染。

中间人攻击

中间节点 通过对于DNS包的拦截,返回恶意地址,然后将用户引向恶意的源地址。
该种方式可以通过向一些DNS服务器中发送伪造的记录,从而造成一个区域内的某些域收到感染。(这么说GFW做的DNS污染,也算在这个类别里了)

其他

IP 黑名单:GFW 将已知的 google、youtube 等的 IP 加入黑名单,在网关处直接封锁。这样即使你绕过了 GFW 的 DNS 劫持或污染,仍然无法访问这些网站。

参考

【HTTP劫持和DNS劫持】
DNS-解析、劫持、污染
维基百科 - 防火长城(FQ可看)

DNS 劫持、HTTP 劫持与 DNS 污染的更多相关文章

  1. DNS原理及劫持问题

    对于互联网,人们总是高谈阔论,却很少有人愿意去了解电脑.手机.电视这些设备到底是如何被“连接”起来的.本文通过“我”,一个普通的网络请求的视角,给大家介绍下“我”的工作流程是如何的. 人们动动手指,点 ...

  2. 内网DNS投毒技术劫持会话

    工具列表: tcpdump Ferret Hamster node closurether 拓扑环境: 攻击机:Kali 10.10.10.237 被攻击机: win7 10.10.10.232 因为 ...

  3. 网络安全(一)主动进攻之DNS基础和ettercap实现DNS流量劫持

    alittlemc,个人原创,个人理解和观点.若有错误.不理解请与我联系,谢谢! 介绍了DNS的解析过程. DNS劫持的思路和实践. DNS 域名 以为live.bilibili.com为例子,从后到 ...

  4. DNS篇(详解DNS)

    *文章来源:https://blog.egsec.cn/archives/601 *本文将主要说明:本文主要叙述什么是DNS.域名的层级.DNS 解析过程.DNS的缓存时间.DNS 的记录类型.DNS ...

  5. 域名dns查询_查询域名dns ip地址

    最近有部分用户反应管理的天气网站打开偏慢,决定从每一个可以出现的问题点查起!首先就是dns! 通过360dns监控对比发现,同一组域名,15tianqi.cn的dns响应时间比较长,在300-700间 ...

  6. Windows Server 2008 R2 创建辅助DNS服务器并接管主要DNS服务器

    公司需求: Zhuyu公司局域网有一台主要DNS服务器,经领导讨论需要规划安装一台辅助DNS服务器备用. 功能需求: 当主要DNS服务器宕机或系统崩溃,辅助DNS服务器能接管主要DNS服务器工作,并且 ...

  7. DNS服务器:主要介绍DNS的服务原理以及安装及其主从配置

    DNS服务器:主要介绍DNS的服务原理以及安装及其主从配置 一.DNS简介 1.DNS    DNS是域名系统(Domain Name System)的简称,它是一个将域名和IP相互映射的分布式数据库 ...

  8. DNS单机部署以及智能dns部署

    dns理论 dns的出现 网络出现的早期是使用IP地址通讯的,那时就几台主机通讯.但是随着接入网络主机的增多,这种数字标识的地址非常不便于记忆,UNIX上就出现了建立一个叫做hosts的文件(Linu ...

  9. centos DNS服务搭建 DNS原理 使用bind搭建DNS服务器 配置DNS转发 配置主从 安装dig工具 DHCP dhclient 各种域名解析记录 mydns DNS动态更新 第三十节课

    centos  DNS服务搭建  DNS原理  使用bind搭建DNS服务器 配置DNS转发 配置主从  安装dig工具  DHCP  dhclient  各种域名解析记录  mydns DNS动态更 ...

  10. 【计算机网络】DNS的作用以及修改DNS的方法

    1.DNS的作用及修改DNS的方法 1.1.DNS的作用 DNS就是将域名映射成ip的分布式数据库服务器,它的作用如下图: 1.2.修改DNS的方法 常用的DNS服务器 1.114.114.114.1 ...

随机推荐

  1. ssh登录卡住问题

    使用ssh登录远程centos服务器,卡住不动 系统centos 7 加-v查看登录过程,一直卡在这里 解决:我的是mtu问题 将eth0 mtu 默认1500修改为1200就可以了 ifconfig ...

  2. Linux uart程序

    我用的是jetson tx1 开发板 都是linux系统出了串口文件可能不同其他的没有什么不同都能用. 我安装的是qt5 新建一个none  qt c工程,用c 语言开发 期间调试了两天结果还是发送和 ...

  3. linux 命令——56 ss(转)

    ss是Socket Statistics的缩写.顾名思义,ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容.但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信 ...

  4. IOS Block动画

    ● + (void)transitionFromView:(UIView *)fromView toView:(UIView *)toView duration:(NSTimeInterval)dur ...

  5. [论文理解]MetaAnchor: Learning to Detect Objects with Customized Anchors

    MetaAnchor: Learning to Detect Objects with Customized Anchors Intro 本文我其实看了几遍也没看懂,看了meta以为是一个很高大上的东 ...

  6. Java代码工具箱之超出游标最大数

    1. Java大量写入oracle时容易出现此错.经过此错,也触动自己要深刻理解 java 的 prepareStatement 等对象,及数据库的连接与释放. 2. 原因:经常会出现在 for 循环 ...

  7. java 获取request中的请求参数

    1.get 和 post请求方式 (1)request.getParameterNames(); 获取所有参数key后.遍历request.getParameter(key)获取value (2)re ...

  8. Tomcat:javax.management.InstanceNotFoundException: com.alibaba.druid:type=DruidDataSourceStat异常

    问题: 在关闭tomcat时: Tomat报出一下异常:ERROR [com.alibaba.druid.stat.DruidDataSourceStatManager] – unregister m ...

  9. Nuxt.js 基础入门教程

    原文链接 Vue 开发一个单页面应用,相信很多前端工程师都已经学会了,但是单页面应用有一个致命的缺点,就是 SEO 极不友好.除非,vue 能在服务端渲染(ssr)并直接返回已经渲染好的页面,而并非只 ...

  10. [BZOJ1588]营业额统计(Splay)

    Description 题意:给定 n个数,每给定一个数,在之前的数里找一个与当前数相差最小的数,求相差之和(第一个数为它本身) 如:5 1 2 5 4 6 Ans=5+|1-5|+|2-1|+|5- ...