网站安全防护_防cc攻击策略_怎么办

一、前言
上一个月,我们发表了一篇分析文章,与大家分享了常见的反弹式攻击的统计信息。当时SSDP攻击的平均流量大约为12 Gbps,被我们记录在案的规模最大的SSDP(Simple Service Discovery Protocol,简单服务发现协议)反弹式攻击有以下几点统计数据:
1、30 Mpps(每秒发送上百万个包)
2、80 Gbps(每秒发送数十亿个比特)
3、大约使用了94万个IP用于反弹攻击
几天以前,我们发现了一个规模异常巨大的SSDP放大攻击,再次刷新了这些记录。这次攻击值得好好深入研究一番,因为它的规模已经超过了100Gbps这个阈值。
整个攻击过程中,每秒发送的数据包走向大致如下图所示:
带宽占用情况如下图所示:
整个数据包洪泛攻击持续了38分钟。根据我们采样的网络数据流,我们发现这次攻击用到了93万个反弹服务器。我们估计在时长38分钟的攻击中,每个反弹服务器往Cloudflare发送了11.2万个数据包。
反弹服务器遍布全球,其中以阿根廷、俄罗斯以及中国的服务器占比最大。以IP数统计的话,反弹服务器在每个国家或地区的分布情况如下所示:
$ cat ips-nf-ct.txt|uniq|cut -f 2|sort|uniq -c|sort -nr|head
439126 CN
135783 RU
74825 AR
51222 US
41353 TW
32850 CA
19558 MY
18962 CO
14234 BR
10824 KR
10334 UA
9103 IT
...
反弹服务器所在的IP分布与ASN的规模成正比,这些服务器通常位于全世界最大的家用ISP(Internet Service Provider,互联网服务提供商)网络中,如下所示:
$ cat ips-nf-asn.txt |uniq|cut -f 2|sort|uniq -c|sort -nr|head
318405 4837 # CN China Unicom
84781 4134 # CN China Telecom
72301 22927 # AR Telefonica de Argentina
23823 3462 # TW Chunghwa Telecom
19518 6327 # CA Shaw Communications Inc.
19464 4788 # MY TM Net
18809 3816 # CO Colombia Telecomunicaciones
11328 28573 # BR Claro SA
7070 10796 # US Time Warner Cable Internet
6840 8402 # RU OJSC "Vimpelcom"
6604 3269 # IT Telecom Italia
6377 12768 # RU JSC "ER-Telecom Holding"
...
二、何为SSDP
攻击所用的报文为UDP报文,源端口为1900。SSDP协议使用的正是这个端口,而SSDP协议是UPnP的核心协议之一。UPnP是零配置(zero-configuration)网络协议的一种。大众使用的家庭设备一般都支持这个协议,以便用户的主机或手机能够轻松发现这些设备。当一个新的设备(比如说笔记本)加入到网络中时,它可以向本地网络查询特定设备是否存在,这些设备包括互联网网关、音频系统、TV或者打印机等。读者可以参考此处阅读UPnP与Bonjour的详细对比。
UPnP协议的标准化做的不尽如人意,在有关M-SEARCH请求报文的规范文档中,部分内容摘抄如下(这也是UPnP在探测设备时使用的主要方法):
“当某个控制节点(control point)加入到网络中时,控制节点可以根据需要使用UPnP探测协议搜索网络中的其他设备。在搜索过程中,控制节点通过在保留地址及相关端口(239.255.255.250:1900)上广播请求来查找其他设备,所使用的搜索消息包含特定的模式,不同的设备或服务具有不同的类型和标识符”。
规范中关于M-SEARCH报文的应答有如下说明:
“为了能被网络搜索发现,目标设备应该向发起多播请求的源IP地址及端口发送单播UDP响应。如果M-SEARCH请求报文的ST头部字段以“ssdp:all”、“upnp:rootdevice”或者“uuid:”开头,后面跟着与设备相匹配的UUID信息,或者如果M-SERCH请求与设备支持的设备类型或服务类型相匹配,那么该设备就会应答M-SEARCH请求报文”。
这种策略在实际环境中能够正常工作。例如,我的Chrome浏览器经常会请求搜索智能电视:
$ sudo tcpdump -ni eth0 udp and port 1900 -A
IP 192.168.1.124.53044 > 239.255.255.250.1900: UDP, length 175
M-SEARCH * HTTP/1.1
HOST: 239.255.255.250:1900
MAN: "ssdp:discover"
MX: 1
ST: urn:dial-multiscreen-org:service:dial:1
USER-AGENT: Google Chrome/58.0.3029.110 Windows
这个报文被发往一个多播IP地址。监听这一地址的其他设备如果与报文头部中指定的ST(search-target,搜索目标)多屏幕类型设备相匹配,那么这些设备应该会响应这个请求报文。
除了请求具体的设备类型,请求报文中还可以包含两类“通用的”ST查询类型:
1、upnp:rootdevice:搜索root设备
2、ssdp:all:搜索所有的UPnP设备以及服务
你可以运行以下python脚本(在另一脚本的基础上修改而得),使用前面提到的这些ST查询类型来枚举网络中的设备列表:
#!/usr/bin/env python2
import socket
import sys
dst = "239.255.255.250"
if len(sys.argv) > 1:
dst = sys.argv[1]
st = "upnp:rootdevice"
if len(sys.argv) > 2:
st = sys.argv[2]
版权保护: 本文由 DDOS防御专家 原创,转载请保留链接: http://www.ddosgb.com/ddos1/79.html