2019年曾经深入研究了一个产品的AntiSpam机制,目标是通过机器人程序(以下简称BOT),绕过防御机制,自动进行一些提交动作。他们主要使用一家著名CDN服务厂商的BotManager服务进行防御,另外也有一些自己在数据层面的管控。
当时就感叹这家CDN厂商的BotManager在技术方面的强大,但毕竟话题比较敏感,如今,已经过去三年,就单从技术方面把相关的一些信息整理出来,供大家参考,也欢迎加微信交流(微信号:selfimpr)。
文中一律使用“X-产品”代表目标产品,使用“Y-CDN”代表该CDN厂商,使用“Y-BotManager”代表该CDN厂商的AntiSpam服务。
Y-BotManager的总体架构
要接入使用Y-CDN的BotManager产品,必须使用他们的CDN产品,并在自己的产品内部,嵌入他们的SDK,该SDK对Android、iOS、Web等应用都有支持。
X-App在使用Y-BotManager产品后,全部需要保护的业务请求,都需要从Y-BotManager-SDK获取一个SensorData,并携带这个SensorData通过Y-CDN的节点访问后端服务。Y-CDN的节点收到请求之后,会对携带的SensorData进行分析,确认是否是机器人访问,对于非机器人访问,直接放行到X-Server,对于机器人访问,可以选择路由到假的Server上给出混淆视听的结果,或者直接返回错误。
从业务视角看,这里的可选择路由到假的Server给出混淆视听的结果,是一个很好的思路。因为攻防之间,永远都是一个持续性的过程,混淆视听的事情做的好,一方面可以麻痹攻击者,延缓攻击者的进一步行动,另一方面,明确的错误实际上为攻击者提供了额外的信息,给出看起来正常但实际无效的数据,会很大程度增加攻击者迭代的成本。
不过,Y-BotManager的核心,还是在SensorData本身。
对SensorData生成过程的逆向分析
与Y-BotManager对抗的第一个工作,就是对SensorData生成过程的逆向分析。
逆向分析的工作分两个步骤:1)反编译;2)分析。
反编译主要依赖工具,但还是需要做一些额外的工作。因