杂谈

一片文章彻底搞懂各种DDos攻击方式

DDoS 可以说近几年是骇人听闻,不多中小企业都被DDos勒索过呢 有的甚至高达10几个btc

废话不多说,上正题!

DoS(拒绝服务,Denial of Service)就是利用合理的服务请求来占用过多的服务资 源,从而使合法用户无法得到服务的响应。这是早期非常基本的网络攻击方式。举个例子!
小王开了一家商店,店面不大,加上小王一共有三个服务员。由于他们这里物美价廉,工 作人员的态度又比较友善,所以慢慢的生意越来越好。

但是,这家店所在的小镇上有一个恶霸,恶霸看到小王的店很赚钱,想要通过一些下作的 手段谋取私利。于是他装扮成普通的顾客,在小王的店里有一搭无一搭的总和店员攀谈, 问问这个多少钱,问问那个怎么卖,还时不时的给店员提供一些虚假信息,比如哪里缺货 了之类的信息。使店员们都被他搞的团团转。

由于恶霸是装作普通顾客的,小王和店员们又不能彻底不理他,所以就要分出一些精力来 服务他,但是由于店内的服务员有限。这样一来,很多其他的顾客就可能受到了冷落。

这种,利用合理的服务请求来占用过多的服务资源,从而使合法用户无法得到服务的响应 的行为,就是 DoS 攻击。
分布式拒绝服务(DDoS:Distributed Denial of Service)攻击,是指攻击者利用大量 “肉鸡”对攻击目标发动大量的正常或非正常请求、耗尽目标主机资源或网络资源,从 而使被攻击的主机不能为正常用户提供服务

如果只是一个恶霸的话,只要能够识别出来,然后阻止他进入店铺就行了。

随着恶霸被发现之后,他也想了一个办法,这次他不再自己一个人跑去店里捣乱了,而是 纠集了一群无赖,而这些无赖每天都换,店铺里面的服务员根本识别不出来到底谁是恶霸 派来的。

无赖们扮作普通客户一直拥挤在商场,赖着不走,真正的购物者却无法进入;或者总是和 营业员有一搭没一搭的东扯西扯,让工作人员不能正常服务客户;也可以为商铺的经营者 提供虚假信息,商铺的上上下下忙成一团之后却发现都是一场空,最终跑了真正的大客 户,损失惨重。

一个无赖去胡闹,就是 DoS 攻击,而一群无赖去胡闹(分布式),就是 DDoS 攻击。

===================================================================================================
接下去详细讲一下关于各种类型的DDos以及防御手段
我们先来学习一下反射DDos攻击
反射型的 DDoS 攻击是一种新的变种。 攻击者并不直接攻击目标服务 IP,而是利用互联网的某些特殊服务开放的服务器,通过伪造被攻击者的 IP 地址、向有开放服务的服务器发送构造的请求报文,该服务器会将数倍于请求报文的回复数据发送到被攻击 IP,从而对后者间接形成 DDoS 攻击。 如下图所示,这里的攻击者(Attacker,实际情况中更多的会利用傀儡机进行攻击)不直接把攻击包发给受害者,而是冒充受害者给放大器(Amplifiers)发包,然后通过放大器再反射给受害者。 在反射型攻击中,攻击者利用了网络协议的缺陷或者漏洞进行 IP 欺骗,主要是因为很多协议(例如 ICMP,UDP 等)对源 IP 不进行认证。

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 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 流量的清洗服务,可以直接使用。

没想到吧 这只是DDOS攻击的冰山一角!

来看一看放大型DDos攻击!

NTP放大攻击

原理:
NTP协议是基于UDP协议的123端口进行通信,但是由于UDP协议的无连接性具有不安全性的缺陷,攻击者就会利用NTP服务器的不安全性能漏洞发起DDoS攻击。攻击者攻击的步骤是先寻找攻击对象或者互联网中支持NTP放大攻击的服务器资源;然后通过伪造IP地址向NTP服务器发送monlist的请求报文,为了增加攻击的强度,monlist指令会监控响应 NTP 服务器并且将其返回进行时间同步的最近多个客户端的IP地址,通常NTP服务器与大量的客户端进行交互时,一个不超过64字节的请求数据包可以触发100个482个字节响应的数据包,因此它具有放大数百倍的功能。从而这些大流量就会阻塞网络,导致网络不通,造成了分布式拒绝服务。

发现ntp服务
nmap -sU -p 123 10.0.1.82
nmap -sU -p123 -n –script=ntp-monlist 10.0.1.82

测试发现ntp漏洞
ntpdc -n -c monlist 10.0.1.82
ntpq -c rv 10.0.1.82
ntpdc -c sysinfo 10.0.1.82

列出目标ntp服务器peers
sudo ntpdc -n -c listpeers 10.0.1.82

防御措施:
1.对NTP服务器进行合理的管理和配置,将全部的NTP服务软件升级到4.2.7p26或更高版本;
2.手动关闭monlist查询功能在配置文件中添加noquery参数来限制客户端的monlist等信息查询请求 disable monitor;
3.通过防火墙对UDP试用的123端口进行限制,只允许NTP服务于固定IP进行通信;
4.运用足够大的带宽,硬抗NTP服务产生的放大型流量攻击。
5.使用DDoS防御产品,将入口异常访问请求进行过滤清洗,然后将正常的访问请求分发给服务器进行业务处理。

1)通过Iptables配置只允许信任的IP访问本机UDP的123端口。

修改配置文件,然后执行以下命令:
echo “disable monitor” >> /etc/ntp.conf

执行以下命令重启NTP服务:
systemctl restart ntpd

2)我们建议您直接关闭掉NTP服务,并禁止其开机自启动。

NTP官方修复方案
SecurityNotice < Main < NTP

升级到4.2.7p26版本后的防御操作
NTP Amplification Attacks Using CVE-2013-5211 | CISA

做了如下操作
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery

深入了解DNS扩容DDoS攻击
DNS放大型攻击是攻击者放大他们可能针对潜在受害者的带宽量的一种方式。想象一下,你是一个攻击者,你控制一个能够发送100Mbps流量的僵尸网络。虽然这可能足以让某些网站脱机,但在DDoS领域这是一个相对微不足道的流量。为了增加攻击量,您可以尝试将更多受感染的计算机添加到僵尸网络中。这变得越来越困难。或者,你可以找到一种方法将你的100Mbps放大到更大的范围。

最初的放大型攻击被称为SMURF攻击。SMURF攻击涉及攻击者将ICMP请求(即,ping请求)发送到路由器的网络广播地址(即XXX255),该路由器被配置为将ICMP中继到路由器后面的所有设备。攻击者将ICMP请求的来源欺骗为目标受害者的IP地址。由于ICMP不包含握手,因此目标无法验证源IP是否合法。路由器接收请求并将其传递给位于其后面的所有设备。然后所有这些设备都响应ping。攻击者能够通过路由器后面的多个设备的倍数来放大攻击(即,如果路由器后面有5个设备,则攻击者能够将攻击放大5倍)。

SMURF攻击在很大程度上已成为过去。在大多数情况下,网络运营商已将其路由器配置为不中继发送到网络广播地址的ICMP请求。然而,即使放大攻击向量已经关闭,其他人仍然是敞开的。DNS放大攻击的向量有两个标准:(1)可以用欺骗的源地址设置查询(例如,通过不需要握手的ICMP或UDP等协议);(2)对查询的响应明显大于查询本身。DNS是一种核心,无所不在的互联网平台,符合这些标准,因此已成为放大攻击的最大来源。


开放DNS解析器:互联网的祸根
到目前为止,我使用了几次的关键术语是“开放DNS解析器”。如果您运行递归DNS解析器,最佳做法是确保它仅响应来自授权客户端的查询。换句话说,如果您为公司运行递归DNS服务器并且您公司的IP空间是5.5.5.0/24(即5.5.5.0 – 5.5.5.255),那么它应该只响应该范围内的查询。如果查询从9.9.9.9到达,那么它不应该响应。

问题是,许多运行DNS解析器的人都将它们打开并愿意响应任何查询它们的IP地址。这是一个至少已有10年历史的已知问题。最近发生的事情是许多不同的僵尸网络似乎已经枚举了互联网的IP空间,以便发现开放的解析器。一旦发现,它们可用于发起重大DNS扩增攻击

还有几种基本的DDos攻击手段!!

1、SYN Flood攻击即洪水攻击是通过TCP建立3次握手连接的漏洞产生,主要通过发送源IP虚假的SYN报文,使目标主机无法与其完成3次握手,因而占满系统的协议栈队列,致使资源得不到释放,进而达成拒绝服务的目的,SYN Flood攻击是移动互联网中DDoS攻击最主要的形式之一。目前一些简单的缓解办法,比如:调整内核参数的方法,可以减少等待及重试,加速资源释放,在小流量SYN Flood的情况下可以缓解,但流量稍大时完全不抵用。防御SYN Flood的常见方法有:SYN Proxy、SYN Cookies、首包(第一次请求的SYN包)丢弃等。SYN攻击逐渐在演变,试图在消耗CPU资源的同时也在堵塞带宽,攻击流量相比标准SYN包大大增加,目前已观察到的最大的SYN攻击可达T级,这让防御也变得困难。有些防护公司目前只能防护300Gbps左右。所以大流量攻击选择安全防护公司一定要慎重。

2、ACK Flood是对虚假的ACK包,目标设备会直接回复RST包丢弃连接,所以伤害值远不如SYN Flood。属于原始方式的DDoS攻击。

3、UDP Flood是使用原始套接字伪造大量虚假源IP的UDP包,主要以DNS协议为主。

4、ICMP Flood 即Ping攻击,是一种比较古老的方式。

5、CC攻击即ChallengeCollapsar挑战黑洞,主要通过大量的肉鸡或者寻找匿名代理服务器,模拟真实的用户向目标发起大量的访问请求,导致消耗掉大量的并发资源,使网站打开速度慢或拒绝服务。现阶段CC攻击是应用层攻击方式之一。

6、DNS Flood主要是伪造海量的DNS请求,用于掩盖目标的DNS服务器。

7、慢速连接攻击是针对HTTP协议,以slowloris攻击为起源,然后建立HTTP连接,设置一个较大的传输长度,实际每次发送很少字节,让服务器认为HTTP头部没有传输完成,因此数据传输越多就会造成连接资源耗尽。

8、DOS攻击利用一些服务器程序的bug、安全漏洞、和架构性缺陷,然后通过构造畸形请求发送给服务器,服务器因不能判断处理恶意请求而瘫痪,造成拒绝服务。

以上就是墨者安全认为现阶段出现过的DDOS攻击种类,当然也有可能不是那么全面,DDOS攻击的种类复杂而且也不断的在衍变,目前的防御也是随着攻击方式再增强。这是需要长期去突破的技术,还好现在是上有攻击,下有对策,即使出现了最初的小流量攻击到现在的T级流量攻击,那我们也研究出了T级以上的解决方案。


Prev Next
No Comments

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注