十种 DNS 攻击类型和缓解措施

2024-08-16
2024-08-16
14 min read
Hits

  今天在公众号看到梳理 DNS 攻击的文章,看到一半就感觉很受用,想着赶紧搬运过来学习记录,当然也不可能照抄原文,不尊重别人的劳动成果,同时也没有意义。于是就在网上搜索了下相关的文章,第一条就是浙江省公安厅发布的,没想到省厅还有这么给力的技术文章,定睛一看来源:安全牛😂。于是继续搜安全牛,发现最终的来源还是老外。意料之中无奈之余,结合三者精华,又形成了本文。

DNS 通常使用 UDP,在某些情况下,也使用 TCP。UDP 协议是无连接的,很容易被欺骗。因此,DNS 协议作为 DDoS 工具非常受欢迎。DNS 被公认为互联网的电话簿,是全球互联网基金会的一个组成部分,在域名和 IP 之间进行转换。DNS 一直是攻击者的目标,过去一年的警告表明情况正在恶化。根据 IDC 的研究,与 DNS 攻击相关的平均成本与一年前相比增加了 49%。在美国,DNS 攻击的平均代价超过 127 万美元。大约一半的受访者(48%)表示,他们在 DNS 攻击上浪费了超过五十万美元,约十分之一的受访者表示,他们在每次中断上损失了超过五百万美元。且绝大多数美国公司表示,确定 DNS 攻击花了一天多的时间。

DNS Cache Poisoning Attack(DNS 缓存投毒攻击)

DNS 缓存投毒攻击,又称为 DNS 缓存污染攻击,是一种利用 DNS 缓存机制的攻击方法,攻击者通过向 DNS 缓存服务器注入恶意的虚假 DNS 响应,从而导致用户访问错误的或恶意的网站。DNS 缓存污染攻击的核心在于 DNS 缓存服务器在解析域名时可能会接收并存储伪造的 DNS 响应。这些响应可以指向攻击者控制的 IP 地址,使得用户在访问合法网站时被重定向到攻击者设置的恶意站点。

2008 年,著名的安全专家 Dan Kaminsky 发现并公开了 DNS 缓存投毒的重大漏洞,该漏洞使得互联网上几乎所有的 DNS 服务器都容易受到此类攻击。

攻击原理

  • DNS 缓存允许 DNS 解析器临时存储域名与 IP 地址的对应关系。
  • 攻击者利用 DNS 缓存投毒攻击,向 DNS 解析器或目标设备发送虚假的 DNS 响应,假冒真实的 DNS 服务器。
  • 攻击者试图将虚假的 DNS 记录放入目标设备的 DNS 缓存中。
  • DNS 消息具有事务 ID,用于将响应与相关的请求进行匹配。

攻击过程

  1. 用户请求访问一个网站,DNS 解析过程开始。
  2. 如果缓存服务器没有相应的缓存记录,它会向权威 DNS 服务器发出查询请求。
  3. 攻击者在权威 DNS 服务器响应之前,向缓存服务器发送伪造的响应数据。
  4. 如果伪造的响应成功到达并被缓存,所有后续用户请求都会被重定向到攻击者指定的地址。

缓解措施

  • DNSSEC(DNS Security Extensions):通过 DNSSEC,DNS 查询的响应数据被数字签名,从而可以验证其真实性,防止被篡改。
  • 增强随机性:提高 DNS 查询 ID 的随机性,结合使用随机源端口可以增加攻击的难度。
  • 缓存策略:限制 DNS 缓存的 TTL 值,减少缓存投毒的持久性。
dig +short safe.cafe @dns-server-ip     # 使用 dig 命令来检查 DNS 缓存是否受到了污染,如果 DNS 缓存服务器已经受到污染,命令返回的 IP 地址将是伪造的

Distributed Reflection Denial of Service(分布式反射拒绝服务)

DRDoS(分布式反射式拒绝服务)的攻击手法是通过发送大量 UDP 确认消息使目标不可用。在某些情况下,攻击者还可能会修改 DNS、NTP 等记录。为了能够将实际操作在伪造地址上的主机与更多的确认消息关联起来,攻击者需要使用伪造的源IP地址。当这些伪造的确认消息开始出现时,目标系统将变得难以访问。当这些攻击以适当的规模进行控制时,集体反射的情况就会变得明显,即多个终端广播伪造的 UDP 请求,生成的确认消息将指向单个目标。

2013 年,一场史无前例的 DRDoS 攻击利用开放的 DNS 解析器发起,攻击峰值流量高达 300Gbps,造成了大范围的网络服务瘫痪。

攻击原理

  • DDoS 攻击利用网络协议的特点,使得一个小的请求能够引发巨大的响应。
  • 攻击流量并不直接从攻击者发送到受害者,而是发送请求到互联网上的弱点服务器或设备,这些服务器或设备会以更多的流量作出响应。
  • 攻击者会通过僵尸网络(botnet)发起 DDoS 攻击。

攻击过程

  1. 攻击者通过伪造源 IP 地址发送大量 DNS 请求给开放 DNS 解析器。
  2. 解析器响应这些请求,将数据发送到受害者 IP。
  3. 受害者服务器资源被消耗,无法处理正常流量。

缓解措施

  • 关闭开放 DNS 解析:确保 DNS 解析器不对外开放,防止被利用。
  • 流量分析:实时监控和分析 DNS 流量,识别和阻止伪造源 IP 的查询请求。
  • DDoS 防护设备:部署 DDoS 防护设备,减少反射流量的影响。
iptables -A INPUT -p udp --dport 53 -m conntrack --ctstate INVALID -j DROP     # 使用 iptables 命令阻止伪造源 IP 的 DNS 请求

DNS Hijacking(DNS 劫持)

DNS 劫持是指攻击者通过篡改 DNS 解析结果,将用户的流量重定向到不同的 IP 地址,通常是恶意网站。DNS 劫持可以通过多种方式实现,包括在用户设备上安装恶意软件、攻击 DNS 服务器,或者利用 ISP 级别的控制。DNS 劫持的核心在于攻击者能够控制或篡改 DNS 查询的解析过程,从而将合法的域名解析到恶意 IP 地址。

2014 年,土耳其政府在抗议期间通过 DNS 劫持阻止公民访问 Twitter,直接将 Twitter 的域名解析到一个政府控制的 IP 地址。

攻击原理

  • 攻击者通过未经许可进入 DNS 服务器或管理界面来更改域的 DNS 记录。
  • DNS 黑客可用于诱骗人们访问看起来很像真实网站的虚假网站。
  • 攻击者可以将人员发送到恶意网站或内部漏洞利用工具包。
  • 在一些 DNS 劫持攻击中,官方 DNS 服务器或 ISP(互联网服务提供商)的 DNS 解析器被黑客入侵。

攻击过程

  1. 用户发出域名查询请求。
  2. DNS 服务器受到攻击或被篡改,将合法的域名解析到攻击者控制的 IP 地址。
  3. 用户被重定向到恶意网站,可能会被诱骗输入敏感信息或下载恶意软件。

缓解措施

  • 使用可信的 DNS 服务器:选择可信的 DNS 提供商,如 Google DNS 或 Cloudflare DNS。
  • 使用加密 DNS 协议:如 DNS over HTTPS (DoH) 或 DNS over TLS (DoT),防止 DNS 查询被劫持。
  • 网络监控:定期监控网络流量,检测异常 DNS 解析行为。
nslookup safe.cafe     # 使用 nslookup 命令检查 DNS 解析结果是否被篡改,如果解析结果异常,可能意味着 DNS 劫持正在进行

Phantom Domain Attack(幻域攻击)

幻域攻击与普通子域名攻击类似,在这种类型的攻击中,由于一些“幻影”域名从不响应 DNS 查询,攻击者会通过大量查询耗尽 DNS 解析器的资源。这种攻击的目的是使 DNS 解析器在放弃或提供不良响应之前等待过长的时间,从而大量影响 DNS 的性能。

2011 年,一起针对欧洲某金融机构的攻击中,攻击者通过幻影域名攻击拖垮了机构的 DNS 解析服务,导致其在线银行服务中断。

攻击过程

  1. 攻击者注册并控制多个恶意域名。
  2. 这些域名的 DNS 服务器被设置为响应极慢或不响应。
  3. 当用户或系统发出对这些域名的查询请求时,解析过程被拖慢,影响其他合法域名的解析。

缓解措施

  • 查询超时设置:缩短 DNS 查询的超时时间,防止解析被恶意拖延。
  • 过滤和黑名单:针对已知的恶意域名设置黑名单,直接丢弃对这些域名的查询请求。
  • DNS 查询优先级:优化 DNS 服务器的查询优先级设置,确保合法请求优先处理。
dig +trace safe.cafe     # 使用 dig 命令可以测试一个域名的解析时间,如果发现某个域名解析时间过长,则可能受到幻域攻击。

DNS Flood Attack(DNS 洪水攻击)

DNS 洪水攻击属于 DDoS(分布式拒绝服务)攻击的一种,主要目标是使服务器访问过载,使其无法继续为 DNS 请求提供服务。当这种类型的攻击来自单个 IP 地址时很容易缓解。然而,当 DDoS 涉及数百或数千人时,情况可能会变得复杂。缓解方法有时可能很棘手,因为许多查询会很快被识别为恶意错误,并且会发出许多有效的请求来混淆防御设备。

2012 年,世界上最大的 DNS 洪水攻击之一针对了一家著名的 DNS 提供商,导致全球范围内的大规模网络服务中断。

攻击原理

  • 尝试通过一次性发送大量 DNS 请求来破坏 DNS 服务器或系统;
  • 用户数据报协议(UDP)和传输控制协议(TCP)都可以用于进行 DNS 洪水攻击;
  • 通过使用不安全的 DNS 解析器或合法 DNS 服务器来增加发送的数据量。

攻击过程

  1. 攻击者使用工具生成大量的 DNS 查询请求。
  2. DNS 服务器接收到过多的请求,资源被消耗殆尽。
  3. 合法用户的查询无法得到响应,服务中断。

缓解措施

  • 流量限速:设置 DNS 查询的速率限制,防止洪水攻击。
  • 攻击识别:通过 DNS 流量分析工具识别异常的查询模式。
  • DDoS 防护服务:使用第三方 DDoS 防护服务,吸收攻击流量,保证服务稳定。
hping3 --flood --udp -p 53 target-ip     # 使用 hping3 工具发送 UDP 流量,模拟 DNS 洪水攻击

Random Subdomain Attack(随机子域攻击)

随机子域攻击是一种 DNS 滥用攻击,攻击者通过向 DNS 服务器发送大量随机生成的子域名请求,消耗 DNS 服务器的资源,使其无法响应合法的查询请求。攻击者利用 DNS 解析的特性,生成大量的随机子域名,这些子域名通常不存在,DNS 服务器需要不断地向上级 DNS 服务器查询,造成资源耗尽。这些请求通常将来被感染的访问用户,他们并不知道自己在发送特定类型的查询,使得这种攻击很难被识别和阻止。

2019 年,亚马逊云的 DNS 系统遭受 DDoS 攻击,大量垃圾流量堵塞了服务器进出口,导致 DNS 服务器无法提供正常服务,持续时长达数小时之久。

攻击原理

  • 攻击者可以通过随机子域名攻击在现有域名上创建大量子域;
  • 作为快速流转方法的一部分,攻击者会非常快速地更改与子域名相关联的 IP 地址;
  • 攻击者使用 DGA(域名生成算法)创建大量看似随机选择的域名或子域;
  • 在随机子域攻击中,随机创建的子域名可能托管恶意软件或其他有害内容。

攻击过程

  1. 攻击者生成大量随机子域名,如 xyz123.example.com。
  2. DNS 服务器接收到请求后,需要向权威 DNS 服务器查询这些子域名。
  3. 由于子域名不存在,DNS服 务器资源被大量消耗,影响正常查询的处理。

缓解措施

  • 速率限制:对于每个客户端的查询速率设置上限,防止滥用。
  • 缓存策略:提高 DNS 服务器对不可解析域名的负面缓存时间(negative caching)。
  • DNS 流量分析:实时分析 DNS 流量,发现异常模式后及时采取措施。
grep 'query' /var/log/named/query.log | grep safe.cafe     # 使用 grep 命令在 DNS 服务器日志中查看是否存在大量的随机子域名请求

Botnet-based Attacks(基于僵尸网络的攻击)

基于僵尸网络的攻击是指攻击者通过控制大量被感染的计算机(称为僵尸网络)发动大规模的 DDoS(分布式拒绝服务攻击),通常针对 DNS 服务器或其他网络基础设施。僵尸网络攻击通常由一个主控服务器控制,成千上万的僵尸节点同时向目标服务器发起请求,导致目标服务器超载并崩溃。

2016 年,著名的 Mirai 僵尸网络发动了针对 DNS 提供商 Dyn 的大规模 DDoS 攻击,导致包括 Twitter、Netflix 等多家大型网站在内的服务瘫痪。

攻击原理

  • 当许多计算机感染类似机器人或僵尸等软件时,它们会形成僵尸网络。
  • 僵尸网络由攻击者通常保持的中央命令和控制计算机运行。
  • 攻击者可以使用僵尸网络同时控制许多被黑客入侵设备的操作,从不同的地方发起协同攻击。
  • DDoS(分布式拒绝服务)攻击通常利用僵尸网络发动。

攻击过程

  1. 攻击者控制一个僵尸网络,发送命令让所有僵尸节点同时攻击目标 DNS 服务器。
  2. 大量的请求涌向目标服务器,耗尽服务器资源。
  3. 目标服务器无法处理合法请求,导致服务中断。

缓解措施

  • 流量分析和过滤:部署流量分析和过滤设备,识别和阻止恶意流量。
  • DDoS 防护服务:使用专业的 DDoS 防护服务,如 Cloudflare 或 Akamai,来吸收和分散攻击流量。
  • 僵尸网络追踪和打击:通过与 ISP 合作,识别并关闭僵尸网络的控制节点。
tcpdump -i eth0 'tcp port 53'     # 使用 tcpdump 或 wireshark 工具可以捕获并分析网络流量,检测是否存在 DDoS 攻击

Domain Hijacking(域名劫持)

在这种攻击中,攻击者会修改域名注册商和 DNS 服务器,以便将用户的流量重新路由到其他地方。如果攻击者获得了 DNS 数据的控制权,则域名劫持也可能发生在 DNS 层面上。当攻击者控制用户的域名时,他们可以使用它来发起攻击,例如为 PayPal、Visa 或银行系统等支付系统设置虚假页面。

2013 年,知名博客平台 WordPress 的官方域名曾遭到域名劫持,攻击者通过非法手段获取了域名的控制权并篡改了 DNS 记录。

攻击原理

  • 域名劫持是指某人非法夺取合法所有者的域名所有权。
  • 如果攻击者控制了域名,他们可以更改其 DNS 设置。
  • 攻击者可能添加新的子域名或更改现有的子域名,以使他们的恶意行为更加有效。

攻击过程

  1. 攻击者通过社工、钓鱼或技术手段获取目标域名的注册信息。
  2. 修改域名的 DNS 记录或将域名转移到攻击者控制的 DNS 服务器。
  3. 用户访问被劫持的域名时,被重定向到恶意网站或伪造的合法网站。

缓解措施

  • 使用 2FA(双重认证):确保域名注册商账户的安全。
  • 锁定域名:启用域名锁定服务,防止未经授权的域名转移。
  • 监控 DNS 记录:定期监控 DNS 记录的变更,及时发现异常。
whois safe.cafe     # 使用 whois 命令查询域名注册信息,从而检查域名是否被非法转移

DNS Tunneling(DNS 隧道攻击)

DNS 隧道是一种数据隐蔽传输技术,攻击者利用 DNS 协议的正常查询响应机制,通过 DNS 服务器传输数据包,从而绕过防火墙和其他安全设备。攻击者将数据封装在 DNS 查询或响应的有效载荷中,通过递归 DNS 服务器传输数据。由于 DNS 协议通常不会被严格监控,攻击者可以绕过安全检测。

2017 年,一起针对一家金融机构的 APT(高级持续性威胁)攻击中,攻击者使用 DNS 隧道技术传输敏感数据,成功绕过了公司的防火墙。

攻击原理

  • 域名系统中的隧道需要隐藏不属于 DNS 查询或答案的信息。
  • DNS 隧道利用 DNS 协议,该协议主要用于域名解析,其目的不是预期的原因。
  • 使用 DNS 隧道,可以在常规 DNS 流量中建立秘密的通信路径。
  • 通过 DNS 隧道,可以从受感染的网络或系统中提取私密数据。

攻击过程

  1. 攻击者将数据编码为 DNS 查询的域名或响应的文本记录。
  2. DNS 服务器在解析请求时,无意中转发和传输了这些数据。
  3. 攻击者在另一端接收并解码这些数据,完成隐蔽传输。

缓解措施

  • DNS 流量监控: 监控和分析 DNS 流量,发现异常的域名查询行为。
  • DNS 请求过滤: 通过严格的 DNS 请求过滤策略,阻止可疑的查询和响应。
  • DNS 安全网关: 部署 DNS 安全网关,检查和阻止恶意的 DNS 隧道流量。
dnscat2 --dns safe.cafe     # 使用 dnscat2 工具模拟 DNS 隧道攻击

TCP-SYN Floods(TCP-SYN 泛洪攻击)

TCP SYN 泛洪攻击是一种危险的 DoS(拒绝服务)攻击,可以破坏使用传输控制协议(TCP)进行互联网通信的任何服务。常见的基础设施组件,如负载均衡器、防火墙、入侵防御系统(IPS)和应用服务器,都可能容易受到 SYN 波攻击的影响,即使是设计用于管理数百万个连接的高容量设备也可能因这种攻击而瘫痪。攻击者通过发送大量的 TCP 连接请求(SYN包)消耗服务器资源,导致服务器无法处理合法的连接请求。TCP 三次握手协议是 TCP 连接的基础。攻击者通过发送大量的 SYN 包(请求建立连接)给目标服务器,但不完成后续的握手步骤,导致服务器资源耗尽。

2000 年 2 月,全球最大搜索引擎之一的 Yahoo! 遭受大规模的 SYN 洪泛攻击,导致服务中断长达一小时。

攻击原理

  • TCP 握手过程有三个步骤:SYN、SYN-ACK 和 ACK。
  • 攻击者向目标服务器发送大量 SYN(同步)数据包,同时表示他们想要建立新的连接。
  • 目标服务器为每个传入的 SYN 数据包提供系统资源,如 RAM 和有关连接状态的详细信息。
  • 攻击者经常伪造 SYN 数据包中的原始 IP 地址,以增加发现和阻止的难度。
  • 保留了太多半开放的链接,这给目标系统的内存、CPU 和连接状态表造成过大的压力。

攻击过程

  1. 攻击者向目标服务器发送大量伪造的 SYN 请求。
  2. 服务器为每个请求分配资源,并等待客户端的 ACK 包以完成三次握手。
  3. 攻击者不发送 ACK 包,服务器资源逐渐耗尽,导致合法请求无法处理。

缓解措施

  • SYN Cookies: 使用 SYN Cookies 技术,防止服务器在三次握手未完成前消耗过多资源。
  • 连接超时: 设置合理的 TCP 连接超时参数,快速释放未完成的连接。
  • DDoS 防护设备: 部署专用的 DDoS 防护设备或服务来过滤和减轻 SYN 洪泛攻击。
hping3 -S -p 80 --flood target-ip     # 使用 hping3 工具模拟 TCP-SYN 泛洪攻击,该命令向目标服务器的 80 端口发送大量 SYN 包,用于测试和防御措施验证

总结

  1. DNS Cache Poisoning Attack(DNS 缓存投毒攻击)
    • 攻击机制:注入伪造的 DNS 响应到缓存服务器,导致用户被重定向到恶意网站。
    • 缓解措施:DNSSEC、提高查询 ID 随机性、限制缓存 TTL
  2. Distributed Reflection Denial of Service(分布式反射拒绝服务)
    • 攻击机制:利用开放 DNS 解析器将大量查询请求反射到受害者 IP 地址,导致资源耗尽。
    • 缓解措施:关闭开放 DNS 解析、流量分析、部署 DDoS 防护设备
  3. DNS Hijacking(DNS 劫持)
    • 攻击机制:篡改 DNS 解析,将用户流量重定向到攻击者控制的 IP 地址。
    • 缓解措施:使用可信 DNS 服务器、加密 DNS 协议、网络监控
  4. Phantom Domain Attack(幻域攻击)
    • 攻击机制:使用响应缓慢或不响应的域名拖慢 DNS 解析过程。
    • 缓解措施:缩短查询超时、设置黑名单、优化查询优先级
  5. DNS Flood Attack(DNS 洪水攻击)
    • 攻击机制:发送大量 DNS 请求,消耗服务器资源,导致拒绝服务。
    • 缓解措施:流量限速、攻击识别、DDoS 防护服务
  6. Random Subdomain Attack(随机子域攻击)
    • 攻击机制:发送大量随机子域名请求,消耗 DNS 服务器资源。
    • 缓解措施:速率限制、负面缓存策略、DNS 流量分析
  7. Botnet-based Attacks(基于僵尸网络的攻击)
    • 攻击机制:控制大量僵尸节点发动大规模 DDoS 攻击,导致服务器崩溃。
    • 缓解措施:流量分析和过滤、使用 DDoS 防护服务、打击僵尸网络
  8. Domain Hijacking(域名劫持)
    • 攻击机制:通过非法手段获取域名控制权,篡改 DNS 记录。
    • 缓解措施:使用 2FA、锁定域名、监控 DNS 记录
  9. DNS Tunneling(DNS 隧道攻击)
    • 攻击机制:利用 DNS 协议传输数据包,绕过防火墙和安全设备。
    • 缓解措施:DNS 流量监控、请求过滤、部署 DNS 安全网关
  10. TCP-SYN Floods(TCP-SYN 泛洪攻击)
    • 攻击机制:发送大量 SYN 包,消耗服务器资源,导致无法处理合法连接。
    • 缓解措施:SYN Cookies、设置连接超时、DDoS 防护设备