DDOS 攻击是什么?有哪些常见的DDOS攻击?
DDOS简介
DDOS又称为分布式拒绝服务,全称是Distributed Denial of Service。DDOS本是利用合理的请求造成资源过载,导致服务不可用,从而造成服务器拒绝正常流量服务。就如酒店里的房间是有固定的数量的,比如一个酒店有50个房间,当50个房间都住满人之后,再有新的用户想住进来,就必须要等之前入住的用户先出去。如果入住的用户一直不出去,那么酒店就无法迎接新的用户,导致酒店负荷过载,这种情况就是“拒绝服务”。如果想继续提供资源,那么酒店应该提升自己的资源量,服务器也是同样的道理。
拒绝服务攻击的基本概念
拒绝服务:拒绝服务是指应用系统无法正常对外提供服务的状态,如网络阻塞、系统宕机、响应缓慢等都属于拒绝服务的表现。
拒绝服务攻击(DOS):拒绝服务攻击(Denial of Service Attack)是一种通过各种技术手段导致目标系统进入拒绝服务状态的攻击,常见手段包括利用漏洞、消耗应用系统性能和消耗应用系统带宽。
分布式拒绝服务攻击(DDOS):分布式拒绝服务攻击(Distributed Denial of Service Attack)是拒绝服务攻击的高级手段,利用分布全球的僵尸网络发动攻击,能够产生大规模的拒绝服务攻击。

DDOS攻击分类
(1)漏洞型(基于特定漏洞进行攻击):只对具备特定漏洞的目标有效,通常发送特定数据包或少量的数据包即可达到攻击效果。
(2)业务型(消耗业务系统性能额为主):与业务类型高度相关,需要根据业务系统的应用类型采取对应的攻击手段才能达到效果,通常业务型攻击实现效果需要的流量远低于流量型。
(3)流量型(消耗带宽资源为主):主要以消耗目标业务系统的带宽资源为攻击手段,通常会导致网络阻塞,从而影响正常业务。
拒绝服务攻击处理流程
(1)现象分析:根据发现的现象、网络设备和服务的情况初步判断是否存在拒绝服务攻击。
(2)抓包分析:通过抓包分析的方式进一步了解攻击的方式和特征。
(3)启动对抗措施:最后启动对抗措施进行攻击对抗,可以进行资源提升、安全加固、安全防护等措施。
DDOS流量包分析
SYN Flood攻击
在正常的情况下,TCP三次握手过程如下

客户端向服务器端发送一个SYN请求包,包含客户端使用的端口号和初始序列号x。
服务器端收到客户端发送过来的SYN请求包后,知道客户端想要建立连接,于是向客户端发送一个SYN请求包和ACK回应包,包含确认号x+1和服务器端的初始序列号y。
客户端收到服务器端返回的SYN请求包和ACK回应包后,向服务器端返回一个确认号y+1和序号x+1的ACK请求包,三次握手完成,TCP连接建立成功。
SYN Flood攻击原理:
首先是客户端发送一个SYN请求包给服务器端,服务器端接受后会发送一个SYN+ACK包回应客户端,最后客户端会返回一个ACK包给服务器端来实现一次完整的TCP连接。Syn flood攻击就是让客户端不返回最后的ACK包,这就形成了半开连接,TCP半开连接是指发送或者接受了TCP连接请求,等待对方应答的状态,半开连接状态需要占用系统资源以等待对方应答,半开连接数达到上限,无法建立新的连接,从而造成拒绝服务攻击。
受害靶机的流量包分析

利用wireshark软件抓取数据包的数据,通过筛选器筛选出发送包频率多的ip地址。
筛选218.xxx.xxx.87,分析协议占比,发现tcp和http占比比较大

筛选tcp中的syn数据包,发现syn数据包占比为82.9,可以判断应该为SYN FLOOD拒绝服务攻击

UDP Flood攻击
UDP Flood攻击原理:
由于UDP属于无连接协议,消耗的系统资源较少,相同条件下容易产生更高的流量,是流量型攻击的主要手段。当受害系统接收到一个UDP数据包的时候,它会确定目的端口正在等待中的应用程序。当它发现该端口中并不存在正在等待的应用程序,它就会产生一个目的地址无法连接的ICMP数据包发送给该伪造的源地址。如果向受害者计算机端口发送了足够多的UDP数据包的时候,系统就会造成拒绝服务攻击,因此,UDP FLOOD成为了流量型拒绝服务攻击的主要手段。
受害靶机的流量包分析

利用wireshark软件抓取数据包的数据,通过筛选器筛选出发送包频率多的ip地址。
筛选117.xxx.xxx.0网段,分析协议占比,可以看到受害靶机接受的UDP包比较多。

可以看到UDP包的大小都是固定的172bytes。

可以看出都是发送udp包,udp包大小都是相同的,可以判断是udp flood攻击。

慢速拒绝服务攻击
apt install slowhttptest -y
安装slowhttptest
慢速拒绝服务攻击原理:
完整的http请求包是以 \r\n\r\n 结尾,慢速拒绝服务攻击时仅发送 \r\n,少发送一个 \r\n,服务器认为请求还未发完,服务器就会一直等待直至超时。
slowhttptest -c 5000 -H -g -o my_header_stats -i 10 -r 5000 -t GET -u “http://10.10.10.134” -x 200 -p 3
(测试时建立5000连接数-c;选择slowloris模式-H;生成cvs和HTML文件的统计数据-G;生成的文件名my_header_stats -o;指定发送数据间的间隔10秒 -i 每秒连接数5000-t;指定url-u;指定发送的最大数据长度200 -x;指定等待时间来确认DOS攻击已经成功-p)

观察靶机的cpu和网络流量明显增加很多


受害靶机的流量包分析

攻击机ip:10.10.10.129,靶机ip:10.10.10.134
[PSH,ACK]是攻击机发送有数据的ACK包给靶机,[ACK]包是靶机回复攻击机的数据包。
可以看到没有发送2次连续的\r\n,以至于靶机要一直等待。

http协议比例为36.6,tcp协议比例为87.4

筛选ack数据包,占比率98.2,不符合常态,综上可以判断为慢速拒绝服务攻击

ICMP Flood攻击
ICMP Flood攻击原理:
当 ICMP ping 产生的大量回应请求超出了系统的最大限度,以至于系统耗费所有资源来进行响应直至再也无法处理有效的网络信息流,但是由于ICMP协议报文被丢弃不影响大多数系统运行,所以容易被防护。
利用hping3造成ICMP Flood攻击
hping3 -q -n -a 1.1.1.1 –icmp -d 200 –flood 10.10.10.134

观察靶机的cpu和网络流量明显增加很多


受害靶机的流量包分析
伪造的源ip:1.1.1.1发送大量icmp包给目标ip:10.10.10.134

筛选出同一IP发送大量ICMP包,且占比率86.0,判断为ICMP拒绝服务攻击。


总结
拒绝服务攻击造成的危害是比较大的,本质是对有限资源的无限制的占用所造成的,所以在这方面需要限制每个不可信任的资源使用中的分配额度,或者提高系统的有限资源等方式来防范拒绝服务攻击。
相关文章:
DDOS 攻击是什么?有哪些常见的DDOS攻击?
DDOS简介 DDOS又称为分布式拒绝服务,全称是Distributed Denial of Service。DDOS本是利用合理的请求造成资源过载,导致服务不可用,从而造成服务器拒绝正常流量服务。就如酒店里的房间是有固定的数量的,比如一个酒店有50个房间&am…...
未来应用从何而来:认知力延伸、边界突破、回归云与产业
文 | 智能相对论 作者 | 沈浪 或许,谁也没想到未来应用来的如此之快,现如今传统应用从开发到体验,已经进入了一个前所未有的颠覆性改革阶段。 不久前,美国人工智能公司OpenAI举办开发者大会。在现场,公司创始人Sam …...
vue零基础
vue 与其他框架的对比 框架设计模式数据绑定灵活度文件模式复杂性学习曲线生态VueMVVM双向灵活单文件小缓完善ReactMVC单向较灵活all in js大陡丰富AngularMVC双向固定多文件较大较陡(Typescript)独立 更多对比细节:vue 官网:ht…...
html中一个div中平均一行分配四个盒子,可展开与收起所有的盒子
html中一个div中平均一行分配四个盒子,可展开与收起所有的盒子 1.截图显示部分 2.代码展示部分 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"wid…...
Python虚拟环境指南:告别依赖地狱
一、背景 在SAAS(软件即服务)平台中,用户使用自行定制的Python脚本已经成为司空见惯的做法,然而,由于不同用户对Python三方库的需求各不相同,而底层服务器一般只安装了一个Python版本。举例来说࿰…...
【Jeecg Boot 3 - 第二天】第2节 前后端docker部署云服务器
更新完成,点击下面章节进入 一、后端部署 1.1、后端 docker-compose 部署 JEECGBOOT 1.2、jar 包和 lib 依赖分离,部署包缩小100倍 二、前端部署 2.1、nginx 部署 JEECGBOOT VUE3 2.2、开启Nginx压缩,解决前端访问慢问题...
2020年第九届数学建模国际赛小美赛A题自由泳解题全过程文档及程序
2020年第九届数学建模国际赛小美赛 A题 自由泳 原题再现: 在所有常见的游泳泳姿中,哪一种最快?哪个冲程推力最大?在自由泳项目中,游泳者可以选择他们的泳姿,他们通常选择前面的爬行。然而,游泳…...
双端队列和优先级队列
文章目录 前言dequedeque底层设计迭代器设计 priority仿函数数组中的第k个最大元素优先级队列模拟实现pushpop调整仿函数存储自定义类型 前言 今天要介绍比较特殊的结构,双端队列。 还有一个适配器,优先级队列。 deque 栈的默认容器用了一个deque的东西…...
c#读取CSV文件跟Excel导入成DataTble
1.读取CSV文件 /// <summary>/// 读取CSV文件/// </summary>/// <param name"fileName">文件路径</param>public static DataTable ReadCSV(string fileName){DataTable dt new DataTable();FileStream fs new FileStream(fileName, FileM…...
Python编程技巧 – 单字符函数
Python编程技巧 – 单字符函数 Python Programming Skills – Single Character Function By JacksonML 0. 前言 Python有其内建(built-in)的一系列函数,其中,有两个函数为长度为一的字符设计。这样的函数是单字符函数,尽管它们操作的对象…...
xcode-文件
IOSDeviceSupoprt 共享缓存库 当你使用新的 iOS 设备连接到 Xcode 时,Xcode 会自动下载并存储相应版本的设备支持文件。 每个 iOS 版本都有一个对应的设备支持文件集,这些文件包含有关设备架构和操作系统的信息,以便 Xcode 能够正确地调试和…...
云原生之深入解析网络服务Istio、eBPF和RSocket Broker
一、服务治理 ① “服务治理”简介 在微服务时代,一个复杂的应用程序被分解为多个组件化、协作和连接的单元,服务往往会承担越来越多的业务责任,这使得服务治理的难度前所未有,仅仅依靠微服务框架级的治理是不够的,构…...
文件系统和磁盘调度
文件系统 概述 文件系统:一种用于持久性存储的系统抽象 在存储器上:组织、控制、导航、访问和检索数据大多数计算机包含文件系统 文件:文件系统中一个单元的相关数据在操作系统中的抽象 文件系统功能 分配文件磁盘空间 管理文件块管理空…...
C++ stringOJ练习题
目录 把字符串转换成整数 反转字符串 字符串中的第一个唯一字符 字符串最后一个单词的长度 找出字符串中第一个只出现一次的字符 字符串相加 字符串最后一个单词长度 字符串相乘 反转字符串3 反转字符串2 验证回文串 把字符串转换成整数 通过遍历字符串并逐位转换…...
解决问题:ImportError: cannot import name ‘_update_worker_pids‘
在复现一些较早年份文献时,网络架构是较早的Pytorch模型,现阶段的高版本不兼容,所以就得安装比如低版本的torch0.4.0以解决问题。 目录 一、问题1.1 问题分析 二、解决办法2.1 Pytorch安装2.2 torchvision安装2.3 测试是否安装成功 三、总结…...
【面试总结】Java面试题目总结(一)
(以下仅为个人见解,如果有误,欢迎大家批评并指出错误,谢谢大家) 1.项目中的验证码功能是如何实现的? 第一步:在项目的pom.xml文件中导入 EasyCaptcha 的依赖; <dependency>…...
大白话数据中台,何为数据中台
文章目录 一、数据中台二、本质三、构建数据中台的几个方面四、总结 最近一直在研发Ai平台,忙碌非凡。 在之余,有小伙伴质疑数据中台其实就是一个web系统,无法就是添加一些业务逻辑的增删改查。 答曰: 回去好好把科普下什么是数…...
escapeshellarg参数绕过和注入的问题
escapeshellcmd escapeshellcmd(string $command): string command--要转义的命令。 escapeshellcmd() 对字符串中可能会欺骗 shell 命令执行任意命令的字符进行转义。 此函数保证用户输入的数据在传送到 exec() 或 system() 函数,或者 执行操作符 之前进行转义。 …...
CSS——标准流、浮动、Flex布局
1、标准流 标准流也叫文档流,指的是标签在页面中默认的排布规则,例如:块元素独占一行,行内元素可以一行显示多个。 2、浮动 作用:让块元素水平排列 属性名:float 属性值: left:…...
P21 类神经网络训练不起来怎么办- 自动调整学习率 Adapative learning rate
梯度大,学习率减小梯度小,学习率变大adam随时间变化 , decay / warm up 调整学习率方法一 adagrad 学习率除以 梯度的方差 方法二 RMSProp 目前最常用的: Adam: RMSProp Moment Learning rate schedule : decay/ warm up l…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...
Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...
el-switch文字内置
el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...
涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...
Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...
并发编程 - go版
1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...
spring Security对RBAC及其ABAC的支持使用
RBAC (基于角色的访问控制) RBAC (Role-Based Access Control) 是 Spring Security 中最常用的权限模型,它将权限分配给角色,再将角色分配给用户。 RBAC 核心实现 1. 数据库设计 users roles permissions ------- ------…...
sshd代码修改banner
sshd服务连接之后会收到字符串: SSH-2.0-OpenSSH_9.5 容易被hacker识别此服务为sshd服务。 是否可以通过修改此banner达到让人无法识别此服务的目的呢? 不能。因为这是写的SSH的协议中的。 也就是协议规定了banner必须这么写。 SSH- 开头,…...
对象回调初步研究
_OBJECT_TYPE结构分析 在介绍什么是对象回调前,首先要熟悉下结构 以我们上篇线程回调介绍过的导出的PsProcessType 结构为例,用_OBJECT_TYPE这个结构来解析它,0x80处就是今天要介绍的回调链表,但是先不着急,先把目光…...
