了解第 7 层 DoS

信息安全 ddos 拒绝服务
2021-08-18 02:22:03

我最近读到了这篇文章,讲述了一个孤独的黑客(小丑)如何在第 7 层而不是第 4 层进行 DoS 攻击。其中还提到了他能够成功地使用 3G 对网站进行 DoS启用手机作为他的攻击平台。

我很好奇这实际上是如何完成的。一个简单的 HTML 脚本能造成这么大的影响吗?特别是考虑到这篇文章似乎暗示他能够拒绝服务而不必分发攻击。

例如,我很欣赏这只是一个非常基本的元素,在页面上找到一个大元素并不断请求大量它:

<html>
<meta http-equiv="refresh" content="1" />
<img src="https://i.stack.imgur.com/jSusZ.png" width="5" height="5"/>
<img src="https://i.stack.imgur.com/jSusZ.png" width="5" height="5"/>
<img src="https://i.stack.imgur.com/jSusZ.png" width="5" height="5"/>
<img src="https://i.stack.imgur.com/jSusZ.png" width="5" height="5"/>
<img src="https://i.stack.imgur.com/jSusZ.png" width="5" height="5"/>
<img src="https://i.stack.imgur.com/jSusZ.png" width="5" height="5"/>

(x100)

</meta>
</html>

这是一个适用于第 7 层 DoS 的可行但非常基本的 AV 吗?

2个回答

这是一种完美且可行的 DOS 攻击形式。

在您的示例中,我将构建这样的攻击,例如,我XSS向我的目标页面注入了一个非常受欢迎的在线页面,其中包含大量隐藏流量,它最终可能会 DOS 目标页面导致斜线效果的变化。这是第 7 层 DOS 攻击的一种形式。

第 7 层 DOS 攻击的例子非常多。这基本上意味着您正在利用应用程序逻辑中的缺陷,这些缺陷可能包括将应用程序粘在 CPU 密集型循环中、使应用程序消耗所有本地资源或只是让第 7 层消耗所有带宽。

第 7 层 DOS 的另一个示例可能是,如果我使用您的用户名并尝试使用错误的密码多次登录某个应用程序,从而实质上使您的帐户被阻止,从而阻止您登录。

第 4 层 DOS 可能是 TCP 洪水攻击,您将一堆 TCP SYN 数据包发送到主机,使主机保持半开连接,可能会消耗操作系统可用的所有资源。

编辑:第 7 层 DOS 的一个很好的例子是 Slowloris。关于其工作原理的报价如下:

Slowloris 通过发送部分 HTTP 请求来保持连接打开。它继续定期发送后续标头以防止套接字关闭。通过这种方式,可以快速绑定网络服务器。特别是,具有线程的服务器往往容易受到攻击,因为它们试图限制它们允许的线程数量。

DoS 通常与资源耗尽有关。您可以耗尽许多不同的资源,但从外部最容易确定的资源之一是并发请求,因为当您达到限制时,您会突然收到 HTTP 503 响应。

例如,如果你能找到一个加载时间很慢的页面,比如 10 秒,你只需要每秒发出 11 个请求就可以用完所有可用的连接。发出请求后,您甚至不需要维护连接,因为应用程序仍然会在发现您不再存在之前完成所有工作以生成页面。它甚至会浪费时间等待 TCP 连接超时。

放入%一个写得不好的搜索函数可能会导致这种情况,因为%MySQL 通配符会导致搜索返回数据库中的每一行。

这种情况的一个变体是 Slow-Loris 攻击,在这种攻击中,您发出一个简单的请求,但将接收响应的速度限制为每秒字节数。要在此处实现 DoS,您只需要保持比站点允许的更多的活动连接。

根据模糊的记忆,默认的 Apache MaxChildren 设置大约是 50,这可能可以通过手机实现。

第三种变体与对单一、独特资源的控制有关。这方面的示例是同时读取和写入时的 MyISAM 表和 PHP 会话文件。对于锁定资源的单个慢速请求,所有需要相同资源的后续请求将简单地等待直到慢速请求完成。

如果对论坛进行交替读写请求或发出登录请求(需要 PHP 会话文件),您可能会在其中限制接收响应的速度,这可能是一个例子。具有相同会话 ID 的所有请求甚至在该请求完成之前都不会启动,但在等待时仍会占用 Apache 子节点。

一些 Web 服务软件(例如 nginx 和 Node.js)旨在处理大量同时请求,但仍然容易受到其他耗尽技术的影响,例如锁定特定会话文件以阻止该用户和最大数据库连接。

您还可以针对 CPU、内存、磁盘空间、磁盘利用率、打开的文件、内部网络带宽、打开的网络连接(如果我们只是谈论第 7 层,则应用程序创建的,而不是您创建的直接连接),您可以将这些中的任何一个定位到您的请求涉及的任何服务器上,例如数据库或 SAN 或搜索服务器等。