DDOS攻击的方法(一)---攻击网络宽带资源

  • A+
所属分类:安全闲碎

1.攻击网络宽带资源

1.1直接攻击

     使用大量的受控主机向被攻击目标发送大量的网络数据包,以沾满被攻击目标的宽带,并消耗服务器和网络设备的网络数据处理能力,达到拒绝服务的目的。

DDOS攻击的方法(一)---攻击网络宽带资源

直接攻击的主要方法有ICMP/IGMP洪水攻击和UDP洪水攻击两种。


1.1.1

ICMP/UDP洪水攻击

     网络控制消息协议(ICMP)是TCP/IP协议族的核心协议之一,它用于在TCP/IP网络中发送控制消息,提供可能发生在通信环境的各种问题反馈,通过这些消息,管理者可以对所发生的问题做出诊断,然后采取适当的解决措施。

     因特网组管理协议(IGMP)是用于管理因特网协议多播组成员的一种通信协议,IP主机和相邻的路由器利用IGMP来建立多播组的组成员。

     攻击者使用受控主机向被攻击目标发送大量的ICMP/IGMP报文,进行洪水攻击以消耗目标的宽带资源,这种类型的攻击出现的很早,使用hping等工具就能简单的发起攻击。但现在使用这种方法发动的攻击已见不多,被攻击目标可以在其网络边界直接过滤并丢弃ICMP/IGMP数据包使攻击无效化。


1.1.2

UDP洪水攻击

     用户数据包协议(UDP)是一种面向无连接的传输层协议,主要用户不要求分组顺序到达的传输,提供面向实事务的简单的不可靠信息传送服务。

     利用UDP数据报文,攻击者也可以发送洪水攻击,UDP洪水攻击和ICMP/IGMP洪水攻击的原理基本相同,通常,攻击者会使用小包和大包两种方式进行攻击。

     小包是指64字节大小的数据包,这是以太网上传输数据帧的最小值,在相同流量下,单包体积越小,数据包的数量就越多。由于交换机、路由器等网络设备需要对没一个数据包进行检查和校验,因此使用UDP小包攻击能够最有效的增大网络设备处理数据包的压力,造成处理速度的缓慢和传输延迟等拒绝服务攻击的效果。

     大包是指1500字节以上的数据包,其大小超过了以太网的最大传输单元,使用UDP大包攻击,能够有效的占用网络接口的传输宽带,并迫使被攻击目标在接受到UDP数据时进行分片重组,造成网络拥堵,服务器响应速度变慢。

     UDP洪水攻击也是很早就出现的一种拒绝服务攻击方式,这种攻击发动简单,有相当多的工具都能够发动UDP洪水攻击,如hping,LOIC等,但UDP洪水攻击完全依靠受控主机本身的网络性能,因此通常对目标宽带资源的消耗并不太大。


1.2发射和放大攻击

     攻击者可以使用ICMP/IGMP洪水攻击和UDP洪水攻击等方式直接对被攻击目标展开消耗网络宽带资源的分布式拒绝服务攻击,但这种攻击方式不仅较低,还很容易被查到攻击的源头,虽然攻击者可以使用伪造源IP地址的方式进行隐藏,但更好的方式是使用反射攻击技术。

     发射攻击又被称为DRDoS(分布式反射拒绝服务)攻击,是指利用路由器、服务器等设施对请求产生应答,从而反射攻击流量并隐藏攻击来源的一种分布式拒绝服务攻击技术。

DDOS攻击的方法(一)---攻击网络宽带资源

在进行反射攻击时,攻击者使用受控主机发送大量的数据包,这些数据包的特别之处在于,其目的IP地址指向作为反射器的服务器、路由器等设施,而源IP地址则被伪造成被攻击目标的IP地址,反射器在收到数据包时,会认为该数据包是否被攻击目标所发来的请求,因此会将相应数据发送给被攻击目标,当大量的响应数据包涌向攻击目标时,就会耗尽目标的网络宽带资源,造成拒绝服务攻击。

     发动反射攻击需要在互联网上找到大量的发射器,某些种类的反射攻击并不难实现,例如,对于ACK反射攻击,只需要找到互联网上开放的TCP端口的服务器即可,而这种服务器在互联网上的存在是非常广泛的。

     发动反射攻击通常会使用无需认证或者握手的协议,反射攻击需要将请求数据的源IP地址伪造成被攻击目标的IP地址,如果使用的协议需要进行认证或者握手,则该认证或握手过程没有办法完成,也就不能进行下一步的攻击,因此,绝大多数的反射攻击都是使用基于UDP协议的网络服务进行的,

     相比于直接伪造源地址的分布式拒绝服务攻击,反射攻击由于增加了一个反射步骤,因此更加难以追溯攻击来源,但是,这并不是反射攻击真正的威胁,真正的威胁在于利用反射原理进行的放大攻击。

     放大攻击是一种特殊的反射攻击,其特殊之处在于反射器对于网络流量具有放大作用,因此我们也可以将这种反射器成为放大器,进行放大攻击的方式与反射攻击的方式也是基本一致的,不用之处在于反射器(放大器)所提供的网络服务需要满足一定条件。

     在反射器所提供的网络服务协议中,需要存在请求和响应数据量不对称的情况,响应数据量需要大于请求数据量,响应数据量与请求数据量的比值越大,放大器的放大倍数也就越大,进行放大攻击所产生的消耗宽带资源的效果也就越明显。

     放大器所使用网络服务部署的广泛性决定了该放大攻击的规模和严重程度,如果存在某些网络服务,不需要进行认证并且放大效果非常好,但是在互联网上部署的数量很少,那么利用该网络服务进行放大也不能达到很大的流量,达不到有效的消耗宽带资源的效果,这种网络服务也就不能作为主要的放大攻击流量,而只能作为辅助手段。


1.2.1

ACK反射攻击

     我们知道,在传输控制协议建立连接时,首先会进行TCP三次握手,在这个工程中,当服务器端接收到客户端发来的SYN连接请求时,会对该请求进行ACK应答,利用TCP握手的ACK应答,即可进行ACK反射攻击。

     如果攻击者将SYN的源IP地址伪造成被攻击目标的IP地址,服务器的应答也就会直接发送给被攻击目标,由于使用TCP协议的服务在互联网上广泛存在,攻击者可以通过受控主机向大量不同的服务器发送伪造源IP地址的SYN请求,从而使服务器响应的大量ACK应答数据涌向被攻击目标,占用目标的网络宽带资源并拒绝服务。

DDOS攻击的方法(一)---攻击网络宽带资源

 

在发动ACK反射攻击时,首先需要进行扫描,获得大量的反射器地址,并分别向这些反射器发送伪造源地址的SYN请求数据,因此相比于直接攻击,这种方式显得复杂了一些,ACK反射攻击的优点主要在于其能够比较有效地隐藏攻击的来源。

    

1.2.2

DNS放大攻击

     域名系统是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网,而不用去记住那些难以记忆的IP地址,DNS使用的TCP与UDP端口号都是53,主要使用的UDP协议。

     通常,DNS的相应数据包会比查询数据包大,因此攻击者利用普通的DNS查询请求就能够发动放大攻击,并将攻击流量放大2~10倍,但更有效的方法是使用RFC2671中定义的DNS扩展机制EDNS0。

****EDNS0

     在没有EDNS0以前,对DNS查询的响应数据包被限制在512字节以内,当需要应答的数据包超过512字节时,根据DNS服务器实现的不同,可能会丢弃超过512字节的部分,也可能会使用TCP协议建立连接并重新发送,无论是哪站方式,都不利于进行DNS放大攻击。

     在EDNS0中,扩展了DNS数据包的结果,增加了OPT RR字段,在OPT RR字段中,包含了客户端能够处理的最大UDP报文大小的信息,服务器在响应DNS请求时,解析并记录下客户端能够处理的最大UDP报文的大小,并根据该大小生成响应的报文。

 

      攻击者能够利用dig和EDNS0进行高效的DNS放大攻击,攻击者向广泛存在的开放DNS解析器发送dig查询命令,将OPT RR字段中UDP报文大小设置为很大的值,并将请求的源IP地址伪造成被攻击目标的IP地址。DNS解析器收到查询请求后,会将解析的结果发送给被攻击目标,当大量的解析结果涌向目标时,就会导致目标网络拥堵和缓慢,造成拒绝服务攻击。

     攻击者发送的DNS查询请求数据包大小一般为60字节左右,而查询返回结果的数据包大小通常为300字节以上,因此,使用该方式进行放大攻击能够达到50倍以上的放大效果,这种放大效应所产生的攻击效果是非常惊人的,只要攻击的发起端能够发出2Gbit/s的宽带,就能够在目标网络处产生 100Gbit/s的宽带消耗,在2013年3月在Spamhaus的分布式拒绝服务攻击中,主要就是用了DNS放大攻击技术,使得攻击流量达到了史无前例的300Gbit/s,设置拖慢了局部互联网的响应速度。

     与ACK反射攻击类似,发动DNS放大攻击也需要先进行扫描,以获得大量的开放DNS解析器的地址,并向这些开放DNS解析器发送伪造源地址的查询命令来放大攻击流量。

DDOS攻击的方法(一)---攻击网络宽带资源

1.2.3

NTP放大攻击

     网络时间协议是用来使计算器时间同步化的一种协议,他可以使计算机与时钟源进行同步化并提供高精准度的时间校正,NTP使用UDP123端口进行通信。

     在NTP协议的服务器实现上,通常会实现一系列Mode7的调试接口,而接口中的monlist请求能够获取到目标NTP服务器进行同步的最后600个客户端的IP地址等信息。这意味着,只需要发送一个很小的请求包,就能触发大量连续的包含IP地址信息等数据的UDP响应数据包。

     实际上,monlist请求返回的数据量与一段时间内和NTP服务器交互的客户端数据量有关,由于NTP服务使用的是UDP单包通信,因此攻击者可以将伪造源IP地址的UDP请求包发送给NTP放大器,伪造客户端与NTP服务器的交互,增加“和NTP服务器交互的客户端的数量”,以此来增加monlist请求的响应数据量并增大NTP放大器的放大倍数,只要向NTP放大器发送600个不超过64字节的请求包(约40KB数据),就能够快速的将NTP放大器的放大倍数提高到700倍以上,并在该服务器的NTP服务关闭或重新启动之前一直保持这么大的放大倍数。

DDOS攻击的方法(一)---攻击网络宽带资源

攻击者发送的monlist请求数据包大小不超过64字节,而请求返回的结果会包含100个482字节的UDP响应数据,因此使用该方式进行放大攻击能够达到700倍以上的放大效果。

     与ACK反射攻击和DNS放大攻击类似,发动NTP放大攻击也需要先进行网络扫描,以获取大量的NTP服务器,并向这些NTP服务器发送伪造源地址的请求来放大攻击流量,相比于DNS放大攻击,NTP放大攻击的放大倍数更大,因此其危害也更加严重,在针对Spamhaus的大规模分布式拒绝服务攻击事件中,如果攻击者不使用DNS放大攻击而改用NTP放大攻击,那么攻击流量将会达到2Tbit/s以上。


1.2.4

SNMP放大攻击

     简单网络管理协议是目前网络中应用最为广泛的网络管理协议,他提供了一个管理框架来监控和维护互联网的设备,SNMP协议使用UDP161端口进行通信。

     利用SNMP协议中的默认通信字符串和GetBulk请求,攻击者能够开展有效的SNMP放大攻击。

     由于SNMP的效果很好,网络硬件厂商开始把SNMP加入到它们制作的每一台设备,这导致各种网络设备上都可以看到默认启用的SNMP服务,从交换机到路由器,从防火墙到网络打印机,无一例外,同时,许多厂商安装的SNMP都采用了默认的通信字符串,这些通信字符串是程序获取设备信息和修改配置必不可少的,最常见的默认通信字符串是public和private,除此之外还有许多厂商私有的默认通信字符串,几乎所有运行SNMP的网络设备上,都可以找到某种形式的默认通信字符串。

     在SNMPv1中定义的get请求可以尝试一次获取多个MIB对象,但相应消息的大小受到设备处理能力的限制,如果设备不能返回全部请求的响应,则会返回一条错误信息。在SNMPv2中,添加了getbulk请求,该请求会通知设备返回尽可能多的数据,这使得管理程序能够通过发送一次请求就获得大段的检索信息。

     攻击者向广泛存在并开启了SNMP服务的网络设备发送getbulk请求,使用默认通信字符串作为认证凭据,并将源IP地址伪造成攻击目标的IP地址,设备收到getbulk请求后,会将响应结果发送给攻击目标,当大量的响应结果涌向攻击目标时,就会导致攻击目标网络拥堵和缓慢,造成拒绝服务攻击。

DDOS攻击的方法(一)---攻击网络宽带资源

攻击者发送的getbulk请求数据包约为60字节,而请求的响应数据能够达到1500字节以上,因此,使用该方式进行放大攻击能够达到25倍以上的放大效果,这也是一种放大效应明显且有效的放大攻击方式。

     在发动SNMP放大攻击时,同样需要先进行网络扫描以找到开放了SNMP协议的网络社保,虽然开放SNMP协议的网络设备很多,但是在扫描到这些设备之后还需要对他们所使用的默认字符串进行猜测,因此,相比DNS放大攻击,不论是简单度还是放大倍数的影响力,SNMP放大攻击都略逊一筹,不过从总体上来看,SNMP放大攻击依然是一种非常有效的消耗宽带资源的攻击方式。


1.3攻击链路

     攻击链路与以前介绍的几种攻击方法有所不同,其攻击的目标并不是作为互联网断点的服务器的宽带资源,而是骨干网上的链路的宽带资源,对链路进行攻击的一种典型的方式是Coremelt攻击。

     Coremelt是安全研究人员在2009年提出的一种针对链路的分布式拒绝服务攻击方法,攻击者需要控制一个分布足够广泛的僵尸网络来发动Coremelt攻击。

DDOS攻击的方法(一)---攻击网络宽带资源

首先,攻击者通过traceroute等手段来判断各个僵尸主机和将要攻击的链路之间的位置关系,并根据结果将僵尸主机分为两个部分,然后,攻击者控制僵尸主机,使其与链路另一侧的每一台僵尸主机进行通信并收发大量数据,这样,大量的网络数据包就会经过骨干网上的被攻占链路,造成网络拥堵和延时。

     从骨干网上来看,这些僵尸主机之间相互收发的数据包确实是真是存在的通信数据,没有办法将这些通信数据与真正的合法通信数据进行有效的区分,因此这种攻击方式更加难以防护和缓解。


本文始发于微信公众号(LemonSec):DDOS攻击的方法(一)---攻击网络宽带资源

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: