在互联网交换中心检测反射放大 DDoS 攻击
工作来源
DIMVA 2021
工作背景
DDoS 仍然是最有效的攻击手段之一,即使是 Twitter、Netflix 等防护周密的公司也会被攻击所影响。
- 针对 GitHub 发起的 1.3Tbps 的 DDoS 攻击是利用 Memcached 反射放大攻击完成的。
- 针对 AWS 发起的 2.3Tbps 的 DDoS 攻击是利用 CLDAP 反射放大攻击完成的。
反射流量的攻击流如下所示:
IXP 是高密度对等互连中心,是不同自治系统(AS)的物理流量交换点,提供自治系统间对等互联和互联网连接服务。IXP 一般至少连接三个自治系统,一些较大的 IXP 能够连接 700 余个自治系统,所承载的流量和全球最大规模的 ISP 差不多。IXP是互联网核心基础设施,全球共有 500 多个 IXP。
但常见的 DDoS 检测服务都不是为 IXP 而设计的,而是侧重于从内侧看流量。通过大型互联网交换点(IXP)观测在野反射放大 DDoS 攻击也是一个新视角,包括攻击发生频率、来源分布、持续时间、数量、目标等。
工作设计
构建的系统名为 IXmon,系统架构如下所示:
针对流向特定自治系统的流量,检测反射放大DDoS攻击需要关注:① 可用于反射放大攻击的特定端口的 UDP 流量;② 流向该自治系统的流量是否快速增加;③ 异常流量是否分布在多个源自治系统。
根据反射放大的特点,跟踪与反射放大服务相关的特定源端口产生的 UDP 流量:
聚合流量统计
首先需要把流经 IXP 的网络流量抽象表示出来,使用 NetFlow 也同样兼容其他表示方法。
用于描述一个网络流,packets 和 bytes 表示数据包的数量和总字节数。
研究聚焦反射放大攻击,需要过滤只保留特定源端口的UDP流量用于分析。
在固定的时间间隔 ∆t(默认为一分钟),使用 RouteViews 数据为 IP 地址映射自治系统(AS)可得到:
在特定的时间间隔 ∆t,聚合相同源端口和目的 ASN 的所有流,计算字节总数:
尽管在公式中没有体现,但实际上会跟踪每个源ASN对流量的贡献。
时序异常检测
使用指数加权移动平均值和方差组成的时间序列模型:
Incremental calculation of weighted mean and variance, 2009. https://fanf2.user.srcf.net/hermes/doc/antiforgery/stats.pdf.
计算异常值 δk(t) 描述流量 bk(t) 偏离移动平均线的程度,δk(t) 越大,当前流量与预期的偏差越大。
异常的阈值设置为默认0.5,超过即为异常。
注:检测到异常时模型更新即停止,直到流量回到正常水平再继续更新,只在正常流量情况下更新平均值和标准差,这样的方式也能够帮助确定异常流量的起止时间。
攻击检测
为了评估真实的攻击,额外指定流量不能低于 5Mbps且异常流量分布在不同的源自治系统(Volume Entropy 的默认阈值为 0.4,计算方式可见原文,不加以赘述)。
在野攻击分析
基于 FastNetMon 用 C++ 编写了 IXmon 的流解析和聚合模块,用 Python 开发了时序异常检测和反射放大 DDoS 攻击检测模块。
FastNetMon
https://github.com/pavel-odintsov/fastnetmon
工作准备
在 Southern Crossroads(SoX / AS 10490)上部署 IXmon,该节点为美国东南部的 20 多个研究和教育网络联网服务。根据 CAIDA 的 AS-to-AS 关系公开数据,SoX 与其他 9 个大型自治系统相连,并且关联 5 个上游服务提供商。
SoX 还为各种小型自治系统提供上游服务:
在 2018 年 4 月到 2020 年 4 月间,一共收集了 634 天流量信息,所有流量中与 5212 个不同的自治系统有关。
工作评估
IXmon 检测的三种反射放大 DDoS 攻击的快照如下所示。例如(a)所示,通过源端口 389 发送到 Anon.2371 的反射放大攻击峰值流量达到了 210Mbps。攻击前后这些自治系统都几乎没有流量往来,突然间产生大量流量是很异常的。
流量与持续时间
在野反射放大 DDoS 攻击的总体分布和特征没有公开的数据分析。在部署的两年内,IXmon 一共检测到 987 次攻击。大概 80% 的攻击持续时间小于 10 分钟,峰值流量中位数低于 20Mbps,只有 8% 的攻击峰值会超过 100Mbps,极少数超过 1Gbps(观测到的最大攻击峰值为 1.5Gbps)。
滥用服务
源端口的分布如下所示。CLDAP(389 端口)似乎是反射放大攻击最常滥用的服务,其次是 DNS(53 端口)和 NTP(123 端口)。
每个端口峰值流量分布如下所示(红线表示中位数,红色方块表示平均数),有一些基于 CLDAP 服务的攻击峰值超过了 1Gbps。
多向量攻击
通过攻击时间窗口重合归并发现多向量攻击。在 987 次攻击中,有 36 次攻击者动用了多向量,最多涉及 4 个服务。如下所示,攻击者同时利用了 NTP(端口 123)和 CLDAP(端口 389)来攻击 ASAnon.2354。
反射源分布
每次攻击来源自治系统的数量分布如下所示。中位数为 40,至少有一半的攻击都分布在许多不同的网络中。
如下所示,是 TOP 10 源自治系统贡献攻击流量的分布。来源于每个自治系统的峰值流量中位数相对有限,通常约为 1Mbps 左右。
下图显示了地理位置分布,由于观测位置所以目的自治系统都集中在美国东南部。
攻击缓解
主要分析运营商是否通过操作 BGP 来进行攻击缓解。主要的缓解措施如下所示:
- 黑洞:将所有流向受害自治系统的流量(合法流量与恶意流量)重定向到“黑洞”,最常用于黑洞的下一跳 IP 是 192.0.2.1。
- 流量重路由:所有流向受害自治系统的流量重定向到第三方服务,如 DDoS 流量清洗中心,第三方服务提供商再将合法流量转发回来。第三方服务提供商需要临时通过发布 BGP 公告获取受害者目标 IP 前缀的所有权,本质上是许可的 BGP 劫持。
利用来自 RouteViews 的路由信息,在攻击发生前后对受害者相关的 BGP 公告进行分析。
- 黑洞:检查下一条为 192.0.2.1 和社区值设置为 666 的 BGP 更新。
- 流量重路由:检查在 BGP 更新中的网络所有权变更(使用 PyBGPStream)。
最终发现在 3 次攻击期间存在 56 个 BGP 公告,将流量重定向到已知的流量清洗服务提供商。这些缓解措施都与针对 AS Anon.2354 的攻击有关,流量被重新路由到 AS Anon.1890。
如下显示了一个反射放大攻击的示例,攻击持续了大约 45 分钟后被重路由到清洗中心。
使用缓解措施的比例之低令人惊讶,目前似乎只对长时间的攻击进行缓解。可能是目前的 DDoS 攻击在造成明显的服务中断时才会开始执行缓解措施,但降低检测延迟可能会有很大帮助。
目前的黑洞缓解措施是一种粗放的策略,会将所有的合法流量都清洗掉。而依赖 IXP 与 ISP 配合可以使黑洞缓解措施更加精细,将特定自治系统封禁。
误伤被封禁的非反射放大攻击流量如下所示,就是受到缓解策略影响的“附加损失”。CLDAP、SunRPC、Memcached 和 Chargen 一般很少跨自治系统,完全阻止影响很小。但对 NTP 和 DNS 来说,影响就比较大了。只针对特定自治系统进行处理,可以控制影响范围。
工作思考
IXP 在国内来说可能相对陌生一些,但实际上已经变成了互联网中极其重要的基础设施。一直以来,我国主要依靠骨干直联点与传统交换中心(Network Access Point, NAP)交换骨干互联单位网间流量。工信部于 2012 年确定了包括骨干直联、交换中心在内的“全方位、立体化”的网间互联目标架构。2019 年我国首个国家新型互联网交换中心(Internet Exchange Point, IXP)试点于乌镇正式揭牌,而国家(杭州)新型互联网交换中心的运营主体——浙江省新型互联网交换中心有限责任公司于 2020 年 6 月正式成立。
这篇工作是一个检测和测量分析相结合的工作,我个人总是偏爱站在更大的视角下来看威胁的文章,这样能让我们跳出个人固化的认知,有更能让我们了解威胁实际的模样。反射放大 DDoS 攻击的相关文章近年来也比较多,这个工作中的代码已经开源提供了,感兴趣的可以学习一下。
IXmon
https://github.com/perdisci/IXmon
