【黑产攻防道03】利用JS参数更新检测黑产的协议破解

news2024/12/16 21:07:54

任何业务在运营一段时间之后都会面临黑产大量的破解。验证码和各种爬虫的关系就像猫和老鼠一样, 会永远持续地进行博弈。极验根据十一年和黑产博弈对抗的经验,将黑产的破解方式分为三类:

1.通过识别出验证码图片答案实现批量破解验证,即图片答案识别;

2.在了解通讯流程之后直接携带相关参数发请求进行交互,即协议破解;

3.使用各种客户端模拟器来模拟真人通过验证,即模拟器破解。

针对以上三种破解方式,极验一一总结了对应的验证码攻防点:图片答案博弈协议破解检测环境检测,用于保护极验客户相关场景和接口的安全。

前两期,我们已经分别从图片资源遍历、图片答案识别介绍了与黑产的第一大攻防点:图片答案博弈。

本期,我们继续来介绍与黑产的第二大攻防点:协议破解对抗。协议破解是黑产最常用的破解方式,我们先来聊聊如何检测协议破解。

一、道场

什么是协议破解

为了通过验证进而达到刷量的目的,所有黑产的爬虫都会去模拟真人的请求特点,通过伪造相应的请求及参数直接访问通信接口。这种攻击方式被我们称为协议破解。

为了更好地理解协议破解,我们来举个例子:在2023年6月的五月天演唱会异常订单事件中,就涉及了类似的伪造参数问题。

在五月天武汉、沈阳两场激情的抢票大战结束后,某票务平台F为了维护抢票的公平性,杜绝第三方代拍、第三方抢票及抓包软件和未使用官方APP/小程序下单等违规脚本行为,事后共对455笔异常订单(共计754张票)进行了退票退款,因此引发了众多歌迷的不满。

对于“无辜”被退票歌迷的投诉,该平台做出的回应是:通过官方APP/小程序正常下单,应包含如下完整的订单流参数,而异常订单缺乏部分核心参数。

简单来说,就是该票务平台提前在请求参数里设置了一个非必填的钓鱼参数,通过官方APP/小程序正常下单的请求都会自动携带上这个参数。而脚本抓包工具虽然会模拟正常请求,看似与正常请求无异,但会因为非必填而略过这个核心参数。

如上图所示,未正常使用官方APP/小程序的异常订单缺失了“119533”这个无实义的钓鱼参数。这就是该票务平台检测脚本破解的方法。

当黑产模拟真人请求时,只要我们设置一个新的钓鱼参数,那么黑产原来固定的脚本就会因为缺失这个新的参数而“露出马脚”。虽然缺失核心参数的黑产仍然能正常通过校验(同理于脚本运行的异常订单仍然能提交成功并付款),但我们已能很直观地将黑产账号与正常账号做出区分,从而实时掌握黑产行踪进行后续处置(同理于平台强制退票退款)。因此,新增参数来标记异常账号的方法能大大减少隐藏的黑产协议破解带来的损失,实现从防御到反制的诱捕打击。

二、攻击方视角(黑产)

站在攻击方视角,黑产具体是如何破解协议、伪造参数的呢?

攻击流程

验证码的所有请求都是HTTP请求。HTTP(Hypertext Transfer Protocol,超文本传输协议)是一个简单的请求-响应协议,用于客户端和服务器端的通信。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。

而所有的爬虫都会模拟真人的协议,它是我们的影子,会去模拟我们真人所有的请求特点。黑产想要破解前后端通讯,通常是通过伪造HTTP协议请求的参数。

黑产具体的破解协议、伪造参数的流程如下:

Step 1: 浏览器F12打开开发者工具面板,进行网络抓包。

Step 2: 进入目标页面,观察网络请求列表,找到关键请求。(关键请求会因不同的业务而不同,要具体分析)

Step 3: 打开关键请求详情,观察请求协议,分析请求参数。

  1.主动输入的参数,例如 账号密码、邮箱、手机号、答案 等等。

  2.语义清晰的参数,例如 时间戳、客户端类型、业务id、业务流水号 等等,通常多次请求不发生变化,或是可以从前置请求中提取。

  3.请求头参数,例如 Referer、Ua、Cookies 等等。

  4.签名、加密参数。

Step 4: 逆向参数生成逻辑。

协议破解的关键就是最后一类 签名、加密参数。这类参数的生成伴随着单向散列、加密等逻辑,再配合上客户端代码混淆,参数生成逻辑会藏得较深,需要配合 断点、调用栈 进行调试分析。

Step 5: 脚本伪装客户端逻辑。

使用代码将 IP代理、参数伪造、HTTP请求 等逻辑固定下来形成脚本。脱离客户端,略过页面渲染和交互过程,使效率最大化。

牟利方式

站在黑产的视角,为什么协议破解是他们最常用的破解手段?

前面我们提到,图片答案识别需要经历批量爬取下载图库、人工打码、穷举识别/训练模型等一系列流程来获取验证答案,这需要黑产在前期投入很大的时间和精力成本。黑产下载一批30万张的验证图库需耗时8.33小时;而人工打码获取答案又需要花费数千元成本,耗时8~10天,效率相对较低。

而后面要讲的模拟器破解还受环境条件的限制,需要黑产对浏览器十分了解进而用各种自动化测试工具,例如 Selenium 操作 chromium 内核实现自动化的拖动、点击等操作,攻击流程更复杂,技术门槛更高。

相比之下,协议破解最大的优点就是成本低、效率高。黑产无需花费很多资金成本,只需要进入目标页面,模拟最核心的关键参数,就能实现对验证码的破解,整个过程的执行效率更高。当脚本写好固定下来后,就能以每次几百到上万元不等的价格出售给需要的人,在短时间内赚取巨额的利润,收益远远高于成本。因此,绝大部分黑产在攻击时都会选择协议破解。

当然,协议破解在效率高的同时也存在一个不可避免的缺点:伪造参数困难。协议破解需要黑产对验证码的前端源码进行解析,从而实现对前端发送的参数的伪造,因此也需要一定的技术门槛。

三、被攻方视角(客户)

站在客户视角,如果遭遇了协议破解攻击,数据又会发生哪些异常变化?

协议破解对客户的影响

某资讯行业客户G,在信息查询场景长期遭受爬虫攻击爬取信息。2023年8月22日,G公司后台的查询量级突然急剧上升,验证请求量大大上升,达到每小时7000左右交互。该时段内的存在大批次的异常数据攻击情况,给客户业务造成了巨大损失。

并且,从ip维度上分析,0点至9点时段的4万多次交互中,单个ip访问次数最大达到了28次,说明爬虫已经控制ip访问频率!这将给客户业务造成更大的威胁。

CT命中量:定位协议破解

遭到爬虫攻击后,G公司第一时间找到了极验寻求帮助。极验安全专家查看后台数据后发现:验证请求量、验证交互量和验证防御量都很高,说明黑产在验证失败后频繁请求验证进行重试,或者重新搜集验证资源信息进行打码攻击。单从这几个验证量来看,与之前图片答案识别攻击的数据并没有太大区别,无法准确辨别黑产的攻击方式。

遭遇图片答案识别攻击的后台数据

遭遇协议破解的后台数据

从这几个验证量辨别不出与图片答案识别攻击的明显区别后,极验安全专家单独打开了紫色的CT(captcha token)命中量,这是极验特有的“异常标记”功能,专门用于定位黑产的协议破解。其原理主要是针对前端 js 变化以及变换参数,检测出是否存在黑产破解了前端协议。

如果CT命中量很高,则说明黑产正在进行协议破解攻击,命中了我们的前端“异常标记”。

单独查看CT命中量,定位协议破解

发现CT命中量高达2万后,极验安全专家于8月23日11点开始打开对协议破解请求的封禁拦截,成功量开始下降,失败量和交互量开始上升,说明黑产此时确实正在进行协议破解。

在这期间,爬虫不断的组织逆向破解,拦截效果持续到9月5日,同日验证通过量和验证交互量不断上升,说明此时爬虫已针对该版本验证协议完成了破解。

四、防守方视角(极验)

前面我们了解到,既然黑产协议破解的原理是模拟真人请求、伪造真人协议,那么防守方如何从中进行防御?关键就在于:区分出这些伪造的危险请求。

防御思路

如何区分出伪装成正常用户的黑产?虽然黑产已经从行为、设备、IP等维度上模拟了真人,看上去拥有了真实身份,但有一点最明显的区别:黑产的出发点永远是获取利益最大化,因此会将流程自动化,把破解复用了的协议固化成一套自动化脚本。若脚本没有出现问题或没人反馈异常,就不会花成本更新。

因此,我们可以利用这一点去设计陷阱:黑产为了通过验证会模拟真人请求,那么我们只需要在请求中新增一个钓鱼参数。由于黑产破解协议后的脚本是已经固化好的,不会携带这个新的钓鱼参数,因此会缺失参数而暴露身份。 这一原理与本文开头提到的票务平台检测异常订单十分相似,脚本抓包工具发出的请求往往会缺失核心的钓鱼参数。

防御策略

针对黑产的协议破解,极验的应对策略就是基于已有的请求参数,在前端再加一个新的钓鱼参数。如果是来自于正常浏览器的用户,将会在更新后自动携带上这个新的参数;而已经破解了协议的黑产则会沿用原先固化的协议,不会携带新的参数。这能很有效地检测出黑产:如果请求中未携带新增的参数,只携带了旧的参数,那么就极有可能是之前破解了我们协议的黑产。

这一新增参数、区分黑产的过程就是我们协议破解检测中的“异常标记”功能,通过参数的变化比对,让我们得以区分异常的黑产。并且,被检测出来的黑产仍然能正常通过验证,但我们已能很直观地将黑产账号与正常账号做出区分,从而暗中实时地观察黑产行踪。

“异常标记”功能实现起来也非常简单:

Step 1:在极验后台轻轻一点,即可配置好新的参数(示例版本为v1.7.4-c6515a)。后台一般会提前储备50个左右的新参数,以便被破解后随时动态更新。

Step 2:在v1.7.4-c6515a版本下,正常通过客户端发出请求的用户会自动携带上"9pI3": "7k9E"这个新配置的参数。

而脚本发起的黑产请求则会缺失"9pI3": "7k9E" 这个新配置的参数,只携带上一批的旧参数,从而与正常请求不同。

破解永远是难以避免的。黑产一定会破解我们前端的协议,会不断变换IP,设备,修改行为参数,原因就在于前端代码已被透露公开,无论是我们还是任何其他竞品,包括谷歌的 recaptcha 都是如此,大家都会不可避免地遭到破解。

被动的防御永远会落后于黑产,“兵来将挡水来土掩”的方式反而使得防御方疲惫不堪,运营压力庞大。因此,我们必须跳出黑产模仿真人的各种数据参数维度,主动区分出黑产。

问题解决

目前,极验第四代验证码中的“异常标记”功能(captcha token,CT)能够通过前端 js 变化以及变换参数,检测出是否存在黑产破解了前端协议,是否需要重新调整验证的交互协议。只要是协议破解,必然会被极验的下一次更新所识别。

针对G客户遭遇的爬虫问题,极验通过协议破解检测以及参数动态更新,在爬虫逆向破解完成此前版本的验证协议后,于9月12日9点半开始更新新的验证协议,可以看到更新前后协议破解命中的变化。

此后,协议破解检测命中持续生效,即使爬虫再次破解,也可以随时更新参数来完成破解检测,客户的数据最终恢复了正常。

技术突破

除了帮助G客户解决爬虫问题以外,我们还将参数动态更新做成了一个相应的后台工具,能够帮助各类客户一出现问题,就能快速地响应解决。客户在日常运营中了解到的极验技术可能仅仅只是冰山一角,而我们在验证码背后真正的开发实力才是水面下更夯实的冰山。

在整个协议破解识别的过程中,极验做到了以下技术突破:

1)JS混淆

通过混淆js代码从而具有自我防御能力,将JavaScript代码转换为使用自动分析攻击、防止逆向工程的形式。

2)参数加密

前端参数进行了SHA256等复杂加密算法的加密,对轨迹和答案位置都进行了加密,根本无法对参数进行阅读,也无法知晓参数中传值的意义,不能通过参数的伪造进行破解。

3)参数混淆

极验还在前端参数中增加了部分混淆参数。有部分数据是真实采集的数据,有部分数据是蜜罐参数,破解者无法区分哪些是必须的参数,哪些是蜜罐参数。

4)协议更新

极验每日不定时更新协议,全网一键更新、秒级别生效。协议更新瞬间迅速标记黑产脚本请求,收集大量黑样本数据。

五、结语

数据信息永远具有滞后性。多数厂商区分黑产仍然是通过已有的数据库/黑白名单来识别出有问题的账户,但数据库往往都是过往的数据,对于最新的黑产,或者黑产更换设备、账号、IP后,便不能立即识别出来,所以依赖安全数据库并不能识别出全部的黑产,验证厂商长期以来都难以解决黑产账号漏封的问题。

而现在,通过协议破解检测,极验在行业内首次做到了对漏封的黑产也进行精准的识别处理。2022年,极验的CT“异常标记”功能正式上线,能通过前端参数的动态变化标记出黑产请求,为下一步的封禁处置提供有效的依据。截至目前,极验的CT“异常标记”功能已为服务客户标记出了810.74亿个黑产请求。

还是那句话,任何业务在运营一段时间之后都会面临黑产大量的破解,因为无论是环境还是行为,最终传回服务器的形式都是参数,黑产依旧可以通过破解正常校验的请求参数,来伪造真实用户。因此,部署验证码这个防御工具不可能是一劳永逸的。验证码和各种黑产会永远持续地进行博弈。

作为防守的一方,我们如何能在这场博弈中取胜?一是要足够的了解攻击方的技术;二是在知己知彼的基础上,比攻击方储备更多、更高效的防御手段。正如我们前面所提到的种种工具和技术,能帮助客户提供更多的防御方案,在防守时更早地发现,更快地反应。极验秉承着“为世所想,为世所用”的信念,并不避讳谈论破解,而是永远走在黑产前面,为了客户更好的体验去主动地和黑产抗衡。

极验专利墙

下一期,我们将继续介绍协议破解对抗的第二部分:Pow防暴力破解。协议破解追求的是"效率",黑产在协议破解过程中,为了完成大量的验证交互,就必须要完成大量的Pow计算,而Pow的计算的难度把握在极验手中。如果你对下一期也感兴趣,敬请关注我们~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1140310.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

浏览器下载视频插件使用

AIX智能下载器(图片/视频/音乐/文档) - Microsoft Edge Addons软件介绍: AIX智能下载器可高效实现下载管理,网页图片,视频,音频等内容的嗅探和下载,同时扩展集成多个网站的智能脚本,快速提取你想要的内容。…

【zip密码】7-zip分卷压缩方法

想要压缩的文件过大,想要在压缩过程中将文件拆分为几个压缩包并且同时为所有压缩包设置加密应该如何设置? 想要分卷压缩文件并加密一起操作就可以完成了,设置方法如下: 打开7-zip,选中需要压缩的文件,选择…

基于Java的财务管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding) 代码参考数据库参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

毕业论文Word文档中排版各种问题(持续更新中)

目录 封面信息信息对齐 快捷键使用公式公式编号并右对齐 表格续表并自动添加表头和标题 参考文献添加参考文献一篇文献交叉引用多篇文献交叉引用 参考文章链接 这个是在目前正在写论文过程中遇到一些问题,然后边解决边记录的,有些混乱,主要是…

【开源】基于SpringBoot的森林火灾预警系统的设计和实现

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 系统基础模块2.3 烟雾传感器模块2.4 温度传感器模块2.5 历史记录模块2.6 园区数据模块 三、系统设计3.1 用例设计3.1.1 森林园区基础系统用例设计3.1.2 森林预警数据用例设计 3.2 数据库设计3.2.1 烟雾…

性能测试工具——Jmeter的安装【超详细】

目录 1、性能测试工具:JMeter和LoadRunner对比 2、为什么学习JMeter? 3、JMeter环境搭建 3.1、安装JDK 3.2、下载安装JMeter 3.3、配置环境变量 2.4、启动验证JMeter是否安装成功 4、认识JMeter的目录结构 1)bin目录:存放…

接口自动化测试工具,Postman使用详解

一、概念 1、Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件,Postman分为Postman native app和Postman Chrome app两个版本。目前Chrome app已经停止维护,官方也不推荐使用该版本。 2、官网下载地址:http://www.getpostman…

便利连锁:如何增加收益?教你一招轻松搞定!

自动售货机,作为零售行业的一项颠覆性技术,正逐渐改变着我们的购物方式和商业格局。这一创新技术不仅重新定义了零售业务模式,还为企业提供了更多的机会来满足不断演变的消费者需求。 客户案例 便利连锁店 成都某便利连锁店面临一系列挑战&am…

input 输入中文,高频触发 onchange和oninput事件(CompositionEvent API解决)

问题描述: input onchange和oninput 事件输入中文时高频触发。 输入字母,数字,符号都没问题: 输入中文时问题就出来了: 每个拼音字母都触发了change,甚至输入法里的nin’hao 把拼音分开的字符也会触发。…

git clone 遇到了 early EOF index-pack failed 问题

问题 由于仓库包含了很多文件,仓库过大,导致clone的时候一直报错: 解决方案 注意:过程中需要耐心等待,如果遇到失败,可以多尝试几遍。 压缩目标仓库文件 compression 是压缩的意思,从 clo…

javaweb请求

1.给类加上RestController表示该类是请求处理类 2.判断类里面的hello()方法处理哪个请求,需在方法上加上注解RequestMapping("/hello"),表示浏览器请求localhost:8080/hello这个地址时,会调用此方法,

使用boost.mysql来操作mysql 数据库

准备条件 1. visual studio 2019 2. boost库 3. 安装本地的mysql 服务器,boost.mysql对mysql有版本要求最好8.0,具体参考官方文档 安装 使用Nuget安装boost 要安装 openssl,否则的话编译其他项目会产生依赖ssl的错误 安装mysql 省略 …

“数聚瑞安·创新未来”中国·瑞安第四届创新创业大赛圆满举办!

10月26日,“数聚瑞安 创新未来”中国瑞安第四届创新创业大赛决赛在瑞安东新科创园举行。本次大赛旨在挖掘优质的创新创业项目激活本地创新创业氛围,激发创新创业活力,数字科创赛道吸引了来自全国20多个省市自治区的50多个城市的100多家企业和…

IP地址与代理ip在网络安全中的关键作用

目录 前言 一、IP地址在网络安全中的作用 1、网络流量监视和分析 2、网络安全事件响应 3、网络安全检测和防御 二、代理IP在网络安全中的作用 1、流量过滤和清洗 2、匿名访问和保护隐私 3、实现全球化业务 三、IP地址和代理IP在网络安全中的应用案例 1、DDoS攻击 2…

U盘RAW格式无法格式化怎么办?

我们在使用U盘时候,有时会碰到U盘RAW格式无法格式化的情况。当U盘变为RAW格式时,无论是双击还右键选择打开U盘,Windows系统都会提示无法完成格式化。那遇到RAW格式U盘无法格式化怎么办? 什么是RAW格式? 在开始格式化之…

学编程如何提高自己的编程能力

以下是一些建议,帮助你提高编程能力: 掌握基础知识。了解编程语言的基本语法、数据类型、控制结构等基础知识,是提高编程能力的基础。多写代码。编程需要实践,多写代码才能提高编程能力。可以从简单的练习项目开始,逐…

SpringCloudAlibaba实战-nacos集群部署

写在前面:在学习阶段,我们想快速学习SpringCloudAlibaba功能,但总是花费大量时间跟着视频或博客做组件配置。由于版本的更迭,我们学习时的组件版本很可能和作者的不一致,又或者是各自环境不一,只能一坑又一…

C++前缀和算法的应用:统计得分小于K的子数组数目

本文涉及的基础知识点 C算法:前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 题目 一个数组的分数定义为数组之和 乘以 数组的长度。 比方说,[1, 2, 3, 4, 5] 的分数为 (1 2 3 4 5) * 5 75 。 给你一个正整数数组 nums 和一个整…

【C】关于动态内存的试题及解析

目录 第1题: 第2题: 第3题: 第4题: 第5题: 在学习了关于动态开辟内存的相关知识后,下面是一些涉及到动态开辟内存程序的试题及解析(试题部分来自《高质量的C/C编程》、笔试题)。 第1…

2023年【上海市安全员A证】报名考试及上海市安全员A证试题及解析

题库来源:安全生产模拟考试一点通公众号小程序 上海市安全员A证报名考试是安全生产模拟考试一点通总题库中生成的一套上海市安全员A证试题及解析,安全生产模拟考试一点通上上海市安全员A证作业手机同步练习。2023年【上海市安全员A证】报名考试及上海市…