DNS 劫持
DNS 劫持:
一般而言,用户上网的 DNS 服务器都是运营商分配的,所以,在这个节点上,运营商可以为所欲为。
例如,访问 http://xxx.qq.com/index.html,正常 DNS 应该返回腾讯的 ip,而 DNS 劫持后,会返回一个运营商的中间服务器 ip。访问该服务器会一致性地返回 302,让用户浏览器跳转到预处理好的带广告的网页,在该网页中再通过 iframe 打开用户原来访问的地址。
原理
DNS 劫持又称域名劫持,是互联网攻击的一种方式,通过攻击域名解析服务器(DNS),或伪造域名解析服务器(DNS)的方法,把目标网站域名解析到错误的地址从而实现用户无法访问目标网站的目的。
域名解析(DNS)的基本原理是把网络地址(域名,以一个字符串的形式)对应到真实的计算机能够识别的网络地址(IP 地址,比如 216.239.53.99 这样的形式),以便计算机能够进一步通信,传递网址和内容等。
由于域名劫持往往只能在特定的被劫持的网络范围内进行,所以在此范围外的域名服务器(DNS)能够返回正常的 IP 地址,高级用户可以在网络设置把 DNS 指向这些正常的域名服务器以实现对网址的正常访问。所以域名劫持通常相伴的措施——封锁正常 DNS 的 IP。
如果知道该域名的真实 IP 地址,则可以直接用此 IP 代替域名后进行访问。比如访问谷歌,可以把访问改为 http://216.239.53.99/,从而绕开域名劫持。
解决办法
HTTP 劫持
在运营商的路由器节点上,设置协议检测,一旦发现是 HTTP 请求,而且是 html 类型请求,则拦截处理。后续做法往往分为 2 种,1 种是类似 DNS 劫持返回 302 让用户浏览器跳转到另外的地址,还有 1 种是在服务器返回的 HTML 数据中插入 js 或 dom 节点(广告)。
在用户角度,这些劫持的表现分为:
- 网址被无辜跳转,多了推广尾巴;
- 页面出现额外的广告(iframe 模式或者直接同页面插入了 dom 节点)。
现象对比
- DNS 劫持的现象:你输入的网址是
http://www.google.com,出来的是百度的页面。 - HTTP 劫持的现象:你打开的是知乎的页面,右下角弹出唐老师的不孕不育广告(2018 年更:右下角弹出:偶系渣渣辉)。
补充
补充:DNS 劫持和 HTTP 劫持都发生在运营商链路,DNS 劫持改"目的地",HTTP 劫持改"内容"。
防护建议
- 使用 HTTPS:内容加密,运营商插入广告失效
- 使用可靠的 DNS(如 1.1.1.1、8.8.8.8 或 DoH/DoT)
- 浏览器开启"安全 DNS"功能
- 重要站点使用 HSTS 强制 HTTPS
来源整理自:我的有道云笔记


