HTTP 停滞型 DoS 攻击利用的是 Web 服务器无法判断远程客户端仅仅是连接在慢速链路上,还是故意以非常慢的速度发送数据,以避免 Web 服务器因超时而关闭连接以保留本地系统资源。攻击者通常表现出的行为是打开大量连接,并缓慢地吐出数据,以防止 Web 服务器将连接超时。如果 Web 服务器使用的工作进程池较小,这种资源耗尽很容易达到。
许多现代 Web 服务器已经对这些类型的资源耗尽攻击有了更强的防御能力,但关注这些攻击仍然很重要,而且很有可能在生产网络中仍然存在大量易受攻击的 Web 服务器。Web 服务器也可能对某一种形式的攻击具有抵抗力,却仍然容易受到另一种形式的攻击。例如,Web 服务器可能对 POST 请求体中缓慢发送的数据具有抵抗力,但对单个 HTTP 头或多个 HTTP 头中缓慢发送的数据则存在漏洞。此脚本旨在捕获客户端请求中任何部分数据发送过慢的整体概念,因此应该能够捕获所有这些攻击方式。
最简单的方式是通过 Bro 包管理器进行安装::
bro-pkg refresh
bro-pkg install bro/corelight/http-stalling-detector
此脚本的输出是一对通知:
HTTPStalling::Attacker - 这表示检测到执行 HTTP 停滞攻击的攻击者。
HTTPStalling::Victim - 这表示某个特定主机被一个或多个攻击者作为目标。
通知之所以像这样分成两类,是因为有一些实施此类攻击的软件可以使用代理将攻击者分散到许多源 IP 地址。这样做的顾虑在于,如果某个 IP 地址只发出过一个请求,那么攻击将永远不会被检测到。通过将攻击者和受害者分开,即使存在这种类型的混淆尝试,受害者也会非常清晰地显示出来。
作者:Seth Hall [email protected]