当前位置 主页 > 本站WEB程序 > 安全 > IIS7网站监控 >

    dns劫持原理小课堂,“DNS劫持”web安全讲解

    栏目:IIS7网站监控 时间:2020-11-23 14:53

      一、前言
      背景:在一次CTO面试过程中,突然问起了我,平时开发过程中有没有遇到过DNS劫持的情况,啊,啥是DNS劫持?脑子突然蹦出所有的DNS的知识点,回忆之前工作遇到的问题,很凌乱,最终回答不知道。努力学习的我回来抓紧做功课,于是才有了这篇文章。
      DNS劫持(DNS Hijacking):又被称为域名劫持,DNS重定向(DNS direaction),是一种DNS攻击方式。即是DNS查询没有得到正确的解析,以致引导user访问到恶意的网站,从而窃取用户隐私,或者进行某些恶意的操作。
      DNS劫持 vs HTTP劫持
      开始正式介绍DNS劫持之前,先与HTTP劫持做一个比较,可能有助于有些同学对下文更容易理解更深入一点。
      DNS劫持现象:你输入一个google.com网址,出来的是百度的页面
      HTTP劫持现象:访问着github的页面,右下角出现了一个格格不入的广告弹窗
      好比:
      DNS劫持是你想去机场的时候,把你给丢到火车站。 HTTP劫持是你去机场途中,有人给你塞小广告、
      二、什么是DNS
      理解dns劫持之前,先来回忆一下dns是如何工作的
      DNS(Domin Name System or Domain Name Service),域名解析系统(服务) :在网络世界中,服务器(server)是通过IP 地址标识的,网站(client)通过端口80/443 (http/https)可以访问,因此有些网站(没有限制IP访问的)直接通过ip地址也是可以访问的。DNS的责任就是将难以记忆的IP地址映射成对用户友好,易于记忆的域名。有了这样的映射表(:notes:注意,不是一对一关系,一个服务器(IP)可以对应多个域名),这样用户可以直接输入域名就可以通过DNS 服务器查到对应的服务器IP地址。
      比如我们在终端命令 dig https://www.iis7.com/(探迹科技)就可以看到对应的服务器IP(192.168.1.1)了
      从www.iis7.com 到 192.168.1.1的过程就叫做域名解析,域名解析需要由专门的域名解析服务器来完成
      注:一般的网站会选择放在虚拟主机,且在主机上放置了很多个网站,而每个网站绑定1个或以上域名。虽然主机上有多个站点,但当用户访问某个站点时,服务器会根据http报文信息(域名),访问对应站点的部署目录,从而实现一台服务器上配置多个站点,即使有多个网站,也不会相互干扰。但使用IP访问,主机不知道用户访问的具体目录,请求便会出现异常情况。)
      三、DNS解析原理
      1.查询步骤
      从上图(图片来源网络,如侵权请联系删)可以大概看出大体的步骤:
      客户端(浏览器)发送一个域名(例如www.iis7.com)解析请求,先检查浏览器缓存中有没有对应域名解析的IP地址,如果有直接返回。
      如果用户浏览器缓存没有查到的话,会先到操作系统的hosts文件中查找(听说ios设备没有该步骤,待验证),有对应的域名IP地址的话直接返回。
      如果本地hosts文件没有查到,会向外网的本地区域名服务器(Local DNS)发起查询请求,本地服务器收到请求之后,会先查询本地缓存,如果有的话会直接返回。
      本地区域名服务器通常性能都会很好,它们一般都会缓存域名解析结果,当然缓存时间是受域名的失效时间控制的,一般缓存空间不是影响域名失效的主要因素。大约90%的域名解析都到这里就已经完成了,所以LDNS主要承担了域名的解析工作。
      如果LDNS缓存没有结果的话,会向跟域名服务器发起请求,根域名(Root Server)返回来的是一个所查询域(根的子域,例如.com)的主域名服务器(gTLD Server)的地址,gTLD是国际顶级域名服务器,如.com,.cn、.org等。听说全球只有13台左右。
      接着,本地服务器再向上一步返回来的域名服务器下发送请求。
      接受请求的gTLD服务器查找并返回此域名对应的Name Server域名服务器的地址,这个Name Server通常就是你注册的域名服务器,例如你在某个域名服务提供商申请的域名,那么这个域名解析任务就由这个域名提供商的服务器来完成。
      得到了Name Server 服务器地址之后,Local DNS 再次向Name server 服务器发送请求,Name Server提供商是你申请的域名提供商,因此Name Server域名服务器会查询存储的域名和IP的映射关系表,正常情况下都根据域名得到目标IP记录。
      Local DNS 得到了www.iis7.com对应的ip地址与TTL值(Time to live 的缩写,也就是上面的588这个值)之后,会根据这TTL值缓存这个域名与ip的对应关系。
      最终把该ip地址返回给浏览器