我的网站如何以及为什么被滥用?

信息安全 ip欺骗 僵尸网络 网络爬虫
2021-08-31 04:58:52

我拥有一个受欢迎的网站,允许人们输入电话号码并获取有关该电话号码的信息,例如电话运营商的名称。这是一项免费服务,但每次查询都要花钱,因此我们会在网站上展示广告以帮助支付费用。为了确保人们不会滥用它,我们有一个验证码并使用 IP 地址将查询次数限制为每月 30 次。

但无论如何,我们一直在看到滥用行为;我们会突然收到来自所有不同 IP 地址的大量查询(每分钟数百次),并获得正确的验证码。所以我不断地改变验证码——我已经尝试过使用单词、数学方程式、reCAPTCHA 等的验证码。当我这样做时,它会在 24 小时左右停止“攻击”,然后重新开始。

我知道人们可以使用 OCR 和其他方法绕过验证码,但我不明白为什么它们来自许多不同且不相关的 IP 地址。

也许他们在欺骗 IP 地址?如果是这样,他们就无法从查询中获得结果,对吗?在这种情况下,也许我们的目标是试图在经济上伤害我们,而不是他们只是想要数据?

如果他们没有欺骗 IP 地址,也许他们已经入侵了大量不同的计算机并正在执行来自它们的查询?这对我来说没有意义,因为我们看到的 IP 地址数量庞大(每分钟数百个事务,每个 IP 地址最多有 30 个查询,很长一段时间),而且这些数据确实是不是很值钱。

所以我试图了解他们的动机以及他们是如何做到这一点的,以便能够适当地反击。

4个回答

有趣的问题。我想知道这个问题的解决方案是否可能是强制您的用户的网络浏览器解决一个“难以”解决但对您的网站“容易”验证的加密问题(使用在他们的网络浏览器中运行的 javascript)。“很难”解决,我的意思是使用典型台式机或笔记本电脑的资源需要大约 10 秒才能解决的问题。这个问题类似于比特币矿工在挖掘新区块时解决的问题,但当然规模要简单得多。

您的合法用户不会注意到差异,因为脚本会在他们填写您网站上的表单时消失。但是,这会大大减缓滥用者的速度,并迫使他们分配更多资源,并迫使他们重新使用他们使用的任何工具来自动将这些帖子发布到您的网站。

如何?

租用僵尸网络和验证码农场。

为什么?

有人想要你的数据。偷它比买它便宜。

该怎么办?

偷它更便宜,但不是免费的。进行这些攻击需要“他们”(最终想要数据的人,而不是僵尸网络或验证码农场)花钱。让攻击你的成本高于数据的价值。

  1. 识别模式以识别垃圾邮件发送者。

  2. 将看起来合法但虚假的数据返回给垃圾邮件发送者。

在一定数量的有效响应之后,开始用有效数据散布虚假数据。然后他们必须采取额外的步骤来验证您的数据。这些额外的步骤需要额外的钱。

如果他们不验证它,他们的数据就没那么有用了,即价值更低。他们可能仍然可以使用或出售它,但它的价值较低,因此再次攻击您的成本高于返回的价值。

你做错了验证码。

CAPTCHA 的想法是让计算机很难(读作“几乎不可能)解决它,但对人类来说却很容易。如果你只使用一个静态图像,4例如要求输入,那么计算机4当指示这样做时,将不会有重复进入的麻烦。

相反,请考虑使用reCAPTCHA或类似技术。这些问题已经解决了,不需要重新发明轮子,如下图所示:

[重新发明轮子]

CC-BY-NC 2.5,兰德尔·门罗,xkcd.com/2140/

如果您可以设置一个简单的“在这张图片中输入数字”验证码并使用该棒 24 小时,您就知道您的敌人是业余爱好者。你知道这种涉及定制代码的原始设备会让它们慢 24 小时。这可能很有趣:)

我会广泛使用样式表来隐藏页面代码中的信息:在两种意义上,首先隐藏验证码,其次隐藏信息性答案。目的是虐待性地误导刮板。

我会在服务器端编写一些代码来创建乍看之下可信的虚假答案,但以不易确认的方式是虚假的。此外,使用随机播种或 MD5 来确保相同的输入总是给出相同的虚假答案。

对验证码的误导:

例如,保留您使用的最后一个验证码系统,但使用样式表将其隐藏。跟随一个不同的验证码,被 Javascript 混淆;甚至可能是另一个具有不同密钥的 reCaptcha。

现在,爬虫不会意识到第一个验证码被样式表抑制了。它会愉快地解决验证码并用错误的键返回答案。 明白了然而,就像破解 Enigma 一样,你不能明显表明你已经破解了代码。刮板必须继续相信它在工作

误导回答:

像往常一样给出一个答案,并在其周围放置一个样式表。样式表将这个结果隐藏给普通人;刮刀没有注意到这张纸具有“隐藏”属性。 你在这里给出的答案是假的事后呈现真实结果。对于奖励积分,将结果显示在图形中,使其无法刮擦。当然,尽量掩饰这一点。

如果您有遥测(解决了错误的验证码)这是一个抓取的查询,那么甚至不要费心从您的服务提供商那里购买该查询结果在服务提供商花费的典型时间范围内插入 sleep(t+random),然后发回虚假答案。

看起来很正常

攻击者会认为一切正常,只检查查询是否成功,而不检查结果质量幸运的是,您的攻击者在每次查询时都不会登录,而只是将答案转储到数据库中。攻击者可能需要很长时间才能意识到您已经毒化了数据,到那时,整个数据库将被破坏,不知道哪些条目是有效的,哪些是有毒的(请参阅使假数据看起来合法的重要性?) 即使攻击者对每个条目都加了时间戳,这也是一次多么大的漏洞搜寻啊!必须每天手动检查多个条目才能确定数据何时变坏。

还有一件事情。缓存真实答案,如果僵尸网络查询在缓存中,请始终从缓存中给出正确答案。因此,scraper(故障排除)将使用浏览器访问您的真实网站,并要求测试编号为 213-456-7890。隐藏会起作用,它的行为就像一个真实的查询,所以你将计算真实的答案并返回它。 接下来,爬虫会告诉僵尸网络请求 213-456-7890。看看机器人是否得到不同的结果。您将检测到机器人查询如果你现在给出一个虚假的答案,scraper 就会知道 jig 已经启动了,并且会迭代破坏你的检测。因此,既然您在缓存中有真正的答案,即使在隐藏的字段中,也要给出它。现在,爬虫很困惑:僵尸网络似乎工作了


为什么以及如何

显然,有人发现您的数据很有价值。他们会从你的源头得到它,但他们不想为此付费,所以他们在刮你。

  • 有可能他们实际上是一个竞争对手的网站,它与您做同样的事情,当他们从访问者那里得到一个查询时,他们会向您生成一个查询。从本质上讲,这是一种使用您的服务但发布他们的广告的计划。你自己知道它的价值。您可以通过在每个竞争对手网站上进行模糊和不同的查询来测试它,并查看哪些查询会在您的日志中弹出。

有无数种方法可以解决 CAPTCHA。在竞争对手网站为他们的客户提取您的数据的示例中,他们可能只是将您的验证码传递给他们的客户。还有一些方法可以诱骗人类为你做 CAPTCHA,例如“解决 CAPTCHA 获得免费色情片”,或者提供因某种原因需要 CAPTCHA 的无关服务,例如匿名公告板。每次有人发帖时,它都会向您发送一个查询并获取其海报来解决您的验证码。验证码也解决了第三世界的奴隶制问题。