Memcached DRDoS攻击趋势

2018-06-07 15:48:4321980人阅读

1. 概述

基于Memcached服务的反射攻击,由于其 5万倍的反射比例,从一开始出现就成为DDoS攻击界的“新宠”。 2018年2月28日 , GitHub遭受了1.35T 的Memcached DRDoS攻击。目前基于安全专家以及相关机构的努力,可利用的反射源已经逐步减少。攻击者也逐步更新自己的攻击手段躲避审查,本文主要介绍基于Memcached的DDoS攻击趋势以及一些新的Memcached DRDoS的攻击手法。

2. 攻击趋势

从2月25号开始,Memcached DRDoS攻击数量逐渐增多,3月初,Memcached DRDoS攻击只占总体攻击的5%,三月中旬以后,逐渐超过10%,现在稳定在10%-20%之间波动,最近一周增长到30%。

mem16.png

3. 放大的魔力

● 5万倍

CF在2月份发布文章称,检测到发送15字节的包,收到750k字节的包。从而计算出反射倍数是51200倍。

mem2.png

CF提出的5万倍仅仅是按响应数据与请求数据的比例计算得到的,但DDoS攻击消耗的是网络带宽资源,所以真实的放大倍数必须考虑数据包的实际网络数据流长度。

在IEEE 802.3注1中,对以太网数据包有明确的规定:

mem3.png

根据802.3规范,一个数据包在网络上传播,占用的长度范围是84~1542。上述发送15字节,实际网络上数据包占有应为84字节,接收1400字节,实际网络上数据包占有应为1466字节。因为一个完整UDP的包,发送到网络中的报文实际长度会包含协议头,包括14(以太头)+20(IP头)+8(UDP头)+4(FCS)+ 20(侦间隙)= 66字节。

按照CF的检测到的数据重新计算  :

750K产生的网络流量达到:750 * 1024 / 1400 * 1466 = 804205.7

实际反射倍数则是:804205/84 = 9573.9 倍。

可见计算方法不同,放大倍数差距如此之大,从原来的5万倍变为不到1万倍。但不管怎么样的差距,都不会影响Memcached反射攻击成为DRDoS的TOP 1。

当然事实上,即使如何严谨的计算放大倍数,此类攻击还是有进一步放大的案例。

● 增大反射倍数

Memcached 的value默认设置的最大长度是1Mbyte。单个get a请求后可实现的反射倍数达到: 1024 * 1024 / 1400 * 1466/84 = 13071.5倍。

虽然直接调大VALUE的值放大倍数还不足2万倍,但通过一些攻击技巧还是能实现反射倍数达到十几万倍。

我们最近捕获到的攻击,就使用了一种技巧实现了这样的放大效果。

mem4.png

上图所述的攻击者在一个请求中,使用了多次查询,通过在一个UDP包中执行多条get指令,Memcached服务器返回大量的多条数据包,由于UDP包本身的长度要占用66字节,通过这样的节省UDP包发送条数的手法,达到比之前单条发送要放大更多倍的效果。

上述攻击实例中,攻击者使用70个Memcached的GET指令拼装到一个UDP包中,发送包总长度844字节(Wireshark没有计算侦间隙和FCS,所以是820+24=844)。

mem5.png

该指令获取的VALUE值的长度达到304800:

mem6.png

实现反射倍数:304800 * 70 / 1400 * 1466 / 844 = 26471.4倍。

理论上这不是最高的放大倍数。

当GET指令的个数增加时,反射比例还会增大,加上优化payload,最终能实现十几万倍的反射效果:

1) 将get VcoOw\r\n  替换为get a\r\n ,在一个UDP包中构造更多的请求指令,考虑MTU 1500,IP头20,UDP头8,Memcache协议头8,则指令个数可达:(1500 – 20 - 8 - 8)/7= 209.14,安全计算取205个指令。

2) 发送包长: 66+8+7*205=1509字节,

3)  每个value值为1024*1024字节,

则总体反射倍数:1024 * 1024 * 205 / 1400 * 1466 / 1509 = 149166.2倍 !

实际的环境中,反射比例要小的多。一方面,是由于Memcached服务器的性能决定,另一方面UDP存在一定比例的丢包,甚至还有空响应的。

4. 放大的意外

在对捕获的攻击数据分析中,有一定比例的返回包只有一个END数据,

mem7.png

这是由于GET 指令的KEY不存在。一个820字节的发送包能产生70个60字节UDP小包。

反射倍数:(84 * 70)/844 = 6.97倍。

mem8.png

虽然按带宽计算的反射比例较低,但由于路由设备以及服务器对小包处理性能较弱,因而大量的小包也会对网络也会产生较大的影响。

针对部分采样数据的统计,END小包与大包比例如下:

mem9.png

5. 反射源分析

对采样的反射源产生的攻击包进行聚类汇总。中国占比最高,美国,俄罗斯紧随其后。

mem10.png

国内分布的状况,杭州的反射源产生的攻击包最多。抑制反射源滥用网络,需要IDC、云平台等积极处理。

mem11.png

抽样分析反射源使用的Memcache版本,1.4.15使用占比最多:

mem12.png

对攻击者使用Memcached DRDoS的攻击目标进行分析,宿迁地区遭受的攻击最多:

mem13.png

6. 攻击手法对比

之前曝出的攻击POC C 版本注2和Python版本注3,其中C版本主要使用了Memcached服务的stats命令(10-20倍)。Python版本使用了Memcached服务的set和get命令

memcpy((void *)udph + sizeof(struct   udphdr), "\x00\x01\x00\x00\x00\x01\x00\x00stats\r\n", 15);

 

dataset = "set injected 0 3600 ", len(data)+1, "\r\n", data, "\r\n get injected\r\n"

 

而我们这次捕获到的变种使用了多次指令组合到一个UDP包中发送。

Payload如下:

Data1 =   "\x00\x00\x00\x00\x00\x01\x00\x00stats\r\nstats\r\nstats\r\nstats\r\nstats\r\nstats\r\nstats\r\nstats\r\nstats\r\nstats\r\nstats\r\nstats\r\nstats\r\nstats\r\nstats\r\nstats\r\n…"

Data2 = "\x00\x00\x00\x00\x00\x01\x00\x00get   Vco0W\r\nget Vco0W\r\nget Vco0W\r\nget Vco0W\r\nget Vco0W\r\nget Vco0W\r\nget   Vco0W\r\nget Vco0W\r\nget Vco0W\r\nget Vco0W\r\nget Vco0W\r\n…"

 

根据攻击者使用的反射资源,SET设置的key和value参数的相似性进行分类。

攻击者更多采用get XXX 相关的指令实现更大的反射倍数。

团体

payload

比例

团体1

gets Vco0W

6%

团体1

get Vco0W; get Vco0W; …

72%

团体2

get djt dht

11%

团体3

get foo

1%

团体4

get qtcfg

1%

团体5

gets a b c d e f… z

1%

团体 6

stats items

3%

团体6

stats

5%

 

7. 防范

1) 在Memcached服务器或者其上联的网络设备上配置防火墙策略,仅允许授权的业务IP地址访问Memcached服务器,拦截非法的访问。

2) 更改Memcached服务的监听端口为11211之外的其他大端口,避免针对默认端口的恶意利用。

3) 除非特殊必要,不开启Memcached UDP服务,最新版本的Memcached已经默认不开启UDP服务。

4) 升级到最新的Memcached软件版本,配置启用SASL认证等权限控制策略(在编译安装Memcached程序时添加-enable-sasl选项,并且在启动Memcached服务程序时添加-S参数,启用SASL认证机制以提升Memcached的安全性)。

UDP协议以其无阻塞、收发快为开发者所喜欢,较TCP更灵活,对一些实时交互的场景更具有优势,相信越来越多的服务会选择UDP协议。而DRDoS攻击正是利用UDP协议这一松散快速响应的特性,一次次的瞄准更大范围的开放服务来实施攻击,让目标防不胜防。

Memcached反射攻击可高达十几万倍的反射能力,不仅对攻击目标造成极大的损害,也会大大增加反射源的负载而影响自有业务运行。黑客无处不在,防御仍需专业,预防则更依赖服务提供者、IDC和云平台等多方面加强安全意识。

注释:

注1: 网络侦间隙 https://en.wikipedia.org/wiki/Ethernet_frame

注2: POC C 版本 https://pastebin.com/ziueinae

注3: POC Python版本 https://github.com/649/Memcrashed-DDoS-Exploit


0
现金券
0
兑换券
立即领取
领取成功