美文网首页
反射型DDos攻击分析

反射型DDos攻击分析

作者: 城市烈人 | 来源:发表于2019-09-29 19:10 被阅读0次
    image.png

    背景

    ​ 2018年3月1日,GitHub在官方平台发文披露了本次DDoS攻击过程。在2月28日的17:21-17:26之间,GitHub网站无法正常访问。从17:26-17:30,网站只能间歇性的可以访问。简单说,这10分钟该网站已处于瘫痪状态。

    根据GitHub公布的报告,这种利用Memcache作为DRDoS放大器进行放大的DDoS攻击,利用Memcached协议,发送大量带有被害者IP地址的UDP数据包给放大器主机,然后放大器主机对伪造的IP地址源做出大量回应,形成分布式拒绝服务攻击,从而形成DRDoS反射。


    image.png

    ​ 这种类型的 DDoS攻击被称为“反射型 DDoS”或“反射 DDoS”。响应数据包被放大的倍数被称为 DDoS攻击的“放大系数”。相比普通的20到100倍的放大系数,本次GitHub攻击放大系数高达5万倍,被誉为“核弹级”的攻击。

    简介

    ​ 一般而言,我们会根据针对的协议类型和攻击方式的不同,把 DDoS 分成

    SYN Flood、ACK Flood、UDP Flood、NTP Flood、SSDP Flood、DNS Flood、HTTP Flood、ICMP Flood、CC
    

    等各类攻击类型.

    ​ 反射型DDoS 攻击则是DDoS攻击中较巧妙的一种。攻击者并不直接攻击目标服务 IP,而是通过伪造被攻击者的 IP向开放某些某些特殊服务的服务器发请求报文,该服务器会将数倍于请求报文的回复数据发送到那个伪造的IP(即目标服务IP),从而实现隔山打牛,四两拨千金的效果。

    ​ 而UDP协议没有握手,且允许IP源地址伪造,很多协议在响应包处理时,要远大于请求包,一个字节的请求十个字的响应,十个字节的请求一百个字的响应,这就是UDP反射放大攻击最根本的原理。


    image.png
    • 1、不握手:TCP面向连接 ; UDP不需要建立连接

    • 2、不可靠:TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交 付,即不保证可靠交付。

    • 3、无控制:UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低

    • 4、一对多:UDP支持一对一,一对多,多对一和多对多的交互通信

    • 5、开销小:UDP的首部开销小,只有8个字节。

    所以,UDP的反射型DDos更加受攻击者的钟爱

    常见UDP反射类型

    image.png

    仅从放大倍数来看,Memcached反射攻击的危害程度远远高于其他反射攻击类型 ,理论上它能够实现50,000倍的放大效果 .

    memcached反射型

    ​ 而基于UDP协议的Memcached反射型攻击因为其高达数万倍的放大倍数,更加受到攻击者的青睐。

    Memcached反射攻击,就是发起攻击者伪造成受害者的IP对互联网上可以被利用的Memcached的服务发起大量请求,Memcached对请求回应,大量的回应报文汇聚到被伪造的IP地址源,形成反射型分布式拒绝服务攻击。

    Memcached是一个缓存服务器,很多服务站点用来存储缓存数据,以防止WEB服务器承担更多性能损耗,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。

    image.png
    为什么Memcached会被利用与反射放大DDoS攻击?
    
    • 由于Memcache监听UDP,天然满足反射DDoS条件
    • 很多用户将服务监听在0.0.0.0,且未进行iptables规则配置,这导致可以被任意来源IP请求
    • Memcached反射的倍数达到数万倍,非常利于用于放大报文倍数行成超大流量的DDoS攻击

    攻击流程

    ​ 攻击者将自身IP伪造成攻击的目标地址,并向Memcached反射器发送请求读取Memcached在key-value中存储的信息。Memcached在收到请求后向伪造的虚假源IP进行回复,从而形成反射。

    image.png

    ​ Memcached服务支持UDP协议的访问请求,并且默认也会将UDP端口11211对外开放。

    ​ 因此攻击者只需要通过快速的端口扫描,便可以收集到全球大量没有限制的Memcached服务器,随后攻击者只需要向Memcached服务器的UDP:11211端口,发送伪造为源IP的攻击目标IP地址的特定指定请求数据包,服务器在收到该数据包后,会将返回数据发送至攻击目标的IP地址。

    ​ 默认情况下,可以通过telnet做memcached做任何的操作,包括获取信息、添加健值、删除数据项目。而且一般情况下memcached是以root用户启动,可以作为攻击的点做提权获取更多的系统信息 。开头介绍的针对github的大规模Ddos攻击也是由于互联网上对外开放udp 11211的端口被人利用做反射式攻击

    本地攻击demo

    思路是这样的:我们先批量上传指定数据到服务器的Memcached上面,然后我们再去Memcached服务器请求查询数据上一步存储的数据 。

    1、先给memcached添加一些缓存数据

    pip install memcached
    python
    import memcache 
    mc = memcache.Client(['192.168.81.254:11211'],debug=True)
    mc.add('test',"test"*9999)
    mc.set('test',"test",10000)
    mc.add('test1',"test"*10000)
    mc.add('test2',"test"*20000)
    mc.add('test3',"test"*30000)
    mc.set('test',"test",9999999)
    
    image.png

    2、模拟攻击 get stats数据请求

    python -c "print '\x00\x00\x00\x00\x00\x01\x00\x00stats\r\n'" | nc -nvvu 192.168.81.254 11211 >> /dev/null
    
    image.png

    发出去16字节,收到1065字节,

    1065 / 16 = 66.56 倍

    3、请求获取刚才缓存的test test1 test2 test3 数据,get value

    python -c "print '\x00\x00\x00\x00\x00\x01\x00\x00gets test test1 test2 test3\r\n'" | nc -rvvu 192.168.81.254 11211 >> /dev/null
    
    image.png

    发出去38字节,收到210680字节

    放大了 6354 倍

    image.png

    不妨可以进行一个大概理论计算

    比如单台服务器发送的测试指令只有二十个字节数据,却可以返回1M数据。

    1M/20=5W(5万倍放大率),四两拨千斤。

    假设理想状况下某个黑客团队现在手里有50W可用机器,那么DRDoS理论值数值将会达到约50W*1M=500GB的洪流

    公网上的memcached服务还存在很多这样的漏洞


    image.png

    除了memcached反射型DDos攻击之外,目前比较受欢迎的是NTP、DNS、SSDP、SNMP等等,都是UDP协议上实现的

    企业防护反射型DDos方法

    image.png

    ​ 反射 DDoS 攻击于难以追踪、且不需要大量的肉鸡等特点,越来越流行,势必会对企业的业务造成很大的威胁。

    1、清洗:优化业务架构,将业务分散到多个IP上 ,防御大流量反射型DDos攻击需要储备足够的带宽,如果遇到大流量反射攻击 ,可以使用云清洗服务,针对UDP反射进行过滤的云清洗服务或者UDP封堵。

    2、反击:获得了反射服务器的地址列表后,迅速进行排列,让排名靠前的一半也DDOS攻击靠后的一半 ,让他来攻击后面带宽小的比较容易起作用,这样消耗前一半的带宽,也阻塞后一半的入口带宽,如果效果好理论上能减少攻击流量的一半以上。

    相关文章

      网友评论

          本文标题:反射型DDos攻击分析

          本文链接:https://www.haomeiwen.com/subject/pnlqpctx.html