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

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. IOS 线程描述

    ●什么是线程 ● 1个进程要想执行任务,必须得有线程(每1个进程至少要有1条线程) ● 线程是进程的基本执行单元,一个进程(程序)的所有任务都在线程中执行 ● 比如使用酷狗播放音乐.使用迅雷下载电影, ...

  2. IOS Prefix.pch程序常见文件 的作用

    #import <Availability.h> #ifndef __IPHONE_5_0 #warning "This project uses features only a ...

  3. 【BZOJ1060】[ZJOI2007] 时态同步(树形DP)

    点此看题面 大致题意: 给你一棵带权树,每次使用道具可以将某条边的边权加\(1\),问你至少需要使用多少次道具,才能使每个叶子节点到根节点的距离相等. 贪心的思想 首先,我们应该先有一个贪心的思想. ...

  4. 面试中常见的 MySQL 考察难点和热点

    基本架构 MySQL是典型的三层架构模式,在平常使用中对MySQL问题排查和优化,也应该针对具体问题,从对应的层解决问题 服务层:经典的C/S架构,主要是处理连接和安全验证. 核心层:处理MySQL核 ...

  5. Activiti学习记录(三)

    1.流程变量 1.1 流程图 流程变量在整个工作流中扮演很重要的作用.例如:请假流程中有请假天数.请假原因等一些参数都为流程变量的范围.流程变量的作用域范围是只对应一个流程实例.也就是说各个流程实例的 ...

  6. CSS3和动画

    定位: z-index叠层    数字越大越往上层 注意:要用z-index属性必须设position属性 溢出:overflow 属性值:visible    不剪切内容也不添加滚动条 Auto   ...

  7. 把网上图片下载到本地的java工具类

    package com.swift; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; ...

  8. c#基础之循环探索

    前言在学习基础的语法中循环控制是程序语句控制中的一种,循环在很多的操作中都有应用,例如在获得数据库中的查询的数据之后可以用循环遍历的方式拿到每一行的数据,从而拿到每一个单元格的数据,在文件的操作中也大 ...

  9. vue2.0中ckeckbox(复选框)的使用心得,及对click事件和change的理解

    最近在公司项目中使用vue2.0做开发,在使用checkbox时遇到了一些问题,首先我们先了解一下需求. 如上如所示,在上方复选框被点击时,更改下方p标签的文本内容为:复选框已被选中.并将p标签文字颜 ...

  10. DevOps - 配置管理 - Chef

    #!/bin/sh # WARNING: REQUIRES /bin/sh # # - must run on /bin/sh on solaris 9 # - must run on /bin/sh ...