DNS 攻击原理
avatar
netbeen
November 05, 2021

前言

你在阅读本文前需要了解的基础知识:计算机网络基础知识、DNS 工作原理

历史原因

由于 DNS 协议制定的年代比较早, RFC 1034 早在1987年就发布了,后续作为 Internet 的基础设施,出于向前兼容的考虑,也没有办法做大幅度的改变。导致 DNS 协议带有如下先天问题,为后来的攻击者提供了便利:

  • DNS 作为应用层协议,它的传输层使用的是 UDP 协议,是一种 不可靠、无连接 的协议
  • DNS 应用层协议包内的数据都以 明文 传输

从信息安全的角度,攻击一般都是用来破坏信息的完整性 Integrity 或保密性 Confidentiality ,即篡改信息和偷看信息。目前,被使用比较多的 DNS 攻击手段也恰恰攻击这两个点

DNS 监控

DNS 监控实现难度很低,由于 DNS 的应用层协议包内的数据是明文传递的,对任何报文途径的各个网络设置都是可见的,所以只需要在网络链路上的任意一个节点,部署数据包解析以及数据收集的软件即可实现 DNS 监控,这项技术破坏的是 Confidentiality

DNS Poisoning

由于 DNS 的传输层协议是 UDP ,是一种不可靠、无连接的协议,DNS Clint 发起 DNS Query 后,就等待第一个返回的有效数据包,而抛弃了后续的数据包,这就给了 DNS Poisoning 可以施展的空间

需要实现 DNS Poisoning 可以在整个网络的链路任意一个节点,部署数据包解析软件,一旦接收到了 DNS Query 的数据包(或者进一步解析,命中更细化更具体的规则),就立即返回一个伪造的 DNS ResponseDNS Client ,这样 DNS Client 就会信任这个数据包,使用了错误的 IP 地址,至此 DNS Poisoning 成功,这项技术破坏的是 Integrity

PS:如果实施 DNS Poisoning 的是一台 DNS Server ,那就更简单了,因为通常 DNS Server 都会将解析结果缓存下来,仅需修改缓存里的结果为伪造的IP地址即可,所以这样的技术也被称为 DNS Cache Poisoning

DNS Hijacking

DNS Poisoning 有些类似,甚至我认为两者的边界有一些模糊,DNS Hijacking 的目标也是希望返回一个伪造的 IP 地址给 DNS Client ,只是实施 DNS Hijacking 的只能是 DNS Server 甚至是 Authoritative Nameserver 实施层级越高的 DNS Hijacking 影响范围越大。

此类攻击的实现原理是:当该 DNS Server 收到 DNS Query 后,如果命中了特定的规则,则返回一个伪造的 IP 地址回去, 至此 DNS Hijacking 成功

DNS Hijacking 工作原理

DNS 攻击的危害

  • 遭遇破坏 Confidentiality 的攻击时,用户的访问信息会被窃取
  • 遭遇破坏 Integrity 的攻击时,用户会无法访问到想去的站点(无法获取对应信息),甚至访问到一个高仿的钓鱼网站(如果在钓鱼网站上填写信息,会造成更大的信息安全损失)

PS:往往这两种攻击手段会叠加使用,杀伤力更大

参考文献

<TOC/>