威胁报告:mDNS 反射式 DDoS 攻击

转自:https://www.akamai.com/cn/zh/about/our-thinking/threat-advisories/akamai-mdns-reflection-ddos-threat-advisory.jsp

作者:Wilber Mejia

概览

在 2015 年第三季度将近尾声之际,Akamai SIRT 开始观察借力于支持多播域名系统 (mDNS) 的设备的 DDoS 攻击的有限使用。此外,在 2015 年 3 月,还披露了 mDNS 成为反射式和放大式 DDoS 攻击中所用向量的可能性。

此报告详述了 mDNS 反射式攻击向量的概念和技术,以及相应抵御方式。此攻击向量可通过利用在互联网上公开 mDNS(预计位于 5353 端口)的源设备发起攻击。

截至 2016 年 10 月,Akamai 已检测到并成功抵御了 7 次 mDNS DDoS 攻击,攻击目标分别为游戏和软件与科技行业垂直市场。迄今为止,此项攻击的持续时间仍存有疑问,具体取决于在实际攻击中观察到的特征。

攻击时间表

自 2015 年 9 月首次观察到 mDNS 攻击向量以来,这一攻击向量得到了偶尔、零星的使用。如下方时间表所示,初始攻击与下次攻击之间大约有 5 个月的时间差,这可能是对攻击脚本执行初始测试的结果。直至 2016 年 3 月末、4 月初,该攻击向量才开始显现出更为一致的使用。但使用 mDNS 作为单一向量进行攻击时,破坏力不如现有其他反射式攻击向量大。

 

重点攻击属性

在以下部分中,我们重点强调了 2016 年发生的一次攻击。在迄今为止抵御的 7 次攻击中,没有任何两次攻击针对的是相同目标。

  • 峰值带宽:2.9 千兆/秒 (Gbps)
  • 每秒数据包峰值:每秒 465200 个数据包
  • 攻击向量:mDNS
  • 源端口:5353 (mDNS)
  • 目标端口:随机

17:07:32.071836 IP Z.Z.Z.Z.5353 > X.X.X.X.80: 0*- 2/0/0 PTR _workstation._tcp.local., PTR _udisks-ssh._tcp.local.(104)

17:07:32.071857 IP Z.Z.Z.Z.5353 > X.X.X.X.80: 0*- 2/0/0 PTR _workstation._tcp.local., PTR _udisks-ssh._tcp.local.(104)

17:07:32.071873 IP Z.Z.Z.Z.5353 > X.X.X.X.80: 0*- 4/0/0 PTR _workstation._tcp.local., PTR _udisks-ssh._tcp.local., PTR _http._tcp.local., PTR _rfb._tcp.local.(143)

17:07:32.072187 IP Z.Z.Z.Z.5353 > X.X.X.X.80: 0*- 3/0/0 PTR _workstation._tcp.local., PTR _udisks-ssh._tcp.local., PTR _ipp._tcp.local.(123)

17:07:32.072274 IP Z.Z.Z.Z.5353 > X.X.X.X.80: 0*- 3/0/0 PTR _workstation._tcp.local., PTR _https._tcp.local., PTR _http._tcp.local.(119)

17:07:32.072279 IP Z.Z.Z.Z.5353 > X.X.X.X.80: 0*- 4/0/0 PTR _pdl-datastream._tcp.local., PTR _printer._tcp.local., PTR _ipp._tcp.local., PTR _http._tcp.local.(143)

17:07:32.072295 IP Z.Z.Z.Z.5353 > X.X.X.X.80: 0*- 8/0/0 PTR _workstation._tcp.local., PTR _webdavs._tcp.local., PTR _webdav._tcp.local., PTR _smb._tcp.local., PTR _sftp._tcp.local., PTR _http._tcp.local., PTR _afpovertcp._tcp.local., PTR _device-info._tcp.local.(235)

17:07:32.072361 IP 193.147.161.117.5353 > X.X.X.X.80: 0*- 7/0/0 PTR _workstation._tcp.local., PTR _ftp._tcp.local., PTR _edcp._udp.local., PTR _afpovertcp._tcp.local., PTR _device-info._tcp.local., PTR _smb._tcp.local., PTR _http._tcp.local.(209)

最后一次发现的 mDNS 攻击事件发生于 2016 年 10 月 27 日。这是一次多向量 DDoS 攻击,包含 SYN 泛洪攻击、UDP 泛洪攻击、UDP 碎片攻击、DNS 泛洪攻击和 mDNS 泛洪攻击,峰值达到 41 Gbps。

  • 事件开始时间:2016 年 10 月 27 日 06:01:00(UTC 时间)
  • 峰值带宽:41 Gbps
  • 每秒数据包峰值:每秒 6000000 个数据包
  • 攻击向量:SYN 泛洪攻击、UDP 泛洪攻击、UDP 碎片攻击、DNS 泛洪攻击、mDNS 泛洪攻击
  • 源端口:随机
  • 目标端口:随机

mDNS 泛洪攻击

06:05:36.522973 IP X.X.X.X.5353 > X.X.X.X.80: 0*- 2/0/0 PTR _workstation._tcp.local., PTR _udisks-ssh._tcp.local.(104)

06:05:36.522976 IP X.X.X.X.53301 > X.X.X.X.80: Flags [R], seq 194989615, win 0, length 0

06:05:36.523036 IP X.X.X.X.5353 > X.X.X.X.80: 0*- 4/0/0 PTR _workstation._tcp.local., PTR _http._tcp.local., PTR _device-info._tcp.local., PTR _smb._tcp.local.(144)

06:05:36.523040 IP X.X.X.X.5353 > X.X.X.X.80: 0*- 2/0/0 PTR _workstation._tcp.local., PTR _ssh._tcp.local.(97)

06:05:36.523102 IP X.X.X.X.5353 > X.X.X.X.80: 0*- 3/0/0 PTR _workstation._tcp.local., PTR _https._tcp.local., PTR _http._tcp.local.(119)

06:05:36.523114 IP X.X.X.X.5353 > X.X.X.X.80: 0*- 3/0/0 PTR _workstation._tcp.local., PTR _ssh._tcp.local., PTR _sftp-ssh._tcp.local.(121)

06:05:36.523147 IP X.X.X.X.5353 > X.X.X.X.80: 0*- 4/0/0 PTR _workstation._tcp.local., PTR _udisks-ssh._tcp.local., PTR _ssh._tcp.local., PTR _sftp-ssh._tcp.local.(147)

06:05:36.523168 IP X.X.X.X.5353 > X.X.X.X.80: 0*- 3/0/0 PTR _workstation._tcp.local., PTR _https._tcp.local., PTR _http._tcp.local.(119)

06:05:36.523221 IP X.X.X.X.5353 > X.X.X.X.80: 0*- 2/0/0 PTR _workstation._tcp.local., PTR _ssh._tcp.local.(97)

06:05:36.523285 IP X.X.X.X.5353 > X.X.X.X.80: 0*- 3/0/0 PTR _workstation._tcp.local., PTR _ssh._tcp.local., PTR _sftp-ssh._tcp.local.(121)

06:05:36.523313 IP X.X.X.X.5353 > X.X.X.X.80: 0*- 2/0/0 PTR _workstation._tcp.local., PTR _sftp-ssh._tcp.local.(102)

06:05:36.523322 IP X.X.X.X.58727 > X.X.X.X.80: Flags [R.], seq 2670641259, ack 2670641259, win 1400, length 0

SYN 泛洪攻击

6:01:35.894589 IP X.X.X.X.28970 > X.X.X.X.80: Flags [SEW], seq 4054777856, win 0, length 0

06:01:35.894639 IP X.X.X.X.1028 > X.X.X.X.80: Flags [SEW], seq 1405550592, win 0, length 0

06:01:35.894646 IP X.X.X.X.50021 > X.X.X.X.80: Flags [SEW], seq 3309240320, win 0, length 0

06:01:35.894655 IP X.X.X.X.40602 > X.X.X.X.80: Flags [SEW], seq 2493120512, win 0, length 0

06:01:35.894658 IP X.X.X.X.3847 > X.X.X.X.80: Flags [SEW], seq 1046675456, win 0, length 0

06:01:35.894658 IP X.X.X.X.21163 > X.X.X.X.80: Flags [SEW], seq 2160787456, win 0, length 0

UDP 泛洪攻击

06:08:36.313095 IP X.X.X.X.42862 > X.X.X.X.80: UDP, length 1

06:08:36.313768 IP X.X.X.X.648 > X.X.X.X.80: UDP, length 11

06:08:36.314002 IP X.X.X.X.60399 > X.X.X.X.80: UDP, length 6

06:08:36.322169 IP X.X.X.X.19246 > X.X.X.X.80: UDP, length 9

06:08:36.327485 IP X.X.X.X.22952 > X.X.X.X.80: UDP, length 11

06:08:36.327764 IP X.X.X.X.55095 > X.X.X.X.80: UDP, length 9

UDP 碎片攻击

06:06:43.088487 IP X.X.X.X > X.X.X.X: udp

06:06:43.088489 IP X.X.X.X > X.X.X.X: udp

06:06:43.088501 IP X.X.X.X > X.X.X.X: udp

06:06:43.088504 IP X.X.X.X > X.X.X.X: udp

06:06:43.088507 IP X.X.X.X > X.X.X.X: udp

DNS 反射攻击

06:16:34.508072 IP Z.Z.Z.Z.53 > X.X.X.X.23130: 28397| 20/0/1 MX stagg.cpsc.gov.5, MX hormel.cpsc.gov.5, TXT "v=spf1 ip4:x.x.x.x ip4:x.x.x.x ip4:X.X.X.X mx a:list.cpsc.gov -all", A x.x.x.x, AAAA 2600:803:240::2, DNSKEY, DNSKEY, DNSKEY, DNSKEY, Type51, RRSIG[|domain]

06:16:34.508077 IP Z.Z.Z.Z.53 > X.X.X.X.23130: 28397| 20/0/1 MX hormel.cpsc.gov.5, MX stagg.cpsc.gov.5, TXT "v=spf1 ip4: X.X.X.X ip4:X.X.X.X ip4:X.X.X.X mx a:list.cpsc.gov -all", A x.x.x.x, AAAA 2600:803:240::2, DNSKEY, DNSKEY, DNSKEY, DNSKEY, Type51, RRSIG[|domain]

06:16:34.508409 IP Z.Z.Z.Z.53 > X.X.X.X.10157: 32564 14/2/0 MX stagg.cpsc.gov.5, MX hormel.cpsc.gov.5, DNSKEY, DNSKEY, DNSKEY, DNSKEY, RRSIG,[|domain]

攻击和 mDNS 概述

多播 DNS (mDNS) 是 2013 年作为 RFC6762 发布的一项标准协议提案。mDNS 促进了设备与服务的发现,而且无需用户交互或者仅需最低限度的用户交互,极为适合小型网络。因此,mDNS 也可作为零配置网络 (zeroconf) 的理想组件。mDNS 的结构与常规 DNS 数据包相同,这或许也是它被迅速用作 DDoS 攻击向量的理由之一。

当然,该协议的简单性也让设备一经插入,就要准备好迎接一些风险。Chad Seaman 发现了 mDNS 上的一个漏洞 (Vu#550620),即 mDNS 会允许响应源自本地网络以外的查询。随后,这些响应将允许其披露有关受影响设备的信息,例如其软件和服务,以及其他潜在的敏感信息,例如主机名、内部网络配置设置、型号等等。这种反馈可能会允许恶意攻击者利用通过接入互联网的接口答复单播查询的 mDNS 主机,参与分布式服务拒绝 (DDoS) 反射式/放大式攻击。可在此处找到有关该漏洞的更多信息。

利用类似的概念,恶意攻击者创建的 mDNS 攻击脚本会发送专门的单播查询,促使 mDNS 设备作出响应。根据 RFC6763 中的定义,服务枚举查询对于返回网络上公布的所有服务类型极为有用。攻击脚本会生成 46 字节的载荷查询(如下张图所示),向存在漏洞的主机发送针对“_services._dns-sd._udp.local”的 DNS 查询;目的在于将所有已知服务返回给请求方设备。这些公布的服务还可单独查询,提供不同的响应大小,从而为攻击者创造了更多机会。但这种战术需要更精密的攻击工具,只有这样才能轻松在 DDoS 攻击中利用这些额外的响应载荷。

攻击脚本 UDP 载荷数据结构:

0000000: 0000 0000 0001 0000 0000 0000 095f 7365  ............._se

0000010: 7276 6963 6573 075f 646e 732d 7364 045f  rvices._dns-sd._

0000020: 7564 7005 6c6f 6361 6c00 000c 0001       udp.local.....

迄今为止,在 DDoS 攻击中观察到的 mDNS 响应载荷大小仍然有限。最大的载荷包含 428 字节的数据,比单个 NTP monlist 数据响应数据包要少 12 个字节。但所观察到的典型 mDNS 响应大小约为 100-200 字节。考虑到请求载荷仅有 46 字节,载荷响应为 200 字节,这意味着该向量的放大倍数通常约为 4.35 倍。

攻击脚本使用方式和签名示例

为 mDNS 创建的攻击脚本是目前可用于 UDP 反射式和放大式攻击的诸多脚本的修改版本。其使用方式也与其他脚本相似:只需提供目标 IP、目标端口、互联网上的 mDNS 设备列表、线程、数据包截断率,以及攻击运行时间即可。随后,脚本会假冒目标 IP,通过 tcpdump 发送可在下张图中看到的 46 字节恶意查询。

18:37:12.565541 IP Z.Z.Z.Z.13763 > X.X.X.X.5353: 0 PTR (QM)? _services._dns-sd._udp.local.(46)

18:37:12.565908 IP Z.Z.Z.Z.13763 > X.X.X.X.188.5353: 0 PTR (QM)? _services._dns-sd._udp.local.(46)

18:37:12.566332 IP Z.Z.Z.Z.13763 > X.X.X.X.188.5353: 0 PTR (QM)? _services._dns-sd._udp.local.(46)

18:37:12.566726 IP Z.Z.Z.Z.13763 > X.X.X.X.188.5353: 0 PTR (QM)? _services._dns-sd._udp.local.(46)

18:37:12.567137 IP Z.Z.Z.Z.13763 > X.X.X.X.188.5353: 0 PTR (QM)? _services._dns-sd._udp.local.(46)

18:37:12.567507 IP Z.Z.Z.Z.13763 > X.X.X.X.5353: 0 PTR (QM)? _services._dns-sd._udp.local.(46)

18:37:12.567895 IP Z.Z.Z.Z.13763 > X.X.X.X.5353: 0 PTR (QM)? _services._dns-sd._udp.local.(46)

18:37:12.568274 IP Z.Z.Z.Z.13763 > X.X.X.X.5353: 0 PTR (QM)? _services._dns-sd._udp.local.(46)

18:37:12.568672 IP Z.Z.Z.Z.13763 > X.X.X.X.5353: 0 PTR (QM)? _services._dns-sd._udp.local.(46)

18:37:12.569069 IP Z.Z.Z.Z.13763 > X.X.X.X.5353: 0 PTR (QM)? _services._dns-sd._udp.local.(46)

在我们的实验室测试中,这些查询发送至具有一个 mDNS 侦听器的 Linux 服务器设置。下张图展示了基本响应。

18:38:10.252994 IP Z.Z.Z.Z.5353 > X.X.X.X.47070: 0*- 2/0/0 PTR _workstation._tcp.local., PTR _udisks-ssh._tcp.local.(104)

18:38:10.253256 IP Z.Z.Z.Z.5353 > X.X.X.X.47070: 0*- 2/0/0 PTR _workstation._tcp.local., PTR _udisks-ssh._tcp.local.(104)

18:38:10.253694 IP Z.Z.Z.Z.5353 > X.X.X.X.47070: 0*- 2/0/0 PTR _workstation._tcp.local., PTR _udisks-ssh._tcp.local.(104)

18:38:10.254043 IP Z.Z.Z.Z.5353 > X.X.X.X.47070: 0*- 2/0/0 PTR _workstation._tcp.local., PTR _udisks-ssh._tcp.local.(104)

18:38:10.254394 IP Z.Z.Z.Z.5353 > X.X.X.X.47070: 0*- 2/0/0 PTR _workstation._tcp.local., PTR _udisks-ssh._tcp.local.(104)

18:38:10.254739 IP Z.Z.Z.Z.5353 > X.X.X.X.47070: 0*- 2/0/0 PTR _workstation._tcp.local., PTR _udisks-ssh._tcp.local.(104)

18:38:10.255098 IP Z.Z.Z.Z.5353 > X.X.X.X.47070: 0*- 2/0/0 PTR _workstation._tcp.local., PTR _udisks-ssh._tcp.local.(104)

18:38:10.255458 IP Z.Z.Z.Z.5353 > X.X.X.X.47070: 0*- 2/0/0 PTR _workstation._tcp.local., PTR _udisks-ssh._tcp.local.(104)

18:38:10.255823 IP Z.Z.Z.Z.5353 > X.X.X.X.47070: 0*- 2/0/0 PTR _workstation._tcp.local., PTR _udisks-ssh._tcp.local.(104)

18:38:10.256193 IP Z.Z.Z.Z.5353 > X.X.X.X.47070: 0*- 2/0/0 PTR _workstation._tcp.local., PTR _udisks-ssh._tcp.local.(104)

2016 年 11 月4 日,Shadowserver 基金会完成了一次 mDNS (5353/UDP) 扫描,有 526,245 个唯一 IP 响应了 mDNS 查询。下图展示了根据最新扫描发现,可以访问 mDNS 的前 20 个国家/地区和 ASN。

 
 

抵御

这是设计用于在本地网络内使用的协议之一。因此,应该没有任何理由通过互联网公开 mDNS 设备。如有必要,良好的做法应该是筛选任何传入的查询,仅允许已知来源。进而可以利用 Snort 等 IDS,检测这些查询,进一步防止您的设备被用于 DDoS 攻击。Snort 检测规则示例如下。

alert udp $EXTERNAL_NET !5353 -> $HOME_NET 5353 \

(msg: "mDNS DDoS Abuse request"; \

flow: to_server; \

content: "|00 00 00 00 00 01 00 00 00 00 00 00 09 5f 73 65 72 76 69 63 65 73 07 5f 64 6e 73 2d 73 64 04 5f 75 64 70 05 6c 6f 63 61 6c 00 00 0c 00 01|"; dsize:46<>46; \

classtype:Reflection-Abuse; \

sid: 201600004; rev:1;)

结论

迄今为止,mDNS 攻击向量的使用仍然有限。与 SSDP 相似,此攻击向量最有可能借力于家庭网络中的设备。早期攻击的破坏力不足,但在我们的抵御平台上每天均会观察到对 mDNS 端口 5353 的扫描。一旦枚举出更多设备,就有可能发动更大规模的攻击。此外,与 SSDP 相似,基于这种协议的不必要公开,随着 ISP 为家庭用户引入此端口的筛选功能,预计 mDNS 未来可能不会继续作为一种 DDoS 攻击向量。遗憾的是,尽管已经使用多年,SSDP 仍然每天都在被攻击者利用,仍然有能力造成严重的 DDoS 攻击。因此,在应用任何重要的主动筛选功能之前,mDNS 攻击的破坏力可能会增加。

参考资料

威胁报告:mDNS 反射式 DDoS 攻击的更多相关文章

  1. 破坏之王DDoS攻击与防范深度剖析【学习笔记】

    一.DDoS初步印象 1.什么是分布式拒绝服务攻击? 1)首先它是一种拒绝服务攻击 我们可以这么认为,凡是导致合法用户不能访问服务的行为,就是拒绝服务攻击. 注:早期的拒绝服务主要基于系统和应用程序的 ...

  2. 全年DDoS攻击分析|知道创宇云安全2018年度网络安全态势报告

    *本报告由知道创宇云安全出品* 数据来源:知道创宇云防御平台 前言 2018年,网络安全领域暗流涌动,攻击趋势不断攀升,T级DDoS攻击多次爆发.数据泄露事件层出不穷.勒索软件大行其道.此外,随着我国 ...

  3. 《2019上半年DDoS攻击态势报告》发布:应用层攻击形势依然严峻,海量移动设备成新一代肉鸡

    2019年上半年,阿里云安全团队平均每天帮助用户防御2500余次DDoS攻击,与2018年持平.目前阿里云承载着中国40%网站流量,为全球上百万客户提供基础安全防御.可以说,阿里云上的DDoS攻防态势 ...

  4. 2018上半年DDoS攻击报告:流量峰值达1.7Tbps

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 2018年上半年DDoS攻防仍如火如荼发展,以IoT设备为反射点的SSDP反射放大尚未平息,Memcached DDoS又异军突起,以最高可 ...

  5. 漫画告诉你什么是DDoS攻击?

    本文作者:魏杰 文章转载自:绿盟科技博客,原文标题:看ADS如何治愈DDoS伤痛 根据<2015 H1绿盟科技DDoS威胁报告>指出,如今大流量网络攻击正逐渐呈现增长趋势,前不久锤子科技的 ...

  6. 游戏行业DDoS攻击解决方案

    行业综述 根据全球游戏和全球移动互联网行业第三方分析机构Newzoo的数据显示:2017年上半年,中国以275亿美元的游戏市场收入超过美国和日本,成为全球榜首. 游戏行业的快速发展.高额的攻击利润.日 ...

  7. 阿里云:游戏行业DDoS攻击解决方案

    转自:http://www.gamelook.com.cn/2018/01/319420 根据全球游戏和全球移动互联网行业第三方分析机构Newzoo的数据显示:2017年上半年,中国以275亿美元的游 ...

  8. 解密DNSPOD应对DDoS攻击招式!

    最近,安全专家Incapsula在最新版<DDoS威胁环境报告>指出.现在实施DDoS攻击的人仅仅有两类:一类是专业网络黑客.而还有一类就是所谓的botter. 简言之,booter就是僵 ...

  9. 阿里云云盾抗下全球最大DDoS攻击(5亿次请求,95万QPS HTTPS CC攻击) ,阿里百万级QPS资源调度系统,一般的服务器qps多少? QPS/TPS/并发量/系统吞吐量

    阿里云云盾抗下全球最大DDoS攻击(5亿次请求,95万QPS HTTPS CC攻击) 作者:用户 来源:互联网 时间:2016-03-30 13:32:40 安全流量事件https互联网资源 摘要:  ...

随机推荐

  1. 极路由设置共享磁盘密码、跨网访问samba服务

    极路由插上移动硬盘后会自动建立samba服务器,但我们没法去配置哪些盘符需要密码,这样只要在同一个wifi下的电脑都能去访问这些东西了,比较弱智.另外我还想再公司中去读写这个移动硬盘. 设置密码 首先 ...

  2. 自己动手写shell命令之more

    unix下more命令的简单实现: #include <stdio.h> #define PAGELEN 24 #define LINELEN 512 int do_more(FILE * ...

  3. webstorm卡顿问题处理

    webstorm卡顿问题处理 学习了:http://blog.csdn.net/qq673318522/article/details/50583831 找到WebStorm.exe.vmoption ...

  4. [Gatsby] Install Gatsby and Scaffold a Blog

    In this lesson, you’ll install Gatsby and the plugins that give the default starter the ability to t ...

  5. 使用excel进行数据挖掘(6)---- 预測

    在配置环境后,能够使用excel进行数据挖掘. 环境配置问题可參阅: http://blog.csdn.net/xinxing__8185/article/details/46445435 例子 DM ...

  6. java中的system.out.println()和JSP中out.println()差别

    out.println()输出到client.     在out.println()中,out是response的实例.是以response为对象进行流输出的,即将内容输出到client.假设在JSP ...

  7. UI组件之TextView及其子类(一)TextView和EditText

    先来整理一下TexView,EditView的使用方法. Textview是最主要的组件.直接继承了View,也是众多组件的父类.所以了解她的属性会对学习其它组件非常有帮助. TextView的属性: ...

  8. php利用href进行页面传值的正确姿势

    首先在a.php中 <?php $a = "world"; echo "<a href='b.php?m=$a'>删除</a>"; ...

  9. [Codeforces 1051F] The Shortest Statement 解题报告(树+最短路)

    题目链接: https://codeforces.com/contest/1051/problem/F 题目大意: 给出一张$n$个点,$m$条边的带权无向图,多次询问,每次给出$u,v$,要求输出$ ...

  10. NPInter数据集的奇葩标号的出坑秘籍

    这篇恐怕是有始以来命名最无奈标题了.需要写一下攻略. 业内人士都熟知NPInter,但是该数据库一直以来访问受限.不过终于能访问得到数据集. 但是蛋疼的是2.0的数据库id的命名方法实在奇葩,想了很多 ...