深度剖析 Memcached 超大型DRDoS攻击

2018 年 3 月 5 日 雷锋网 绿盟科技电信云堤


文 | 绿盟科技&电信云堤

来自雷锋网(leiphone-sz)的报道

雷锋网编者按:近日,国内外多家安全公司和机构接连发布了针对 Memcached 超级DRDoS(Distributed Reflection Denial of Service)攻击的预警,引发各方关注。雷锋网此前也曾就其对 GitHub 发起的攻击进行过报道,当时攻击的最大峰值流量达到了惊人的 1.35T。

要知道,在2月27号之前,Memcached的反射攻击事件流量范围不过几百兆到500G。只有短短几天,攻击峰值的历史纪录就迅速被翻倍刷新,并且攻击发生的频率从一天十几次到几百次,呈现爆发式增长。

目前,Memcached分布情况如何?黑客是如何发起攻击的?应该如何检查和预防?

以下为绿盟科技&电信云堤联合投稿,雷锋网编辑。

1


事件回顾


据监控数据显示,从本周一至周五(2月26日至3月2日 06:00)短短5天内,全球就发生了 79 起利用 Memcached 协议的反射放大攻击。日攻击总流量最高达到 419TBytes。

 ▲Memcached反射放大攻击日攻击次数



▲Memcached反射放大攻击日攻击总流量

其中,针对我国境内的 Memcached 反射放大攻击就有68次,江苏、浙江两省被攻击频繁。针对我国境内的攻击,单次攻击最高攻击峰值达 505Gbps。攻击持续时间最长的一次发生在3月1日,持续1.2小时,总攻击流量达103.8TBytes。

▲中国各省份地区Memcached反射放大攻击次数

从影响范围来看,所有互联网的业务都可能成为Memcached DRDoS的攻击对象。一方面带宽或业务遭受超大流量的攻击,导致出口带宽完全被占满,正常业务无法访问;另一方面企业内部的Memcached系统可能被不法分子利用成为攻击帮凶。

2


攻击分析


2.1 什么是Memcached?


Memcached是一个高性能的开源分布式内存对象缓存系统,主要用于提高Web应用的扩展性,能够有效解决大数据缓存的很多问题,在全球范围内都有广泛使用。Memcached基于内存的key-value存储小块数据,并使用该数据完成数据库调用、API调用或页面渲染等。攻击者正是利用 key-value 这项功能构造了大流量的Memcached反射攻击。

2.2 Memcached分布情况

最新统计显示,全球总共有3790个Memcached服务器被利用参与到这些Memcached反射放大攻击。这些被利用反射源遍布于全球96个国家或地区范围内。其中,美国就占了全球的1/4。

分布在中国地区的被利用的Memcached服务器位列第二位,占比12.7%。在中国各省份占比如下所示,广东、北京、浙江为TOP3。

据绿盟科技威胁情报中心(NSFOCUS Network Threat Intelligence,简称NTI)的统计结果显示,全球范围内存在被利用风险的Memcached服务器为104,506台。分布情况如下: 

从地理分布来看,美国可被利用的Memcached服务器最多,其次是中国。

这些活跃的Memcached反射器为构造超级DRDoS攻击提供了有力的先决条件。如果不及时修复治理,预计基于Memcached反射攻击的攻击事件会继续增加,后果不敢想象。

2.3 Memcached如何形成DRDoS攻击?

Memcached反射攻击的构造过程分为如下3步;

1. 收集反射器IP

通过NTI/Shodan等情报引擎找到开放的Memcached系统,获取系统IP;

2. 配置反射器

利用开放的Memcached系统作为反射器,并修改key-value配置实现较大的存储容量,为构造反射放大攻击进行准备;

3. 发起反射攻击

攻击者将自身IP伪造成攻击的目标地址,并向Memcached反射器发送请求读取Memcached在key-value中存储的信息。Memcached在收到请求后向伪造的虚假源IP进行回复,从而形成反射。

▲Memcached反射攻击示意图

当大量Memcached被同时利用,并用同一个伪造源IP进行回复,就轻而易举地形成了针对这个伪造源(受害者)的大流量DRDoS攻击。

2.4 Memcached的攻击特征

DRDoS(Distributed Reflective Denial-of-Service)是DDoS攻击分类中的一种。

此前各类安全厂商监测到的DRDoS攻击主要是SSDP反射、DNS反射、NTP反射等。下表(引自US-Cert)详细列举了各类反射攻击的放大倍数。

仅从放大倍数来看,Memcached反射攻击的危害程度远远高于其他反射攻击类型,US-Cert提供的数据显示它能够实现51,000倍的放大效果。

与其他反射攻击相比,Memcached如何实现这么多倍的放大效果呢?其中的重要原因就是Memcached的key-value功能。前文提到key-value的作用是决定存储容量的大小,正常情况下key-value的值通常不超过几千字节。当Memcached被攻击者利用作为反射器时,key-value的值经过修改可以达到100万字节以上。

攻击过程:

第一步,通过命令修改Memcached上的key-value参数,以提升放大倍数。

send = "set t 0 900 1048501" + "\r\n" + ‘a’ * 1048501 + "\r\n"

socket.sendall(send)

经验证,key-value的最大值为1048501。

第二步通过get命令读取Memcached的存储信息,并反射到目标IP。

get="\x00\x00\x00\x00\x00\x01\x00\x00get t\r\n"

socket.sendto(get, (host, 11211))

形成的攻击报文如下: 

触发Memcached反射攻击的请求报文最小为15字节,包含为8字节(RFC规定字段)+3字节 (get)+1(空格)+最小为1字节(键的名称 )+2字节 (\r\n),而返回的请求数据达到105万字节,理论上可放大到接近7万倍。如此强悍的放大攻击,与其他各类DRDoS攻击形成断崖式的差距对比。

3


Memcached攻击防护加固建议


3.1 Memcached系统自查建议


攻击的形成过程为我们提供了一个很好的预警思路,安全产品可针对Memcached的key-value配置进行检测,在Memcached系统被利用成为攻击源之前就进行拦截。检测流程如下:

(1)检测目的端口为11211的TCP或UDP报文(确保是Memcached服务器);

(2)检测报文是否为set命令(set命令格式参见附录),如果是则执行(3),否则结束检测;

(3)检测set命令后面的bytes字段值(如下图中标注的1048501),是否超过设定的阈值,如果是,则可以怀疑该报文存在异常;

(4)检测到该类异常控制报文后,可有如下两种处理方式:

a.告警并监控。为了防止被误杀,建议同时监控该Memcached服务器后面的流量变化来进一步判断该服务器是否被用做了反射器。

b. 直接丢弃。如果有足够的证据表明该记录是恶意添加的,直接丢弃可以保证服务器不被当做反射器。

自查举例:假设下图是公网的一台Memcached服务器上获取的数据。

通常情况下,多数value的大小都在64K以内,而最后一条的达到了将近1M,与其他记录有很明显的差别,基本上可以判断该记录存在问题,该服务器可能已经被利用。

3.2 Memcached攻击流量清洗

面对如此大规模、大范围的DDoS攻击威胁,所有网络安全节点都应该加强防范,从攻击防护和外发清洗两方面入手,充分保障基础设施和业务流量的安全。针对此攻击,我们提供如下防护建议:

·运营商。

运营商及IDC处于网络上游,拥有强大的带宽资源,是攻击最直接的受害者,也是防护的第一道屏障。运营商能够灵活控制路由策略和防护策略进行快速过滤。

1)在边界配置UDP访问控制规则,将源端口为11211的报文进行阻断或限速;

2)在边界配置BGP FlowSpec策略,对源端口为11211的UDP流量进行阻断或限速;

3)利用DDoS防护设备将源端口为11211的UDP流量进行阻断或限速。

·企业用户

企业用户通常贴近服务终端,熟悉掌握自身业务流量特点,策略配置更加明确,灵活性强。

1)大型企业客户可以采用和运营商相同的策略,在出口边界设备配置UDP访问控制规则或BGP FlowSpec策略对源端口为11211的UDP流量进行阻断或限速;

2)不具备出口路由配置权限的企业客户,可以在抗DDoS等设备上配置防护策略,对源端口为11211的UDP流量进行阻断或限速;

3)考虑企业出口带宽可能被打满的情况,企业客户可通过运营商或云清洗服务在上游执行清洗策略,策略内容同样是对源端口为11211的UDP流量进行阻断或限速。

3.3 Memcached系统防护加固

对于正在使用Memcached系统的用户,为了避免被攻击者利用,使Memcached成为攻击源,对外发起攻击流量,影响自身系统性能,我们提供如下几点建议。

1)在边界网络设备上配置URPF策略,过滤外发的虚假源IP报文;

2)在Memcached系统前进行深度检测,直接过滤报文特征中set key 0 900 64000的第三个字段过大的数据包,这样做可以在Memcached系统被修改利用成为攻击源前进行拦截;

3)对Memcached服务进行安全检查,查看Memcached服务是否监听UDP端口。查找Memcached进程,查看是否有-l参数,如果没有则默认为0.0.0.0。若Memcached服务不需要监听UDP,禁用UDP。详情参考Memcached官方文档:

https://github.com/memcached/memcached/wiki/ConfiguringServer#udp

附录

set 命令的基本语法格式如下:

set key flags exptime bytes [noreply]

value

参数说明如下:

key:键值 key-value 结构中的 key,用于查找缓存值。

flags:包括键值对的整型参数,客户机使用它存储关于键值对的额外信息 。

exptime:在缓存中保存键值对的时间长度(以秒为单位,0 表示永远)

bytes:在缓存中存储的字节数

noreply(可选): 该参数告知服务器不需要返回数据

value:存储的值(始终位于第二行)(可直接理解为key-value结构中的value)

此文为绿盟科技&电信云堤联合投稿,雷锋网编辑。

- END -


  ◆  

推荐阅读




三大模块,五大应用,手把手快速入门NLP;海外博士讲师,丰富项目经验;算法+实践,搭配典型行业应用;随到随学,专业社群,讲师在线答疑。详情点戳阅读原文链接或长按识别上方二维码~

登录查看更多
0

相关内容

Memcached 是一套分布式的高速缓存系统,当初是 Danga Interactive 为了LiveJournal 所发展的,但目前被许多软件所使用。这是一套开放源代码软件,以 BSD license 授权释出。
【ACL2020】多模态信息抽取,365页ppt
专知会员服务
143+阅读 · 2020年7月6日
专知会员服务
183+阅读 · 2020年6月21日
最新《深度多模态数据分析》综述论文,26页pdf
专知会员服务
298+阅读 · 2020年6月16日
【ACL2020-Facebook AI】大规模无监督跨语言表示学习
专知会员服务
33+阅读 · 2020年4月5日
广东疾控中心《新型冠状病毒感染防护》,65页pdf
专知会员服务
18+阅读 · 2020年1月26日
【数字化】制造业数字化转型的实战路线图
产业智能官
39+阅读 · 2019年9月10日
2018年氢燃料电池行业研究报告
行业研究报告
5+阅读 · 2019年5月6日
基于Web页面验证码机制漏洞的检测
FreeBuf
7+阅读 · 2019年3月15日
被动DNS,一个被忽视的安全利器
运维帮
11+阅读 · 2019年3月8日
【工业智能】风机齿轮箱故障诊断 — 基于振动信号
已删除
AI科技评论
4+阅读 · 2018年8月12日
智慧停车行业深度研究与分析报告
智能交通技术
4+阅读 · 2018年3月20日
2017企业阵亡最全名单公布
小饭桌
6+阅读 · 2018年2月28日
Optimization for deep learning: theory and algorithms
Arxiv
104+阅读 · 2019年12月19日
Arxiv
6+阅读 · 2018年4月4日
VIP会员
相关资讯
【数字化】制造业数字化转型的实战路线图
产业智能官
39+阅读 · 2019年9月10日
2018年氢燃料电池行业研究报告
行业研究报告
5+阅读 · 2019年5月6日
基于Web页面验证码机制漏洞的检测
FreeBuf
7+阅读 · 2019年3月15日
被动DNS,一个被忽视的安全利器
运维帮
11+阅读 · 2019年3月8日
【工业智能】风机齿轮箱故障诊断 — 基于振动信号
已删除
AI科技评论
4+阅读 · 2018年8月12日
智慧停车行业深度研究与分析报告
智能交通技术
4+阅读 · 2018年3月20日
2017企业阵亡最全名单公布
小饭桌
6+阅读 · 2018年2月28日
Top
微信扫码咨询专知VIP会员