基于Memcached的DRDos的研究与攻击复现

Posted 菜鸟安全笔记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于Memcached的DRDos的研究与攻击复现相关的知识,希望对你有一定的参考价值。

【声明】本文仅作学习研究之用,欢迎一起探讨,请勿发动恶意攻击,否则后果自负!

当前浏览器不支持播放音乐或语音,请在微信或其他浏览器中播放 基于Memcached的DRDos的研究与攻击复现

核弹级DDoS攻击肆掠全球

进入3月,春天到了,万物复苏,又到了动物交配的季节!咦!不对不对,我要说什么来着。。O(∩_∩)O哈哈~皮这么一下确实很好玩哦 (^▽^)) 下面咱们说说正事,自从进入三月份啊,爆炸性的新闻就不断啊!先是阿里云爆出成功监控和防御一起流量高达758.6Gbps的Memcached DDoS反射攻击

基于Memcached的DRDos的研究与攻击复现
基于Memcached的DRDos的研究与攻击复现
基于Memcached的DRDos的研究与攻击复现

接着全球最大的同性交友网站GayhubGithub也宣称自己遭遇有史以来最大的DDoS攻击,在2月28日的17:21-17:26之间,GitHub网站无法正常访问。从17:26-17:30,网站只能间歇性的可以访问。简单说,这10分钟该网站已处于瘫痪状态。二者遭遇的新型DDos皆是利用Memcache作为DRDoS放大器,这种反射性DDos能够利用很少的计算资源反射出巨大的流量,破坏力强大
基于Memcached的DRDos的研究与攻击复现
基于Memcached的DRDos的研究与攻击复现

通过Memcached型反射型DDoS攻击的抓包样本,从UDP协议+源端口11211的特征,可以快速分辨这种攻击类型。

什么是DRDos?

————来自百度

什么是Memcached?

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。

————来自百度

简单点理解呢,就是它是一个简洁的key-value存储系统。一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。那么如何利用Memcached来DRDos呢?请看下面。

Memcached的放大攻击原理


基于Memcached的DRDos的研究与攻击复现

Memcached有如下一些命令和操作:

Memcached 存储命令
Memcached set 命令
Memcached add 命令
Memcached replace 命令
Memcached append 命令
Memcached prepend 命令
Memcached CAS 命令
Memcached 查找命令
Memcached get 命令
Memcached gets 命令
Memcached delete 命令
Memcached incr/decr 命令
Memcached 统计命令
Memcached stats 命令
Memcached stats items 命令
Memcached stats slabs 命令
Memcached stats sizes 命令
Memcached flush_all 命令


这里我们主要用到的是这四个:setgetdeletequit
set用于将攻击载荷上传到Memcached服务器,get用于UDP包请求我们存的攻击载荷,delete用于删除攻击载荷,quit则用来退出服务。

攻击复现

获取Memcached主机信息

通过shodan或者Zoomeye我们能够获取Memcached的主机信息情况,或者你有精力的话也可以扫一扫全网啊~看一看有木有11211开放的主机存在。。这里我直接通过脚本拿到了1w IP(多了不敢拿啊。。),但是其中可以用来发起攻击的估计只有很少一部分吧(因为自从攻击事件发生后很多服务器都做了相应的防护策略。。)。
基于Memcached的DRDos的研究与攻击复现大约有50多万太主机运行着Memcached服务

获取IP的脚本很简单,我就不发了(不敢发啊~),有兴趣的童鞋可以自己写一写(搜一搜)。。

基于Memcached的DRDos的研究与攻击复现

上传攻击载荷

这里我们使用python脚本,利用socket来发起一个TCP连接,上传一个1M大小(Memcached最大支持1M的键值数据)的载荷。载荷上传成功后Memcached服务器会回显STORED消息,因为我们可以利用这个来确定我们的载荷是否上传成功。同样我们也可以使用telnet连接Memcached服务器,直接get xxx(你上传的key的名称)来验证载荷是否成功上传。
基于Memcached的DRDos的研究与攻击复现

上传的脚本很简单,我就不发了(不敢发啊~),有兴趣的童鞋可以自己写一写(搜一搜)。。

发送伪造IP的UDP包

基于Memcached的DRDos的研究与攻击复现

发送的脚本很简单,我就不发了(不敢发啊~),有兴趣的童鞋可以自己写一写(搜一搜)。。

监听查看返回结果

基于Memcached的DRDos的研究与攻击复现

最后删除载荷并退出(保持好习惯~)

防御措施

如何避免被利用成为Memcached反射端

建议对运行的Memccached服务进行安全检查和加固,防止被黑客利用发起DDoS攻击造成不必要的带宽流量;
如果您的Memcached版本低于1.5.6,且不需要监听UDP。您可以重新启动Memcached加入 -U 0启动参数,例如:Memcached -U 0,禁止监听在udp协议上

如何防护Memcached DDoS反射攻击

建议优化业务架构,将业务分散到多个IP上,或者购买网络产品服务商提供的安防服务。

Tips

在看大佬们的资料的时候发现十分好玩的一个东西,就是利用Memcached的开放服务特性,我们可以利用Memcached服务器来存储我们的一些不是那么重要的东西啊,毕竟这存储资源free啊,不好好利用多么浪费啊~

参考

758.6G每秒:阿里云成功防御国内最大规模Memcached DDoS反射攻击

https://yq.aliyun.com/articles/503688

史上首个核弹级DDoS攻击肆掠全球 GitHub遭1.35T级流量攻击

基于Memcached分布式系统DRDoS拒绝服务攻击技术研究

http://blog.csdn.net/microzone/article/details/79262549?from=groupmessage&isappinstalled=0

欢迎加入我的tg群组

为什么选择tg就不多说了,下面是邀请链接,直接扫码吧!
扫码加入我的telegram群组说不定有惊喜哦


以上是关于基于Memcached的DRDos的研究与攻击复现的主要内容,如果未能解决你的问题,请参考以下文章

关于Memcached反射型DRDoS攻击分析

转载深度剖析Memcached超大型DRDoS攻击

无惧1.35TB Memcached DRDoS攻击,华为云安全一直在行动

未然预警 | Memcached被滥用于DRDoS攻击

深度剖析 Memcached 超大型DRDoS攻击

海腾数据丨深度剖析Memcached超大型DRDoS攻击