一个小故事读懂Memcached漏洞
只要有人,就有恩怨,有恩怨,就有江湖。小黑同学早就看班里的小白不顺眼了,恰逢今天是3月2日元宵节,所谓月黑风高杀人夜,今晚就给他整点麻烦。小白平时不是最喜欢嘚瑟家里房子多大多好吗,最好能找些人去到他家里吓吓他,人越多越好。于是乎,小黑开始谋划这次整蛊计划。
1、城里人不少,但是该找哪些人呢?
最好四肢发达那种,因为杀伤力比较强;最好还头脑简单那种,这样比较容易找来办事,所以小黑到处打听满足这两个条件的人,小黑还给他们取了个统一的名字叫肉鸡。
2、找到人之后,该怎么把他们聚集起来呢?
小黑心想城里人都喜欢凑热闹,于是小黑向肉鸡们散播谣言,小白家附近今晚有烟花表演看咯,小白家附近今晚有烟花表演看咯,小白家附近今晚有烟花表演看咯。
3、该怎么说服这些人去小白家呢?
反正肉鸡们头脑简单,于是小黑戴着小白模样的面具,跟他们说,我是小白,今晚在我家阳台看烟花角度最好咯,今晚在我家阳台看烟花角度最好咯,今晚在我家阳台看烟花角度最好咯。
晚上8点左右,小白刚吃完饭想出去看小电影,推开家门,突然一帮壮汉涌了进来,家里面瞬时挤满了人,想出也出不去,外面的人还有很多壮汉想挤进来。。。
小白一脸懵逼,在家里随便拉了个壮汉问了那三个经典问题:你是谁,你从哪里来,你来干嘛。谁知道那人也是一脸懵逼“不是你跟我说今晚在这里看烟花最爽吗,所以我就来了呀”,小白这才明白被恶作剧了,心里一万只草泥马奔涌而过。。。
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等)按指定条件搜索肉鸡们。
二、虚拟机搭建环境
将虚拟机(Windows 2008系统)作为其中一个肉鸡,安装Memcached服务(1.4.4版本),根据默认配置进行操作:
1、发现11211端口已被Memcached占用,且不对IP地址做限制
2、本地或者远程直接telnet进来,发现无需认证,即可使用
三、向肉鸡写入预设值的键值对
攻击者主机,撰写Python脚本,通过TCP协议向肉鸡写入大负荷的键值对,“GoMem”对应1M字节的字符“A”。这里有两个问题:
1、为什么是1M字节,而不写入更大的数据?是因为Memcached最大只支持1M的键值单数据对存储。
2、为什么不用UDP协议来写入键值?是因为UDP协议一次只能发送64Kb的数据,要写入1M字节数据,得分好几次写入,所以选择TCP协议。
四、伪造UDP数据,反射攻击
攻击者主机,撰写Python脚本,通过UDP协议伪造源地址为受害者地址,向肉鸡请求“GoMem”值数据,于是肉鸡把1M字节的字符“A”打向受害者。用tcpdump小工具对11211端口进行监控,从下图可以看到受害者主机已经接收到攻击流量。
只要有人,就有恩怨,有恩怨,就有江湖。小黑同学早就看班里的小白不顺眼了,恰逢今天是3月2日元宵节,所谓月黑风高杀人夜,今晚就给他整点麻烦。小白平时不是最喜欢嘚瑟家里房子多大多好吗,最好能找些人去到他家里吓吓他,人越多越好。于是乎,小黑开始谋划这次整蛊计划。
1、城里人不少,但是该找哪些人呢?
最好四肢发达那种,因为杀伤力比较强;最好还头脑简单那种,这样比较容易找来办事,所以小黑到处打听满足这两个条件的人,小黑还给他们取了个统一的名字叫肉鸡。
2、找到人之后,该怎么把他们聚集起来呢?
小黑心想城里人都喜欢凑热闹,于是小黑向肉鸡们散播谣言,小白家附近今晚有烟花表演看咯,小白家附近今晚有烟花表演看咯,小白家附近今晚有烟花表演看咯。
3、该怎么说服这些人去小白家呢?
反正肉鸡们头脑简单,于是小黑戴着小白模样的面具,跟他们说,我是小白,今晚在我家阳台看烟花角度最好咯,今晚在我家阳台看烟花角度最好咯,今晚在我家阳台看烟花角度最好咯。
晚上8点左右,小白刚吃完饭想出去看小电影,推开家门,突然一帮壮汉涌了进来,家里面瞬时挤满了人,想出也出不去,外面的人还有很多壮汉想挤进来。。。
小白一脸懵逼,在家里随便拉了个壮汉问了那三个经典问题:你是谁,你从哪里来,你来干嘛。谁知道那人也是一脸懵逼“不是你跟我说今晚在这里看烟花最爽吗,所以我就来了呀”,小白这才明白被恶作剧了,心里一万只草泥马奔涌而过。。。
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等)按指定条件搜索肉鸡们。
二、虚拟机搭建环境
将虚拟机(Windows 2008系统)作为其中一个肉鸡,安装Memcached服务(1.4.4版本),根据默认配置进行操作:
1、发现11211端口已被Memcached占用,且不对IP地址做限制
2、本地或者远程直接telnet进来,发现无需认证,即可使用
本文来自无奈人生安全网
三、向肉鸡写入预设值的键值对
攻击者主机,撰写Python脚本,通过TCP协议向肉鸡写入大负荷的键值对,“GoMem”对应1M字节的字符“A”。这里有两个问题:
1、为什么是1M字节,而不写入更大的数据?是因为Memcached最大只支持1M的键值单数据对存储。
2、为什么不用UDP协议来写入键值?是因为UDP协议一次只能发送64Kb的数据,要写入1M字节数据,得分好几次写入,所以选择TCP协议。
四、伪造UDP数据,反射攻击
攻击者主机,撰写Python脚本,通过UDP协议伪造源地址为受害者地址,向肉鸡请求“GoMem”值数据,于是肉鸡把1M字节的字符“A”打向受害者。用tcpdump小工具对11211端口进行监控,从下图可以看到受害者主机已经接收到攻击流量。
无奈人生安全网