拒绝服务(DOS)与分布式拒绝服务(DDOS)
简介:
DOS(Denial of Service,拒绝服务攻击),它的原理很简单,就是用我们手里的机器去给服务器发请求,如果我们手头的服务器各方面性能都比服务器的主机的性能好,那么当我们发送大量请求给服务器,占用服务器的资源,导致服务器没有能力去处理其他用户请求。DDOS(Distributed Denial of Service,分布式拒绝服务),它是DOS家族里很难防范的一种攻击方式,攻击者首先控制大量肉鸡,然后向目标服务器发送海量请求,导致目标服务器不可用。这里我们不禁要问攻击者是如何获取大量肉鸡的呢?攻击者会对某些APP或网站植入一些恶意代码,如果这款APP或网站的活跃用户数很多,那么这个网站就会受到很多莫名的请求。
- DoS拒绝服务攻击概念介绍
利用程序漏洞或一对一资源耗尽的方法对服务端发起的攻击。
- DDoS分布式拒绝服务攻击概念介绍
一对一的攻击方式完全拼各自的资源,攻击效果比较差;
多对一的攻击汇聚资源能力,重点在于量大,属于资源耗尽型。
拒绝服务攻击分类:
攻击协议原理
1、泛洪攻击
首引入计算机网络的知识,客服端与服务端建立连接的过程
SYN Flood (SYN洪水) 是种典型的DoS (Denial of Service,拒绝服务) 攻击。效果就是服务器TCP连接资源耗尽,停止响应正常的TCP连接请求。
说到原理,还得从TCP如何建立连接(Connection)讲起。通信的双方最少得经过3次成功的信息交换才能进入连接全开状态(Full-Open),行话叫建立TCP连接的3次握手(TCP three-way handshake)。
假设连接发起方是A,连接接受方是B,即B在某个端口(Port)上监听A发出的连接请求。如下图所示,左边是A,右边是B。
A首先发送SYN(Synchronization)消息给B,要求B做好接收数据的准备;B收到后反馈SYN-ACK(Synchronization-Acknowledgement) 消息给A。
这个消息的目的有两个:
(1) 向A确认已做好接收数据的准备
(2) 同时要求A也做好接收数据的准备
此时B已向A确认好接收状态,并等待A的确认,连接处于半开状态(Half-Open),顾名思义只开了一半;A收到后再次发送ACK(Acknowledgement)消息给B,向B确认也做好了接收数据的准备,至此三次握手完成,“连接”就建立了,实际上只是双方都按对方的要求进入了可以接收消息的状态。以上彼此要求对方确认的“状态”主要是双方将要使用的消息序号(SequenceNum),TCP为保证消息按发送顺序抵达接收方的上层应用,需要用消息序号来标记消息的发送先后顺序的。
TCP是“双工”(Duplex)连接,同时支持双向通信,也就是双方同时可向对方发送消息,其中SYN和SYN-ACK消息开启了A→B的单向通信通道(B获知了A的消息序号);SYN-ACK和ACK消息开启了B→A单向通信通道(A获知了B的消息序号)。
以上讨论的是在双方诚实可信,网络正常的理想状况下建立连接。但实际情况是,网络可能不稳定会丢包,使握手消息不能抵达对方,也可能是对方故意不按规矩来,故意延迟或不发送握手确认消息。假设B通过某TCP端口提供服务,B在收到A的SYN消息时,积极的反馈了SYN-ACK消息,使连接进入半开状态,因为B不确定自己发给A的SYN-ACK消息或A反馈的ACK消息是否会丢在半路,所以会给每个待完成的半开连接都设一个Timer,如果超过时间还没有收到A的ACK消息,则重新发送一次SYN-ACK消息给A,直到重试超过一定次数时才会放弃。
做好人是要付出代价的,B为帮助A能顺利连接,需要分配内核资源维护半开连接,那么当B面临海量的大忽悠A时,如上图所示,SYN Flood攻击就形成了。攻击方A可以控制肉鸡向B发送大量SYN消息但不响应ACK消息,或者干脆伪造SYN消息中的Source IP,使B反馈的SYN-ACK消息石沉大海,导致B被大量注定不能完成的半开连接占据,直到资源耗尽,停止响应正常的连接请求。
总结:就是通过不断地发SYN请求但是拒绝接收服务端的响应,致使服务端的资源耗尽,其他的正常客户端就无法进行正常的连接服务
利用脚本实现syn_flood攻击:
攻击脚本:syn_flood.py
# 安装Scapy到Debian, Ubuntu或Linux Mint 或kali apt-get install python-scapy # 安装Scapy到Fedora或CentOS/RHEL yum install scapy 说明:在CentOS/RHEL上,你首先需要启用EPEL仓库 # 防火墙需要进行配置,阻止RST包发出 iptables -A OUTPUT -p tcp –tcp-flags RST RST -d 192.168.21.117 -j DROP 说明:发一个包释放一个连接,这种达不到攻击郊果。要构成攻击效果可以通过iptables限止发送RST包。
攻击命令
python syn-flodd.py 192.168.110.14(攻击ip) 3389 20
攻击软件:FastSend
DAY6
针对TCP服务的拒绝服务攻击
2008年有Jack C.Louis发现,针对TCP服务的拒绝服务攻击:
- 消耗被攻击目标系统资源,与攻击目标建立大量socket链接
- 完成三次握手最后的ACK包window大小为0(客户端不接收数据),攻击者资源消耗小(CPU 内存 带宽)
- 异步攻击,单机可拒绝服务高配资源服务器
- window窗,实现的TCP流控
攻击脚本:socktress
环境准备:1、 防火墙需要进行配置,阻止RST包发出
iptables -A OUTPUT -p tcp –tcp-flags RST RST -d 192.168.21.117(攻击目标) -j DROP (linux命令) 说明:发一个包释放一个连接,这种达不到攻击郊果。要构成攻击效果可以通过iptables限止发送RST包
攻击命令:
# C攻击脚本
./sockstress 1.1.1.1:80 eth0
./sockstress 1.1.1.1:80 eth0 -d 100000
./sockstress 1.1.1.1:80 eth0 -p payloads/http
说明:-d是微秒内指定,默认为1000000 改成10之后并发带度更快
攻击防护措施方法:
直到今天sockstress攻击仍然是一种很有效的DoS攻击方式,甶于建立完整的TCP三步握手,因此使用syn cookie防御无效,根本的防御方法是采用白名单(不实际)
折中对策:限制单位时间内每IP建的TCP连接数
封杀每30秒与80端口建立连接超过10个的IP地址
iptables -I INPUT -p tcp –dport 80 -m state –state NEW -m recent –update –seconds 30 –hitcount 10 -j DROP
DNS攻击方法
产生大流量的攻击方法 DDos
- 单机的带宽优势
- 巨大单机数量形成的流量汇聚
- 利用协议特性实现放大效果的流量
DNS协议放大效果
- 查询请求流量小,但响应流量可能非常巨大
- dig ANY hp.com @202.106.0.20 (流量放大约8倍)
攻击原理
- 伪造源地址为被攻击目标地址,向递归域名查询服务器发起查询
- DNS服务器成为流量放大和实施攻击者,大量DNS服务器实现DDoS
SNMP攻击
简单网络管理协议(Simple Network Management Protocol)
- 服务端UDP 161 / 162
- 管理站(manager /客户端)、被管理设备(agent /服务端)
- 管理信息数据库(MIB)是一个信息存储库,包含管理代理中的有关配置和性能的数据,按照不同分类,包含分属不同组的多个数据对象
- 每一个节点都有一个对象标识符(OID)来唯一的标识
- IETF定义标准的MIB库/厂家自定义MIB库
攻击原理
- 请求流量小,查询结果返回流量大
- 结合伪造源地址实现攻击
NTP攻击
网络时间协议(Network Time Protocol)
- 保证网络设备时间同步
- 电子设备互相干扰导致时钟差异越来越大
- 影响应用正常运行、日志审计不可信
- 服务端 UDP 123
攻击原理
- NTP服务提供monlist (MON_GETLIST)查询功能,监控NTP服务器的状况
- 客户端查询时,NTP服务器返回最后同步时间的600个客户端IP,每6个IP—个数据包,最多100个数据包(放大约100倍)
CC攻击
实现DDOS和伪装攻击:CC(Challenge Collapsar)
- CC主要是用来攻击页面的
- 可以增加数据库并发访问压力
- 服务端被访问频率越高,占用的系统资源越高
攻击原理:
- 攻击者控制某些主机不停地发大量数据包给对方服务器造成服务器资源耗尽,一直到宕机崩溃
- 就是模拟多个用户(多少线程就是多少用户)不停地进行访问那些需要大量数据操作(就是需要大量CPU时间)的页面
- 造成服务器资源的浪费,CPU长时间处于100%,永远都有处理不完的连接直至就网络拥塞,正常的访问被中止
应用层DOS攻击
应用服务漏洞
- 服务代码存在漏洞,遇异常提交数据时程序崩溃
- 应用处理大量并发请求能力有限,被拒绝的是应用或OS
缓冲区溢出漏洞
- 向目标函数随机提交数据,特定情况下数据覆盖临近寄存器或内存
- 影响:远程代码执行、DoS
- 利用模糊测试方法发现缓冲区溢出漏洞
CesarFTP 0.99 服务漏洞
- ftp_fuzz.py # MKD/RMD
- MS12-020远程桌面协议DoS漏洞
应用层DoS攻击方式_Slowhttptest
- 低带宽应用层慢速DoS攻击(相对于CC等快速攻击而言的慢速)
- 最早由Python编写,跨平台支持(Linux、win、Cygwin、OSX)
- 尤其擅长攻击apache、tomcat (几乎百发百中)
客户端 100请求 — 服务端
- 攻击方法实现:Slowloris、Slow HTTP POST攻击
耗尽应用的并发连接池,类似于Http层的Syn flood。
HTTP协议默认在服务器全部接收请求之后才开始处理,若客户端发送速度缓慢或不完整,服务器时钟为其保留连接资源池占用,此类大量并发将导致DoS
Slowloris:完整的http请求结尾是\r\n\r\n,攻击发\r\n……
Slow POST: HTTP头content-length声明长度,但body部分缓慢发送
- 攻击方法实现:Slow Read attack攻击
- 与slowloris and slow POST目的相同,都是耗尽应用的并发连接池
- 不同之处在于请求正常发送,但慢速读取响应数据
- 攻击者调整TCP window窗口大小,使服务器慢速返回数据
- 攻击方法实现:Apache Range Header attackk攻击
- 客户端传输大文件时,体积查过HTTP Body大小限制时进行分段
- 耗尽服务器CPU、内存资源
攻击测试:
torshammer.py(该脚本需要自己下载即可) –t 192.168.32.84 -p 8080 -r 1000
防护方法和思路
- 利用开源软件实现防护:
- TCP连接有效性检查
- 校验TCP连接时间,指定时间内服务器最少发送的报文数,校验失败的屏蔽时间TCP连接约束 禁止代理访问
- 服务器资源占用限制
- TCP连接会话限制
- HTTP代理限制
- 黑白名单
拒绝服务(DOS)与分布式拒绝服务(DDOS)相关推荐
- DDoS分布式拒绝服务攻击简介
分布式拒绝服务攻击可以使很多的计算机在同一时间遭受到攻击,使攻击的目标无法正常使用,分布式拒绝服务攻击已经出现了很多次,导致很多的大型网站都出现了无法进行操作的情况,这样不仅仅会影响用户的正常使用,同 ...
- 分布式拒绝服务攻击(DDoS)原理及防范
转自:http://www.cnblogs.com/rootq/archive/2009/11/06/1597215.html http://www.ibm.com/developerworks/cn ...
- 关于分布式拒绝服务(DDoS)的简单梳理和介绍
分布式拒绝服务(DDoS:Distributed Denial of Service):攻击指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,从而成倍地提高 ...
- DDOS(分布式拒绝服务)攻防实战演练
原贴地址:http://blog.chinaunix.net/u/31547/showart_351473.html DDOS(分布式拒绝服务)攻防实战演练 用户对于这个话题似乎已经不再陌生, ...
- 【计算机网络】网络安全 : 计算机网络安全威胁 ( 四种网络攻击类型 | 主动攻击与被动攻击 | 分布式拒绝服务攻击 DDos | 恶意程序 | 计算机网络安全目标)
文章目录 一.网络安全内容 二.四种网络攻击 三.被动攻击 与 主动攻击 四.分布式拒绝服务 DDos 五.恶意程序 六.计算机网络安全目标 一.网络安全内容 网络安全内容 : 网络安全概述 对称加密 ...
- DDoS(Distributed Denial of Service,分布式拒绝服务)
DDoS:Distributed Denial of Service,即分布式拒绝服务攻击. 借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,从而成倍地提高 ...
- 计算机网络】网络安全 : 计算机网络安全威胁 ( 四种网络攻击类型 | 主动攻击与被动攻击 | 分布式拒绝服务攻击 DDos | 恶意程序 | 计算机网络安全目标)
一.网络安全内容 网络安全内容 : 网络安全概述 对称加密 和 非对称加密 体质 数字签名 因特网安全协议 链路加密 与 端到端加密 防火墙 二.四种网络攻击 四种网络攻击 : ① 截获 : 窃听 其 ...
- 分布式拒绝服务(DDOS)攻击发展趋势
2019独角兽企业重金招聘Python工程师标准>>> 分布式拒绝服务 (DDoS) 攻击虽然已不是一个新概念,但其攻击效果却非常有效.近年来,DDoS 攻击的强度和数量不断上升,但 ...
- 如何阻止分布式拒绝服务***
如何阻止分布式拒绝服务*** 分布式拒绝服务*** ,通过强迫企业系统宕机来耗费时间和金钱,对企业造成损害.本文将有助于你更好的理解分布式拒绝服务***的原理.它们可能造成的灾害以及如何阻止分布式拒绝 ...
最新文章
- 零基础python从入门到精通 pdf-PYTHON从入门到精通 PDF 下载
- 【详解,小白也能看懂】javaweb-Servlet中, OutputStream与PrintWriter的使用和区别
- time series 时间序列 | fractional factorial design 部分要因试验设计
- 《Android Studio开发实战 从零基础到App上线(第2版)》常见问题解答
- 字符串、数组、randomAccessFile 中length的异同
- Visual C#中用WMI编写网络应用程序
- 拉扎维模拟CMOS集成电路设计python建模工程——利用matplotlib绘制NMOS与PMOS转移特性曲线
- 显卡dos测试软件,A+N卡测试说明_早期显卡DOS版本
- matlab初学者_脚本文件调用函数文件
- windows无法新建计算机对象,教您activex部件不能创建对象怎么解决
- layui 确认,取消弹窗
- 柯美smb扫描出现服务器连接错误_为什么震旦复印机扫描提示错误扫描SMB跳ED09C7?...
- 2022年云计算的八大发展趋势,多样化云计算形态成为主流
- zuk z2 android 8,【2018-12-13】ZUK Z2/Z2Pro ZUI 10 尝鲜 Android 8.1 By YouLinw
- 如何免费体验腾讯云虚拟主机(云服务器)
- Jmeter-录制脚本操作
- js通过IP地址获取所在城市
- (DCDC)CM3601降压型开关稳压器 60V,480KHz,0.5A
- 基于Scratch的弹球游戏需求分析
- 【闲谈】暴露IP地址有危险吗?可查到你下过的小电影
热门文章
- 软件工程 学习管理系统 需求分析文档
- 清华大学五道口金融学院2021年博士生招生简章(直博、硕博、普博)
- spring resteasy单元测试
- mate10如何android,华为Mate10怎么使用NFC功能?华为Mate10手机NFC功能使用详细教程...
- Linux网络包的收发流程
- 超好看的辅助网站html源码 记事本修改即可
- Android直播开发之旅(18):FFmpeg中滤镜(filter)的工作原理
- (附源码)计算机毕业设计SSM中小型企业工作日志管理系统APP
- linux 查看u盘文件,详细介绍Linux系统下检测U盘是不是已经连接的方法
- NG Toolset开发笔记--5GNR Resource Grid(11)