网络攻防技术:拒绝服务攻击

拒绝服务攻击(Denial of Service,DoS)是黑客最古老也最致命的攻击手段之一。不同于那些悄悄窃取数据的攻击,DoS攻击如一头横冲直撞的蛮牛,目的简单粗暴------让目标系统停止服务,彻底瘫痪网络基础设施

1 拒绝服务攻击概述

1.1 基本概念

拒绝服务攻击,即攻击者想办法让目标机器停止提供服务,是黑客常用的攻击手段之一。对网络带宽进行的消耗性攻击只是拒绝服务攻击的一小部分,只要能够对目标造成麻烦,使某些服务被暂停甚至主机死机,都属于拒绝服务攻击。

攻击者进行拒绝服务攻击,实际上让服务器实现两种效果:一是迫使服务器的缓冲区满,不接收新的请求;二是使用IP欺骗,迫使服务器把非法用户的连接复位,影响合法用户的连接。

1.2 拒绝服务攻击的分类

根据攻击原理和手法的不同,拒绝服务攻击可分为三大类型:

漏洞型拒绝服务攻击:利用协议栈或应用程序中的漏洞,发送精心构造的恶意数据包,导致系统处理异常甚至崩溃。这类攻击通常只需要少量数据包即可达到目的。

重定向型拒绝服务攻击:通过篡改网络路径或欺骗目标系统,将正常流量引导至不存在的路径或返回地址,形成服务中断。

资源消耗型拒绝服务攻击:向目标系统发送大量看似合法的请求,耗尽目标的计算资源、内存或网络带宽,使其无法处理正常请求。

下表对比了三类拒绝服务攻击的主要特点:

攻击类型 攻击原理 所需流量 典型代表
漏洞型 利用系统处理异常报文时的漏洞 少量数据包 Ping of Death、Teardrop
重定向型 篡改网络路径或欺骗目标系统 中等流量 ICMP重定向攻击、Land攻击
资源消耗型 耗尽目标系统资源 海量流量 SYN Flood、HTTP洪泛

2 典型拒绝服务攻击技术

2.1 传统拒绝服务攻击

传统拒绝服务攻击主要利用早期网络协议和操作系统的安全漏洞,通常只需要少量特制数据包就能产生显著效果:

Ping of Death:根据TCP/IP的规范,一个包的长度最大为65536字节。尽管一个包的长度不能超过65536字节,但是一个包分成的多个片段的叠加却能做到。当一个主机收到了长度大于65536字节的包时,就是受到了Ping of Death攻击,该攻击会造成主机的宕机。

Teardrop:IP数据包在网络传递时,数据包可以分成更小的片段。攻击者可以通过发送两段(或者更多)数据包来实现TearDrop攻击。第一个包的偏移量为0,长度为N,第二个包的偏移量小于N。为了合并这些数据段,TCP/IP堆栈会分配超乎寻常的巨大资源,从而造成系统资源的缺乏甚至机器的重新启动。

WinNuke:这是一种以拒绝目的主机服务为目标的网络层次的攻击。攻击者向受害主机的端口139,即netbios发送大量的数据。因为这些数据并不是目的主机所需要的,所以会导致目的主机的死机。

Land攻击:攻击者将一个包的源地址和目的地址都设置为目标主机的地址,然后将该包通过IP欺骗的方式发送给被攻击主机,这种包可以造成被攻击主机因试图与自己建立连接而陷入死循环,从而很大程度地降低了系统性能。

Smurf攻击:该攻击向一个子网的广播地址发一个带有特定请求(如ICMP回应请求)的包,并且将源地址伪装成想要攻击的主机地址。子网上所有主机都回应广播包请求而向被攻击主机发包,使该主机受到攻击。

2.2 洪泛攻击

洪泛攻击不依赖系统漏洞,而是通过海量"合法"请求耗尽目标资源:

SYN Flood攻击:SYN Flood是当前最流行的DoS(拒绝服务攻击)与DDoS的方式之一,这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,使被攻击方资源耗尽(CPU满负荷或内存不足)的攻击方式。

TCP连接的三次握手中,假设一个用户向服务器发送了SYN报文后突然死机或掉线,那么服务器在发出SYN+ACK应答报文后是无法收到客户端的ACK报文的(第三次握手无法完成),这种情况下服务器端一般会重试并等待一段时间后丢弃这个未完成的连接。这段时间的长度我们称为SYN Timeout,一般来说这个时间是分钟的数量级(大约为30秒~2分钟)。如果一个恶意的攻击者大量模拟这种情况(伪造IP地址),服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源。

UDP Flood攻击:UDP Flood攻击的原理与ICMP Flood攻击类似,攻击者通过发送大量的UDP报文给目标计算机,导致目标计算机忙于处理这些UDP报文而无法继续处理正常的报文。

HTTP洪泛:攻击者向Web服务器发送大量看似合法的HTTP请求,耗尽服务器的连接池、CPU或内存资源,导致网站无法为正常用户提供服务。这类攻击更难区分,因为请求看起来与正常用户请求无异。

2.3 低速率拒绝服务攻击

低速率拒绝服务攻击(Low-rate DoS)是一种更隐蔽的攻击方式:

TCP拥塞控制机制:TCP协议具有内置的拥塞控制机制,当检测到网络拥塞时,发送方会显著降低发送速率。这一设计本是为了维护网络稳定,却成为了攻击者可利用的弱点。

低速率拒绝服务攻击原理:攻击者周期性地发送突发流量,触发TCP的拥塞控制机制,使合法连接长期处于低传输速率状态。由于攻击流量并不持续保持高位,传统基于流量阈值的检测机制很难识别这类攻击。

3 分布式拒绝服务攻击

3.1 基于僵尸网络的分布式拒绝服务攻击

基本概念:分布式拒绝服务攻击(DDoS)是在传统的DoS攻击基础上产生的一类攻击方式。单一的DoS攻击一般是采用一对一方式的,当攻击目标CPU速度低、内存小或者网络带宽小等等各项性能指标不高它的效果是明显的。随着计算机与网络技术的发展,计算机的处理能力迅速增长,内存大大增加,同时也出现了千兆级别的网络,这使得DoS攻击的困难程度加大了。所以分布式的拒绝服务攻击手段(DDoS)就应运而生。

集中式命令控制机制:在集中式C&C模型中,攻击者通过一个或多个中心服务器向遍布全球的僵尸节点(被控主机)发送指令。这种架构简单高效,但单点故障风险高------一旦C&C服务器被定位和摧毁,整个僵尸网络就会失效。

分布式命令控制机制:为解决集中式架构的弱点,现代僵尸网络越来越多地采用P2P结构,节点之间相互通信,指令通过加密通道在节点间传递,没有明显的控制中心,大大提高了僵尸网络的抗打击能力。

利用僵尸网络发动拒绝服务攻击:一旦攻击者控制了足够规模的僵尸网络,就可以在选定时间同时激活所有僵尸节点,向特定目标发动协调一致的攻击。攻击流量来源分散且看似合法,使得防御和追踪变得极为困难。

以下流程图展示了一个典型的DDoS攻击体系结构:
攻击者 控制傀儡机 攻击傀儡机/僵尸网络 受害者 僵尸计算机1 僵尸计算机2 僵尸计算机3 ...

3.2 分布式反射拒绝服务攻击

反射攻击利用某些网络服务的特性,将小查询放大为大量响应数据,定向发送给受害者:

DNS反射攻击:攻击者向公共DNS服务器发送大量伪造源IP(受害者IP)的查询请求,DNS服务器会向受害者返回更大的响应数据。由于查询响应比例不对称,攻击者可以获得数十倍的放大系数。

NTP放大攻击:利用网络时间协议(NTP)的MONLIST命令,该命令会返回最近与NTP服务器通信的客户端IP列表。攻击者发送伪造源IP的小请求,可能触发服务器返回包含数百个IP地址的大数据包,放大系数可达数百倍。

4 拒绝服务攻击的防御

4.1 拒绝服务攻击预防

预防措施旨在减少攻击面,增加发动攻击的难度:

  • 系统加固:及时安装安全补丁,关闭不必要的服务和端口,配置适当的安全策略。
  • 协议安全配置:禁用不必要的协议功能,如ICMP重定向、IP源路由等。
  • 资源管理:合理配置系统资源分配策略,设置连接数限制和资源使用阈值。

4.2 拒绝服务攻击检测

有效的检测是及时响应的前提:

基于特征的检测:使用已知攻击特征(如特定数据包模式)进行匹配。这种方法对已知攻击变种有效,但难以应对新型攻击。

基于异常的检测:建立正常网络流量的基线模型,实时监测偏离基线的异常流量。异常检测能够发现未知攻击,但可能产生误报。

4.3 拒绝服务攻击响应

检测到攻击后的快速响应至关重要:

  • 流量过滤:部署访问控制列表(ACL)或防火墙规则,丢弃明显恶意的流量。
  • 速率限制:对特定类型的流量实施速率限制,防止资源被完全耗尽。
  • 源追踪:使用IP回溯技术追踪攻击流量的真实来源,以便采取进一步措施。

4.4 拒绝服务攻击容忍

当无法完全阻止攻击时,通过攻击容忍技术维持核心服务运行:

CDN(内容分发网络)防护 :CDN通过全球分布的边缘节点分散和吸收攻击流量。CDN的分布式特性使其能够提供比单一源站大得多的攻击承受能力。CDN安全防护技术包括边缘安全网关、智能路由与流量清洗、HTTPS加密传输等。

任播(Anycast)技术:任播技术使用多个 AS 号码在不同的地区广播相同的一个 IP 段,这就出现一个IP地址可以同时出现在全球任意一个国家,任意一个机房。这样可以让全球各个国家各个地域的流量虽然访问的是同一个IP但却流向了各自就近的不同机房中,使得分布式的DDoS无法集中火力攻打一处,就使用分布式的方式解决了分布式的攻击。Cloudflare是最早一批大面积使用任播(Anycast)技术的厂商,其无敌的防御能力也得益于此。

云防护服务:专业的DDoS防护服务(如腾讯云的大禹防护)提供大规模的流量清洗能力,能够在攻击流量到达目标前进行识别和过滤。


结语

拒绝服务攻击从简单的个人黑客工具,已发展成为组织化、商业化的网络威胁。随着物联网设备的爆炸式增长,构建僵尸网络变得更加容易,DDoS攻击的规模和频率持续攀升。

相关推荐
liulilittle3 小时前
在 Android Shell 终端上直接运行 OPENPPP2 网关路由配置指南
android·linux·开发语言·网络·c++·编程语言·通信
躺平的赶海人4 小时前
C# Dictionary 线程安全指南:多线程下操作 Dictionary<string, DateTime> 的加锁策略
java·安全·c#
星哥说事4 小时前
SDN 与 NFV:软件定义网络(SDN)与网络功能虚拟化(NFV)架构
网络·架构
shmexon4 小时前
信息的空中之旅:从AM调制原理到工业级5G+Wi-Fi6的技术突破
网络·5g·信息与通信
扁豆的主人4 小时前
RPC服务
网络·网络协议·rpc
一尘之中4 小时前
从比特币的24小时交易到去中心化股市:一场金融交易的范式革命
网络·架构·ai写作
GIS数据转换器4 小时前
2025无人机在农业生态中的应用实践
大数据·网络·人工智能·安全·无人机
广州华锐视点5 小时前
火电厂VR安全培训系统有哪些:广州华锐互动构建 “安全元宇宙” 生态
安全·vr
cozil6 小时前
记录磊科B39路由器跨域组网遇到的问题
网络·智能路由器·跨域组网