首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止僵尸网络滥用注册API

防止僵尸网络滥用注册API
EN

Security用户
提问于 2022-09-16 09:45:58
回答 1查看 135关注 0票数 1

我正在工作的电子商务网站,其中利用移动OTP认证为新的注册。通过使用攻击速率限制和防火墙来保护我们的API和页面,我们对机器人和恶意参与者有相当程度的保护。

最近,我们面临一个挑战,在这个挑战中,恶意行为者:

  1. 是在每次请求之间间隔约1-2分钟内对我们的注册API进行5次点击。
  2. 然后他改变他的IP并重复步骤1。
  3. 每次注册的手机号码都属于不同的国家,手机号码似乎也是有效的,因为短信在这些号码上被传送。
  4. 一旦他点击注册API,包含OTP的SMS就会发送到注册时给出的移动电话号码。每个短信发送成本取决于不同的国家,和这次攻击,这一成本可以很容易地去任何地方超过4000美元。

现在,我们的观察是:

  1. 我们有一个检查,如果注册请求来自单个IP超过5次,那么我们将该IP阻塞一定的时间间隔,因此他在每5次请求后更改他的IP。
  2. 他的间隔是1-2分钟,而且在每一次连续的请求中,他都会更多地要求把它置于限速器的雷达范围内。
  3. 他正在利用来自世界各地的is,因此我们不能阻止来自某个国家或子网的请求。
  4. 他使用的是Chrome浏览器的主流用户代理,因此也不能因此而阻止。使用最新的镀铬版本。
  5. 我们需要CSRF令牌与此请求,他正在为每个请求生成一个新的CSRF令牌,不能阻止/速率限制以及。
  6. 我们不能添加一个captcha,因为它是我们真正的用户的一个障碍,而业务团队也不会这么做。

我们计划如何解决这一问题:

  1. 如果有人点击注册API并在3-4请求中更改移动电话号码,则阻止该IP或显示captcha。在这种方法的问题是,仍然3-4短信将触发,目前我们仍然阻塞IP后,5个请求。它不会增加多少价值。
  2. 如果我们从平均水平上看到某个国家的注册人数较高,那么为在该国家代码下发生的所有注册显示一个captcha。这里的问题是,恶意用户在检测captcha时可以将他的移动号码更改到另一个国家。

这是我们唯一想出的两个解决方案。我希望找到更好的解决办法来解决这个安全问题。

EN

回答 1

Security用户

发布于 2022-09-16 13:32:07

注册页面需要Javascript吗?如果没有,那么像Curl这样的工具就足以执行这种攻击。如果您需要Javascript,那么攻击者将需要使用Selenium或Chrome/Puppet,这会使攻击稍微繁琐一些,但不会太多。不过,这不足以阻止有动机的攻击者。你也可以加入一个CSRF令牌,但这也只会阻止完整的脚本孩子。

但是让我们假设攻击者目前使用的是最基本的方法,他们可能是在欺骗用户代理,但是请求中可能缺少通常的标头,这可能是自动化进程的一个告示。用户代理是非常主流的(Chrome),但是版本号可能已经过时了。仔细看看你的日志。

尝试捕获一些HTTP流量(例如在服务器上使用tcpdump,然后用Wireshark对其进行分析),以确定请求的确切内容。可能在包中有一种模式可以用来构建指纹。至少,确保注册不是太容易实现与一个机器人。

Cloudflare在探测机器人方面也做得很好,但是这会触发可怕的captcha,这是您想要避免的。然而,也许您应该考虑将您的问题外包给诸如Cloudflare这样的提供商。

有一些比可以做的更多的筛查:

  • 确定IP地址的原产国(免费数据库),对于某些国家,您可能希望根据您以前的经验仔细检查注册。如果数据库中还有可疑的注册,一些SQL和Group也可以显示一些模式。您可能会看到一些区号或电话号码前缀重复出现。
  • 如果IP地址国家与电话号码国家不匹配,则是另一个危险标志。在这种情况下,您可能需要显示captcha。

我想你也需要电子邮件验证。在您继续发送SMS令牌之前,先执行电子邮件验证.关键是延迟发送短信,因为它需要钱。如果电子邮件没有得到验证,就没有必要继续前进了.

票数 2
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/264845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档