Memcache UDP反射放大攻击实验

无耻的接受了p猫的py交易,自己也想实验下memcached这个放大攻击

0x01 前言

近日,一种利用Memcached缓存服务器来作为放大器的DRDOS攻击来势汹汹,多家安全机构检测到了这种反射放大攻击,其利用memcached协议,发送大量带有被害者IP地址的UDP数据包给放大器主机,然后放大器主机对伪造的IP地址源做出大量回应,形成分布式拒绝服务攻击,从而形成DRDoS反射。这里利用大佬们的文章,简单实验下攻击过程,因本人能力有限,望各位表哥勿喷。

参考5t4rk大佬的文章:

http://blog.csdn.net/microzone/article/details/79262549

本文仅作演示作用,不带有任何攻击行为

0x02 攻击原理

先来了解下相关的概念是什么意思

首先了解下什么是Memcached:

Memcached是一个自由开源的,高性能,分布式内存对象缓存系统。Memcached是以LiveJournal旗下Danga Interactive公司的Brad Fitzpatric为首开发的一款软件。现在已成为mixi、hatena、Facebook、Vox、LiveJournal等众多服务中提高Web应用扩展性的重要因素。Memcached是一种基于内存的key-value存储,用来存储小块的任意数据(字符串、对象)。这些数据可以是数据库调用、API调用或者是页面渲染的结果。Memcached简洁而强大。它的简洁设计便于快速开发,减轻开发难度,解决了大数据量缓存的很多问题。它的API兼容大部分流行的开发语言。本质上,它是一个简洁的key-value存储系统。一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。

Balabala~~,其实memcached作为一个缓存系统,缓解web程序对于数据库的访问,来达到加速的效果,具体效果如下图:

DDOS我们都知道,关于DRDOS原理:

DRDoS是英文“Distributed Reflection Denial of Service ”的缩写,中文意思是“分布式反射拒绝服务”。与DoS、DDoS不同,该方式靠的是发送大量伪造的带有被害者IP地址的数据包给攻击主机,然后攻击主机对IP地址源做出大量回应,形成拒绝服务攻击。

因为Memcached支持TCP和UDP种协议,所以可以使用2种协议上传攻击载荷,TCP因为是面向连接的,头部字段没有length所以可以直接发送数据,而UDP存在length字段且只占2个字节,每次只能发2**16=64K的数据,需要多次循环上传。

但是进行反射攻击载荷时时必须使用UDP发包,TCP基于3次握手如果源IP被伪造会停止通信,但是UDP因为面向无连接的,即使伪造IP也可以通信,服务器也无法验证源IP真实性,这个就很有意思了。

此次实验主要用到以下3个memcached命令,setgetquit

1) 第一个是上传有效载荷Memcached set 命令

Memcachedset 命令用于将 value(数据值) 存储在指定的 key(键) 中。

如果set的key已经存在,该命令可以更新该key所对应的原来的数据,也就是实现更新的作用。

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

set keyflags exptime bytes [noreply]

value

参数说明如下:

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

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

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

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

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

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

使用telnet ip port连接上memcached之后

2) 第二个反射有效载荷Memcached get 命令

Memcachedget 命令获取存储在 key(键) 中的 value(数据值) ,如果 key 不存在,则返回空。

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

get key

多个 key 使用空格隔开,如下:

get key1key2 key3

参数说明如下:

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

3) 退出会话Memcached quit

0x03攻击流程

要实现这种攻击至少需要三个条件:

1. 攻击者手里必须控制大量肉鸡机器,并且分布式在互联互通分布在互联上。

2. 攻击者随时可以通过代理或者控制程序同时向所有肉鸡发送大量攻击指令。

3. 所有肉鸡在接受指令后,同时大量并发,同时向受害者网络或者主机发起攻击行为。

DRDoS要完成一次反射放大攻击:

1. 攻击者,必须提前需要把攻击数据存放在所有的在线肉鸡或者反射服务器之上。

2. 攻击者,必须伪造IP源头。发送海量伪造IP来源的请求。当然这里的IP就是受害者的IP地址。

3. 反射服务器,必须可以反射数据,运行良好稳定。最好是请求数据少,返回数据成万倍增加。

如此不断循环,就可以大规模攻击其带宽网络,增加占用率和耗损目标机的硬件资源。

而此次memcached作为放大主机,在网络中数量庞大且大部分都存在无认证的现象,导致攻击者可以很容易的进行DRDOS攻击,根据shodan搜索结果,运行在端口11211的memcached主机有将近10W台暴露在公网中

0x04攻击复现

首先在192.168.1.123机器进行发包,发送memcached指令,在使用udp发送时指令前加上8字节标志位\x00\x00\x00\x00\x00\x01\x00\x00

发送16字节,返回了1918字节的数据,抓包看看

放大倍数:1918/16=119

现在可以使用set指令进行上传数据,指令后加上\r\n回车换行代替手动操作,

get用于获取value值,返回数据

如果上传的数据的有1M,返回时1M=2^20/20,大约放大5W倍,而且理论上最高可以达到6W倍。还有不知道为什么用scapy伪造IP后靶机收不到memcached发过来的udp包,折腾了很久,有知道的师傅请联系我。

0x05缓解措施

1. memcache的用户建议将服务放置于可信域内,有外网时不要监听 0.0.0.0,有特殊需求可以设置acl或者添加安全组。

2. 为预防机器器扫描和ssrf等攻击,修改memcache默认监听端口。

3. 升级到最新版本的memcache,并且使用SASL设置密码来进行权限控制。

原文发布于微信公众号 - ChaMd5安全团队(chamd5sec)

原文发表时间:2018-03-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java学习

JavaEE就业学习路线(给初学者以及自学者一个学习方向)

第一节java入门 1-Java 背景介绍 2-Java 入门程序的编写 3-环境配置 4-基本概念介绍 5-类型转换 6-开发工具使用 第二节java基础 1...

3467
来自专栏角落的白板报

【52ABP实战教程】0.1-- Devops如何用VSTS持续集成到Github仓库!

“ 工欲善其事,必先利其器。磨刀不误砍柴工!” 管理工具会VSTS。 代码管理会用GITHUB。 服务器会用Azure。 所有的东西都是利用现有服...

2899
来自专栏漏斗社区

黑客游戏| Owasp juice shop (三)

0x01 前言 继续上一篇的内容,往下闯关。想了解如何搭建的同学可参考第一篇文章。 看第一篇:黑客游戏| Owasp juice shop (一) 0x0...

3806
来自专栏程序员的知识天地

这一堆初中生写的类库、框架,让一群中年程序员坐不住了!

前不久在V2EX上看到一个帖子,主题是「一堆初中生写的类库、框架」,原本猿妹以为只是个标题党不以为意。点进去该博主的博客主页发现,博主确实是一名初中生,而且他的...

1323
来自专栏王清培的专栏

记5.28大促压测的性能优化—线程池相关问题

目录: 1.环境介绍 2.症状 3.诊断 4.结论 5.解决 6.对比java实现 废话就不多说了,本文分享下博主在5.28大促压测期间解决的一个性能问题,觉得...

2377
来自专栏程序人生

深入了解IAM和访问控制

本文为InfoQ中文站特供稿件,首发地址为:http://www.infoq.com/cn/articles/aws-iam-dive-in。 访问控制,换句话...

5147
来自专栏北京马哥教育

性能调优攻略

关于性能优化这是一个比较大的话题,在《由12306.cn谈谈网站性能技术》中我从业务和设计上说过一些可用的技术以及那些技术的优缺点,今天,想从一些技术细节上谈...

3854
来自专栏鹅厂网事

高性能网关设备及服务实践

针对海量的网络流量,转发性能是我们最关键的一个方面,那构建高性能的后台服务器有哪些关键的技术和需要注意的地方。

8098
来自专栏Hadoop实操

如何在CDH中安装和使用StreamSets

StreamSets由Informatica前首席产品官Girish Pancha和Cloudera前开发团队负责人Arvind Prabhakar于2014年...

6.8K10
来自专栏角落的白板报

【52ABP实战教程】0.1-- Devops如何用VSTS持续集成到Github仓库!

“ 工欲善其事,必先利其器。磨刀不误砍柴工!” 管理工具会VSTS。 代码管理会用GITHUB。 服务器会用Azure。 所有的东西都是利用现有服...

3528

扫码关注云+社区

领取腾讯云代金券