2.攻击系统资源
终端设备在与服务器进行通信时,经常需要创建会话连接,在此过程中通常会使用TCP和SSL等协议。
会话连接一旦被占满,新进入的会话请求就必须等待前面的会话完成。
消耗系统资源的DDoS攻击的主要目的就是对系统维护的连接资源进行消耗和占用,阻止正常连接的建立,从而达到拒绝服务的目的。

2.1 攻击TCP连接

2.1.1 TCP连接洪水攻击
在TCP三次握手的过程中,服务器会创建并保存TCP连接的信息到连接表中。连接表的大小是有限的,一旦服务器接收到的连接数量超过了连接表能存储的数量,服务器就无法创建新的TCP连接了。
攻击者可以利用大量受控主机,通过快速建立大量恶意的TCP连接占满被攻击目标的连接表,使目标无法接受新的TCP连接请求,从而达到拒绝服务攻击的目的。

2.1.2 SYN洪水攻击
在建立TCP连接的过程中,如果在服务器返回SYN+ACK报文后,客户端没有对其进行确认,服务器就需要重传SYN+ACK报文,并等待客户端的确认报文直到TCP连接超时。
这种等待客户端确认的连接状态通常被称为半开连接。在连接超时之前,半开连接会一直保存在服务器的连接表中。
由于连接表的大小是有限的,如果在短时间内产生大量的半开连接,而这些连接又无法很快地结束,连接表就会迅速被占满,导致新的TCP连接无法建立。
SYN洪水攻击就是攻击者利用受控主机发送大量的SYN报文,使服务器打开大量的半开连接,占满服务器的连接表,从而影响正常用户与服务器建立会话,造成拒绝服务。
这种攻击方式会很明显地暴露出攻击者的IP地址,同时响应报文会作为反射流量占用攻击者的带宽资源。
更好的方式是将SYN报文的源IP地址随机伪造成其他地址,这样攻击目标会将应答发送给伪造地址,从而占用连接资源并隐藏攻击来源。

2.1.3 PSH+ACK洪水攻击
由于带有PSH标志位的TCP数据包会强制要求接收端将接收缓冲区清空并将数据提交给应用服务进行处理,因此当攻击者利用受控主机向攻击目标发送大量的PSH+ACK数据包时,被攻击目标就会消耗大量的系统资源不断地进行接收缓冲区的清空处理,导致无法正常处理数据,从而造成拒绝服务。
单独使用PSH+ACK洪水攻击对服务器产生的影响并不十分明显,更有效的方式是SYN洪水攻击与ACK洪水攻击相结合,这样能够绕过一部分防护设备,增强攻击效果。

2.1.4 Sockstress慢速攻击
在TCP传输数据时,会将数据临时存储在接收缓冲区中,该接收缓冲区的大小是由TCP窗口表示的。
如果TCP窗口大小为0则表示接收缓冲区已满,发送端应该停止发送数据,直到接收端窗口更新。
Sockstress慢速攻击就是利用该原理长时间地维持TCP连接,以达到拒绝服务的目的。
Sockstress慢速攻击首先会完成TCP三次握手以建立TCP连接,在最后的ACK应答中,攻击者将其TCP窗口设置为0后再进行一次数据请求。
攻击目标在传输数据时,发现接收端的TCP窗口大小为0就会停止传输数据,并发出TCP窗口探测包,询问攻击者其TCP窗口是否更新。
由于攻击者没有更新TCP窗口大小,攻击目标会一直维持TCP连接等待数据发送,并不断进行窗口更新探测。
攻击目标的TCP连接表将逐渐耗尽,无法接受新的连接而导致拒绝服务。
Sockstress慢速攻击的另一种方式是将TCP窗口设置为一个非常小的值,这样攻击目标将不得不把需要发送的数据切分成大量很小的分片,这会极大地消耗目标的内存和处理器资源,造成系统响应缓慢和拒绝服务。

2.2 攻击SSL连接

2.2.1 THC SSL DoS攻击
在进行SSL数据传输之前,通信双方首先要进行SSL握手,以协商加密算法交换加密密钥,进行身份认证。
通常情况下,这样的SSL握手过程只需要进行一次即可,但是在SSL协议中有一个Renegotiation选项,通过它可以进行密钥的重新协商以建立新的密钥。
THC SSL DoS攻击就是这样反复不断地进行密钥重新协商过程,该过程需要服务器投入比客户端多15倍的CPU计算资源。
攻击者只需要一台普通PC就能够拖慢一台高性能服务器,如果有大量主机同时进行攻击,就会使服务器忙于协商密钥而完全停止响应。

2.2.2 SSL洪水攻击
在SSL握手的过程中,服务器会消耗较多的CPU计算资源对数据先进行解密再进行有效性检验。
攻击者可以利用这个特性进行SSL洪水攻击。

最新文章

  1. getSupportFragmentManager要用在FragmentActivity及其子类中
  2. HAOI2012音量调节
  3. python 装饰器修改调整函数参数
  4. bootstrap表单带验证
  5. 探索jdk8之ConcurrentHashMap 的实现机制
  6. css3颜色渐变
  7. Laxcus大数据管理系统2.0(14)- 后记
  8. Java 中判断两个对象是否相等
  9. 第二百九十五天 how can i 坚持
  10. Android之布局
  11. C#中Thread.sleep()
  12. IIS修改队列长度
  13. Vs2012于Linux应用程序开发(2):图案
  14. [Swust OJ 795]--Penney Game
  15. ElfJS从入门到精通(一)
  16. Java调用dll动态库
  17. python入门学习:8.类
  18. Java集合源码学习(四)HashMap
  19. python scrapy解码方法和时间格式转换
  20. asp.net中Winform开发框架之数据即时更新的实现

热门文章

  1. php学习随笔--定时触发
  2. js——数组操作
  3. python基础教程(第二版)
  4. 尚硅谷《全套Java、Android、HTML5前端视频》
  5. linux cp命令使用
  6. 前端之css样式(选择器)。。。
  7. tmk射气球
  8. 20165323 预备作业3 Linux安装及学习
  9. html5和html的区别
  10. javascript OOP(下)(九)