摘自:https://zhuanlan.zhihu.com/p/22953451

首先我们说说ddos攻击方式,记住一句话,这是一个世界级的难题并没有解决办法只能缓解

  DDoS(Distributed Denial of Service,分布式拒绝服务)攻击的主要目的是让指定目标无法提供正常服务,甚至从互联网上消失,是目前最强大、最难防御的攻击之一。这是一个世界级的难题并没有解决办法只能缓解.

  按照发起的方式,DDoS可以简单分为三类。

  第一类以力取胜,海量数据包从互联网的各个角落蜂拥而来,堵塞IDC入口,让各种强大的硬件防御系统、快速高效的应急流程无用武之地。这种类型的攻击典型代表是ICMP Flood和UDP Flood,现在已不常见。

  第二类以巧取胜,灵动而难以察觉,每隔几分钟发一个包甚至只需要一个包,就可以让豪华配置的服务器不再响应。这类攻击主要是利用协议或者软件的漏洞发起,例如Slowloris攻击、Hash冲突攻击等,需要特定环境机缘巧合下才能出现。

  第三类是上述两种的混合,轻灵浑厚兼而有之,既利用了协议、系统的缺陷,又具备了海量的流量,例如SYN Flood攻击、DNS Query Flood攻击,是当前的主流攻击方式。

  本文将一一描述这些最常见、最具代表性攻击方式,并介绍它们的防御方案。

  SYN Flood

  SYN Flood是互联网上最经典的DDoS攻击方式之一,最早出现于1999年左右,雅虎是当时最著名的受害者。SYN Flood攻击利用了TCP三次握手的缺陷,能够以较小代价使目标服务器无法响应,且难以追查。

  标准的TCP三次握手过程如下:

  客户端发送一个包含SYN标志的TCP报文,SYN即同步(Synchronize),同步报文会指明客户端使用的端口以及TCP连接的初始序号;

  服务器在收到客户端的SYN报文后,将返回一个SYN+ACK(即确认Acknowledgement)的报文,表示客户端的请求被接受,同时TCP初始序号自动加1;

  客户端也返回一个确认报文ACK给服务器端,同样TCP序列号被加1。

  经过这三步,TCP连接就建立完成。TCP协议为了实现可靠传输,在三次握手的过程中设置了一些异常处理机制。第三步中如果服务器没有收到客户端的最终ACK确认报文,会一直处于SYN_RECV状态,将客户端IP加入等待列表,并重发第二步的SYN+ACK报文。重发一般进行3-5次,大约间隔30秒左右轮询一次等待列表重试所有客户端。另一方面,服务器在自己发出了SYN+ACK报文后,会预分配资源为即将建立的TCP连接储存信息做准备,这个资源在等待重试期间一直保留。更为重要的是,服务器资源有限,可以维护的SYN_RECV状态超过极限后就不再接受新的SYN报文,也就是拒绝新的TCP连接建立。

  SYN Flood正是利用了上文中TCP协议的设定,达到攻击的目的。攻击者伪装大量的IP地址给服务器发送SYN报文,由于伪造的IP地址几乎不可能存在,也就几乎没有设备会给服务器返回任何应答了。因此,服务器将会维持一个庞大的等待列表,不停地重试发送SYN+ACK报文,同时占用着大量的资源无法释放。更为关键的是,被攻击服务器的SYN_RECV队列被恶意的数据包占满,不再接受新的SYN请求,合法用户无法完成三次握手建立起TCP连接。也就是说,这个服务器被SYN Flood拒绝服务了。

  对SYN Flood ddos攻击软件,有兴趣的可以看看

DarkShell软件使用编程教程+源码+测试手册 我写的。

  DNS Query Flood

  作为互联网最基础、最核心的服务,DNS自然也是DDoS攻击的重要目标之一。打垮DNS服务能够间接打垮一家公司的全部业务,或者打垮一个地区的网络服务。前些时候风头正盛的黑客组织anonymous也曾经宣布要攻击全球互联网的13台根DNS服务器,不过最终没有得手。

  UDP攻击是最容易发起海量流量的攻击手段,而且源IP随机伪造难以追查。但过滤比较容易,因为大多数IP并不提供UDP服务,直接丢弃UDP流量即可。所以现在纯粹的UDP流量攻击比较少见了,取而代之的是UDP协议承载的DNS Query Flood攻击。简单地说,越上层协议上发动的DDoS攻击越难以防御,因为协议越上层,与业务关联越大,防御系统面临的情况越复杂。

  DNS Query Flood就是攻击者操纵大量傀儡机器,对目标发起海量的域名查询请求。为了防止基于ACL的过滤,必须提高数据包的随机性。常用的做法是UDP层随机伪造源IP地址、随机伪造源端口等参数。在DNS协议层,随机伪造查询ID以及待解析域名。随机伪造待解析域名除了防止过滤外,还可以降低命中DNS缓存的可能性,尽可能多地消耗DNS服务器的CPU资源。

  关于DNS Query Flood的代码,我在2011年7月为了测试服务器性能曾经写过一份代码,链接是DNS Query Flood攻击。同样的,这份代码人为降低了攻击性,只做测试用途。

  HTTP Flood

  上文描述的SYN Flood、DNS Query Flood在现阶段已经能做到有效防御了,真正令各大厂商以及互联网企业头疼的是HTTP Flood攻击。HTTP Flood是针对Web服务在第七层协议发起的攻击。它的巨大危害性主要表现在三个方面:发起方便、过滤困难、影响深远。

  SYN Flood和DNS Query Flood都需要攻击者以root权限控制大批量的傀儡机。收集大量root权限的傀儡机很花费时间和精力,而且在攻击过程中傀儡机会由于流量异常被管理员发现,攻击者的资源快速损耗而补充缓慢,导致攻击强度明显降低而且不可长期持续。HTTP Flood攻击则不同,攻击者并不需要控制大批的傀儡机,取而代之的是通过端口扫描程序在互联网上寻找匿名的HTTP代理或者SOCKS代理,攻击者通过匿名代理对攻击目标发起HTTP请求。匿名代理是一种比较丰富的资源,花几天时间获取代理并不是难事,因此攻击容易发起而且可以长期高强度的持续。

  另一方面,HTTP Flood攻击在HTTP层发起,极力模仿正常用户的网页请求行为,与网站业务紧密相关,安全厂商很难提供一套通用的且不影响用户体验的方案。在一个地方工作得很好的规则,换一个场景可能带来大量的误杀。

  最后,HTTP Flood攻击会引起严重的连锁反应,不仅仅是直接导致被攻击的Web前端响应缓慢,还间接攻击到后端的Java等业务层逻辑以及更后端的数据库服务,增大它们的压力,甚至对日志存储服务器都带来影响。

  有意思的是,HTTP Flood还有个颇有历史渊源的昵称叫做CC攻击。CC是Challenge Collapsar的缩写,而Collapsar是国内一家著名安全公司的DDoS防御设备。从目前的情况来看,不仅仅是Collapsar,所有的硬件防御设备都还在被挑战着,风险并未解除。

  慢速连接攻击

  提起攻击,第一反应就是海量的流量、海量的报文。但有一种攻击却反其道而行之,以慢著称,以至于有些攻击目标被打死了都不知道是怎么死的,这就是慢速连接攻击,最具代表性的是rsnake发明的Slowloris。

  HTTP协议规定,HTTP Request以\r\n\r\n结尾表示客户端发送结束,服务端开始处理。那么,如果永远不发送\r\n\r\n会如何?Slowloris就是利用这一点来做DDoS攻击的。攻击者在HTTP请求头中将Connection设置为Keep-Alive,要求Web Server保持TCP连接不要断开,随后缓慢地每隔几分钟发送一个key-value格式的数据到服务端,如a:b\r\n,导致服务端认为HTTP头部没有接收完成而一直等待。如果攻击者使用多线程或者傀儡机来做同样的操作,服务器的Web容器很快就被攻击者占满了TCP连接而不再接受新的请求。

  很快的,Slowloris开始出现各种变种。比如POST方法向Web Server提交数据、填充一大大Content-Length但缓慢的一个字节一个字节的POST真正数据内容等等。关于Slowloris攻击,rsnake也给出了一个测试代码,参见http://ha.ckers.org/slowloris/slowloris.pl。

转载于:https://www.cnblogs.com/bonelee/p/9204826.html

DDOS SYN Flood攻击、DNS Query Flood, CC攻击简介——ddos攻击打死给钱。限网吧、黄网、博彩,,,好熟悉的感觉有木有...相关推荐

  1. SYN Flood DNS Query Flood HTTP Flood DDoS CC常见网络功击

    本人从事网络安全行业20年.有15年防ddos攻击防护经验.被骗了很多回(都说能防300G,500G,买完就防不住了),本文当然重点给大家说明,ddos攻击是什么,中小企业如何防护,用到成本等. 20 ...

  2. DDos攻击之DNS Query Flood

    DNS Query Flood 实际上是UDP Flood 攻击的一种变形,由于DNS服务在互联网中具有不可替代的作用,一旦DNS服务器瘫痪,影响很大.     DNS Query Flood攻击采用 ...

  3. 基于知识图谱的DNS Query Flood攻击检测研究

    摘要: 摘要: 针对具有成本低廉.破坏性大.防御困难特性的DNS Query Flood攻击,本文构建UDP请求的知识图谱.基于攻击者通过发送大量伪造源IP地址的小UDP包冲击DNS服务器实施攻击的原 ...

  4. 86.3 安全性问题 xss、DDOS、CC、sql注入 攻击等

    主键id 暴露在url 中会暴露表的总量,而且如果监视一段时间主键,就能很低成本地得到这个网站的用户增量. Cookie中的信息是明文保存的,意味着攻击者可以通过猜测并伪造Cookie数据破解系统. ...

  5. ddos压力测试_蓝盟IT外包,浅析DDoS攻击防御和DDoS攻击原理

    DDoS攻击基础 DDoS(Distributed Denial of Service,分布式拒绝服务)攻击的主要目的是让指定目标无法提供正常服务,甚至从互联网上消失,是目前最强大.最难防御的攻击之一 ...

  6. DDOS--DNS Query Flood

    转载自: http://www.dnsceo.com/help/detail.php?id=71 什么是DNS查询攻击?DNS查询攻击全称UDP DNS Query Flood,攻击采用的方法是向被攻 ...

  7. SYN,ICMP, UDP Flood攻击原理与防护

    DoS(Denial of Service拒绝服务)和DDoS(Distributed Denial of Service分布式拒绝服务)攻击是大型网站和网络服务器的安全威胁之一.2000年2月,Ya ...

  8. DNS Reply Flood防御原理

    介绍DNS Reply flood攻击和防御原理. DNS Reply Flood是指攻击者在一定条件下将大量伪造的DNS应答包发送给某个DNS服务器或主机,从而消耗服务器的处理性能. FW基于目的地 ...

  9. DDoS攻防战 (二) :CC攻击工具实现与防御理论

    故上兵伐谋 其次伐交 其次伐兵 其下攻城 攻城之法 为不得已 知己知彼 百战不殆 不知彼而知己 一胜一负 不知彼不知己 每战必败 --孙子兵法·谋攻 我们将要实现一个进行应用层DDoS攻击的工具,综合 ...

最新文章

  1. html画三个重叠的矩形,html5 实现两个矩形的叠加
  2. 阿里巴巴持续投入,etcd 正式加入 CNCF
  3. Kindeditor学习中的那些坑
  4. 万字长文,别再说你不懂Linux内存管理了(合辑),30 张图给你安排的明明白白...
  5. mysql存储过程_MySQL带out和inout模式参数的存储过程
  6. php调用execute,php运行生命周期--脚本执行阶段 php_execute
  7. Python 列表复制
  8. Python 之父:别等了,Python 4.0 可能不会来了
  9. 初识Spark2.0之Spark SQL
  10. 超链接禁用_如何在Microsoft Word中禁用超链接
  11. 分布式系统测试那些事儿——信心的毁灭与重建
  12. 固态硬盘ps3111开卡工具_固态硬盘必备工具:系统无损迁移、僵尸文件立现原形...
  13. 实战:基于OpenCV进行长时间曝光
  14. hibernate优化
  15. PCA(主成分分析)的简单理解
  16. Ubuntu 安装配置 ROR3
  17. osu计算机科学硕士,OSU的CSE「俄亥俄州立大学计算机科学与工程系」
  18. Mysql报错130_Mysql报错Forcing close of thread 139 user: 'root'
  19. 大事 | 生活终于对我的联想Y430P下手了!
  20. python提取微信聊天语音_GitHub - dennischancs/wechat-asr: 微信语音批量转文字 python编写 用百度智能云短语音识别API实现 windows下的使用...

热门文章

  1. python如何进行数据抓取_如何进行手机APP的数据爬取?
  2. 短信自动转发到另一个手机_以 wmghz.com 为例,简单实现打一个网址自动就转到另一个网址...
  3. android 代码打开权限,android开发权限询问的示例代码
  4. pycharm 类型注释_后端开发使用pycharm的技巧
  5. 微信小程序开发第二弹
  6. Spring中经典的9种设计模式,一定要记牢,Java基础教程pdf百度云
  7. 零基础基于U-Net网络实战眼底图像血管提取
  8. 【深度学习】深度神经网络框架的探索(从Regression说起)
  9. python【力扣LeetCode算法题库】136-只出现一次的数字
  10. python语言标识符首字符不能是汉字_Python基本语法元素