给恶意爬虫和脚本带来困难

信息安全 网络服务器 漏洞扫描器 网络服务 蜜罐
2021-08-13 23:03:44

我的网络服务器已经运行了不到 25 小时,并且已经爬取了各种默认页面,仅举一个例子/administrator/index.php

我知道这很常见,对我来说并不是真正的问题,因为我以一种体面的方式保护了服务器。

对于以下想法,假设我不关心由此产生的流量。

如果我要创建一些请求最多的文件,通常代表管理员界面或常见网站的其他攻击媒介,该怎么办?

该文件(例如/administrator/index.php)可能如下所示:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>/administrator/index.php</title>
  </head>

  <body>
    content ^1
  </body>
</html> 

但是对于实际的正文内容,我只是用随机字符串撞了几个 GB。

例如dd if=/dev/urandom bs=10M count=400 | base64 > /tmp/content,然后将上面的 HTML 标记包裹在文件周围。

典型的爬虫会在这样的事件中做什么?

4个回答

你在伤害自己。

“攻击者”/爬虫……可能不会为他们的流量或处理能力买单(即他们使用僵尸网络、被劫持的服务器,或者至少在一个不会让他们为流量买单的连接上),但是你将按流量和 CPU/存储/内存计费,或者您的服务器的托管商有“公平使用”条款,根据该条款,如果您在短期内提供千兆字节的数据,或者您的存储带宽,您的服务器的连接将被限制或切断将减少,或者您的 CPU 使用率受到限制。

另外,当他们只是在寻找一个特定的页面时,为什么有人会如此愚蠢地下载千兆字节的数据呢?要么,他们只是在寻找该页面的存在,在这种情况下页面的大小无关紧要,或者他们肯定会同时设置超时和最大大小——如果你等待服务器完成响应,则无需等待几秒钟有数百台其他服务器要扫描,尤其是当灰名单是一种众所周知的减缓攻击者的技术时。

考虑到为 HTTP 404 页面以外的任何内容提供服务/administrator/index.php可能会使您的服务器出现在潜在目标列表中,这意味着将来会进行更多扫描。由于为此类列表付费的黑客不需要自己扫描数百万个 IP,因此他们可以通过比检查默认管理页面更复杂的攻击来专注于您。

除非你的服务器是为了吸引恶意活动而设置的,否则看起来像一个潜在的受害者对你没有好处。

如前所述,这可能不值得,但这是一个非常有趣的话题。在 DEF CON 21 上有一个关于该主题的非常好的演讲,名为“为脚本小子和扫描仪猴子制造问题”,您可以在这里找到:https ://www.youtube.com/watch?v=I3pNLB3Cq24

提出了几个想法,其中一些非常简单有效,例如发送某些随机 HTTP 响应代码,这不会影响最终用户,但会显着减慢扫描程序的速度。演讲值得一看:)

编辑:这是给那些没有时间观看的人的简短摘要:浏览器以相同的方式解释许多 HTTP 响应,独立于它们的响应代码。这当然不是所有响应代码(如 302 重定向)的情况,但例如,如果您的浏览器收到 404“未找到”代码,如果它是 200“正常”代码,它将以相同的方式呈现页面。但是扫描仪/爬虫是不同的。它们主要取决于返回的响应代码。例如,如果他们收到 404 响应代码,他们会断定该文件不存在,但如果他们收到 200 响应代码,他们就会断定该文件存在并将对其进行一些处理(扫描它,将其报告给用户, 或者是其他东西)。

但是,如果您将 Web 服务器设置为仅发送 200 个代码(即使资源不存在)怎么办?普通用户可能不会注意到它,但扫描程序会感到困惑,因为他们尝试访问的所有资源(例如通过暴力破解)都将被报告为存在。或者如果你只返回 404 响应呢?大多数扫描程序会认为他们试图访问的资源都不可用。

演讲解决了这个问题并测试了各种响应代码和各种扫描仪,其中大多数人很容易被这种方式混淆。

Edit2:我刚刚得到的另一个想法。与其像您对那些您认为是扫描程序的人所说的那样发送 10Gb 的数据,为什么不只发送一个带有值为 10000000000 的 Content-Length 标头的 HTTP 响应,而是在 HTTP 响应正文中仅添加几个字节的数据呢?大多数客户端将等待其余的响应,直到连接超时。这将大大减慢扫描仪的速度。但同样,这可能不值得,你必须确保只对那些你检测为扫描仪的人这样做。

忘记千兆字节。使用几分钟或几小时的延迟。许多 Web 服务器都有引入人为延迟的模块(也称为tarpits)。它占用了您服务器上的一个线程/进程,但它可以让 Internet 上的其他一些服务器在此期间被探测到。当然,其他机器人和该机器人的其他线程继续工作,因此烦恼很小。