memcached
FB招聘站
分类阅读
专栏
公开课
FIT 2019
企业服务
用户服务
搜索
投稿
登录
注册
一个小故事读懂Memcached漏洞 进击的大熊20182018-03-16金币奖励+15现金奖励共594897人围观 ,发现 19 个不明物体 漏洞
*本文原创作者:进击的大熊2018,本文属FreeBuf原创奖励计划,未经许可禁止转载
0×00 有人的地方就有江湖
只要有人,就有恩怨,有恩怨,就有江湖。小黑同学早就看班里的小白不顺眼了,恰逢今天是3月2日元宵节,所谓月黑风高杀人夜,今晚就给他整点麻烦。小白平时不是最喜欢嘚瑟家里房子多大多好吗,最好能找些人去到他家里吓吓他,人越多越好。于是乎,小黑开始谋划这次整蛊计划。
1、城里人不少,但是该找哪些人呢?
最好四肢发达那种,因为杀伤力比较强;最好还头脑简单那种,这样比较容易找来办事,所以小黑到处打听满足这两个条件的人,小黑还给他们取了个统一的名字叫肉鸡。
2、找到人之后,该怎么把他们聚集起来呢?
小黑心想城里人都喜欢凑热闹,于是小黑向肉鸡们散播谣言,小白家附近今晚有烟花表演看咯,小白家附近今晚有烟花表演看咯,小白家附近今晚有烟花表演看咯。
3、该怎么说服这些人去小白家呢?
反正肉鸡们头脑简单,于是小黑戴着小白模样的面具,跟他们说,我是小白,今晚在我家阳台看烟花角度最好咯,今晚在我家阳台看烟花角度最好咯,今晚在我家阳台看烟花角度最好咯。
晚上8点左右,小白刚吃完饭想出去看小电影,推开家门,突然一帮壮汉涌了进来,家里面瞬时挤满了人,想出也出不去,外面的人还有很多壮汉想挤进来。。。
小白一脸懵逼,在家里随便拉了个壮汉问了那三个经典问题:你是谁,你从哪里来,你来干嘛。谁知道那人也是一脸懵逼“不是你跟我说今晚在这里看烟花最爽吗,所以我就来了呀”,小白这才明白被恶作剧了,心里一万只草泥马奔涌而过。。。
人群.jpg
0×01 复盘故事
这个小故事其实讲的就是这几天闹得沸沸扬扬的Memcached漏洞事件,复盘下整个过程,看看为什么小黑能成功整出恶作剧,然后你会顺便发现Memcached漏洞攻击的逻辑竟然如此简单:
一、搜集信息,明确目标
故事:小黑首先通过搜集信息,确定出今晚去小白家的人。目标很明确,有两个条件:四肢发达、头脑简单。
Memcached漏洞:寻找满足两个条件的网络主机:开着11211端口、且服务可以默认登录。11211端口号一般由Memcached占用,且容易通过Memcached放大流量,即所谓的“四肢发达”;默认登录的意思就是不用任何认证,比如无需账号密码就能登录Memcached服务。
二、信息埋伏,准备攻击
故事:小黑向肉鸡们散播今晚有烟花表演看的消息,引起肉鸡们兴趣,腾出晚上时间。
Memcached漏洞:攻击者需要先往肉鸡的Memcached里埋伏预设值的信息,以便后续攻击使用。Memcached用于数据库的内存缓存服务,简单来说就是可以存储一些键值对数据。什么是键值对?比如储存英文名的数据库,小白的英文是A,那么其中一条数据是“小白:A”。“键”是“小白”,“值”是“A”,通过查询“键” “小白”,就可以得到“值” “A”。在这里为了得到放大攻击的效果,把小白的英文名设为A…………(省略1百万次重复的A)…………A。这样一来,输入 “查询小白英文名” 大约是20个字节数据,就能输出1M字节的“A”,实现五万倍的放大效果。
三、伪造信息,反射攻击
故事:小黑通过面具伪装为小白,把头脑简单的壮汉们骗到小白家。
Memcached漏洞:Memcached支持UDP协议,而UDP协议又是基于无连接特性,简单来说攻击者通过UDP协议伪造数据包,把源IP地址篡改为受害者的地址,这样一来发布给“肉鸡们”之后,“肉鸡们”就自然把反馈的流量反射给受害者,流量一大就能造成对方网络拥塞的攻击效果。全世界各地有5W多台符合条件的肉鸡,再乘以每个肉鸡流量的放大值,将能达到恐怖的流量攻击效果。
0×02 模拟攻击
下面是模拟攻击的具体流程:
一、情报收集
通过情报引擎(比如钟馗之眼或shodan等)按指定条件搜索肉鸡们。
搜索信息.png
二、虚拟机搭建环境
将虚拟机(Windows 2008系统)作为其中一个肉鸡,安装Memcached服务(1.4.4版本),根据默认配置进行操作:
1、发现11211端口已被Memcached占用,且不对IP地址做限制
虚拟机1.png
2、本地或者远程直接telnet进来,发现无需认证,即可使用
虚拟机2.png
虚拟机3.png
三、向肉鸡写入预设值的键值对
攻击者主机,撰写Python脚本,通过TCP协议向肉鸡写入大负荷的键值对,“GoMem”对应1M字节的字符“A”。这里有两个问题:
1、为什么是1M字节,而不写入更大的数据?是因为Memcached最大只支持1M的键值单数据对存储。
2、为什么不用UDP协议来写入键值?是因为UDP协议一次只能发送64Kb的数据,要写入1M字节数据,得分好几次写入,所以选择TCP协议。
写值.png
四、伪造UDP数据,反射攻击
攻击者主机,撰写Python脚本,通过UDP协议伪造源地址为受害者地址,向肉鸡请求“GoMem”值数据,于是肉鸡把1M字节的字符“A”打向受害者。用tcpdump小工具对11211端口进行监控,从下图可以看到受害者主机已经接收到攻击流量。
而这里为什么使用UDP,而不用TCP?是因为TCP连接需要通过三次握手,UDP则不需要,安全性更低,容易伪造数据包。
反射.png
0×03 防护建议
互联网世界的主机、软件就是这么单纯,并不像它的创造者那么复杂,创造者给的设定是怎样,它们就怎样执行,所以很容易被不法分子利用。像这次的Memcached漏洞,只要知道了你的服务器地址,不做防护的话,就很容易被攻成宕机,而攻击的成本很小,只要一部能上网和编程的电脑。
一不小心唠叨了几句,说回正题,那么对于这次Memcached漏洞,我们该怎么防护呢?(以下大部分建议参考网上各种安全预警通告)
对于使用Memcached 服务的开发者小伙伴:
1、Memcached官方最新版本 1.5.6 已封堵了漏洞,默认会关闭 UDP 11211 端口,因此建议升级至最新版本,并且设置密码来进行权限控制。
2、为保万全,在边界防火墙上关闭 UDP 11211 端口的入站与出站流量。
3、尽量在服务器上关闭 Memcached 的 UDP 11211 端口,或只允许其监听在 127.0.0.1:11211。
4、机房采取BCP38,以防止攻击者伪造来源。
对于网络运营商小伙伴的应对措施:
1、运营商的互联互通设备上对出口网络中对源端口为 UDP 11211 的请求进行控制。
2、运营商内部的骨干节点接入设备对出口网络中源端口为 UDP 11211 的请求进行控制。
3、 IDC 在网络出口对出口网络中的源端口为 UDP 11211 的请求进行控制。
控制方式:
1、直接封禁 UDP 协议的 11211 端口;
2、通过 netflow 等监控方式统计 UDP 11211 的流量,超过阈值再进行封禁。
希望这次的事件,能引起大家对信息安全的重视。
时刻牢记安全无小事,防微杜渐是关键!
*本文原创作者:进击的大熊2018,本文属FreeBuf原创奖励计划,未经许可禁止转载
进击的大熊2018
进击的大熊2018
6 篇文章
等级: 4级
||
上一篇:有人在偷窥?智能摄像头真的“聪明”吗?下一篇:挖洞经验 | 看我如何发现Google云平台漏洞并获得$7500赏金
发表评论已有 19 条评论
天气不错天气不错天气不错 2018-03-16回复 1楼
poc?
亮了(3)
进击的大熊2018 (4级) 微信公众号:进击的大熊 2018-03-16回复
@ 天气不错天气不错天气不错 文中的实验都是实际环境完成的,不过没有大范围测试,仅供参考
亮了(4)
蛇皮精灵王 2018-03-16回复 2楼
之前刚出来的时候就自己试了试 批量set了很多的机子 但是用github上的py脚本攻击测试目标 测试目标毫无反应 是因为什么原因?
亮了(5)
进击的大熊2018 (4级) 微信公众号:进击的大熊 2018-03-16回复
@ 蛇皮精灵王 可能是网络问题,比如一些路由器的uRPF机制会纠正源地址,使得反射攻击失败。
亮了(4)
蛇皮精灵王 2018-03-16回复
@ 进击的大熊2018 我从GCE和国际阿里云还有S3上发起攻击均没有任何效果, 攻击发送的是UDP包 不知道要怎么样才能成功复现呢?
亮了(4)
蛇皮精灵王 2018-03-16回复
@ 进击的大熊2018 顺便问一下如何判断所处的网络环境是否存在uRPF机制呢?
亮了(4)
进击的大熊2018 (4级) 微信公众号:进击的大熊 2018-03-18回复
@ 蛇皮精灵王 最简单直接的方法就是反射个小流量包到自己的公网IP上,看是否能成功
亮了(2)
2333 2018-03-16回复 3楼
大佬们评论下flush_all这个缓解方法?
亮了(1)
进击的大熊2018 (4级) 微信公众号:进击的大熊 2018-03-16回复
@ 2333 不怕误伤么
亮了(1)
x505471821 (1级) 2018-03-16回复 4楼
除了找到反射器以外,你还需要一个没有urpf的环境才能攻击成功
亮了(0)
进击的大熊2018 (4级) 微信公众号:进击的大熊 2018-03-16回复
@ x505471821 流程里面确实漏了这一步探测,感谢提醒
亮了(0)
柠檬初上 (5级) 重剑无锋 大巧不工~! 2018-03-16回复 5楼
干货 学习了
亮了(0)
xwbk12 2018-03-16回复 6楼
学习!!!
亮了(0)
shellove (1级) 2018-03-16回复 7楼
感谢分享
亮了(0)
单车王者 (1级) 2018-03-18回复 8楼
UDP协议,可以被telnet????
亮了(2)
进击的大熊2018 (4级) 微信公众号:进击的大熊 2018-03-18回复
@ 单车王者 telnet是用来说明安装Memcached之后会默认开启一些服务和配置,导致不安全性,可能这里会引起歧义,特此说明
亮了(0)
zoonctrl (6级) 该怎么做好信息安全? 2018-04-04回复 9楼
网络水平蛮好的
亮了(1)
死宅10086 (7级) 2018-04-08回复 10楼
感谢分享
亮了(0)
进击的大熊2018 (4级) 微信公众号:进击的大熊 2018-04-09回复 11楼
很多网友私信我要最后的 TCP set和UDP 伪造地址的源码,可以关注我的微信公众号《进击的大熊》,回复“mem”,即可得到下载链接,谢谢。
亮了(0)
昵称
请输入昵称
必须您当前尚未登录。登陆?注册邮箱
请输入邮箱地址
必须(保密)表情插图
有人回复时邮件通知我
进击的大熊2018
进击的大熊2018
微信公众号:进击的大熊
6
文章数
27
评论数
最近文章
为什么要禁止除GET和POST之外的HTTP方法?
2018.05.28
从一道CTF题学习PHP反序列化漏洞
2018.05.27
手把手教你无限“印”BEC币(BEC合约整数溢出漏洞还原与分析)
2018.05.10
浏览更多
相关阅读
CNCERT关于利用Memcached服务器实施反射DDoS攻击的情况通报关于Memcached服务器反射攻击的情况通报(第2期)
知名论坛系统MyBB被爆0day漏洞快讯 | 新加坡政府首开漏洞奖励计划,邀“白帽子”渗透军方网络系统苹果iOS 8.4和OS X 10.10.4修复漏洞一览
特别推荐
关注我们 分享每日精选文章
活动预告
11月
FreeBuf精品公开课·双11学习狂欢节 | 给努力的你打打气
已结束
10月
【16课时-连载中】挖掘CVE不是梦(系列课程2)
已结束
10月
【首节课仅需1元】挖掘CVE不是梦
已结束
9月
【已结束】自炼神兵之自动化批量刷SRC
已结束
FREEBUF免责声明协议条款关于我们加入我们广告及服务寻求报道广告合作联系我们友情链接关注我们
官方微信
新浪微博腾讯微博Twitter赞助商
Copyright © 2018 WWW.FREEBUF.COM All Rights Reserved 沪ICP备13033796号
css.php0daybank
文章评论