随着僵尸网络的兴起,同时由于攻击方法简单、影响较大、难以追查等特点,分布式拒绝服务攻击(DDoS,Distributed Denial of Service)得到快速壮大和日益泛滥。


成千上万主机组成的僵尸网络为 DDoS 攻击提供了所需的带宽和主机,形成了规模巨大的攻击和网络流量,对被攻击网络造成了极大的危害。更加可怕的是 DDoS 并没有彻底的解决办法,只能依靠各种手段和各个层次的防护进行缓解。

1 背景

2015 年 12 月,国内一家云厂商声称部署在其云平台上的一家知名游戏公司遭遇了峰值流量达到每秒 453.8Gbps 的 DDoS 攻击。

2016 年 9 月,为全世界范围内提供网站托管服务的法国公司 OVH 的创始人兼 CTO 在 Twitter 上发出了一张截图,图中显示了 OVH 的多个服务器同时遭到了峰值接近 1Tbps 的 DDoS 攻击。如下图所示,可以发现这次 DDoS 攻击中单一攻击的吞吐量最高就可达每秒 9300 万个包,即 799Gbps。

2016 年 10 月,黑客通过互联网控制了美国大量的网络摄像头和相关的 DVR 录像机,然后操纵这些肉鸡攻击了美国多个知名网站,包括 Twitter、Paypal、Spotify 在内的网站被迫中断服务,此次攻击影响了大半个美国互联网。

由此可见,DDoS 攻击正变得越来越严重,动辄上百 Gbps 的攻击都十分常见,并且,这样的攻击只会越来越大型。而且,随着网络安全界和黑帽子掌握越来越多的互联网资源,攻击复杂性也一直在增加,相应的,业务和应用所面临的网络 DDoS 挑战也不断增多。

因此,我们必须在 DDoS 威胁、影响关键业务和应用之前,对流量进行检测并加以清洗,确保网络正常稳定的运行以及业务的正常开展。

2 反射攻击

一般而言,我们会根据针对的协议类型和攻击方式的不同,把 DDoS 分成 SYN Flood、ACK Flood、UDP Flood、NTP Flood、SSDP Flood、DNS Flood、HTTP Flood、ICMP Flood、CC 等各类攻击类型。

每一种攻击类型都有其特点,而反射型的 DDoS 攻击是一种新的变种。攻击者并不直接攻击目标服务 IP,而是利用互联网的某些特殊服务开放的服务器,通过伪造被攻击者的 IP 地址、向有开放服务的服务器发送构造的请求报文,该服务器会将数倍于请求报文的回复数据发送到被攻击 IP,从而对后者间接形成 DDoS 攻击。

如下图所示,这里的攻击者(Attacker,实际情况中更多的会利用傀儡机进行攻击)不直接把攻击包发给受害者,而是冒充受害者给放大器(Amplifiers)发包,然后通过放大器再反射给受害者。

在反射型攻击中,攻击者利用了网络协议的缺陷或者漏洞进行 IP 欺骗,主要是因为很多协议(例如 ICMP,UDP 等)对源 IP 不进行认证。同时,要达到更好的攻击效果,黑客一般会选择具有放大效果的协议服务进行攻击。总结一下就是利用 IP 欺骗进行反射和放大,从而达到四两拨千斤的效果。

3 Smurf 攻击

Smurf 攻击是经典的 DDoS 攻击,Smurf 攻击是以最初发动这种攻击的程序名 Smurf 来命名。这种攻击方法结合使用了 IP 欺骗和 ICMP 回复方法使大量网络传输充斥目标系统,引起目标系统拒绝为正常系统进行服务。

攻击的过程大致是这样的:Attacker 向一个具有大量主机和因特网连接的网络广播地址发送一个欺骗性 Ping 包,而欺骗性 Ping 分组的源地址就是 Victim(9.9.9.9)希望攻击的目标。路由器接收到这个发送给 IP 广播地址(1.1.1.255)的分组后,由于 ICMP 并不会进行握手而验证源 IP 地址,路由器认为这就是广播分组,进而会对本地网段中的所有主机(1.1.1.2,1.1.1.3,1.1.1.4,1.1.1.5,1.1.1.6) 进行广播。网段中的所有主机都会向欺骗性分组的 IP 地址发送 echo 响应信息。如果这是一个很大的以太网段,可能会有上百台主机对收到的 echo 请求进行回复,这些目标系统很快就会被大量的 echo 信息吞没,这样就能轻而易举地阻止该系统处理其它任何网络传输,从而达到拒绝为正常系统服务的结果。

这种攻击不仅影响目标系统,还影响目标公司的因特网连接。那么如何防止这种类型的攻击?

a. 阻塞 Smurf 攻击的源头。Smurf 攻击依靠攻击者的力量使用欺骗性源地址发送 echo 请求,用户可以使用路由器的访问控制来保证内部网络中发出的所有传输信息都具有合法的源地址,以防止这种攻击。

b. 阻塞 Smurf 的反弹站点。用户可以有两种选择以阻塞 Smurf 攻击的反弹站点。第一种方法可以通过 ACL 阻止所有入站 echo 请求,这样可以防止这些分组到达自己的网络。如果不能阻塞所有入站 echo 请求,用户就需要让自己的路由器把网络广播地址映射成为 LAN 广播地址。

4 DNS 反射攻击

DNS 服务是整个互联网的基础服务,在我们链接互联网的时候,需要通过 DNS 解析将域名转化成对应的 IP 地址。理论上来说 ISP 的 DNS 服务器只响应来自它自己客户 IP 的 DNS Query 响应,但事实上互联网上大量 DNS 服务的默认配置缺失,导致了会响应所有 IP 的 DNS Query 请求。

同时,DNS 大部分使用 UDP 协议,UDP 协议没有握手过程让其去验证请求的源 IP。如下图所示,攻击者(实际上是攻击者控制的傀儡机)发送大量伪造了 Victim IP 的请求给 DNS 服务器,DNS 服务器成为放大器将 DNS 响应回复给受害者。

下面再来看一下 DNS 如何将请求数据包进行放大,输入(x.x.x.x为 DNS 服务器 IP):

dig ANY http://isc.org @x.x.x.x

返回结果,这里为了节约篇幅,我们省略了大部分的响应内容。我们可以看到,响应的内容远远大于请求的数据包内容,这里就产生了放大的效果。

; <<>> DiG 9.7.3 <<>> ANY http://isc.org @x.x.x.x
;; global options: +cmd
;; Got answer:

………………………………….此处省略具体请求内容…………………………………………

isc.org. 484 IN RRSIG A 5 2 7200 20121125230752 20121026230752 4442 isc.org. ViS+qg95DibkkZ5kbL8vCBpRUqI2/M9UwthPVCXl8ciglLftiMC9WUzq Ul3FBbri5CKD/YNXqyvjxyvmZfkQLDUmffjDB+ZGqBxSpG8j1fDwK6n1 hWbKf7QSe4LuJZyEgXFEkP16CmVyZCTITUh2TNDmRgsoxrvrOqOePWhp 8+E=
不幸的是,目前互联网上存在大量的 DNS 服务器可以被利用,黑客使用网络扫描器工具可以很容易的发现这些 DNS 服务器并加以利用。这需要:

a. 如果您是 DNS 的管理员,需要加固 DNS 服务器,可以按照下面的配置关闭递归功能和限制可查询的 IP 地址。

options { recursion no;};
options { allow-query {192.168.1.0/24;};};

b. 如果是受害者,首先可以通过网络层的 ACL 规则来防御, 或者使用抗 DDoS 系统进行流量清洗,目前大部分的云服务商都有这类功能。

5 NTP 反射攻击

NTP 是网络时间协议(Network Time Protocol)的简称,是用来使计算机时间同步化的网络协议。NTP 包含一个 monlist 功能,也被称为 MON_GETLIST,主要用于监控 NTP 服务器,NTP 服务器响应 monlist 后就会返回与 NTP 服务器进行过时间同步的最后 600 个客户端的 IP,响应包按照每 6 个 IP 进行分割,最多有 100 个响应包。我们可以通过 ntpdc 命令向一个 NTP 服务器发送 monlist 以及结合抓包来看下实际的效果。
ntpdc -n -c monlist x.x.x.x | wc -l
602

在上面的命令行中我们可以看到一次含有 monlist 的请求收到了 602 行数据,除去头两行是无效数据外,正好是 600 个客户端 IP 列表,并且从上图中的 wireshark 中我们也可看到显示有 101 个 NTP 协议的包,除去一个请求包,正好是 100 个响应包。

a. 如果作为 NTP 管理员,需要加固 NTP 服务,NTP 服务器升级到 4.2.7p26 或者更高的版本。关闭现在 NTP 服务的 monlist 功能,在ntp.conf 配置文件中增加选项

disable monitor

b. 如果是受害者,如何防御 NTP 反射和放大攻击?首先可以通过网络层的 ACL 规则来防御, 或者使用抗 DDoS 系统进行流量清洗,目前大部分的云服务商都有这类功能。

6 SSDP 反射攻击

互联网上家用路由器、网络摄像头、打印机、智能家电等智能设备普遍采用 UPnP(即插即用)协议作为网络通讯协议, 而 UPnP 设备的发现是通过源端口为 1900 的 SSDP(简单服务发现协议)进行相互感知。

利用 SSDP 协议进行反射攻击的原理与利用 DNS 服务、NTP 服务类似,都是伪造成被攻击者的 IP 地址向互联网上大量的智能设备发起 SSDP 请求,接收到请求的智能设备根据源 IP 地址将响应数据包返回给受害者。随着物联网和智能设备的快速发展和普及,利用智能设备展开 DDoS 攻击会越来越普遍。SSDP 的请求报文示例如下:
M-SEARCH * HTTP/1.1
HOST: 1.2.2.3:1900
MAN: “ssdp:discover”
MX: 1
ST: urn:dial-multiscreen-org:service:dial:1

返回的报文如下:
HTTP/1.1 200 OK
CACHE-CONTROL: max-age = 60
EXT:
LOCATION: http://1.2.3.4:5200/Printer.xml
SERVER: Network Printer Server UPnP/1.0 OS 1.29.00.44 06-17-2009
ST: upnp:rootdevice
USN: uuid:Samsung-Printer-1_0-mrgutenberg::upnp:rootdevice
那么该如何防护 SSDP 攻击呢?

a. 对于不需要即插即用服务的设备,关闭即插即用服务。

b. 在被 SSDP DDoS 攻击的时候,通过网络设备的 ACL 规则过滤 SSDP 指纹过滤。或者引入 DDoS 防护系统。

7 小结

这里我们引入一个学术名词,带宽放大因子(BAF, Bandwidth Amplification Factor),它表示的是请求报文与响应报文的比例。对于各种协议的反射放大攻击,由于其不同版本的实现机制各不相同,加上对请求数据支持的多样性,同一服务的 BAF 值也会存有一定的差异,我们通过实验对比了各种协议的实验 BAF,可以让大家直观感受各种反射攻击的威力,了解攻击放大的倍数。

反射 DDoS 攻击由于难以追踪、且不需要大量的肉鸡等特点,越来越流行,势必会对业务造成很大的威胁。除了需要各方通力合作对互联网上的设备和服务进行安全管理和安全配置消除反射站点之外,还需要在服务端做好防御准备,比如增加 ACL 过滤规则和 DDoS 清洗服务。目前大量的云厂商都提供 DDoS 流量的清洗服务,可以直接使用。

参考文档

http://www.freebuf.com/articles/network/76021.html

http://www.aqniu.com/industry/11331.html

http://techchannel.att.com/play-video.cfm/2014/8/6/

https://blog.cloudflare.com/the-ddos-that-almost-broke-the-internet/

https://blog.cloudflare.com/deep-inside-a-dns-amplification-ddos-attack/

网易云阅读推荐:

DDoS 攻击与防御:从原理到实践(上)

Cloud Native实践从0到1

云计算,你用对了吗?

反射型 DDoS 攻击的原理和防范措施的更多相关文章

  1. NTP Reply Flood Attack (NTP反射型DDos攻击)

    简介 NTP Reply Flood Attack (NTP射型Ddos攻击)以下简称NTP_Flood是一种利用网络中NTP服务器的脆弱性(无认证,不等价数据交换,UDP协议),来进行DDos行为的 ...

  2. [网络安全]NTP反射型DDOS攻击PPT

    给运维小组培训的NTP反射型DDOS攻击的PPT

  3. CSRF的原理和防范措施

    a)攻击原理: i.用户C访问正常网站A时进行登录,浏览器保存A的cookie ii.用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参 ...

  4. web安全防范之SQL注入攻击、攻击原理和防范措施

    SQL注入 攻击原理 在编写SQL语句时,如果直接将用户传入的数据作为参数使用字符串拼接的方式插入到SQL查询中,那么攻击者可以通过注入其他语句来执行攻击操作,这些攻击包括可以通过SQL语句做的任何事 ...

  5. CSRF与XSS攻击的原理与防范

    CSRF 1.概念与原理 CSRF,跨站请求伪造,攻击方伪装用户身份发送请求从而窃取信息或者破坏系统.例如: 用户访问A网站登陆并生成了cookie,再访问B网站,如果A网站存在CSRF漏洞,此时B网 ...

  6. 小型网站如何防范DDoS攻击

    ddos(Distributed Denial of Service,分布式拒绝服务攻击),俗称洪水攻击.是在传统的DoS攻击基础之上产生的新的破坏力更强的攻击方式.分布式拒绝服务攻击是指借助于客户/ ...

  7. UDP反射DDoS攻击原理和防范

    东南大学:UDP反射DDoS攻击原理和防范 2015-04-17 中国教育网络 李刚 丁伟 反射攻击的防范措施 上述协议安装后由于有关服务默认处于开启状态,是其被利用的一个重要因素.因此,防范可以从配 ...

  8. CC攻击原理及防范方法和如何防范CC攻击

    一. CC攻击的原理: CC攻击的原理就是攻击者控制某些主机不停地发大量数据包给对方服务器造成服务器资源耗尽,一直到宕机崩溃.CC主要是用来消耗服务器资源的,每个人都有这样的体验:当一个网页访问的人数 ...

  9. DDOS攻击攻击种类和原理

    DoS攻击.DDoS攻击和DRDoS攻击相信大家已经早有耳闻了吧!DoS是Denial of Service的简写,就是拒绝服务,而DDoS就是Distributed Denial of Servic ...

随机推荐

  1. JAVA基础第六组(5道题)

    26.[程序26] 题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续 判断第二个字母.         1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句 ...

  2. Web编程:JSP环境安装与配置

    Web服务器:Tomcat 数据库服务器:暂时未使用 集成开发环境:eclipse 要运行JSP程序,首先要安装JDK(Java Developer Kit),并且还要配置运行Java程序的环境变量. ...

  3. 201521123013 《Java程序设计》第5周学习总结

    1. 本章学习总结 1.1 尝试使用思维导图总结有关多态和接口的知识点. 1.2可选 使用常规方法总结其他上课内容. 接口:不是类,不能使用new实例化,可用instanceof判断是否实现某接口.接 ...

  4. 201521123069 《Java程序设计》 第3周学习总结

    1. 本章学习总结 如果看不清楚可点击类与对象 2. 书面作业 Q1. 代码阅读 public class Test1 { private int i = 1;//这行不能修改 private sta ...

  5. java:java构造器和java方法的区别

    构造函数(构造器)是一种特殊的函数.其主要功能是用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中.构造函数与类名相同,可重载多个不同的构造函数.在JA ...

  6. PowerShell脚本—停止占用8080端口的进程

    $str = netstat -ano $list = $str.Split('\n') ; $i -lt $list.Length; $i++) { $item_list = [System.Tex ...

  7. [04] Object类

    1.基本概念 Object类是所有类的父类,位于java.lang包中.任何类的对象,都可以调用Object类中的方法,包括数组对象. 2.常用方法 2.1 toString toString可以将任 ...

  8. [01] Servlet是什么

    1.Servlet是什么 Servlet(Server Applet),全称Java Servlet,是用Java编写的服务器端程序.其主要功能在于交互式地浏览和修改数据,生成动态Web内容. 1.1 ...

  9. 【机器学习实战】Machine Learning in Action 代码 视频 项目案例

    MachineLearning 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远 Machine Learning in Action (机器学习实战) | ApacheCN(apa ...

  10. python入门之一python安装及程序运行

    Python 程序要运行,需要先安装python解释器 PVM(这里可对照java的JVM来理解)实际上,你不需要单独安装,直接安装python后就可以了 1.安装python 下载地址:http:/ ...