目录
前排提醒
尽管这篇文章有一个非常不正经的标题,但不妨碍它成为一篇硬核的科普文章(手动狗头)
Abstract - 本文主要介绍了拒绝服务攻击的基本种类、原理和知识,列举了常见的拒绝服务攻击方法,并与现实生活紧密联系,将拒绝服务的概念类比到生活中的男女交往之中,并祝愿天下程序猿/媛终有眷属。(来自一个0202年情人节还没脱单的老程序汪)
本文的基本假设
拒绝服务是一种网络攻击,那么,就必须含有三要素:攻击发起者、受害者和攻击方法。
基于本文应用的特定“场景”,我们做出以下设定:
1、攻击发起者:直男、舔狗和渣男;
2、受害者:女神
3、攻击方法:不正确(有毒)的交往方式
现在,让我们开始吧!!
一、拒绝服务(DoS)——“直男”
不要一直想着渣男不渣男的,先看原理,再来搞事情~~
广义而言,凡是利用网络安全防护措施不足导致用户不能或不敢继续使用正常服务的攻击手段,都称之为拒绝服务(Denial of Service,DoS)攻击[1]。其目的是通过消耗网络带宽或系统资源,使网络或计算机不能提供正常的服务。
在讨论DoS攻击的这一部分中,我们只讨论普通的拒绝服务攻击。
一般而言,常见的拒绝服务攻击有如下几种:
(1)SYN泛洪
当主机发送带有伪造发件人地址的TCP / SYN数据包泛洪时,就会发生SYN泛洪。
SYN泛洪是一种专门针对TCP的3次握手过程中两台主机间初始化连接握手进行攻击[2]。攻击方利用虚假源地址向服务器发送TCP连接请求,这些数据包中的每个数据包都像连接请求一样处理,通过发送回TCP / SYN-ACK数据包(确认)并等待来自发件人地址的响应来响应(响应 ACK数据包)。但是,由于发件人地址是伪造的,因此永远不会响应。服务器不会得到确认,服务器一般会重试发送SYN+ACK,并等待一段时间后丢弃这个连接,在等待的时间内服务器处于半连接状态,会消耗调资源。当大量的虚假SYN请求到来,会占用服务器的大量资源从而使得目标主机不能向正常请求提供服务。
(2)TCP/UDP泛洪
攻击者发送大量数据包以消耗受害者服务器的资源。只要用户开一个TCP或UDP端口提供相关服务,就可以针对该服务进行攻击。在这种攻击中,攻击者发送大量数据包使得受害者内存耗尽。如果有多个攻击者同时发送大量数据包给一个受害者,则该攻击为分布式拒绝服务攻击(DDoS攻击)
(3)Land攻击
由黑客组织Rootshell发现的,攻击目标是TCP三次握手[3]。利用一个特别打造的SYN包–它的原地址和目标地址(相同)都被设置成某一个服务器地址进行攻击,然后,这个地址又发回ACK消息并创建一个空连接。这将导致接受服务器向它自己的地址发送SYN+ACK消息,结果这个地址又发回ACK消息并创建一个空连接,每一个这样的连接都将保留直到超时,在Land攻击下,许多UNIX将崩溃,NT变得极其缓慢(大约持续五分钟)。
(4)HTTP POST攻击
HTTP POST攻击于2009年首次发现,它发送一个完整的合法HTTP POST标头,其中包括一个“Content-Length”字段,用于指定要遵循的消息正文的大小。但是,攻击者然后继续以极慢的速率(例如1字节/ 110秒)发送实际的邮件正文。由于整个消息是正确且完整的,因此目标服务器将尝试遵循标头中的“Content-Length”字段,并等待消息的整个正文被传输,这可能需要很长时间。攻击者会建立数百个甚至数千个此类连接,直到服务器(受害者)上用于传入连接的所有资源都用完为止,因此,在发送所有数据之前,不可能进行任何进一步的(包括合法的)连接。值得注意的是,与许多其他试图通过使服务器的网络或CPU过载来制服服务器的(D)DoS攻击不同,HTTP POST攻击以受害者的逻辑资源为目标,这意味着受害者仍然具有足够的网络带宽和处理能力。HTTP POST攻击很难与合法连接区分开,因此能够绕过某些保护系统。
这种攻击的防御思路是:通过缓存的方式进行,尽量由设备的缓存直接返回结果来保护后端业务。当攻击者穿透缓存时,清洗设备会截获HTTP请求做特殊处理。最简单的方法就是对源IP的HTTP请求频率做统计,高于一定频率的IP地址加入黑名单。
(5)ICMP泛洪 & Ping of Death攻击
ICMP(Internet Control Message Protocol)是因特网控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。
在ICMP泛洪攻击中,攻击者将发送大量IP数据包,其源地址被伪造成受害者的地址[4]。默认情况下,网络上的大多数设备将通过发送对源IP地址的答复来对此做出响应。如果网络上接收并响应这些数据包的计算机数量非常多,则受害者的计算机将被流量泛滥。这会使受害计算机过载,甚至可能使其在此类攻击期间无法使用。
之所以把ICMP和Ping of Death攻击放在一起,是因为经常使用的用于检查网络通不通的Ping命令的过程,实际上就是ICMP协议工作的过程。还有其他的网络命令,如跟踪路由的Tracert命令也是基于ICMP协议的。
我们通常使用的ping命令每次都发送64字节的数据包。但是,可以利用操作系统规定的ICMP数据包最大尺寸不超过64KB这一规定,向主机发Ping of Death攻击。Ping of Death攻击的原理是:如果ICMP数据包的尺寸超过64KB上限时,主机就会出现内存分配错误,导致TCP/IP堆栈崩溃,致使主机死机[5, 6]。
(6)IP欺骗DoS 攻击
TCP连接的建立是通过三次握手完成的,而TCP正常释放连接是通过四次挥手来完成,但是有些情况下TCP无法按照正常的四次挥手来释放连接,如果此时不通过其他的方式来释放TCP连接的话,这个TCP连接将会一直存在,占用系统的部分资源。那么此时就需要使用一种叫做RST的报文(TCP报头的标志字段中的reset位置为1),使得TCP连接直接释放,因此,RST报文又叫做TCP连接异常终止[7]。
攻击者向目的主机发送大量伪造源IP地址(合法用户,已经建立连接)、RST置位的数据包,致使目的主机清空已经建好的连接,从而实现DoS。
(7)针对Web Server的多连接攻击
通过控制大量“肉鸡”同时访问某网站,造成网站无法正常处理请求而瘫痪。
(8)针对Web Server的变种攻击
通过控制大量“肉鸡”同时连接网站,不发送GET请求而是发送乱七八糟的字符,绕过防火墙的检测,造成服务器瘫痪。
好了现在原理已经讲完了,那么你可能要问了,DoS和“直男”有什么联系??
那么我建议你想一个问题,之前这8种攻击,如果你来分类,你会把他们分成几类?每一类又是那些攻击?
如果你去查了百度,你会得到一个答案:
“DoS攻击原理主要分为两种,分别是:语义攻击(Semantic)和暴力攻击(Brute)。”
语义攻击指的是利用目标系统实现时的缺陷和漏洞,对目标主机进行的拒绝服务攻击,这种攻击往往不需要攻击者具有很高的攻击带宽,有时只需要发送1个数据包就可以达到攻击目的;
暴力攻击指的是不需要目标系统存在漏洞或缺陷,而是仅仅靠发送超过目标系统服务能力的服务请求数量来达到攻击的目的,也就是通常所说的风暴攻击。
好的,那么我们可以来分析了:
直男具有类似于DoS攻击的一切方式,除了追到女神,他们好像其他的都会
(1)语义攻击指的是利用目标系统实现时的缺陷和漏洞:有时一个数据包就可以达到攻击目的,像极了各种骚操作骚死自己的广大男同胞们,包括但不限于:情人节送一个“女生都感动哭了”系列礼物啦、回复消息一言不合,无法领会言外之意的钢铁直男啦......
(2)单个节点的暴力攻击:从单个节点发出大量数据包,直到受害主机瘫痪,像极了一味地用自己方式交往女生、而不懂得换位思考,体会女生心思的直男,包括但不限于:程序猿对文科女生讲代码、生活没有情趣、长篇大论什么政治啦、军事啦、英雄联盟啦这些的男生话题,女生根本不愿意听下去,在男生的角度来看,这些玩意讲多了她们估计懒得理你,其实是被你的DoS打瘫了......请注意,为什么会被你DoS呢,是因为你发送的数据包,全是无效的,嘻嘻,DoS最喜欢的方式就是灌包了
(3)“直男”是真心的,他们是真的喜欢,只是方式方法不正确,技巧有待加强。要不然,他们绝不会耗费心思去找那一个导致DoS的“数据包”,也不会没事总是用他的方式来“发送大量数据包”找你。
二、分布式拒绝服务(DDoS)——“舔狗”
有一天直男突然进化了,觉得不能再按照我的方式来追求我的女神了,我要学习撩妹技巧,对她百依百顺——DDoS攻击呼之欲出......
随着互联网的不断发展,网络的带宽越来越高,计算机的处理能力迅速增长,内存大大增加,当单一结点的DoS攻击速率不足以填满带宽的时候,分布式拒绝服务(Distributed denial of service attack,DDoS)出现了。这种攻击可以认为是DoS攻击的升级版,通过控制“僵尸网络(Botnet)”或者利用大量“肉鸡”,同时对同一目标发动巨量攻击流,导致攻击目标的服务能力急剧下降甚至直接“瘫痪”,从而达到其攻击目的和效果[8]。
DDoS的表现形式主要有两种,一种为流量攻击,主要是针对网络带宽的攻击,即大量攻击包导致网络带宽被阻塞,合法网络包被虚假的攻击包淹没而无法到达主机;另一种为资源耗尽攻击,主要是针对服务器主机的攻击,即通过大量攻击包导致主机的内存被耗尽或CPU被内核及应用程序占完而造成无法提供网络服务。
当被DDoS攻击时,被攻击主机上有大量等待的TCP连接,且网络中充斥着大量的无用的数据包,源地址为假(使用了肉鸡或者僵尸网络)。同时,网络中充斥着高流量无用数据,造成网络拥塞,使受害主机无法正常和外界通讯,严重时会造成系统死机。
关于DDoS攻击的防御:上述DDoS攻击的防御一般基于数值统计。即分析正常网络和遭受DDoS攻击网络中的流量变换特征。如果发生了DDoS攻击,则网络中的流量会非常大。基于此,网络中的流量会出现明显的统计学差异,据此,可以分析巨大网络流中的数据包详情,如源IP地址和目的端口等,及时进行流量过滤[8, 9]。
嗯......问题来了,舔狗和DDoS又是怎么回事呢?
最为关键的是:舔狗已经学会了全方位的跪舔,在女神生活的各个方面都能看到舔狗“无微不至”的关心和体贴,那就是:一个结点的DoS“交流”不够,我需要全方面的关心女神的生活,我需要全方面,全方面!!!
然后DDoS攻击来了,“关心”的数据包,从一个结点发来变成了n个结点发过来,攻击力度成n倍上升......如果女神不喜欢这位舔狗,那么分分钟就死机了——“舔狗舔到最后一无所有”。
最后,我想说的是,DDoS攻击的特征和舔狗一毛一样,你信吗?我反正信了,看这张图吧:
我们说,DDoS攻击的特征是:(1)网络中充斥着高流量无用数据;(2)严重时会造成系统死机
来对照一下:
1、你发送的消息,是高流量无用数据吗?是!!!
2、女生死机了吗?死了!!!!!
综上所述,DDoS=舔狗,鉴定完毕。
三、慢速拒绝服务(LDoS)——“渣男”
如果在情场待过,大概或多或少听过一句话,“一段感情里谁先认真谁就输了”。我们姑且不讨论这句话的三观,但是就凭这句话的流行程度,说明至少还有一定参考价值。
那么有一些渣男(甚至是PUA那种),自己不但不真心,最擅长的就是让女生陷入进感情,让她白白付出,到头来自己受到伤害还要求渣男不要离开她。我想说,LDoS攻击就是其中的佼佼者——往下看
2003年,在ACM的全球网络顶会SIGCOMM上,首次提出了shrew attack的概念[10],这一攻击日后发展为慢速拒绝服务(Low-Rate Denial of Servie,LDoS)攻击[11-13]。之所以称之为“低速率”,是因为该攻击无需攻击者保持高速率的攻击流,而是定期向受害者发送高速率但短持续时间的突发流量。传统的拒绝服务攻击往往包含大量的数据包,这会造成网络流量统计特征异常从而被检测,而LDoS攻击则反而会使得网络中平均流量的降低,因而隐蔽性非常强。因此,传统攻击检测方法不适用于检测LDoS攻击,这造成了检测上的难题。
这种攻击的原理还需要从网络拥塞控制机制讲起,
如果有兴趣可以参考我之前的博文做一下这个拥塞控制实验:https://blog.csdn.net/yyd19981117/article/details/89331937
TCP是Internet中最流行的端到端传输协议,为主机之间提供可靠按序的传输服务。在现有的TCP/IP协议体系下,TCP拥塞控制机制主要基于加法增加乘法减少(AIMD)算法。在该算法中主要用到三个窗口变量:
(1)拥塞窗口(cwnd):限定源端在拥塞控制中在一定时间内允许传送的最大数据量,是来自源端的流量控制。
(2)通告窗口(awnd):连接建立及传输过程中,接收端向源端通告的最大可接收速率,是来自接收端的流量控制。
(3)有效窗口(win):源端数据发送的实际窗口大小,限定为win=min(cwnd,awnd)。
总的来说,AIMD(加法增加,乘法减少)算法保证每个TCP流按照合理的速率进行传输,超时重传(Retransmission Time-Out, RTO)则决定发送方在发送数据后,在多长时间内如果没有收到ACK,就重置重传计时器,并重传上次发送失败的报文。
在超时重传下,Reno拥塞控制机制分两步处理:如果收到了3个重复ACK,则将窗口缩减为发生拥塞时的一半;若等待RTO时间后没收到ACK,就把窗口压缩到1个包,重新执行慢启动过程(即窗口从1个包开始AIMD增长,此时流量会有损失)[14]。
LDoS 攻击充分利用了TCP/IP 拥塞控制机制中存在的缺陷而发起攻击。LDoS攻击主要分为以下几步:
(1)LDoS 周期性地突发持续时间较短的高强度攻击数据流,导致正常TCP流大量丢包,使得拥塞控制机制被迫转入慢启动,压缩窗口导致流量损失;
(2)进入慢启动后,LDoS攻击停止攻击,当 TCP 流缓慢恢复至即将正常时,下一个 LDoS 攻击周期开始,高强度攻击数据流继续攻击,导致下一轮拥塞控制;
(3)如此周而复始反复恶性循环,从而使得 TCP 流反复进入“拥塞避免”和“拥塞恢复”的恶性循环状态,导致 TCP 流的吞吐量大大下降。
LDoS攻击有三个参数,分别是攻击周期T、攻击突发长度t和攻击速率R。
T:攻击周期。为了获得最佳攻击效果,攻击发起者通常会基于重新传输超时(RTO)设定T的值。若每一轮攻击周期都和RTO时间相等,则网络会一直拥塞控制-恢复-再拥塞;
t:攻击突发长度。LDoS攻击的一个周期内只会存在短时间的高强度攻击流,大部分时间保持静默,因此在一个攻击周期内,t的值远小于攻击周期。
R:攻击速率。攻击速率必须大于瓶颈带宽,否则网络不会受到攻击流的拥塞。
图片所示的是LDoS攻击的方波,LDoS攻击具有明显周期性,周期中的大流量方波导致拥塞控制机制启动,不攻击的时候,流量恢复,然后又攻击,周而复始,持久掉包。
因此,我们可以看到,LDoS攻击仅需要在周期内很短的时间维持高流量,进入拥塞之后就停止攻击,这就导致了攻击流量很低,难以检测,且能周而复始降低吞吐量,使得吞吐量进入巨大波动,导致拒绝服务。
目前对于LDoS攻击的检测方法主要有三个方面:一是基于分析异常流量在整个周期内所占比例的“时域检测方法”[15];二是基于分析异常流量数量的“频域检测方法”[16];三是“特征方法”,主要原理是分析LDoS攻击发生时的流量特征(比如,波动剧烈)进行分类或聚类检测[17, 18]。研究表明,第三种基于特征的方法,能和机器学习或人工智能结合在一起,检测效果较好,是最有效的方法。
此外,软件定义网络(Software Defined Network,SDN)技术作为近几年来的热点,在安全方面取得了较大的成果[19],且在拒绝服务防御中取得了良好的效果。通过自定义网络组件,研究人员通过网络可编程技术,提出了一系列防御方法,并开发了许多防御组件,对于普通DoS攻击[20]、DDoS攻击[21, 22]和LDoS攻击[23]均取得了良好的效果。
《论LDoS攻击与渣男》上面这么写到:
1、比起DoS、DDoS“直男、舔狗”来说,LDoS攻击的“渣男”没有真心。DoS、DDoS是发送大量的数据包,而LDoS攻击反而会导致流量降低:直男和舔狗至少真心肯付出,渣男连多余的付出都不要想;
2、反复触发拥塞控制机制:导致流量及其不稳定(事实上,利用流量方差检测LDoS攻击效果较好),这就好比渣男一套一套的撩,像极了爱情,但却没有真心,而女神就不一样了,她就感觉现在是《恋爱ing》——“心情就像是~坐上~一台喷射机~”,拥塞控制机制跟吃了炫迈一样根本停不下来,心情忽上忽下——流量忽大忽小,方差很大;
3、最可怕的来了,LDoS攻击是周期性的,渣男也是忽远忽近的,让你《猜不透》,怎么唱的来着?
“如果忽远忽近的洒脱,是你要的自由~”
“如果忽冷忽热的温柔,是你的借口~”
总结
本文用科普的形式,讲述了三种拒绝服务攻击的原理和方法:DoS、DDoS和LDoS。并且与男女交往相结合,使得各种攻击的概念生动形象,有助于理解。希望看到这篇文章的小哥哥们阳光帅气,争做暖男;小姐姐们心有所属,远离渣男。
明天就是情人节,祝天下有情人终成眷属。
我还是条单身狗,甜甜的恋爱啥时候轮到我呢?
References
[1] L. Garber, "Denial-of-service attacks rip the Internet," Computer, pp. 12-17, 2000.
[5] M. Kenney, "Ping of death," Insecure. org, vol. 2, 1996.