论文研究1——什么是拒绝服务攻击

因为研究生期间需要对拒绝服务攻击下的网络控制进行学习深入,所以今天专门开辟了论文研究这一专栏,后面我也尽量保持一周一次文章的发布,来保持自己的学习进度,以此为督促。

1.拒绝服务(DOS)攻击

不知道大家有没有看过《楚门的世界》,里面楚门想要开车离开那座桃源岛时,原本宽敞的路突然就多出很多车阻止他前进,那些车其实并不出去,只是占了这条路,为的是不让楚门出去。

DoS 攻击发起后,目标站点(出岛管辖口)会被非法请求(想要出岛的车)淹没。其实他们并不出岛,就是停在那里堵着,由于站点必须响应每个请求,因此网络带宽或系统资源会被所有响应消耗。这使得网站无法像往常一样为用户提供服务,并且通常会导致网站完全关闭。

我们常见的DOS攻击大方向是分为两类:语义攻击暴力攻击

现在你来想,如果你不想让楚门出岛,你会怎么做,有一个方法是去寻找出岛管辖口的漏洞,比如说开闸门有没有锁,如果有锁,我去把钥匙偷走,那么门就打不开了,这种行为不需要耗费攻击者太多资源,但需要站点出现漏洞,这就是语义攻击

当然还有另一种办法,就是直接派一堆车去出岛,然后堵在出岛管辖口,这样的行为不需要找任何漏洞,只需要有资源,(有钱就是豪横),这种大数量无脑的攻击,就是暴力攻击。他仅仅靠发送超过目标系统服务能力的服务请求数量来达到攻击的目的。

如果我们还要再细分DOS攻击,我们就需要更加细致的了解服务器是怎样的。(就好像如果你想找漏洞来阻止楚门出岛,那么你需要知道管辖口是怎么运营的,这样才能找到更多的漏洞和方法)

2.  DDoS 攻击

(1)网络访问的底层原理

​分布式拒绝服务(DDoS)攻击,俗称“群殴”

我们先来了解以下互联网的访问方式。

客户端通过网路线路向服务器发出请求,服务器收到后,按照客户端的需求进行处理,然后再沿着线路回复给客户端。(这很像写信,其中写信用的是邮递系统,而网络传输用的是以TCP\IP为核心的通信系统)

TCP\IP的参考模型是一个四层系统,分为

应用层:规定了一些数据内容的协议规则,比如http协议

传输层:含有TCP协议和UDP协议,他会直接把信息发出去,不管服务器有没有收到(不可靠不可靠),那接着来说TCP协议,为了保证通信的可靠性,需要先经过三次握手再发起数据传输。

第一次握手:建立连接时,客户端发送SYN包((SYN=i)到服务器,并进入SYN-SEND状态,等待服务器确认。

第二次握手:服务器收到SYN包,必多须确认客户的SYN(ACK=i+1 ),同时自己也发送一个SYN包((SYN=j)}即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ACK=j+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手,客户端与服务器开始传送数据。

我们可以这样去理解三次握手

客户端:在吗?

服务器:在呢

客户端:那我发了哈!

(我画了张图,可以简单参考一下)

互联网层:规定了收发的地址,采用IP协议。(最为核心)

子网层:传输信息的物理载体,比如以太网、卫星网等等。

那么如果你要写一封信,信的内容就是应用层,写完信后,我们需要给信做上标记,比如特快还是普通还是加急,对方会根据这个标记选择不同的方案,这就类似于传输层,规定了数据的传输方式。而把信装好后,就需要写收件地址和发件地址了,这就是互联网层,那当然,把信邮寄出去,就需要运输,比如陆运空运,这就是子网层。下面我们来简单说一下这四层的一个理解。

应用层:信的内容

传输层:信的标记,比如加急、普通

互联网层:收件人和发件人的地址

子网层:运输路径,比如陆运空运海运等等。

当然,信息打包传输后,到达服务器刚好是相反的拆包过程,而这一整个过程,有着很多可以被攻击的地方,由此出现了很多攻击手段。下面我们把服务器称之为张三,然后我要开始搞他了。

(2)DDOS的攻击方式

①TCP/UDP泛洪

攻击者发送大量数据包以消耗受害者服务器的资源。只要用户开一个TCP或UDP端口提供相关服务,就可以针对该服务进行攻击。在这种攻击中,攻击者发送大量数据包使得受害者内存耗尽。如果有多个攻击者同时发送大量数据包给一个受害者,则该攻击为分布式拒绝服务攻击(DDoS攻击)

个人理解:TCP的三次握手固然是好的,但是由于服务器会先把收到的连接存入连接表(连接表大小有限),所以给了攻击方可乘之机。也就是攻击方不停的找服务器进行握手,占满连接表,让后面的人排不上队。(如果三次握手是发消息确认,那我不停的给张三(服务器)发消息,他就忙的没办法回别人的消息了),但这样的攻击无法伪造IP,因为如果我伪造成李四给张三发信,那他回信的时候就会给到李四,而不是给我,不给我信我就没办法建立第三次握手,所以只能用自己的IP。

当然,如果我伪造李四的地址发信后,张三(服务器)给李四回信,然后开始等李四的最后一封信(第三次握手),但是李四根本不知道怎么回事,也不可能回信,所以张三那边就会不停的等待最后一封信,由于得不到回复,张三还会重新发信进行确认,这个期间,张三是处于忙碌的状态,也就占用了张三的时间,这就是攻击方发起SYN请求而不回复造成的SYN洪水

②SYN泛洪

当主机发送带有伪造发件人地址的TCP / SYN数据包泛洪时,就会发生SYN泛洪。

SYN泛洪是一种专门针对TCP的3次握手过程中两台主机间初始化连接握手进行攻击。攻击方利用虚假源地址向服务器发送TCP连接请求,这些数据包中的每个数据包都像连接请求一样处理,通过发送回TCP / SYN-ACK数据包(确认)并等待来自发件人地址的响应来响应(响应 ACK数据包)。但是,由于发件人地址是伪造的,因此永远不会响应。服务器不会得到确认,服务器一般会重试发送SYN+ACK,并等待一段时间后丢弃这个连接,在等待的时间内服务器处于半连接状态,会消耗调资源。当大量的虚假SYN请求到来,会占用服务器的大量资源从而使得目标主机不能向正常请求提供服务。

个人理解:除了发送虚假的SYN请求,我们还可以考虑借刀杀人,我们找到跟张三同样工作的人,然后给他们发送信件(SYN请求),而IP地址设为张三,这样收到请求的人就会不停的给张三回信(SYN+ACK),导致张三的家门口堵住。

③Land攻击

由黑客组织Rootshell发现的,攻击目标是TCP三次握手。利用一个特别打造的SYN包–它的原地址和目标地址(相同)都被设置成某一个服务器地址进行攻击,然后,这个地址又发回ACK消息并创建一个空连接。这将导致接受服务器向它自己的地址发送SYN+ACK消息,结果这个地址又发回ACK消息并创建一个空连接,每一个这样的连接都将保留直到超时,在Land攻击下,许多UNIX将崩溃,NT变得极其缓慢(大约持续五分钟)。

个人理解:相当于张三跟张三自己在发消息,累死也没什么用,很快就会崩溃。

④HTTP POST攻击

HTTP POST攻击于2009年首次发现,它发送一个完整的合法HTTP POST标头,其中包括一个“Content-Length”字段,用于指定要遵循的消息正文的大小。但是,攻击者然后继续以极慢的速率(例如1字节/ 110秒)发送实际的邮件正文。由于整个消息是正确且完整的,因此目标服务器将尝试遵循标头中的“Content-Length”字段,并等待消息的整个正文被传输,这可能需要很长时间。攻击者会建立数百个甚至数千个此类连接,直到服务器(受害者)上用于传入连接的所有资源都用完为止,因此,在发送所有数据之前,不可能进行任何进一步的(包括合法的)连接。值得注意的是,与许多其他试图通过使服务器的网络或CPU过载来制服服务器的(D)DoS攻击不同,HTTP POST攻击以受害者的逻辑资源为目标,这意味着受害者仍然具有足够的网络带宽和处理能力。HTTP POST攻击很难与合法连接区分开,因此能够绕过某些保护系统。

这种攻击的防御思路是:通过缓存的方式进行,尽量由设备的缓存直接返回结果来保护后端业务。当攻击者穿透缓存时,清洗设备会截获HTTP请求做特殊处理。最简单的方法就是对源IP的HTTP请求频率做统计,高于一定频率的IP地址加入黑名单。

个人理解:比如我有很多钱,我就会找很多人进入一个网站,然后不停的搜索内容或者发起请求,这样就会占据网站的IO以及内部资源,达到攻击的效果。(选网课应该就是请求太多导致网站崩溃的)

⑤ICMP泛洪 & Ping of Death攻击

ICMP(Internet Control Message Protocol)是因特网控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。

在ICMP泛洪攻击中,攻击者将发送大量IP数据包,其源地址被伪造成受害者的地址。默认情况下,网络上的大多数设备将通过发送对源IP地址的答复来对此做出响应。如果网络上接收并响应这些数据包的计算机数量非常多,则受害者的计算机将被流量泛滥。这会使受害计算机过载,甚至可能使其在此类攻击期间无法使用。

我们通常使用的ping命令每次都发送64字节的数据包。但是,可以利用操作系统规定的ICMP数据包最大尺寸不超过64KB这一规定,向主机发Ping of Death攻击。Ping of Death攻击的原理是:如果ICMP数据包的尺寸超过64KB上限时,主机就会出现内存分配错误,导致TCP/IP堆栈崩溃,致使主机死机。

个人理解:如果我想欺负张三,我就会不停的给张三投递信件,写了什么无所谓,重要的是让张三家门口的邮递员排起长队,来占用他的马路资源,让正常的信件收发出现问题。而UDP洪水攻击也是同样的道理。

但被攻击方也不笨,他们找到攻击方的IP地址,然后不再要那个地址的数据了,(理解为张三给邮递公司说不要我的信了),但我很快就想出了方法,那就是伪造IP,我将发件人改为李四,或者是王五,只要我伪造的够多,他就没有办法。

当然如果我还想继续欺负张三,我还可以把发件人改成张三,然后给全国各地的人送信,到时他们回信就会都回复到张三家里,而且他也没办法禁掉对方的IP(毕竟来自全国各地),这就是反射攻击。(有点像把机主的电话号码挂在网站上,然后机主被各种推销人员呼个不停。)

根据上面的方法,我还想到了个一石二鸟的方案,如果我也讨厌王五,那我只需要一直用王五这个伪造的地址给张三写信,张三就会误以为是王五所为,两人反目成仇,而我坐享渔翁之利。

当然,还有一种叫放大攻击,正常我们访问B站,会先把网站发送给DNS服务器,服务器会返还B站的IP地址,进而再让我们进行访问B站的服务器,而这个DNS服务器的返回数据量是我们传输数据量的50倍左右,这样我们可以将自己的IP地址改成张三,然后不同的给DNS服务器发送请求和数据,在50倍的反馈下,张三家迟早崩溃。

⑥IP欺骗DoS 攻击(RST洪水)

TCP连接的建立是通过三次握手完成的,而TCP正常释放连接是通过四次挥手来完成,但是有些情况下TCP无法按照正常的四次挥手来释放连接,如果此时不通过其他的方式来释放TCP连接的话,这个TCP连接将会一直存在,占用系统的部分资源。那么此时就需要使用一种叫做RST的报文(TCP报头的标志字段中的reset位置为1),使得TCP连接直接释放,因此,RST报文又叫做TCP连接异常终止[7]。

攻击者向目的主机发送大量伪造源IP地址(合法用户,已经建立连接)、RST置位的数据包,致使目的主机清空已经建好的连接,从而实现DoS。

个人理解:TCP无法结束时,可以用RST强制结束连接,那如果我正在打游戏,我知道了我对手的IP地址,于是我伪造成他的IP,然后给游戏的服务器发送RST请求,这样就会不断切断对手的网络连接。

⑦针对Web Server的多连接攻击

通过控制大量“肉鸡”同时访问某网站,造成网站无法正常处理请求而瘫痪。

⑧针对Web Server的变种攻击

通过控制大量“肉鸡”同时连接网站,不发送GET请求而是发送乱七八糟的字符,绕过防火墙的检测,造成服务器瘫痪。

3.DoS/DDoS攻击的检测与防御

(1)检测

●出现大量的DNS PTR查询请求

●超出网络正常工作时的极限通讯流量

●特大型的ICMP和UDP数据包

●不属于正常连接通讯的TCP和UDP数据包

●数据段内容只包含文字和数字字符(如:没有空格、标点和控制字符)

(2)防御困难的原因

●定位攻击者不容易,因为Internet上绝大多数网络都不限制源地址,即伪造源地址非常容易,因此很难溯源找到攻击控制端的位置。且各种反射式攻击导致无法定位攻击者。(主要查IP需要依靠互联网厂商,根据路由器传上来的IP,把不属于该路由器路段的IP地址抹去,但是这需要多方合作,不好实现。)

●如果攻击者构造足够大的合法流量到达目标网络,那么流量可能会使目标系统的网络连接被淹没,从而限制其他想要连接到目标系统的合理请求。

(3)防御方法

●进行合理的带宽限制:限制基于协议的带宽。如:端口25只能使用25%的带宽,端口80只能使用50%的带宽。

●运行尽可能少的服务,只允许必要的通信

●及时更新系统并安装系统补丁

●封锁恶意IP地址

●可以把服务器相对静态的资源作为缓存分发给各个CDN节点,让用户在请求信息时从最近的节点返回,虽然CDN的最初目的是为了加速用户的访问,但是也可以用来一定程度上缓解DOS。

●流量清洗设备因为其本身的大数据量,可以很大程度上作为中间设备,帮助服务器缓解各种形式的DDOS攻击。

●增强系统用户的安全意识,避免成为僵尸主机。如果攻击者无法入侵并控制足够数量的僵尸主机,则DDoS就无法进行。

●建立健全DoS/DDoS攻击的应急响应机制。组织机构应该建立相应的计算机应急响应机制,当DoS/DDoS攻击发生时,应迅速确定攻击源,屏蔽攻击地址,丢弃攻击数据包,最大限度地降低损失。

 参考文章:12

相关推荐

  1. 分布式拒绝服务攻击(DDoS)| 防御 | 监测

    2023-12-18 13:40:04       32 阅读
  2. 【架构-10】DDOS(分布式拒绝服务攻击

    2023-12-18 13:40:04       16 阅读
  3. 什么 DDoS 攻击

    2023-12-18 13:40:04       38 阅读
  4. ARP攻击什么

    2023-12-18 13:40:04       19 阅读
  5. 什么 XSS 攻击

    2023-12-18 13:40:04       14 阅读
  6. 拒绝服务攻击(Dos)与Tomcat的解决方法

    2023-12-18 13:40:04       15 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-18 13:40:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-18 13:40:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-18 13:40:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-18 13:40:04       18 阅读

热门阅读

  1. springboot 2.7.0 集成 swagger

    2023-12-18 13:40:04       37 阅读
  2. Python3 数字(Number) ----20231215

    2023-12-18 13:40:04       39 阅读
  3. Powershell summaries with types of scales of summaries

    2023-12-18 13:40:04       43 阅读
  4. Python multiprocessing包的基本使用

    2023-12-18 13:40:04       39 阅读
  5. 设计模式_行为型模式_观察者模式

    2023-12-18 13:40:04       36 阅读
  6. 18.Oracle中的substr()函数字符截取

    2023-12-18 13:40:04       39 阅读
  7. 华为技面三轮面试题

    2023-12-18 13:40:04       41 阅读
  8. ukui-kwin-x11占用cpu 100%

    2023-12-18 13:40:04       33 阅读
  9. vue + element 实现鼠标左右滑动效果

    2023-12-18 13:40:04       36 阅读