ddos攻击 订阅
分布式拒绝服务攻击可以使很多的计算机在同一时间遭受到攻击,使攻击的目标无法正常使用,分布式拒绝服务攻击已经出现了很多次,导致很多的大型网站都出现了无法进行操作的情况,这样不仅仅会影响用户的正常使用,同时造成的经济损失也是非常巨大的。 [1]  分布式拒绝服务攻击方式在进行攻击的时候,可以对源IP地址进行伪造,这样就使得这种攻击在发生的时候隐蔽性是非常好的,同时要对攻击进行检测也是非常困难的,因此这种攻击方式也成为了非常难以防范的攻击。 [1] 展开全文
分布式拒绝服务攻击可以使很多的计算机在同一时间遭受到攻击,使攻击的目标无法正常使用,分布式拒绝服务攻击已经出现了很多次,导致很多的大型网站都出现了无法进行操作的情况,这样不仅仅会影响用户的正常使用,同时造成的经济损失也是非常巨大的。 [1]  分布式拒绝服务攻击方式在进行攻击的时候,可以对源IP地址进行伪造,这样就使得这种攻击在发生的时候隐蔽性是非常好的,同时要对攻击进行检测也是非常困难的,因此这种攻击方式也成为了非常难以防范的攻击。 [1]
信息
基    于
DoS攻击
借    助
服务器技术
目    标
DoS攻击
中文名
分布式拒绝服务攻击
攻击者
多个,分布在不同位置
外文名
Distributed denial of service attack
分布式拒绝服务攻击定义
分布式拒绝服务攻击(英文意思是Distributed Denial of Service,简称DDoS)是指处于不同位置的多个攻击者同时向一个或数个目标发动攻击,或者一个攻击者控制了位于不同位置的多台机器并利用这些机器对受害者同时实施攻击。由于攻击的发出点是分布在不同地方的,这类攻击称为分布式拒绝服务攻击,其中的攻击者可以有多个。 [2] 
收起全文
精华内容
下载资源
问答
  • DDoS攻击

    千次阅读 多人点赞 2019-10-16 15:32:40
    DDoS攻击 DDoS攻击(Distributed denial of service attack)即分布式拒绝服务攻击,分布式拒绝服务攻击可以使很多的计算机在同一时间遭受到攻击,使攻击的目标无法正常使用,分布式拒绝服务攻击已经出现了很多次,...

    DDoS攻击

    DDoS攻击(Distributed denial of service attack)即分布式拒绝服务攻击,分布式拒绝服务攻击可以使很多的计算机在同一时间遭受到攻击,使攻击的目标无法正常使用,分布式拒绝服务攻击已经出现了很多次,导致很多的大型网站都出现了无法进行操作的情况,这样不仅仅会影响用户的正常使用,同时造成的经济损失也是非常巨大的。
    分布式拒绝服务攻击方式在进行攻击的时候,可以对源IP地址进行伪造,这样就使得这种攻击在发生的时候隐蔽性是非常好的,同时要对攻击进行检测也是非常困难的,因此这种攻击方式也成为了非常难以防范的攻击。

    分布式拒绝服务攻击(英文意思是Distributed Denial of Service,简称DDoS)是指处于不同位置的多个攻击者同时向一个或数个目标发动攻击,或者一个攻击者控制了位于不同位置的多台机器并利用这些机器对受害者同时实施攻击。由于攻击的发出点是分布在不同地方的,这类攻击称为分布式拒绝服务攻击,其中的攻击者可以有多个。

    攻击原理

    分布式拒绝服务攻击原理分布式拒绝服务攻击DDoS是一种基于DoS的特殊形式的拒绝服务攻击,是一种分布的、协同的大规模攻击方式。单一的DoS攻击一般是采用一对一方式的,它利用网络协议和操作系统的一些缺陷,采用欺骗和伪装的策略来进行网络攻击,使网站服务器充斥大量要求回复的信息,消耗网络带宽或系统资源,导致网络或系统不胜负荷以至于瘫痪而停止提供正常的网络服务。与DoS攻击由单台主机发起攻击相比较,分布式拒绝服务攻击DDoS是借助数百、甚至数千台被入侵后安装了攻击进程的主机同时发起的集团行为。

    一个完整的DDoS攻击体系由攻击者、主控端、代理端和攻击目标四部分组成。主控端和代理端分别用于控制和实际发起攻击,其中主控端只发布命令而不参与实际的攻击,代理端发出DDoS的实际攻击包。对于主控端和代理端的计算机,攻击者有控制权或者部分控制权.它在攻击过程中会利用各种手段隐藏自己不被别人发现。真正的攻击者一旦将攻击的命令传送到主控端,攻击者就可以关闭或离开网络.而由主控端将命令发布到各个代理主机上。这样攻击者可以逃避追踪。每一个攻击代理主机都会向目标主机发送大量的服务请求数据包,这些数据包经过伪装,无法识别它的来源,而且这些数据包所请求的服务往往要消耗大量的系统资源,造成目标主机无法为用户提供正常服务。甚至导致系统崩溃。

    分类

    一、基于自动化程度分类
    1、手工的DDoS攻击。
    早期的DDoS攻击全是采用手动配置的,即发动DDoS攻击时,扫描远端有漏洞的计算机,侵入它们并且安装代码全是手动完成的。
    2、半自动化的DDoS攻击。
    在半自动化的攻击中,DDoS攻击属于主控端一代理端的攻击模型,攻击者用自动化的Scripts来扫描,主控端的机器对主控端和代理端之间进行协商攻击的类型、受害者的地址、何时发起攻击等信息由进行详细记录。
    3、自动化的DDoS攻击。
    在这类攻击中。攻击者和代理端机器之间的通信是绝对不允许的。这类攻击的攻击阶段绝大部分被限制用一个单一的命令来实现,攻击的所有特征,例如攻击的类型,持续的时间和受害者的地址在攻击代码中都预先用程序实现。

    二、基于系统及协议的弱点分类
    1、洪水攻击。
    在洪水攻击中。傀儡机向受害者系统发送大量的数据流为了充塞受害者系统的带宽,影响小的则降低受害者提供的服务,影响大的则使整个网络带宽持续饱和,以至于网络服务瘫痪。典型的洪水攻击有UDP洪水攻击和ICMP洪水攻击。
    2、扩大攻击。
    扩大攻击分为两种,一种是利用广播lP地址的特性,一种是利用反射体来发动攻击。前一种攻击者是利用了广播IP地址的特性来扩大和映射攻击,导致路由器将数据包发送到整个网络的广播地址列表中的所有的广播IP地址。这些恶意的流量将减少受害者系统可提供的带宽。典型的扩大攻击有Smurf和Fraggle攻击。
    3、利用协议的攻击。
    该类攻击则是利用某些协议的特性或者利用了安装在受害者机器上的协议中存在的漏洞来耗尽它的大量资源。典型的利用协议攻击的例子是TCP SYN攻击。
    4、畸形数据包攻击。
    攻击者通过向受害者发送不正确的IP地址的数据包,导致受害系统崩溃。畸形数据包攻击可分为两种类型:IP地址攻击和IP数据包属性攻击。

    三、基于攻击速率分类
    DDoS攻击从基于速率上进行分类,可以分为持续速率和可变速率的攻击。持续速率的攻击是指只要开始发起攻击,就用全力不停顿也不消减力量。像这种攻击的影响是非常快的。可变速率的攻击,从名字就可以看出,用不同的攻击速率,基于这种速率改变的机制,可以把这种攻击分为增加速率和波动的速率。

    四、基于影响力进行分类
    DDoS攻击从基于影响力方面可以分为网络服务彻底崩溃和降低网络服务的攻击。服务彻底崩溃的攻击将导致受害者的服务器完全拒绝对客户端提供服务。降低网络服务的攻击,消耗受害者系统的一部分资源,这将延迟攻击被发现的时间,同时对受害者造成一定的破坏。

    五、基于入侵目标分类
    DDoS攻击从基于入侵目标,可以将DDoS攻击分为带宽攻击和连通性攻击,带宽攻击通过使用大量的数据包来淹没整个网络,使得有效的网络资源被浪费,合法朋户的请求得不到响应,大大降低了效率。而连通性攻击是通过发送大量的请求来使的计算机瘫痪,所有有效的操作系统资源被耗尽,导致计算机不能够再处理合法的用户请求。

    六、基于攻击路线分类
    1、直接攻击:攻击者和主控端通信,主控端接到攻击者的命令后,再控制代理端向受害者发动攻击数据流。代理端向受害者系统发送大量的伪IP地址的网络数据流,这样攻击者很难被追查到。
    2、反复式攻击通过利用反射体,发动更强大的攻击流。反射体是任何一台主机只要发送一个数据包就能收到一个数据包,反复式攻击就是攻击者利用中间的网络节点发动攻击。

    七、基于攻击特征分类
    从攻击特征的角度,可以将DDoS攻击分为攻击行为特征可提取和攻击行为特征不可提取两类。攻击行为特征可提取的DDoS攻击又可以细分为可过滤型和不可过滤型。可过滤型的DDoS攻击主要指那些使用畸形的非法数据包。不可过滤型DDoS攻击通过使用精心设计的数据包,模仿合法用户的正常请求所用的数据包,一旦这类数据包被过滤将会影响合法用户的正常使用。

    攻击现象

    DDoS的表现形式主要有两种,一种为流量攻击,主要是针对网络带宽的攻击,即大量攻击包导致网络带宽被阻塞,合法网络包被虚假的攻击包淹没而无法到达主机;另一种为资源耗尽攻击,主要是针对服务器主机的攻击,即通过大量攻击包导致主机的内存被耗尽或CPU被内核及应用程序占完而造成无法提供网络服务。当被DDoS攻击时,主要表现为:
    (1)被攻击主机上有大量等待的TCP连接。
    (2)网络中充斥着大量的无用的数据包,源地址为假。
    (3)制造高流量无用数据,造成网络拥塞,使受害主机无法正常和外界通讯。
    (4)利用受害主机提供的服务或传输协议上的缺陷,反复高速地发出特定的服务请求,使受害主机无法及时处理所有正常请求。
    (5)严重时会造成系统死机。

    攻击流程

    攻击者进行一次DDoS攻击大概需要经过了解攻击目标、攻占傀儡机、实际攻击三个主要步骤,下面依次说明每一步骤的具体过程:
    1、了解攻击目标就是对所要攻击的目标有一个全面和准确的了解,以便对将来的攻击做到心中有数。主要关心的内容包括被攻击目标的主机数目、地址情况。目标主机的配置、性能、目标的带宽等等。对于DDoS攻击者来说,攻击互联网上的某个站点,有一个重点就是确定到底有多少台主机在支持这个站点,一个大的网站可能有很多台主机利用负载均衡技术提供服务。所有这些攻击目标的信息都关系到后面两个阶段的实施目标和策略,如果盲目的发动DDoS攻击就不能保证攻击目的的完成,还可能过早的暴露攻击者的身份,所以了解攻击目标是有经验的攻击者必经的步骤。

    2、攻占傀儡主机就是控制尽可能多的机器,然后安装相应的攻击程序。在主控机上安装控制攻击的程序,而攻击机则安装DDoS攻击的发包程序。攻击者最感兴趣,也最有可能成为别人的傀儡主机的机器包括那些链路状态好、性能好同时安全管理水平差的主机。攻击者一般会利用已有的或者未公布的一些系统或者应用软件的漏洞.取得一定的控制权,起码可以安装攻击实施所需要的程序,更厉害的可能还会取得最高控制权、留下后门等等。在早期的DDoS攻击过程中,攻占傀儡主机这一步主要是攻击者自己手动完成的,亲自扫描网络,发现安全性比较差的主机,将其攻占并且安装攻击程序。但是后来随着DDoS攻击和蠕虫的融合,攻占傀儡机变成了一个自动化的过程,攻击者只要将蠕虫放入网络中,蠕虫就会在不断扩散中不停地攻占主机,这样所能联合的攻击机将变得非常巨大,DDoS攻击的威力更大。

    3、DDoS攻击的最后一个阶段就是实际的攻击过程,攻击者通过主控机向攻击机发出攻击指令,或者按照原先设定好的攻击时间和目标,攻击机不停的向目标或者反射服务器发送大量的攻击包,来吞没被攻击者,达到拒绝服务的最终日的。和前两个过程相比,实际攻击过程倒是最简单的一个阶段,一些有经验的攻击者可能还会在攻击的同时通过各种手段检查攻击效果,甚至在攻击过程中动态调整攻击策略,尽可能清除在主控机和攻击机上留下的蛛丝马迹。

    攻击方式

    1、SYN Flood攻击
    SYN Flood攻击是当前网络上最为常见的DDoS攻击,它利用了TCP协议实现上的一个缺陷。通过向网络服务所在端口发送大量的伪造源地址的攻击报文,就可能造成目标服务器中的半开连接队列被占满,从而阻止其他合法用户进行访问。

    2、UDP Flood攻击
    UDP Flood是日渐猖厥的流量型DDoS攻击,原理也很简单。常见的情况是利用大量UDP小包冲击DNS服务器或Radius认证服务器、流媒体视频服务器。由于UDP协议是一种无连接的服务,在UDP Flood攻击中,攻击者可发送大量伪造源IP地址的小UDP包。

    3、ICMP Flood攻击
    ICMP Flood攻击属于流量型的攻击方式,是利用大的流量给服务器带来较大的负载,影响服务器的正常服务。由于目前很多防火墙直接过滤ICMP报文。因此ICMP Flood出现的频度较低。

    4、Connection Flood攻击
    Connection Flood是典型的利用小流量冲击大带宽网络服务的攻击方式,这种攻击的原理是利用真实的IP地址向服务器发起大量的连接。并且建立连接之后很长时间不释放,占用服务器的资源,造成服务器上残余连接(WAIT状态)过多,效率降低,甚至资源耗尽,无法响应其他客户所发起的链接。

    5、HTTP Get攻击
    这种攻击主要是针对存在ASP、JSP、PHP、CGI等脚本程序,特征是和服务器建立正常的TCP连接,并不断的向脚本程序提交查询、列表等大量耗费数据库资源的调用。这种攻击的特点是可以绕过普通的防火墙防护,可通过Proxy代理实施攻击,缺点是攻击静态页面的网站效果不佳,会暴露攻击者的lP地址。

    6、UDP DNS Query Flood攻击
    UDP DNS Query Flood攻击采用的方法是向被攻击的服务器发送大量的域名解析请求,通常请求解析的域名是随机生成或者是网络世界上根本不存在的域名。域名解析的过程给服务器带来了很大的负载,每秒钟域名解析请求超过一定的数星就会造成DNS服务器解析域名超时。

    应对策略

    防御措施
    不但是对DDoS,而且是对于所有网络的攻击,都应该是采取尽可能周密的防御措施,同时加强对系统的检测,建立迅速有效的应对策略。应该采取的防御措施有:
    (1)全面综合地设计网络的安全体系,注意所使用的安全产品和网络设备。
    (2)提高网络管理人员的素质,关注安全信息,遵从有关安全措施,及时地升级系统,加强系统抗击攻击的能力。
    (3)在系统中加装防火墙系统,利用防火墙系统对所有出入的数据包进行过滤,检查边界安全规则,确保输出的包受到正确限制。
    (4)优化路由及网络结构。对路由器进行合理设置,降低攻击的可能性。
    (5)优化对外提供服务的主机,对所有在网上提供公开服务的主机都加以限制。
    (6)安装入侵检测工具(如NIPC、NGREP),经常扫描检查系统,解决系统的漏洞,对系统文件和应用程序进行加密,并定期检查这些文件的变化。

    防御原则
    在响应方面,虽然还没有很好的对付攻击行为的方法,但仍然可以采取措施使攻击的影响降至最小。对于提供信息服务的主机系统,应对的根本原则是:
    尽可能地保持服务、迅速恢复服务。由于分布式攻击入侵网络上的大量机器和网络设备,所以要对付这种攻击归根到底还是要解决网络的整体安全问题。真正解决安全问题一定要多个部门的配合,从边缘设备到骨干网络都要认真做好防范攻击的准备,一旦发现攻击就要及时地掐断最近攻击来源的那个路径,限制攻击力度的无限增强。网络用户、管理者以及ISP之间应经常交流,共同制订计划,提高整个网络的安全性。

    参考文章:
    https://baike.baidu.com/item/%E5%88%86%E5%B8%83%E5%BC%8F%E6%8B%92%E7%BB%9D%E6%9C%8D%E5%8A%A1%E6%94%BB%E5%87%BB/3802159?fromtitle=DDOS%E6%94%BB%E5%87%BB&fromid=177090&fr=aladdin

    展开全文
  • python版DDOS攻击脚本

    2020-09-19 07:33:47
    主要为大家详细介绍了python版DDOS攻击脚本,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • DDoS攻击终端 Herramienta德denegacionde SERVICIO(DDoS)攻击对 要求 Python3(pkg安装python3) 安装 git clone 光盘DDoS-Attack-Termux chmod + x ddos​​-attack.py python3 ddos​​_attack.py Aclaraci...
  • 从拒绝服务攻击诞生到现在已经有了很多的发展,从最初的简单Dos到现在的DdoS。那么什么是Dos和DdoS呢?...所以说防范DdoS攻击变得更加困难,如何采取措施有效的应对呢?本文将为大家从两个方面进行介绍。
  • 基于kali linux渗透系统的dd的os攻击脚本,效果自我感觉还不错,有其他兴趣的可以去关注我的github平台,我是HACKER-LEO
  • 首先说我们用来攻击的客户机和服务器的配置方法,使用当下最有名的REDHAT LINUX进行测试,本次攻击测试我使用的是FEDORA CORE3 ,软件用的是最有名的DDOS
  • 一种DDoS攻击检测方法

    2020-02-04 13:54:32
    一种DDoS攻击检测方法,曲同胤,,DDoS是当今网络安全的最大威胁之一,研究防御DDoS攻击的技术非常重要。分析了三类防御DDoS技术的不足,提出了一种新的检测方法来检测
  • DDOS的 特点是分布式,针对带宽和服务攻击,也就是四层流量攻击和七层应用攻击,相应的防御瓶颈四层在带宽,七层的多在架构的吞吐量。对于七层的应用攻击,我们还 是可以做一些配置来防御的,例如前端是Nginx,主要...
  • 主要给大家介绍了关于Python实现DDos攻击的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • define(\'DB_HOST\',\'localhost\'); define(\'DB_NAME\',\'数据库名\');...默认账号密码root然后我们去对接一下接口 这是国外网页ddos压力api 然后我们设置一下套餐生成卡密然后去激活 就可以使用了  
  • DDos数据集,数值型特征有73个,类别型特征有4个,且这4个类别型特征刚好属于方差过小被删除的特征,故所有特征都为数值型特征。并对数值型数据做归一化处理。
  • 这个源代码在linux上编译后即可运行,编译方法:gcc 脚本名称.c -o 脚本名称 -lpthread,有兴趣的同学可以拿去学习学习
  • Java版DDOS攻击

    2019-03-01 16:55:06
    NULL 博文链接:https://xiaoa7.iteye.com/blog/256323
  • Ddos攻击测试工具

    2019-02-18 09:47:57
    DDoS测试工具,需要在Linux环境下运行,功能非常强大,支持主流的DDoS攻击模式。
  • DDoS攻击基础教程

    2018-12-28 19:40:41
    基础教程的ddos但不希望做坏事,了解一下ddos的手法怎么防御。
  • DDos-攻击-OVH- 强大的DDoS攻击 pip3 install -r requirements.txt python3 80port.py或python3 443port.py
  • 本次攻击测试我使用的是FEDORA CORE3 ,软件用的是最有名的DDOS攻击工具TFN2K LINUX版,被攻击的WINDOWS服务器系统使用的是WINDOWS2000SERVER 服务开有APACHE2 FTP VNC关系不大,主要攻击APACHE
  • 首先,分析验证了数据平面低速率DDoS攻击的有效性,在此基础上结合低速率DDoS攻击在通信、频率等方面的特性,提取了均值、最大值、偏差度、平均离差、存活时间这5个方面的十维特征,实现了基于贝叶斯网络的低速率...
  • DDOS攻击检测实验

    2018-10-13 18:56:39
    利用锐捷虚拟平台,大学上机课实验内容,内含实验步骤。
  • 内网服务器DDoS攻击和交换机的DDoS攻击,直接影响网吧网络的安全问题,下面与大家分享下具体的解决方法,感兴趣的朋友可以参考下哈,希望对大家有所帮助
  • 提出了基于流量和IP熵特性的DDoS攻击检测算法,先判断流量是否异常,再判断熵是否异常,进而判断是否发生了DDoS攻击。由仿真结果可以看出,单独依靠流量或IP熵都不能很好地检测出DDoS攻击。该算法将流量和IP熵特性...
  • python ddos 攻击源码

    2018-06-28 09:31:22
    python 2实现的ddos攻击源码,基于socket的实时攻击,大流量
  • 论文对入侵检测和入侵防御技术、DDoS攻击系统的概念和基本原理、用户信任管理体系和信任分类的知识进行了简要分析,从而为建立基于用户信任值的一种检测和防御DDoS攻击模型打下基础。
  • 从2013年3月的300Gbps到2014年2月的400Gbps,DDoS攻击以惊人的速度进入200-400Gbps时代。面对如此规模的DDoS攻击开发者究竟该如何应对?这里我们不妨看看阿里云的分享。DDoS(DistributedDenialofService,分布式...
  • 对于骨干网中存在的DDoS攻击,由于背景流量巨大,且分布式指向受害者的多个攻击流尚未汇聚,因此难以进行有效的检测。为了解决该问题,本文提出一种基于全局流量异常相关分析的检测方法,根据攻击流引起流量之间...
  • DDos攻击脚本,python编写,支持L4/L7,部分需要其他模块支持。CC效果良好,L4需要实测。
  • 该工具用于查杀网站上可能存在的DDOS恶意脚本。用户只需将该脚本上传并解压到网站根目录,即可通过浏览器访问轻松查杀恶意文件。用户名:360,密码:360
  • 该检测方法可以在DDoS攻击多级残差网络时,应用相关公式提取DDoS攻击中的可观参数与隐含参数,并利用这些参数分别建立隐含状态转移概率矩阵与观测状态转移概率矩阵排列,计算DDoS攻击因子,通过对DDoS攻击因子进行...
  • DDOS攻击

    万次阅读 多人点赞 2019-01-13 19:54:58
    在互联网中一谈起DDOS攻击,人们往往谈虎色变。DDOS攻击被认为是安全领域最难解决的问题之一,迄今为止也没有一个完美的解决方案。各个互联网公司都等着5G时代的来临,等它来临分物联网领域的一份羹。当物联网时代...

    在互联网中一谈起DDOS攻击,人们往往谈虎色变。DDOS攻击被认为是安全领域最难解决的问题之一,迄今为止也没有一个完美的解决方案。各个互联网公司都等着5G时代的来临,等它来临分物联网领域的一份羹。当物联网时代真正来临的时候,网络设备数量会呈指数性地增长,对DDOS攻击的防御确实带来了一个很大的威胁。

    一.DDOS简介

    DDOS又称为分布式拒绝服务攻击,全称是Distributed Denial os Service。DDOS本是利用合理的请求造成资源过载,导致服务不可用。比如一个停车场总共有100个车位,当100个车位都停满车后,再有车想要停进来,就必须等已有的车先出去才行。如果已有的车一直不出去,那么停车场的入口就会排起长队,停车场的负荷过载,不能正常工作了,这种情况就是“拒绝服务”。

    我们的系统就好比是停车场,系统中的资源就是车位。资源是有限的,而服务必须一直提供下去。如果资源都已经被占用了,那么服务也将过载,导致系统停止新的响应。

    分布式拒绝服务攻击,将正常请求放大了若干倍,通过若干网络节点同时发起攻击,以达成规模响应。这些网络节点往往是黑客们所控制的“肉鸡”,数量达到一定规模后,就形成了一个“僵尸网络”。大型的僵尸网络,甚至达到了数万、数十万台的规模。如此规模的僵尸网络发起的DDOS攻击,几乎是不可阻挡的。

    常见的DDOS攻击有SYN flood、UDP flood、ICMP flood等。其中SYN flood是一种最为经典的DDOS攻击,其发现于1996年,但是至今仍然保持着非常强大的生命力。SYN flood如此猖獗是因为它利用了TCP协议设计中的缺陷,而TCP/IP协议是整个互联网的基础,牵一发而动全身,如今想要修复这样的缺陷几乎成为不可能的事情。

    在正常情况下,TCP三次握手过程如下:

    (1)客户端向服务器发送一个SYN包,包含客户端使用的端口号和初始序列号x

    (2)服务器端收到客户端发送来的SYN包后,向客户端发送一个SYN和ACK都置位的TCP报文,包含确认号x+1和服务器端的初始序列号y;

    (3)客户端收到服务器端返回的SYN+ACK报文后,向服务器端返回一个确认号为y+1、序号为x+1的ACK报文,一个标准的TCP连接完成。

    而SYN flood在攻击时,首先伪造大量的源IP地址,分别向服务器端发送大量的SYN包,此时服务器端会返回SYN/ACK包,因为源地址时伪造的,所以伪造的IP并不会应答,服务器端没有收到伪造IP的回应,会重试3-5次并且等待一个SYN Time(一般为30秒至2分钟),如果超时则丢弃这个连接。攻击者大量发送这种伪造源地址的SYN请求,服务端将会消耗非常多的资源(CPU和内存)来处理这种半连接,同时还要不断地对这些IP进行SYN+ACK重试,最后的结果是服务器无暇理睬正常的连接请求,导致拒绝服务。

    对抗SYN flood的主要措施有SYN Cookie/SYN Proxy、safereset等算法。SYN Cookie的主要思想是为每一个IP地址分配一个“Cookie”,并统计每个IP地址的访问频率。如果在短时间内收到大量的来自同一个IP地址数据包,则认为受到攻击,之后来自这个IP地址的包将被丢弃。

    在很多对抗DDOS的产品中,一般会综合使用各种算法,结合一些DDOS攻击的特征,对流量就行清洗,对抗DDOS的网络设备可以串联或者并联在网络出口处。

    但是DDOS仍然是业界的一大难题,当攻击流量超过了网络设备,甚至带宽的最大负荷时,网络仍将瘫痪。一般来说,大型网站之所以看起来比较能“抗”DDOS攻击,是因为大型网站的带宽比较充足,集群内服务器的数量也比较多。但一个集群的资源毕竟是有限的,在实际的攻击中,DDOS的流量甚至可以达到数G到几十G,遇到这种情况,只能与网络运营商合作,共同完成DDOS攻击的响应。

     

    二.应用层DDOS

    应用层DDOS,不同于网络层DDOS,由于发生在应用层,因此TCP三次握手已经完成,连接已经建立,所以发起攻击的IP地址也都是真实的。但应用层DDOS有时甚至比网络层DDOS攻击更为可怕,因为今天几乎所有的商业Anti-DDOS设备,只在对抗网络层DDOS时效果好,而对应用层DDOS攻击却缺乏有效的对抗手段。

    那么应用层DDOS到底是怎么一回事呢?这就要从“CC攻击”说起了。

    1.CC攻击

    “CC攻击”的前身是一个叫fatboy的攻击程序,当时黑客为了挑战绿盟的一款反DDOS设备开发了它。绿盟是中国著名的安全公司之一,它有一款叫“黑洞(Collapasar)”的反DDOS设备,能够有效地清洗SYN Flood等有害流量。而黑客则挑衅地将fatboy所实现的攻击方式命名为:Challenge Collapasar(简称CC),意指在黑洞的防御下,仍然能有效完成拒绝服务攻击。

    CC攻击的原理非常简单,就是对一些资源消耗较大的应用页面不断发起正常的请求,以达到消耗服务端资源的目的,在Web应用中,查询数据库、读/写硬盘文件等操作,相对都会消耗比较多的资源。在百度百科中有一个很典型的例子,应用层常见SQL代码规范如下(以PHP为例):

    $sql=“select * from post where tagid=‘$tagid’ order by postid desc limit $start,30”

    当post表数据庞大,翻页频繁,$start数字急剧增加时,查询影响结果集=$start+30,该查询效率呈现明显下降趋势,而多并发频繁调用,因查询无法立即完成,资源无法立即释放,会导致数据库请求连接过多,数据库阻塞,网站无法正常工作。

    在互联网中充斥着各种搜索引擎、信息收集等系统的爬虫(spider),爬虫把小网站直接爬死的情况时有发生,这与应用层DDOS攻击的结果很像。由此看来,应用层DDOS攻击与正常业务的界限比较模糊。

    应用层DDOS攻击还可以通过以下方式完成:在黑客入侵了一个流量很大的网站后,通过篡改页面,将巨大的用户流量分流到目标网站。比如,在大流量网站siteA上插入一段代码:

    <iframe src=http://target height=0 width=0></iframe>

    那么所有访问该页面的siteA用户,都将对此target发起一次HTTP GET请求,这可能直接导致target拒绝服务。

    应用层DDOS攻击是针对服务器性能的一种攻击,那么许多优化服务器性能的方法,都或多或少地能缓解此种攻击。比如将使用频率高地数据放在memcache中,相对于查询数据库所消耗的资源来说,查询memcache所消耗的资源可以忽略不计,但很多性能优化的方案并非是为了对抗应用层DDOS攻击而设计的,因此攻击者想要找到一个资源消耗大的页面并不困难。比如当memcache查询没有命中时,服务器必然会查询数据库,从而增大服务器资源的消耗,攻击者只需要找到这样的页面即可。同时攻击者除了触发“读”数据操作外,还可以触发“写”数据操作,“写”数据的行为一般会导致服务器操作数据库。

    2.限制请求频率

    最常见的针对应用层DDOS攻击的防御措施,是在应用中针对每个“客户端”做一个请求频率的限制。通过IP地址和Cookie定位一个客户端,如果客户端的请求在一定时间内过于频繁,则对之后来自该客户端的所有请求都重定向到一个出错页面。从架构上来看,这样的防护措施需要放在业务逻辑之前,才能起到保护后端应用的目的,可以看做是一个“基层”的安全模块。

    3.道高一尺,魔高一丈

    然而这种防御方法并不完美,因为它在客户端的判断依据上并不是永远可靠的。这个方案中有两个因素用以定位一个客户端:一个是IP地址,另一个是Cookie。但用户的IP地址可能会发生变化,而Cookie又可能会被清空,如果IP地址和Cookie同时都发生了变化,那么就无法再定位到同一个客户端了。

    如果让IP地址发生变化呢?使用“代理服务器”是一个常见的做法。在实际的攻击中,大量使用代理服务器或傀儡机来隐藏攻击者的真实IP地址,已经成为一种成熟的攻击模式。攻击者使用这些方法可不断地变换IP地址,就可以绕过服务器对单个IP地址请求频率的限制了。

    代理猎手是一个常用的搜索代理服务器的工具:

    而AccessDiver则已经自动化地实现了这种变换IP地址的攻击,它可以批量导入代理服务器地址,然后通过代理服务器在线暴力破解用户名和密码。

    攻击者使用的这些混淆信息的手段,都给对抗应用层DDOS攻击带来了很大的困难。那么到底如何解决一个问题呢?应用层DDOS攻击并非是一个无法解决的问题,一般来说,我们可以从以下几个方面着手:

    首先,应用代码要做好性能优化。合理地使用memcache就是一个很好的优化方案,将数据库的压力尽可能转移到内存中。此外还需要及时地释放资源,比如及时关闭数据库连接,减少空连接等消耗。

    其次,在网络架构上做好优化。善于利用负载均衡分流,避免用户流量集中在单台服务器上,同时可以利用好CDN和镜像站点的分流作用,缓解主站的压力。

    最后,也是最重要的一点,实现一些对抗手段,比如限制每个IP地址的请求频率。

    下面继续更深入地探讨还有哪些方法可以对抗应用层DDOS攻击。

     

    三.验证码的那些事儿

    验证码是互联网常用的技术之一,它的英文简称是CAPTCHA(Completely Automated Public Turing Test to Tell Computers and Human Apart,全自动区分计算机和人类的图灵测试)。在很多时候,如果可以忽略对用户体验的影响,那么引入验证码这一手段能够有效地阻止自动化的重放行为。

    如下是一个用户提交评论的页面,嵌入验证码能够有效防止资源滥用,因为通常脚本无法自动识别出验证码。

    但验证码也分三六九等,有的验证码容易识别,有的则较难识别。

    CAPTCHA发明的初衷是为了识别人和机器。但验证码如果设计得过于复杂,那么人也很难辨识出来,所以验证码是一把双刃剑。

    有验证码,就会有验证码破解技术。除了直接利用图像相关算法识别验证码外,还可以利用Web实现上可能存在的漏洞破解验证码。

    因为验证码的验证过程,是比对用户提交的名文和服务器端Session里保存的验证码明文是否一致。所以曾经有验证码系统出现过这样的漏洞:因为验证码消耗掉后SessionID未更新,导致使用原有的SessionID可以一直重复提交同一个验证码。

    还有的验证码实现方式,是提前将所有的验证码图片生成好,以哈希过的字符串作为验证码图片的文件名。在使用验证码时,则直接从图片服务器返回已经生成好的验证码,这种设计原本的想法是为了提高性能。

    但这种一一对应的验证码文件名会存在一个缺陷:攻击者可以事先采用枚举方式,遍历所有的验证码图片,并建立验证码到名文之间的一一对应关系,从而形成一张“彩虹表”,这也会导致验证码形同虚设。修补的方式是验证码的文件名需要随机化,满足“不可预测性”原则。

    随着技术的发展,直接通过算法破解验证码的方法也变得越来越成熟。通过一些图像处理技术,可以将验证码逐步变化成可识别的图片。

     

    四.防御应用层DDOS

    验证码不是万能的,很多时候为了给用户一个最好的体验而不能使用验证码,且验证码不宜使用过于频繁,所以我们还需要有更好的方案。验证码的核心思想是识别人和机器,那么顺着这个思路,在人机识别方面,我们是否还能再做一些事情呢?答案是肯定的。

    在一般情况下,服务器端应用可以通过判断HTTP头中的User-Agent字段来识别客户端。但从安全性来看这种方法并不可靠,因为HTTP头中的User-Agent是可以被客户端篡改的,所以不能信任。

    一种比较可靠的方法是让客户端解析一段JavaScript,并给出正确的运行结果。因为大部分的自动化脚本都是直接构造HTTP包完成的,并非在一个浏览器环境中发起的请求。因此一段需要计算的JavaScript,可以判断出客户端到底是不是浏览器。类似的,发起一个flash让客户端解析,也可以起到同样的作用。但需要注意的是,这种方法并不是万能的,有的自动化脚本是内嵌在浏览器的“内挂”,就无法检测出来了。

    除了人机识别外,还可以在Web Server这一层做些防御,其好处是请求尚未到达后端的应用程序里,因此可以起到一个保护的作用。

    在Apache的配置文件中,有一些参数可以缓解DDOS攻击。比如调小Timeout、KeepAliveTimeout值,增加MaxClients。但需要注意的是,这些参数的调整可能会影响到正常应用,因此需要视情况而定。Apache提供的模块接口为我们扩展Apache、设计防御措施提供了可能。目前已经有一些开源的Module全部或部分实现了针对应用层DDOS攻击的防护。

    “mod_qos”是Apache的一个Module,它可以帮助缓解应用层DDOS攻击。比如mod_qos的下面配置就非常有价值:

    #minimum request rate (bytes/sec at request reading):
    QS_SrvRequestRate                   120
    
    #limits the connections for this virtual host:
    QS_SrvMaxConn                       800
    
    #allow keep-alive support till the server reaches 600 connections:
    QS_SrvMaxConnClose                  600
    
    #allow max 50 connections from a single ip address:
    QS_SrvMaxConnPerIP                  50
    
    #disables connection restrictions for certain clients:
    QS_SrcMaxConnExcludeIP              172.18.3.32
    QS_SrcMaxConnExcludeIP              192.168.10.32

    有兴趣的朋友可以通过Apache官方网站获得更多的信息。除了mod_qos之外,还有专用于对抗应用层DDOS的mod_evasive也有类似的效果。mod_qos从思路上仍然是限制单个IP地址的访问频率,因此在面对单个IP地址或者IP地址较少的情况,比较有用。但是前文曾经提到,如果攻击者使用了代理服务器、傀儡机进行攻击,该如何有效地保护网站呢?

    Yahoo为我们提供了一个解决思路。因为发起应用层DDOS攻击的IP地址都是真实的,所以在实际情况下,攻击者的IP地址其实也不可能无限制增长。假设攻击者有1000个IP地址发起攻击,如果请求了10000次,则平均每个IP地址请求同一页面达到了10次,攻击如果持续下去,单个IP地址的请求也将变多,但无论如何变,都是在这1000个IP地址的范围内做轮询。

    为此Yahoo实现了一套算法,根据IP地址和Cookie等信息,可以计算客户端的请求频率并进行拦截。Yahoo设计的这套系统也是为Web Server开发的一个模块,但在整体架构上会有一台master服务器集中计算所有IP地址请求频率,并同步策略到每台Web Server上。

    Yahoo为此申请了一个专利(Detecting system abuse),这套防御体系,经过实践检验,可以有效对抗应用层DDOS攻击和一些类似的资源滥用攻击。但Yahoo并未将其开源,因此对于一些研发能力较强的互联网公司来说,可以根据专利中的描述,实现一套类似的系统。

     

    五.资源耗尽攻击

    除了CC攻击外,攻击者还可能利用一些Web Server的漏洞或设计缺陷,直接造成拒绝服务。下面看几个典型的例子,并由此分析此类分布式拒绝服务攻击的本质。

    1.Slowloris攻击

    Slowloris是在2009年由著名的Web安全专家RSnake提出的一种攻击方法,其原理是以极低的速度往服务器发送HTTP请求。由于Web Server对于并发的连接数都有一定的上限,因此若是恶意地占用住这些连接不释放,那么Web Server的所有连接都将被恶意连接占用,从而无法接受新的请求,导致拒绝服务。

    要保持住这个连接,RSnake构造了一个畸形的HTTP请求,准确地说,是一个不完整的HTTP请求。比如Content-Length:

    Content-Length:42\r\n

    在正常的HTTP包头中,是以两个CLRF表示HTTP Headers部分结束的:

    Content-Length:42\r\n\r\n

    由于Web Server只收到了一个\r\n,因此将认为HTTP Headers部分没有结束,并保持此连接不释放,继续等待完整的请求。此时客户端再发送任意HTTP头,保持住连接即可。

    x-a:b\r\n

    当构造多个连接后,服务器的连接数很快就会达到上限,从而达到拒绝服务攻击的目的。这种攻击几乎针对所有的Web Server都是有效的。从这种方式可以看出:此类拒绝服务攻击的本质,实际上是对有限资源的无限制滥用。

    在Slowloris案例中,“有限”的资源是Web Server的连接数。这是一个有上限的值,比如在Apache中这个值由MaxClients定义。如果恶意客户端可以无限制地将连接数占满,就完成了对有限资源的恶意消耗,导致拒绝服务。

    在Slowloris发布之前,也曾经有人意识到这个问题,但是Apache官方否认Slowloris的攻击方式是一个漏洞,他们认为这是Web Server的一种特性,通过调整参数能够缓解此类问题。Apache对Web Server的消极态度使得这种攻击今天仍然有效。

    2.HTTP POST DOS

    在2010的OWASP大会上,Wong Onn Chee和Tom Brennan演示了一种类似于Slowloris效果的攻击方法,作者称为HTTP POST D.O.S.。其原理是在发送HTTP POST包时,指定一个非常大的Content-Length值,然后以很低的速度发包,比如10-100s发一个字节,保持住这个连接不断开。这样当客户端连接数多了以后,占用住了Web Server的所有可用连接,从而导致DOS。

    这种攻击的本质也是针对Apache的MaxClient限制的。要解决此类问题,可以使用Web应用防火墙,或者一个定制的Web Server安全模块。

    由以上两个例子我们很自然地联想到,凡事资源有“限制”的地方,都可能发生资源滥用,从而导致拒绝服务,也就是一种“资源耗尽攻击”。

    出于可用性和物理条件的限制,内存、进程数、存储空间等资源都不可能无限制地增长,因此如果未对不可信任的资源使用者进行配额的限制,就有可能造成拒绝服务。内存泄漏是程序员经常要解决的一种bug,而在安全领域中,内存泄漏则被认为是一种能够造成拒绝服务攻击的方式。

    3.Server Limit DOS

    Cookie也能造成一种拒绝服务,称为Server Limie DOS。Web Server对HTTP包头都有长度限制,以Apache举例,默认是8192字节。也就是说,Apache所能接受的最大HTTP包头大小为8192字节(这里指的是Request Header,如果是Request Body,则默认的大小限制是2GB)。如果客户端发送的HTTP包头超过这个大小,服务器就会返回一个4xx错误,提示信息为:

    Your browser sent a request that this server could not understand.
    Size of a request header field exceeds server limit.
    

    假如攻击者通过XSS攻击,恶意地往客户端写入了一个超长的Cookie,则该客户端在清空Cookie之前,将无法再访问该Cookie所在域的任何页面。这是因为Cookie也是放在HTTP包头里发送的,而Web Server默认会认为这是一个超长的非正常请求,从而导致“客户端”的拒绝服务。要解决此问题,需要调整Apache配置参数LimitRequestFieldSize,这个参数设置为0时,对HTTP包头的大小没有限制。

     

    六.一个正则引发的血案:ReDOS

    正则表达式也能造成拒绝服务?是的,当正则表达式写得不好时,就有可能被恶意输入利用,消耗大量资源,从而造成DOS,这种攻击被称为ReDOS。

    与前面提到的资源耗尽攻击略有不同的是,ReDOS是一种代码实现上的缺陷。我们知道正则表达式是基于NFA(Nondeterministic Finite Automaton)的,它是一个状态机,每个状态和输入符号都可能有许多不同的下一个状态。正则解析引擎将遍历所有可能的路径直到最后。由于每个状态都有若干个“下一个”状态,因此决策算法将逐个尝试每个“下一个状态”直到找到一个匹配的。比如下面这个正则表达式:

    ^(a+)+$

    当输入只有4个“a”时:

    aaaaX

    它只有16条可能的路径,引擎很快能遍历完。但是当输入以下字符串时:

    aaaaaaaaaaaaaaaaX

    就变成了65536条可能的路径,此后每增加一个“a”,路径的数量就会翻倍。这极大地增加了正则引擎解析数据时的消耗。当用户恶意构造输入时,这些有缺陷的正则表达式就会消耗大量的系统资源,比如CPU和内存等,从而导致整台服务器的性能下降,表现的结果是系统速度很慢,有的进程或服务失去响应,与拒绝服务的后果是一样的。由此可见,ReDOS可能会成为一个埋藏在系统中的炸弹。

    在今天的互联网中,正则表达式可能存在于任何地方,如WAF、Web前端、Web后端、DB数据库等。但只要任何一个环节存在有缺陷的正则表达式,就都有可能会导致一次ReDOS。

    在检查应用安全时,一定不能忽视ReDOS可能造成的影响,对其进行安全评估。

     

    七.DDOS总结

    DDOS防范大致分为两个层面,其中之一面向服务器维护人员,这个可以从通用型防范方法,比如通过CDN盾,ADS等,还可以针对常见的DDOS攻击类型提出针对性防范措施,比如针对CC,使用人机识别等;另外一个层面是网络服务商防范DDOS,通常采取配置URPF,近源部署ADS等。从网络层和应用层两方面来防范,网络层较易,应用层较难。

    安全领域的方案很少具有唯一性,更多的是看解决方案的全面性。

    补充内容:

    1.绿盟科技ADS防止DDOS攻击

    反欺骗:它会对数据包的地址及端口的正确性进行验证,同时进行反向探测。

    协议栈行为模式分析:每个数据包类型需要符合RFC规定,这就好像每个数据包都要有完整规范的着装,只要不符合规范,ADS会自动识别并过滤。

    特定应用防护:非法流量总是有一些特定特征的,这就好比即便你混进了顾客群中,但你的行为还是会暴露出你的动机,比如老重复问店员同一个问题,老做同样的动作,这样,你仍然还是会被发现的。

    用户行为模式分析:真是的数据是随机访问的,这就好比顾客进店后的行为是随机的,或看看商品,或询询价,或来回比对,或和店员攀谈,而非法流量会大规模地,步调一致地去访问某一个点,这样一来,也是会被ADS识别。

    动态指纹识别:合法的流量数据,都会有相应的加密算法,这就好比每个数据进入服务器前,都要通过私下分配的口令验证,如果你说不出口令或这口令不对,那么,ADS就直接把你OUT了。

    带宽控制:而真实的访问数据过大时,ADS可以限制其最大输出的流量,以减少下游网络系统的压力,有了这个功能,苹果公司就可以不用这么手忙脚乱

    2.URPF防止DDOS攻击

    URPF(Unicast Reverse Path Forwarding)是一种单播反向路由查找技术,用于防止基于源地址欺骗的网络攻击行为。URPF通过检查数据包中源IP地址,并根据接收到数据包的接口和路由表中是否存在源地址路由信息条目,来确定流量是否真实有效,并选择数据包是转发或丢弃。

     

     

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 39,033
精华内容 15,613
关键字:

ddos攻击