DDoS攻击实验笔记

news/2024/5/5 4:18:59/文章来源:https://blog.csdn.net/weixin_52034407/article/details/130022616

DoS&DDoS简介

        DoS(Denial of Service),拒绝服务攻击是通过一些方法影响服务的可用性,比如早期主要基于系统和应用程序的漏洞,只需要几个请求或数据包就能导致长时间的服务不可用,但易被入侵检测系统发现。

        DDoS(Distributed Denial of Service),又称分布式拒绝服务攻击。是拒绝服务攻击的一种,其目的主要在于资源占用和资源消耗,通过向服务提供者发起大量请求或长时间占用资源的方式达到拒绝服务的目的。这种攻击表面上都是合理的请求,无法通过系统升级和打补丁的方式阻止,也不能使用入侵检测系统进行防御。分布式拒绝服务攻击的精髓在于利用分布式的客户端,向服务提供者发送大量看似合法的请求,长期占用大量资源,达到拒绝服务的目的。

        DDoS会造成的危害有:出口带宽被堵死;游戏用户掉线导致客户流失;服务器连接数多,连接资源被耗尽;服务器卡、慢、死机、无法连接等。其攻击来源可能是高性能服务器配合发包软件;可联网的设备(如打印机、摄像头、电视等);移动设备(数量多,增长速度快,其高性能利于组建僵尸网络);个人PC(存在漏洞的PC或一些黑客迷自愿成为DDoS一员);黑客控制的僵尸网络等(僵尸网络又分为IRC型、HTTP型、P2P型等)。

        DDoS攻击具有这样的流量特点:IP地址随机或固定某些IP段随机;没有完整完成TCP三次握手;地址多数是伪造的;请求数量大、快。

攻击类型及防护方案介绍 

1) Smurf攻击

        攻击者向网关发送ICMP请求包,并将该ICMP请求报文的源地址伪造成受害主机IP地址,目的地址为广播地址。路由器接收到该数据包,发现目的地址是广播地址,就会将该数据包广播出去,局域网内所有的存活主机都会受到一个ICMP请求包,源地址是受害主机IP。接下来受害主机就会收到该网络内所有主机发来的ICMP应答报文,通过大量返回的ICMP应答报文来淹没受害主机,最终导致网络阻塞,使受害主机崩溃。下面是smurf攻击示意图:

        防护方案:禁止路由器广播ICMP请求包;禁止操作系统对广播发出的ICMP请求包做出响应;配置防火墙禁止来自你所处网络外部的ping包。

2) SYN Flood攻击

        SYN 泛洪(Flood)攻击是在TCP三次握手过程中产生的。攻击者通过发送大量伪造的带有SYN标志位的TCP报文,与目标主机建立了很多虚假的半开连接,在服务器返回SYN+ACK数据包后,攻击者不对其做出响应,也就是不返回ACK数据包给服务器,这样服务器就会一直等待直到超时。这种攻击方式会使目标服务器连接资源耗尽、链路堵塞,从而达到拒绝服务的目的。SYN Flood攻击图示如下:

        防护方案:

        SYN Check:使用防护设备,3次握手变成了6次握手,由防护设备检测SYN请求是否合法,通过后再由防护设备将报文转发给服务器,后续报文仍由防护设备代理。

        Micro Blocks:管理员可以在内存中为每个SYN请求创建一个小索引(小于16字节),而不必把整个连接对象存入内存。

        RST Cookies:在客户端发起第一个SYN请求后,服务器故意回应一个错误的SYN+ACK报文。如果合法用户收到这个报文,就会给服务器响应RST报文。当服务器收到这个报文时,就将这个主机的IP记录进合法IP列表,下次该主机发起SYN请求时,就可以直接通过了。

        STACK Tweaking:管理员可以调整TCP堆栈以减缓SYN泛洪攻击的影响。这包括减小超时时间,等到堆栈内存释放时再分配连接,否则就随机性地删除传入的连接。

3) ACK Flood攻击

        ACK Flood攻击是利用TCP三次握手过程。这里可以分为两种攻击方式。

        第一种:攻击者伪造大量的SYN+ACK包发送给目标主机,目标主机每收到一个SYN+ACK数据包时,都会去自己的TCP连接表中查看有没有与ACK的发送者建立连接 ,如果有则发送ACK包完成TCP连接,如果没有则发送ACK+RST 断开连接。但是在查询过程中会消耗一定的CPU计算资源。如果瞬间收到大量的SYN+ACK数据包,将会消耗服务器的大量CPU资源,导致正常的连接无法建立或增加延迟,甚至造成服务器瘫痪、死机。

        第二种:利用TCP三次握手的ACK+SYN应答,攻击者向不同的服务器发送大量的SYN请求,这些SYN请求数据包的源IP均为受害主机IP,这样就会有大量的SYN+ACK应答数据包发往受害主机,从而占用目标的网络带宽资源,形成拒绝服务。

        通常DDoS攻击会将ACK Flood与SYN Flood结合在一起,从而扩大攻击造成的影响。

        防护方案可参考如下:采用CDN进行流量稀释;避免服务器IP暴露在公网上;采用限速或动态指纹进行防御;利用对称性判断来分析出是否有攻击存在;在连续收到用户发送的ACK包时,中断回话,让其重连。

4) UDP Flood攻击

        UDP(User Datagram Protocol,用户数据报协议),是一种无连接和无状态的网络协议,UDP不需要像TCP那样进行三次握手,运行开销低,不需要确认数据包是否成功到达目的地。这就造成UDP泛洪攻击不但效率高,而且还可以在资源相对较少的情况下执行。UDPFlood可以使用小数据包(64字节)进行攻击,也可以使用大数据包(大于1500字节,以太网MTU为1500字节)进行攻击。大量小数据包会增大网络设备处理数据包的压力。而对于大数据包,网络设备需要进行分片、重组,最终达到的效果就是占用网络传输接口的带宽、网络堵塞、服务器响应慢等。

        防护方案:限制每秒钟接收到的流量(可能产生误判);通过动态指纹学习(需要攻击发生一定时间),将非法用户加入黑名单或特征过滤进行防御。

5) HTTP慢速攻击

        Slow HTTP DoS(Slow HTTP Denial of Service Attack,慢速HTTP拒绝服务攻击),黑客模拟正常用户向web服务器发送慢速http请求,由于是慢速的,服务器端需保持连接,直到数据传输结束或请求结束才可释放连接。当服务器端建立大量慢速连接,就会导致服务器拒绝服务。这种攻击可以分为两类,一类是客户端发数据,另一类是客户端读取服务器发来的数据。HTTP慢速攻击对基于线程处理的web服务器影响显著,如apache、dhttpd,而对基于事件处理的web服务器影响不大,如ngix、lighttpd。HTTP慢速攻击还可以细分成以下几种攻击方式:

A.Slowloris攻击方式

        HTTP协议规定请求头以一个空行结束,所以完整的HTTP请求头结尾是\r\n\r\n。然而使用非正常的\r\n来结尾,就会导致服务端认为请求头还没结束,等待我们继续发送数据直到超时时间。两种请求头区别如下,CRLF(CarriageReturn Line Feed)表示回车换行:

B.Slow POST攻击方式

        在HTTP头部信息,可以使用content-length声明HTTP消息实体的传输长度,服务器端会content-length的值作为HTTP BODY的长度。利用这一特点,攻击者把content-length设置的很大,然后缓慢发送数据部分,比如一次只发送一个字节,这样服务器端就要一直保持连接,直到客户端传完所有的数据。

C.Slow read攻击方式

        攻击者发送一个完整的HTTP数据请求,之后服务器会给出响应,这时攻击者在将自己的TCP窗口大小设置的很小,服务器会根据客户的TCP窗口大小来传送数据。由于客户端的TCP窗口大小很小,服务器只能缓慢的传输数据给客户端。当建立大量的这种连接时,Web应用的并发连接池空间将被耗尽,最终导致拒绝服务。 

SYN_FLOOD攻击&HTTP慢速攻击一些特点

         发动SYN FLOOD攻击的主机只要发送较少的,来源地址经过伪装而且无法通过路由达到的SYN连接请求至目标主机提供TCP服务的端口,将目的主机的TCP缓存队列填满,就可以实施一次成功的攻击。实际情况下,发动攻击时往往是持续且高速的。

        HTTP慢速攻击是利用HTTP现有合法机制,在建立了与HTTP服务器的连接后,尽量长时间保持该连接,不释放,达到对HTTP服务器的攻击。

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_284841.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mysql通过行表中的行数据筛选主表数据

有订单头表和订单行表。筛选出行表中包含某些商品的头表 文章目录1. 示例表test_ordertest_order_line2. 实现EXISTS(推荐)内联1. 示例表 test_order test_order_line 2. 实现 EXISTS(推荐) 优点: 使用内联,主表字段很多的情况下,需要写越…

人员跌倒识别检测系统 yolov7

人员跌倒识别检测系统通过PythonYOLO7网络模型算法,人员跌倒识别检测算法模型对现场画面中有人员倒地摔倒行为实时分析预警,发现则立即抓拍存档告警同步提醒后台值班人员及时处理。YOLOv7 的发展方向与当前主流的实时目标检测器不同,研究团队…

LabVIEW实现ST-Link自动烧录单片机

目录 1、添加CLI到系统环境变量中 2、查询ST-Link/V2烧录器信息 3、连接待烧录的MCU芯片 4、下载固件到Flash 5、可能会使用的命令 5.1、-Rst 5.2、-ME 5.3、-SE 6、封装好的LabVIEW库 在讲解LabVIEW实现ST-Link自动烧录之前先聊一聊ST官方提供一款专用的Flash烧录工具…

《华为机试》——查找两个字符串a,b中的最长公共子串

本期给大家带来的是 华为机试题库 关于 查找两个字符串a,b中的最长公共子串 的讲解。首先,我们还是先从题目入手进行分析思考!!! 题目如下 :👇 查找两个字符串a,b中的最长公共子串。若有多个,输…

正则化的基本认识

正则化(一) 拟合与欠拟合(二) 正则化的目的(三) 惩罚项(3.1)常用的惩罚项:(3.2)L-P范数:(3.3)L1与L2的选择:(一) 拟合与欠拟合 欠拟合: 是指测试级与训练集都…

IDEA集成Git、GitHub、Gitee

一、IDEA 集成 Git 1.1、配置 Git 忽略文件 为什么要忽略他们? 与项目的实际功能无关,不参与服务器上部署运行。把它们忽略掉能够屏蔽 IDE 工具之间的差异。 怎么忽略? 创建忽略规则文件 xxxx.ignore(前缀名随便起&#xff0c…

〖Python网络爬虫实战⑫〗- XPATH语法介绍

订阅:新手可以订阅我的其他专栏。免费阶段订阅量1000python项目实战 Python编程基础教程系列(零基础小白搬砖逆袭) 说明:本专栏持续更新中,目前专栏免费订阅,在转为付费专栏前订阅本专栏的,可以免费订阅付费…

java 通过 spring 官网创建springboot项目

文章java简单一写一个springboot入门案例带大家用idea工具工具创建了一个springboot简单的小案例 但有时 我们idea如果连不上网 就会有点问题 我们可以采用另一种创建方式 但这里的前提肯定就是 你的计算机是要有网的 然后访问 https://spring.io/ 打开spring的官网 在 Project…

SpringBoot基础使用

SpringBoot基础使用1.SpringBoot简介2.SpringBoot项目创建3.RESTful Web 服务4.SpringBoot 实现WebMvcConfigurer拦截器4.1 WebMvcConfigurer介绍4.2 WebMvcConfigurer接口常用方法4.3 WebMvcConfigurer拦截器5.SpringBoot常用注解总结6.SpringBoot异常处理6.1 使用 Controller…

Zeppelin框架及Hive查询操作

1)、介绍 Apache Zeppelin是一款基于Web交互式框架,支持多种语言,Scala、SparkSQL、Markdown,SQL、Shell、Python等。 Zeppelin提供数据分析、数据可视化。 可以使用Zeppelin链接SparkSQL Zeppelin安装和使用 1)、…

JVM性能调优简介

一、JVM内存模型及垃圾收集算法 1.根据Java虚拟机规范,JVM将内存划分为: New(年轻代) Tenured(年老代) 永久代(Perm) 其中New和Tenured属于堆内存,堆内存会从JVM启动参…

Hive查询语句

目录 1.1 基础语法 1.2 基本查询(Select…From) 1.2.1 数据准备 1.2.2 全表和特定列查询 1.2.3 列别名 1.2.4 Limit语句 1.2.5 Where语句 1.2.6 关系运算函数 1.2.7 逻辑运算函数 1.3 分组 1.3.1 Group By语句 1.3.2 Having语句 1.4 Join语句…

【云原生】Dockerfile制作WordPress镜像,实现compose编排部署

文章目录👹 关于作者前言环境准备目录结构dockerfile制作镜像yum 脚本Dockerfile-mariadb 镜像Dockerfile-service 镜像docker compose 编排提升✊ 最后👹 关于作者 大家好,我是秋意临。 😈 CSDN作者主页 😎 博客主页…

BGP联邦实验

实验目的: 实验拓扑: IP地址规划: AS2内部: 172.16.0.0/16 172.16.0.0/24---P2P网络 172.16.1.0/24----MA网络 172.16.1.0/29 172.16.1.8/29 172.16.1.16/29 172.16.1.24/29 172.16.1.32/29 172.16.1.40/29 172.16.2.0/24--…

NIFI大数据进阶_Kafka使用相关说明_实际操作Kafka消费者处理器_来消费kafka数据---大数据之Nifi工作笔记0037

首先我们先看一下kafka消费者流程,可以看到,我们需要创建一个consumeKafka_0_10 因为我们用的kafka的版本是0_10的对吧,要用对应版本的,消费者,然后,再用一个logattribute处理器,消费的 数据我们放到这个处理器里面进行查看 然后再就是需要配置consumekafka_0_10的,这个消费者…

数据结构入门(C语言版)栈和队列之队列的介绍及实现

队列队列的概念队列的实现过程队列的结构体与接口函数的定义队列的接口实现①初始化队列(QueueInit)②队尾入队列(QueuePush)③队头出队列(QueuePop)④队头元素(QueueFront)⑤队尾元素(QueueBack)⑥有效元素个数(QueueSize)⑦检测队列是否为空(QueueEmpty)⑧销毁队列(QueueDest…

《Java8实战》第4章 引入流

集合是 Java 中使用最多的 API。 4.1 流是什么 流是 Java API 的新成员,它允许你以声明性方式处理数据集合(通过查询语句来表达,而不是临时编写一个实现)。可以看作是遍历数据集的高级迭代器,而且还可以并行的处理。…

Java中创建线程的方式以及线程池创建的方式、推荐使用ThreadPoolExecutor以及示例

场景 Java中创建线程的方式有三种 1、通过继承Thread类来创建线程 定义一个线程类使其继承Thread类,并重写其中的run方法,run方法内部就是线程要完成的任务, 因此run方法也被称为执行体,使用start方法来启动线程。 2、通过实…

Object方法

系列文章目录 前端系列文章——传送门 JavaScript系列文章——传送门 文章目录系列文章目录对象方法一、Object原型方法1、hasOwnProperty2、isPrototypeOf3、propertyIsEnumerable4、toString5、其他二、Object方法1、assign2、create3、defineProperties4、defineProperty5、…

基于C#编程建立Vector数据类型及对应处理方法

以C#为例,讲解如何建立一个类,这其中需要考虑需要什么样的数据(成员),什么样的属性以及方法,以及提供给外部程序调用,最后考虑怎么样去实现这样的算法。例如对于一个向量Vector(类&a…