拒绝服务攻击详解

一、拒绝服务攻击的原理
●拒绝服务(DoS,Denial of Service)是一种典型的破坏服务可用性的攻击方式。它不以获得系统权限为目的。

●根据NIST SP 800-61的定义,拒绝服务是一种通过耗尽CPU、内存、带宽或磁盘空间等系统资源,来阻止或削弱对网络、系统或者应用程序的授权使用的行为。

●拒绝服务攻击通常利用传输协议弱点、系统漏洞、服务漏洞对目标系统发起大规模进攻,利用超出目标处理能力的海量合理请求数据包消耗可用系统资源、带宽资源等,造成程序缓冲区溢出错误,致使其无法处理合法用户的请求,无法提供正常服务,最终致使网络服务瘫痪,甚至系统死机。

●早期的拒绝服务攻击主要是利用TCP/IP协议或应用程序的缺陷,使得目标系统或应用程序崩溃。

  当前的拒绝服务攻击试图通过耗尽系统资源来达到目标系统不能为授权用户提供服务的目的。

二、拒绝服务攻击的分类
1、资源消耗
●可消耗的资源包括目标系统的系统资源(包括CPU资源、内存资源、存储资源等)和网络带宽

●如:发送大量的垃圾数据包占用网络带宽,导致正常的数据包因为没有可用的带宽资源而无法到达目标系统;发送大量的垃圾邮件,占用系统磁盘空间;制造大量的垃圾进程占用CPU资源等。

2、系统或应用程序缺陷
●主要利用网络系统或协议的漏洞来完成,一个恶意的数据包可能触发协议栈崩溃,从而无法提供服务。

●这类攻击包括死亡之Ping(Ping of Death)、泪滴攻击(Teardrop)、Land攻击、Smurf攻击、IP分片攻击、UDP泛洪攻击等。

3、配置修改
●修改系统的运行配置,导致网络不能正常提供服务。

●如:修改主机或路由器的路由信息、修改注册表或者某些应用程序的配置文件。

三、典型的拒绝服务攻击
1、Ping of Death
●ICMP报文长度固定(64KB),很多操作系统只开辟64KB的缓冲区用于存放ICMP数据包。如果ICMP数据包的实际尺寸超过64KB,就会产生缓冲区溢出,导致TCP/IP协议堆栈崩溃,造成主机重启或死机,从而达到拒绝服务攻击的目的。

●通过ping命令的-1选项可以指定发送数据包的大小。如果设置的大小超过了缓冲区大小将触发协议栈崩溃,如:

ping -1 65540 192.168.1.1
●现在的操作系统已经修复了该漏洞,当用户输入超出缓冲区大小的数值时,系统会提示用户输入范围错误。

2、泛洪攻击
泛洪(Flooding)攻击是一种常见的依靠大流量来挫败目标系统的一种攻击方式。

(1)SYN泛洪
●三步握手过程:

●原理:SYN泛洪利用的是TCP协议的三步握手机制,攻击者利用伪造的IP地址向目标系统发出TCP连接请求,目标系统发出的响应报文得不到被伪造IP地址的响应,从而无法完成TCP的三步握手,此时目标系统将一直等待最后一次握手消息的到来直到超时,即半开连接。如果攻击者在较短的时间内发送大量伪造的IP地址的TCP连接请求,则目标系统将存在大量的半开连接,占用目标系统的资源,如果半开连接的数量超过了目标系统的上限,目标系统资源耗尽,从而达到拒绝服务的目的。

●常用工具:hping3。hping是面向命令行的用于生成和解析TCP/IP协议数据包汇编/分析的开源工具,支持TCP、UDP、ICMP、RAW-IP协议,具有跟踪路由模式。使用hping3可以很方便构建拒绝服务攻击。如:以下命令将实现对192.168.1.1主机进行SYN泛洪攻击:

hping -c 10000 -d 120 -S -p 80 --flood --rand-source 192.168.1.1
//-c 10000:表示参数数据包数据量为10000
//-d 120:指定数据包大小为120
//-S:指定发送SYN数据包
//-p 80:指定端口号为80
//--flood:指定进行防洪,即尽可能快的发送数据包
//--rand-source:指随机化发送数据包的源地址
发起攻击后可以通过Windows任务管理器看到攻击效果,CPU的占用率几乎达到了100%。

●针对SYN泛洪的防御:

A.缩短SYN Timeout时间

可以使得攻击者伪造的SYN还没有达到目标系统上限时就超时,半开连接被丢弃,从而释放部分被占用的系统资源。

B.设置SYN Cookie

给每个请求连接的IP分配一个Cookie,如果短时间内连续收到某个IP的重复SYN报文,就认定是攻击行为,丢弃来自该IP地址的数据包。

C.负反馈策略

一旦SYN半连接的数量超过系统中TCP活动半连接最大连接数的阈值,系统将认为受到攻击并作出反应:减少SYN Timeout时间、减少SYN-ACK的重试次数、自动对缓冲区中的报文进行延时等措施。

D.退让策略

SYN泛洪攻击的缺陷是一旦攻击开始,将不会再进行域名解析。服务器受到攻击后迅速更换IP地址,那么攻击者攻击的将是一个空的IP地址,而防御方只要将DNS解析更改到新的IP地址就能在很短的时间内恢复正常用户访问。为迷惑攻击者,甚至可以放置一台“牺牲”服务器让攻击者满足于攻击的效果。

E.分布式DNS负载均衡

将用户的请求分配到不同IP的服务器主机上。

F.防火墙

识别SUN泛洪攻击所采用的攻击方法,并将攻击包阻挡在外。

(2)ACK泛洪攻击
●原理:与SYN泛洪类似,不同的是攻击者直接伪造三步握手的最后一个ACK数据包。目标系统收到该数据包后会查询有没有该ACK对应的握手消息。因为没有前期握手过程,所以目标系统查询后会回复ACK/RET。该过程消耗目标系统资源,当攻击者发送大量的伪造的ACK数据包时,可能会耗尽系统资源,从而导致拒绝服务。

(3)TCPLAND攻击
●原理:TCPLAND(Local Area Network Denial Attack)攻击同样利用了TCP的三步握手过程。通过向目标系统发送TCP SYN报文而完成对目标系统的攻击。与正常的TCP SYN报文不同的是,LAND攻击报文的源IP地址和目的IP地址相同,都是目标系统的IP地址。因此,目标系统接收到这个SYN报文后,就会向该报文的源地址(目标系统本身)发送一个ACK报文,并建立一个TCP连接,即目标系统自身建立连接。如果攻击者发送了足够多的SYN报文,则目标系统的资源就会耗尽,最终造成DoS攻击。

●针对LAND攻击的检测:只要判断网络数据包的源/目标地址是否相同即可。可以通过防火墙设置适当的防火墙过滤规则(入口过滤)来防止该类攻击。

(4)UDP泛洪攻击
●原理:攻击者将UDP数据包发送到目标系统的服务端口上,通常是诊断回送服务Echo,因为此服务一般默认开启。若目标系统开启了此服务,就会回应一个带有原始数据内容的UDP数据包给源地址主机。若目标系统没有开启此服务,就会丢弃攻击者发送的数据包,可能会回应ICMP的“目标主机不可达”类型消息给攻击者。但是无论服务有没有开启,攻击者消耗目标系统链路容量的目的已经达到。几乎所有的UDP端口都可以作为攻击目标端口。

3、Smurf攻击
Smurf攻击是发生在网络层的著名DoS攻击,该攻击结合了IP欺骗和ICMP响应,使大量网络传输充斥目标系统,是一种典型的放大反射攻击。

●原理:因为目标系统会优先处理ICMP报文而导致无法为合法用户提供服务。为了使攻击有效,Smurf利用了定向广播技术,即攻击者向反弹网络的广播地址发送源地址为被攻击者主机IP地址的ICMP数据包。因此反弹网络会向被攻击者主机发送ICMP响应数据包,从而淹没被攻击主机。

●例:被攻击者主机的IP地址为10.10.10.10。攻击者首先找到一个存在大量主机的网络(反弹网络),并向其广播地址(192.168.1.255)发送一个伪造的源地址为被攻击主机的ICMP请求分组。路由器收到该数据包后,会将该数据包在192.168.1.0/24中进行广播。收到广播的所有192.168.1.0/24网段的主机都会向10.10.10.10主机发送ICMP响应。这会导致大量数据包被发往被攻击主机10.10.10.10,从而导致拒绝服务。

四、分布式拒绝服务攻击DDoS
分布式拒绝服务攻击(DDoS,Distributed Denial of Service)是在Dos基础上产生的,也是目前威力最大的DoS攻击方法。DDoS攻击将大量计算机(傀儡主机、僵尸网络、botnet)联合起来对一个或多个大型站点发起DoS攻击,从而提高了DoS的威力。

1、组成
DDoS一般都是基于客户机/服务器模式。DDoS攻击程序一般由客户端、服务端和守护程序组成。客户端也称攻击控制台,即攻击者发起攻击的主机,攻击者一般不需要直接控制守护程序,而是通过服务器端来控制攻击过程,这样更有利于隐藏自己。

服务器端也称主控端,使一些攻击者已经入侵成功并可以实施控制的主机。服务器端安装的程序可以接受来自攻击控制台发来的指令,并将这些指令发送到守护程序所在主机。

守护程序所在主机称为攻击代理,其同样是被攻击者入侵并控制的一部分主机,在其上安装攻击性程序,可以接收来自服务器端的指令,并向目标系统发起攻击。

2、流程
首先需要在互联网上寻找有漏洞的主机并实施入侵,然后在其中安装后门程序使其成为傀儡/僵尸主机(由大量僵尸主机组成的网络称为僵尸网络)。攻击者控制的僵尸网络里面的主机越多,DDoS攻击的威力越大。

3、特点
●分布性

通过分布在不同地点协同发起攻击

●隐蔽性

DDoS通过傀儡主机发起攻击,对于真正发起攻击的攻击者而言具有很好的隐蔽性,导致追踪攻击者更为困难

●攻击威力大

DDoS攻击的危害性非常巨大,除了会造成攻击目标服务能力下降外,还会占用大量的网络带宽,造成网络拥塞,威胁到这个网络的安全运行。

五、DoS/DDoS攻击的检测与防御
1、检测
●出现大量的DNS PTR查询请求

●超出网络正常工作时的极限通讯流量

●特大型的ICMP和UDP数据包

●不属于正常连接通讯的TCP和UDP数据包

●数据段内容只包含文字和数字字符(如:没有空格、标点和控制字符)

2、防御困难的原因
●定位攻击者不容易,因为Internet上绝大多数网络都不限制源地址,即伪造源地址非常容易,因此很难溯源找到攻击控制端的位置。且各种反射式攻击导致无法定位攻击者。

●如果攻击者构造足够大的合法流量到达目标网络,那么流量可能会使目标系统的网络连接被淹没,从而限制其他想要连接到目标系统的合理请求。

3、防御方法
●进行合理的带宽限制:限制基于协议的带宽。如:端口25只能使用25%的带宽,端口80只能使用50%的带宽。

●运行尽可能少的服务,只允许必要的通信

●及时更新系统并安装系统补丁

●封锁恶意IP地址

●增强系统用户的安全意识,避免成为傀儡主机。如果攻击者无法入侵并控制足够数量的傀儡主机,则DDoS就无法进行。

●建立健全DoS/DDoS攻击的应急响应机制。组织机构应该建立相应的计算机应急响应机制,当DoS/DDoS攻击发生时,应迅速确定攻击源,屏蔽攻击地址,丢弃攻击数据包,最大限度地降低损失。详情请加微信17388160749。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值