拒绝服务攻击
拒绝服务(Denial of service,DoS)攻击,本质上是对安全三元组的可用性进行破坏。DoS攻击导致服务或资源性能降低或合法用户无法使用。
一、实现方式
1、畸形数据包
1)死亡之PING(Ping of Death)
一句话:攻击者发送一个超过IP协议所规定最大包长的ICMP请求进而导致受攻击方主机网络堆栈“死亡”,直至重新启动。
原理:
在IP协议规范中规定了一个IP包的最大长度(65536字节)以及以太网的默认MTU(RFC规定最大传输单元默认为1500字节,可修改),当一个IP包的长度超过MTU字节后,该IP包就会被分成多个片发送至接收端。当接收端的机器提取到各个分片后,将重组为一个完整的数据IP包。在正常情况下,IP包包含整个IP包的长度。但是当IP包被分片之后,在IP头中只包含各个分片的长度,并不包含完整的IP包的长度信息。因此,一旦IP包被分片,重组后的整个IP包的总长度只有在将所有分片接收完毕之后才能确定。
因为在IP协议RFC中规定了一个IP包的最大尺寸,所以大家在设计网络堆栈时都会认为超过最大尺寸的情况不会出现。但是许多早期的网络堆栈没有限制ICMP数据包的最大长度,导致攻击者可以利用工具或且其他方法发送一个超过IP协议最大长度的ICMP数据包,导致目标主机在恢复IP数据包时出现缓冲区溢出,进而系统崩溃。
防护方式:
-
因为不能保证后期是否还会出现同样的问题,需要保持系统补丁的更新;
-
监视网络上正在传输传送的数据包,如果超大包就需要进行分析。
现代死亡之PING:
2)死亡邀请函(INVITE of Death)
一句话:是一种针对VoIP系统的攻击,攻击者通过发送单个格式错误的数据包来使服务器崩溃,从而导致拒绝服务。
原理:模拟程序发送格式错误的数据包使特定字符串缓冲区溢出,添加大量令牌字符或以非法方式修改字段,致使服务器被诱骗进入未定义状态,进而导致呼叫延迟、未经授权的访问和完全拒绝服务。
防护方式:密切关注相关厂家补丁更新。
3)泪滴攻击
攻击者以一种方式将通信流碎片化,使系统无法将数据包重新组合到一起,在旧系统遇到这种情况只能崩溃,而现代系统不再惧怕该攻击。
2、泛洪攻击
1)PING泛洪(Ping Flood)
一句话:攻击者使用大量ICMP回显请求数据包淹没受害者,使得受害者无法响应正常的数据包。
原理:服务器在处理ICMP请求时需要一部分服务资源,进行响应。PING泛洪攻击旨在用自身服务器性能压倒目标服务器,进而导致目标服务器无法响应正常数据包或导致目标服务器崩溃。也可通过僵尸网络进而形成分布式攻击。
防护方式:在服务器或者其他安全设备上禁止ICMP协议数据包响应;通过CDN或者流量清洗手段防止异常ICMP数据进入网络;
2)SYN泛洪(SYN Flood)
一句话:攻击者向目标主机发送大量TCP SYN数据包,忽略从目标主机返回的TCP响应报文,填满用于保存TCP连接的缓冲空间,进而导致目标主机性能过载或崩溃。
原理:通常,客户端向服务器发送一个SYN包,服务器向客户端响应一个SYN/ACK包,客户端随后再返回一个ACK包给服务器,这样就形成了TCP 三次握手并建立了一个通信会话,用于这两个系统之间的传输数据,直到会话被FIN或RST包终止。也可通过僵尸网络进而形成分布式攻击。
攻击者向目标主机大量发送SYN包,目标主机向攻击者响应了SYN/ACK包,但是攻击者不返回ACK包来完成TCP连接,那么目标主机在等待ACK包的过程中为每次请求都保留了一定量的系统资源,当目标主机系统资源耗尽时那么目标主机就会崩溃。
防护方式:
-
SYN Cookie:是一种用于抵御SYN泛洪攻击的技术。使用SYN Cookie允许服务器为避免SYN队列填满,可以断开无用TCP连接。
-
缩短服务器等待ACK回包的时间。默认通常时3分钟,可以缩短该时间,让TCP会话更快的从系统内存中刷出。
-
使用安全防护设备,如入侵防御系统。
3、分布式拒绝服务攻击
1)Smurf攻击(已绝迹)
原理:攻击者通过交换机(或者其他设备)发送广播,形成一个放大网(Smurf放大器),攻击者以广播形式把ICMP回显请求发送给网络上的所有系统并伪造源IP地址(目标主机IP地址),那么只要收到ICMP回显数据包的系统都会向源地址(目标主机IP地址)发送ICMP数据包,进而把目标主机淹没。
2)Fraggle攻击
Fraggle攻击是Smurf攻击的一种变体,攻击者将大量UDP流量发送到目标主机的UDP/7和UDP/19端口上,通过放大器将目标主机淹没。
二、防护手段
即时更新系统或应用程序补丁(重点);
通过监视手段对整体网络进行监视,能够发现异常情况;
通过安全设备或者流量清洗,对异常流量进行处理;
三、资料参考
《CISSP AIO》
《CISSP OSG》