DNS毒化攻击

DNS系统概述
域名系统DNS(domain name system)是因特网使用的命名系统,用来把便于人们记忆的含有特定含义的主机名转换为便于机器处理的IP地址,值得注意的是,DNS系统采用C/S架构,其协议运行在UDP之上,使用53号端口。DNS分为三个部分,层次域名空间,域名服务器和解析器。

DNS域名系统结构
顶级域名(Top name domain TLD):有以下大三类
1.国家级顶级域名nTLD,国家和某些地区的域名,如“.cn”表示中国,“.us”表示美国,“.uk”表示英国,“.hk”表示中国香港特区。
2.通用顶级域名gTLD.常见的有“.com”(公司企业)“.net”(网络服务机构)“.org”(非营利性的组织)“.gov”(美国的政府部门)等。
3.基础结构域名。这种顶级域名只有一个,即arga,用于反向域名解析,因此又称为反向域名。
国家顶级域名注册的二级域名均由国家自行确定。
下图是域名空间的结构:
HCIE网络安全第四天
在域名系统中,每个域分别由不同的组织进行管理,每个组织都可以将它的域再分成一定数目的子域,并将这些子域委托给其他组织去管理。

域名服务器

  1. 根域名服务器
    根域名服务器是最高层次的域名服务器。
    所有的根域名服务器都知道所有的顶级域名服务器的IP地址。
    根域名服务器也是最重要的域名服务器,不管是哪一个本地域名服务器,若要对因特网上任何一个域名进行解析,只要自己无法解析,就首先要求助于根域名服务器。
    因特网上有着13个根域名服务器,尽管我们将这13个根域名服务器中的每个都是为单个的服务器,但每台“服务器”实际上是冗余服务器的集群,以提供安全性和可靠性。
  2. 顶级域名服务器
    这些域名服务器负责管理在该顶级域名服务器注册的二级域名。当收到DNS查询请求时,就给出相应的回答(可能是最后的结果,也可能是下一步应当查找的域名服务器的IP地址)。
  3. 授权域名服务器
    每一个主机都必须在授权域名服务器处登记,为了更加可靠地工作,一个主机最好至少有两个授权域名服务器,实际上,许多域名服务器都同时充当本地域名服务器和授权域名服务器。授权域名服务器总是能够将其管辖的主机名的IP地址。
  4. 本地域名服务器
    本地域名服务器对域名系统非常重要,每一个因特网服务提供者ISP,或一个大学,甚至一个大学里的系,都可以拥有一个本地域名服务器,当一个主机发出DNS查询请求时,这个查询请求报文就发送给该主机的本地域名服务器。

域名解析过程
域名解析也就是把域名映射成IP地址或者把IP地址映射成为域名的过程。前者称为正向解析,后者称为反向解析。当客户端需要域名解析时,通过本机的DNS客户端构造一个DNS请求报文,以UDP数据报方式发往本地域名服务器。
域名解析有两种方式:递归查询和迭代查询。
HCIE网络安全第四天

  • 主机向本地域名服务器的查询采用的是递归查询
    如果本地主机所询问的本地域名服务器不知道被查询的域名IP地址,那么本地域名服务器就以DNS客户的身份,向根域名服务器继续发出查询请求报文(替该主机继续查询),而不是让该主机自己进行下一步查询。
  • 本地域名服务器向根域名服务器的查询采用迭代查询
    当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地域名服务器“下一步应当向哪一个顶级域名服务器进行查询”然后让本地域名服务器向这个顶级域名服务器进行后续的查询。同样,顶级域名服务器收到查询报文后,要么给出所要查询的IP地址,要么告诉本地域名服务器下一步应当向哪一个权限域名服务器查询。最后返还结果。

DNS毒化原理

  • 其核心是攻击者通过篡改DNS记录里一条或多条A记录,使用户在访问某站点时,实际访问的是攻击者精心伪造的克隆站点,从而攻击者通过报文嗅探等方式获取用户私密数据的行为。
  • 如果攻击者获取了用户用于DNS解析的真实DNS服务器的控制权,就可以通过在DNS服务器里添加一条A记录的行为实现DNS毒化。
  • 如果没有获取DNS控制权,攻击者可以通过伪造DNS服务器、ARP欺骗等手段,使用户在进行DNS解析时,得到被篡改的A记录。今天,我们就通过两个工具的使用和学习来深刻理解DNS毒化。

实施DNS毒化攻击的工具:
netwox 105号工具
netwox 105 -h hostname -H ip -a hostname -A ip [-d device]
-h是要毒化的域名
-H是仿冒该毒化域名server的IP
-a是dns服务器中的映射域名
-A是dns服务器中的映射 IP
-d是发送该报文的接口

防御技术:

  • 及时检查自己的DNS服务器是否存在DNS缓存中毒漏洞,如果发现了自己的DNS服务器存在该漏洞就可以在被攻击前采取措施修补,避免攻击事件的发生。
  • 随机选择一个端口作为DNS用途。
  • 加密所有对外的数据流,对服务器来说就是尽量使用SSH之类的有加密支持的协议,对一般用户应该用PGP之类的软件加密所有发到网络上的数据。
  • 及时刷新DNS,DNS缓存会被重建,再次用域名访问IP服务器,故障消失。
  • 采用域名系统安全协议(DNSSEC)机制,依靠公钥技术对于包含在DNS中的信息创建密码签名。

相关文章:

  • 2021-08-26
  • 2021-04-28
  • 2021-08-08
  • 2021-04-15
  • 2021-11-21
  • 2022-02-24
猜你喜欢
  • 2021-10-30
  • 2021-11-30
  • 2021-08-16
  • 2021-09-12
  • 2021-10-21
  • 2021-06-05
相关资源
相似解决方案