memchache反射型ddos分析与复现

栏目: 数据库 · 发布时间: 6年前

内容简介:前言先简单说明一下反射型ddos,假设有很多服务器开着一个服务,服务内容与类型不管,如果用户每次发给服务器少量内容,服务器就会返回远大于请求的回复,则这个服务就达到了反射性ddos的要求。因为tcp协议中发送方ip是可以伪造的,如果我们将源ip设置成希望进行攻击的目标ip,如8.8.8.8,再将伪造后的数据包发给服务方,服务方按照正常处理则会回复给8.8.8.8,从而达到ddos攻击的效果。

前言

先简单说明一下反射型ddos,假设有很多服务器开着一个服务,服务内容与类型不管,如果用户每次发给服务器少量内容,服务器就会返回远大于请求的回复,则这个服务就达到了反射性ddos的要求。

因为tcp协议中发送方ip是可以伪造的,如果我们将源ip设置成希望进行攻击的目标ip,如8.8.8.8,再将伪造后的数据包发给服务方,服务方按照正常处理则会回复给8.8.8.8,从而达到ddos攻击的效果。

相比传统ddos攻击来说,反射ddos有两个显著优势:

1、不需要控制任何肉鸡,任何达到要求的服务器都能成为帮凶,更容易达到分布式的效果。

2、通过反射后数据量得到放大效果,成倍增加攻击流量。

近日,本文主角memcache则是帮助黑客们打出了阿里云世上最大的流量:758.6G每秒 [相关链接](https://mp.weixin.qq.com/s/ghPd_I6ynCh8W_orMxSdNg),下文我将简单介绍其攻击原理和方式

环境搭建

memcache环境搭建很简单,这里简单说一下:

docker

docker永远是搭环境最推荐的方式之一,dockerfile 如下:

memchache反射型ddos分析与复现

保存为Dockerfile,然后执行

docker run --name my-memcache -p 11211:11211 -d memcached

就运行了一个memcache,容器11211端口映射到本机11211

测试memcache:

telnet 127.0.0.1 11211

可看到以下字样:

memchache反射型ddos分析与复现

vm虚拟机

作者的mac在运行 docker 时遇到了一些bug,本机无法直接访问到容器,为了能顺利抓包只好在vm虚拟机里搭建了memcache

首先在http://memcached.org 下载相应版本文件,执行:

memchache反射型ddos分析与复现

可能出现libevent不兼容问题,下载libevent-2.0.21后运行

memchache反射型ddos分析与复现

安装完成后执行

memcached -d -m 64M -u root -l 172.16.250.164 -p 11211 -c 256 -P /tmp/memcached.pid

-l参数为虚拟机ip,运行后即可在虚拟机的11211端口开启memcache。

攻击原理 

memcache 的几个基础命令如下:

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

set key flags exptime bytes [noreply]

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

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

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

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

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

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

get命令则取出相应key值,组合使用效果如下:

memchache反射型ddos分析与复现

可以设想,如果memecahe存储了一个值很长的key,当我们get的时候,memcache就会返回很长的数据包,这就达到了我们所需要的反射效果,虽然以上例子为tcp协议,memcache实际上也支持udp协议,而udp的无连接更适合用于做反射放大攻击。

攻击过程 

攻击需要两个过程

1、存储到memcache。

2、获取相应值达到攻击效果

首先是存储攻击荷载的脚本,[参考自](http://blog.csdn.net/microzone/article/details/79262549?from=groupmessage&isappinstalled=0):

server.txt里存放memcache列表,我只存放了虚拟机172.16.250.164

memddos_pre.py,存放攻击荷载至memcache:

memchache反射型ddos分析与复现

memchache反射型ddos分析与复现

memddos.py 获取攻击荷载并伪造ip至目标ip:

memchache反射型ddos分析与复现 memchache反射型ddos分析与复现

memchache反射型ddos分析与复现

伪造ip的过程中需要安装scapy库,在有些情况下安装可能不是很方便,linux下可使用[此方法](http://blog.csdn.net/alexzhang67/article/details/52084874)在 python 2.7下安装scapy

攻击过程中用wireshark检测流量包,首先运行:

memddos_pre.py server.txt 1 10000 10

向server.txt里的反射方列表存储10000字节大小的内容,超时时间10s,这里只设置了10000是方便后续抓包工作。

执行结果如下:

memchache反射型ddos分析与复现

wireshark抓包如下:

![1.png](1.png)

成功存储攻击荷载至memcache

第二步发动攻势,执行:

sudo python memddos.py server.txt 1 1

这里必须sudo才有足够权限伪造ip,为了保证抓到的包不会太杂乱,线程和攻击次数都只设置了1次,执行结果如下:

memchache反射型ddos分析与复现

返回wirdshark查看:

![2.png](2.png)

可看见172.16.250.164也就是memcache向攻击目标8.8.8.8发送了大量垃圾信息,攻击完全达到了效果。

在实战运用中,这种放大理想状态可达到5w倍,当然,实际情况要取决于发射方环境,不过通过上述实验可看出其恐怖的攻击性,不仅可以消耗memcache巨量资源,造成的的流量也是非常巨大。

解决方法

1、memcache的服务就不应该对所有人开放,至少在外网不应该监听0.0.0.0。

2、升级memcache并使用SASL设置密码来进行权限控制。

3、运营商uRPF的覆盖可有效解决ip伪造问题。

参考文章 

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


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Definitive Guide to MongoDB

The Definitive Guide to MongoDB

Peter Membrey、Wouter Thielen / Apress / 2010-08-26 / USD 44.99

MongoDB, a cross-platform NoSQL database, is the fastest-growing new database in the world. MongoDB provides a rich document orientated structure with dynamic queries that you’ll recognize from RDMBS ......一起来看看 《The Definitive Guide to MongoDB》 这本书的介绍吧!

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具