下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

解析常见的拒绝服务攻击类型

作者:课课家教育     来源: http://www.kokojia.com点击数:4497发布时间: 2018-01-14 10:00:03

标签: 网络安全服务器数据库

软考,您想通过吗?一次通过才是硬道理

  网络安全中,拒绝服务攻击以其危害巨大,难以防御等特点成为黑客经常采用的攻击手段。在拒绝服务攻击原理下,它又派生出不同的攻击类型,正确了解这些不同的拒绝攻击类型,才能正确、系统地为自己所在企业部署完美的安全防护系统。下面,我们就来简单介绍一些传统的攻击类型。
  1、SYN Foold
  SYN Foold是当前最流行的DoS(拒绝服务)与DdoS(Distributed Denial of Service分布式拒绝攻击)的方式之一,这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,使被攻击方资源耗尽(CPU满负荷或内存不足)的攻击方式。
  SYN Foold攻击是利用TCP协议的特性发动的,通过发送大量伪造的带有SYN标志位的TCP报文使目标服务器连接耗尽,达到拒绝服务的目的。要想理解 syn flood的 攻击原理 必须要先了解TCP协议建立连接的机制。TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层 通信协议。在TCP/IP协议簇中,TCP层是位于IP层之上,应用层之下的中间层。不同 的主机的应用层之间通信,通 常需要可靠的、像管道一样的连接,但是IP层(网络层)不提供这样的可靠字节 流机制,而是提供不可靠的数据包交换。因为TCP是可靠的传输方式,所以 在通信之前需要建立连接,TCP建立连接的方式就是著名的TCP三次握手
解析常见的拒绝服务攻击类型 _网络安全_服务器_数据库_课课家教育  syn flood攻击就是在三次握手机制的基础上实现的。攻击者通过伪造IP 报文,在IP报文的原地址字段随机填入伪造的IP地址,目的地址填入 要攻击的服务器IP地址,其他TTL、ID 以及TCP中的Source Port等随机填入合理数据,TCP的目的端口填入目的服务器开放的 端口 如:80、8080等,syn标志位置 1。然后通过不停的循环讲伪造好的数据包发送 到目的服务器。可以看到目标主机建立了很多虚假的半开连接,这耗费了目标主机大量的 连接资源。可以想象如果成千上万台“肉鸡 ”对一台服务器发动syn flood攻击威力将是非常强大。 IP地址_服务器_TCP服务器_IP_SYN Flood
  具体原理是:TCP连接的三次握手中,假设一个用户向服务器发送了SYN报文后突然死机或掉线,那么服务器在发出SYN+ACK应答报文后是无法收到客户端的ACK报文的(第三次握手无法完成),这种情况下服务器端一般会重试(再次发送SYN+ACK给客户端)并等待一段时间后丢弃这个未完成的连接。这段时间的长度我们称为SYN Timeout,一般来说这个时间是分钟的数量级(大约为30秒~2分钟);一个用户出现异常导致服务器的一个线程等待1分钟并不是什么很大的问题,但如果有一个恶意的攻击者大量模拟这种情况(伪造IP地址),服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源。即使是简单的保存并遍历也会消耗非常多的CPU时间和内存,何况还要不断对这个列表中的IP进行SYN+ACK的重试。实际上如果服务器的TCP/IP栈不够强大,最后的结果往往是堆栈溢出崩溃-- 既使服务器端的系统足够强大,服务器端也将忙于处理攻击者伪造的TCP连接请求而无暇理睬客户的正常请求(毕竟客户端的正常请求比率非常之小),此时从正常客户的角度看来,服务器失去响应,这种情况就称作:服务器端受到了SYN Flood攻击(SYN洪水攻击)。
  2、ACK FLOOD攻击
  ack flood攻击同样是利用TCP三次握手的缺陷实现的攻击, ack flood攻击利用的是三次握手的第二段,也就是TCP标志位syn和ack都置1,攻击主机伪造海量的 虚假ack包发送给目标主机,目标主机每收到一个带有 ack标志位的数据包时,都会去自己的TCP连接表中查看有没有与ack的发送者建立连接 ,如果有则发送三次握手的第三段ack+seq完成三次握手,成功 建立TCP连接。如果没有则发送ack+rst 断开连接。但是在这个过程中会消耗一定的CPU计算资源,如果瞬间收到海量的syn+ack数据包将会消耗大量的cpu资源使得正常的连接无法建立或者增加延迟,甚至造成服务器瘫痪、死机。如图:
  TCP_CPU_服务器  攻击开始前:
CPU_服务器_TCP  攻击开始后:
TCP_ACK_UDP
  理论上目标主机的TCP连接越多ack攻击效果越好,所以如果syn flood与ack flood配合使用效果会更明显。
  实现代码如下:
SYN_TCP_UDP
  3、CC攻击
  CC攻击全称Challenge Collapsar,中文意思是挑战黑洞,因为以前的抗DDOS攻击的 安全设备叫黑洞,顾名思义挑战黑洞就是说黑洞 拿这种攻击没办法,新一代的抗DDOS设备已经改名为ADS( Anti-DDoS System),基本上已经可以完美的抵御CC攻击了 。
  CC攻击的原理是通过代理服务器或者大量“肉鸡” 模拟多个用户访问目标网站的动态页面,制造大量的后台数据库查询动作,消耗目标CPU资源,造成拒绝服务。
  我们都知道网站的页面有静态和动态之分,动态网页是需要与后台数据库进行交互的,比如一些论坛, 用户登录的时候需要去数据库查询你的等级、权限 等等,当你留言的时候又需要查询权限、同步数据等等,这就消耗很多cpu资源,造成静态网页能打开,但是需要和数据库交互的动态网页打开慢或者无法打开的现象
  大家都有这样的经历,就是在访问论坛时,如果这个论坛比较大,访问的人比较多,打开页面的速度会比较慢,访问的人越多,论坛的页面越多,数据库就越大,被访问的频率也越高,占用的系统资源也就相当可观。
  一个静态页面不需要服务器多少资源,甚至可以说直接从内存中读出来发给你就可以了,但是论坛就不一样了,我看一个帖子,系统需要到数据库中判断我是否有读帖子的权限,如果有,就读出帖子里面的内容,显示出来--这里至少访问了2次数据库,如果数据库的数据容量有200MB大小,系统很可能就要在这200MB大小的数据空间搜索一遍,这需要多少的CPU资源和时间?如果我是查找一个关键字,那么时间更加可观,因为前面的搜索可以限定在一个很小的范围内,比如用户权限只查用户表,帖子内容只查帖子表,而且查到就可以马上停止查询,而搜索肯定会对所有的数据进行一次判断,消耗的时间是相当的大。
  CC就是充分利用了这个特点,模拟多个用户(多少线程就是多少用户)不停的进行访问(访问那些需要大量数据操作,就是需要大量CPU时间的页面).这一点用一个一般的性能测试软件就可以做到大量模拟用户并发。
  这种攻击方式相对于前两种实现要相对复杂一些,但是防御起来要简单的多,提供服务 的企业只要尽量少用动态网页并且让一些操作提供验证码就能很好的抵御一般的 CC攻击。
数据库_http_TCP
  4、UDP FLOOD攻击
  UDP攻击,又称UDP洪水攻击或UDP淹没攻击(英文:UDP Flood Attack)是导致基於主机的服务拒绝攻击的一种。UDP 是User Datagram Protocol的简称, 中文名是用户数据包协议,是 OSI 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。它是IETF RFC 768是UDP的正式规范。当受害系统接收到一个 UDP 数据包的时候,它会确定目的端口正在等待中的应用程序。当它发现该端口中并不存在正在等待的应用程序,它就会产生一个目的地址无法连接的 ICMP数据包发送给该伪造的源地址。如果向受害者计算机端口发送了足够多的 UDP 数据包的时候,整个系统就会瘫痪。UDP 是一种无连接的协议,而且它不需要用任何程序建立连接来传输数据。当攻击者随机地向受害系统的端口发送 UDP 数据包的时候,就可能发生了 UDP 淹没攻击。
  UDP FLOOD攻击顾名思义是利用UDP协议进行攻击的,UDP FLOOD攻击可以是小数据包冲击设备也可以是大数据包阻塞链路占尽带宽。不过两种方式的实现很相似,差别就在UDP的数据部分带有多少数据。相比TCP协议的攻击UDP的攻击更直接更好理解,有一定规模之后更难防御,因为UDP攻击的特点就是打出很高的流量,一个中小型的网站出口带宽可能不足1 G,如果遇到10G左右的UDP FLOOD攻击,单凭企业自身是无论如何也防御不住的,必须需要运营商帮你在上游清洗流量才行,如果遇到100G的流量可能地方的运营商都没有能力清洗了,需要把流量分散到全国清洗。UDP FLOOD攻击就像是一块大石头,看着普普 通通的好像跟现代机枪 炸弹不是一个等级的武器,但是如果石头足够大 ,就不一样了。想想恐龙是怎么灭绝的, 陨石不也是块普通的石头吗!在DDOS 防御领域有一句话:能防住的都是简单的攻击,但简单的攻击不一定防得住。UDP FLOOD正是这种简单有效的攻击方式。
  大包攻击:
UDP_DDOS_数据库
  小包攻击:
数据库_UDP_TCP  下面的代码也是单线程,速度不太快
  UDP_服务器_网络安全
  以上就是拒绝服务攻击的几种常见类型,不知您了解没?

赞(18)
踩(0)
分享到:
上一篇:浅析QinQ技术
推荐查看
华为认证网络工程师 HCIE直播课视频教程