DNS面临的4大类共计11小类安全风险及防御措施
DNS在设计之初,并未考虑网络安全限制,导致了许多问题。DNS安全扩展(DNSSEC)协议的开发旨在解决DNS的安全漏洞,但其部署并不广泛,DNS仍面临各种攻击。接下来我们一起看下DNS都存在哪些安全攻击及缓解措施,旨在对DNS安全性进行全面审视。
1. 背景知识
DNS是一个将域名映射到数字IP地址的互联网系统,它是一个分布式数据库系统。由于其在互联网上的重要角色和网络的脆弱性,DNS已经成为了网络攻击的热门目标,这不仅威胁到用户的隐私和安全,也影响到DNS的稳定性和可靠性。
EfficientIP与IDC合作发布的《2022年全球DNS威胁报告》中指出,在过去一年中,88%的组织遭受了与DNS相关的攻击,平均每家公司有7次,其中包括DNS隧道、DNS劫持、DNS泛洪攻击等攻击技术手段。
2024年6月,乌克兰国防部情报总局的网络专家对俄政府机构和大公司进行了大规模分布式拒绝服务(DDoS)攻击,俄罗斯多个政府机构和私营企业的工作陷入瘫痪,此次攻击就利用到了DNS的安全缺陷。
由于接下来介绍的DNS安全攻击和防御技术依赖于读者要熟悉DNS的解析流程。如果对DNS协议工作原理还不熟悉,可以参阅博主前期文章
《一文彻底了解DNS协议工作原理,恐怕没有比这更通俗易懂的了吧?》
2. DNS面临的攻击
DNS之所以存在安全攻击,我们可以从概念、结构和通信三个方面来看:
- 概念:DNS请求和响应通常通过UDP协议发送,这可能导致信息泄露。
- 结构:DNS服务器的层次结构可能导致服务器容易受到攻击。
- 通信:DNS响应的保护机制较弱,容易被攻击者利用。
DNS面临的攻击可以划分为四类:DNS数据篡改、DNS数据泛洪、DNS滥用和DNS服务器结构攻击。
2.1. DNS数据篡改(DNS Data Tampering)
这类攻击涉及篡改用户和DNS服务器之间的未加密DNS数据,导致用户接收到错误的地址转换信息。例如,DNS缓存投毒(DNS Cache Poisoning)就是一种常见的数据篡改攻击,攻击者通过向递归DNS服务器发送伪造的响应,导致服务器缓存错误的IP地址信息。
2.1.1. 1.DNS缓存投毒
攻击者首先向递归域名服务器发送DNS查询请求。如果递归域名服务器在其缓存中没有与所请求的域对应的IP地址,则递归域名服务器将向权威名称服务器发送查询请求。
在权威域名服务器发送NXDOMAIN(域名不存在)响应之前,攻击者会向递归域名服务器发送大量似乎来自权威域名服务器的欺骗回复。如果DNS响应与DNS查询匹配,递归域名服务器将接受攻击者的欺骗,并保存攻击者提供的资源记录(RRs)。
在此之后,当其他用户查询相同的域名时,他们将收到被污染的数据,从而被重定向到攻击者控制的服务器。
DNS缓存投毒(DNS Cache Poisoning)和DNS欺骗(DNS Spoofing)实际上是同一种攻击的不同说法,尽管它们描述的是同一类网络攻击行为。
注:要想细分DNS缓存投毒和DNS欺骗也比较简单,它们主要在于视角和侧重点不同。DNS缓存投毒强调的是缓存被污染的过程,而DNS欺骗更侧重于攻击最终导致用户访问到错误站点的现象。
2.1.2. Kaminsky
Kaminsky攻击是一种针对DNS系统的漏洞利用技术,由Dan Kaminsky在2008年首次公开披露。这种攻击能够迅速且大规模地破坏DNS缓存,导致用户被重定向到攻击者指定的恶意网站,而不是他们实际想要访问的合法网站。
Kaminsky攻击的关键点如下:
- 端口号与事务ID:DNS查询和响应使用特定的端口号和事务ID来匹配请求和响应。Kaminsky发现DNS协议中存在一个漏洞,即事务ID(Transaction ID)和源端口(Source Port)的安全性不够强。
- 快速猜测事务ID:攻击者可以通过发送大量的DNS查询请求到受害的DNS服务器,并在响应中插入恶意数据,试图覆盖合法的DNS记录。由于事务ID只有16位,攻击者可以快速尝试多种可能性,直到找到正确的事务ID。
- 缓存污染:一旦攻击者成功地用恶意数据覆盖了合法的DNS记录,这些数据就会被存储在DNS缓存中。当其他用户查询相同的域名时,他们将收到被污染的数据,从而被重定向到攻击者控制的服务器。
2.1.3. DNS劫持
DNS劫持是指通过修改域名解析记录或拦截DNS请求,将用户重定向到恶意网站或虚假IP地址。这种攻击可以导致用户无法访问正确的服务,甚至访问到窃取信息或破坏原有服务的虚假网站。
要执行DNS劫持攻击,攻击者要么在用户的系统上安装恶意软件,要么通过利用已知漏洞或破解DNS通信实现路由器接管。攻击涉及破坏用户系统DNS的设置将其重定向到恶意的DNS服务器。
若想了解更多关于DNS劫持的技术细节,可以参阅博主前期文章《剖析DNS劫持攻击原理及其防御措施》。
2.2. DNS数据泛洪(DNS Data Flooding)
泛洪攻击的目的是通过发送大量看似有效的查询请求来耗尽服务器资源,从而妨碍服务器对合法请求的响应。例如,DNS洪水攻击(DNS Flooding Attack)就是通过大量UDP请求来耗尽DNS服务器资源的攻击方式。
2.2.1. DNS泛洪攻击
攻击者向域名服务器发送大量的UDP数据包,模拟合法的DNS请求,导致DNS服务器耗尽资源来处理合法的请求。
2.2.2. DNS反射放大攻击
与上一节提到的DNS洪泛攻击不同,DNS洪泛攻击会耗尽DNS服务器的资源,而DNS反射和放大攻击则会试图用大量带宽流量使受害者网络容量饱和。
DNS反射放大攻击主要利用了DNS回复包比请求包大的特点。攻击者使用伪造的源IP地址向多个开放的递归DNS服务器发送小型请求查询。精心设计的请求会导致一个大的响应包。通过同时反射和放大攻击,开放域名服务器生成许多合法的DNS响应,最终受害服务器受到DDoS攻击。
从上图中可以看到发送的 DNS 查询请求数据包大小为32字节,而查询返回结果的数据包大小3000字节以上。使用该方式进行放大攻击能够达到 50 倍以上的放大效果。
注:DNS使用了UDP协议,然而UDP协议没有像TCP那样的三次握手过程来验证请求的源IP。
为了减轻这种DNS反射放大攻击,国内外已经发布了一些安全指南,但近年来,放大攻击仍然很普遍。
2.2.3. 随机子域攻击
随机子域攻击是另一种类型的DNS数据泛洪攻击,攻击者会发送大量针对不存在的域的随机DNS请求,主要用于针对域名服务器的DDoS攻击。
为了成功地进行随机子域攻击,攻击者首先感染客户端。受感染的客户端通过随机生成的子域字符串对受害者的目标域创建请求查询。每个客户端将这些大量查询发送给递归域名服务器。由于此服务器不断响应域不存在,因此随机查找请求最终会耗尽有限的资源,从而延迟或停止对合法DNS请求的响应。
此外,通过随机子域攻击可以找到有效的子域名,攻击者可能会进一步探索这些子域名指向的服务或系统,寻找安全漏洞。
2.3. DNS滥用(Abuse of DNS)
攻击者利用DNS服务器进行与命令控制(C&C)服务器的通信,以隐藏攻击源并扩大僵尸网络(Botnets)的规模。例如,DNS隧道(DNS Tunneling)技术允许攻击者通过DNS端口发送攻击命令和接收结果,从而绕过防御系统。
2.3.1. DNS隧道
在进行DNS查询时,如果查询的域名不在DNS服务器本机的缓存中就会查询域名服务器获取结果,如果在互联网上有一台定制的服务器(我们称其为控制服务器),就可以依靠DNS协议进行数据隐蔽传输。
若想了解更多关于DNS隧道技术的细节,可以参阅博主往期博文《DNS隧道技术原理及其典型应用场景剖析》。
2.3.2. 域生成算法
域生成算法(Domain Generation Algorithm, DGA)是一种生成大量域名的技术,它能够根据特定的输入(如日期、时间戳或其他变量)生成一系列域名。这些域名通常在恶意软件中使用,用于建立与C&C服务器之间的通信路径。由于生成的域名数量众多且不断变化,使得防御者难以提前预测并阻止这些域名。
2.3.3. Fast Flux
Fast Flux 是一种利用 DNS 动态更新机制来实现快速切换 IP 地址的技术。具体来说,Fast Flux 利用了 DNS 的轮询功能,将多个 IP 地址与同一个域名关联,并且这些 IP 地址会在短时间内频繁地变化。通过这种方式,即使某个 IP 地址被发现并屏蔽,恶意软件仍然可以通过其他 IP 地址继续通信。
这种技术通常被恶意软件和网络犯罪分子用来隐藏他们的命令与控制(C&C)服务器的真实位置,从而逃避检测和关闭。
2.4. DNS服务器结构攻击(DNS Server Structure)
这类攻击利用DNS的结构弱点,通过攻击最低层级的域名服务器来影响整个DNS查询处理。例如,DNS非存在域(NXDOMAIN)攻击就是攻击者发送大量对不存在域的查询请求,导致递归DNS服务器的缓存被填满,从而影响合法DNS请求的响应速度。
2.4.1. NXDOMAIN
不存在域(non-existent domain,NXDOMAIN)是DNS响应查询之一,这意味着域不存在。攻击者向DNS服务器发送大量查询,以查找不存在的域。DNS服务器试图处理查询以查找不存在的域,但由于域不存在,它们会发回NXDOMAIN查询。
最终,递归DNS服务器中的缓存可能会被NXDOMAIN结果填满,用户对合法DNS请求的DNS服务器响应时间会变慢。由于需要多次递归查询来获得解析结果,权威DNS服务器也会花费宝贵的资源。
2.4.2. 幻域攻击
类似于DNS NXDOMAIN攻击。主要的区别是攻击者使用多个幻域来干扰正常的DNS解析。在这种类型的攻击中,由于攻击者设置的这些“幻影”域名从不响应DNS查询或响应很慢,攻击者会通过大量查询耗尽DNS解析器的资源,从而导致普通用户可能会延迟或无法收到对正常DNS查询的响应。
3. 缓解措施
尽管DNS已经遭受了多种攻击,但研究人员已经在想办法减轻这些攻击。特别是DNSSEC的出现,它帮助确保了DNS数据的完整性与可靠性。此外,研究人员也逐渐引入了其他先进的方法来缓解DNS安全风险。
3.1. 采用DNSSEC技术
DNSSEC技术利用了数字签名和公钥来实现 DNS 数据的完整性与可靠性,利用 DNSSEC 技术通过权威域名服务器用自己的私钥签署资源记录,然后解析服务器用权威的公钥认证来自权威域名服务器的数据。
- 如果秘钥验证成功,说明该数据来自可以信任的权威域名服务器,再进行解析服务器接收数据,有效的提高了连接的安全性;
- 如果身份秘钥验证失败,则意味着接收到的数据可能是不被信任的,域名服务器可以拒绝接入。
3.2. 采用 DOT/DOH 技术
DOT和DOH分别指的是DNS Over TLS(传输层安全协议)和DNS Over HTTPS(超文本传输协议)。DOT/DOH 是通过将原本在链路上传输的明文 DNS 数据进行加密来达到防止 DNS 数据在链路上被窃听,篡改和劫持的目的。
尽管DOT/DOH提供了更高的安全性与隐私保护,但由于兼容性问题及加密带来的性能问题,他们并没有广泛使用。
3.3. 引入IDPS设备
通过引入IDPS设备,可以实时检查和监控DNS日志,可以及时发现异常行为并采取措施。
4. 参考文档及链接
-
参考文档: 参考文档打包.zip (访问密码: 6277)
-
参考链接:
- https://www.akamai.com/glossary/what-is-dns-tunneling#accordion-76a7acf228-item-2984740af8
- https://www.akamai.com/blog/trends/dnssec-how-it-works-key-considerations