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

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

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.rhkb.cn/news/171932.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL-正则表达式和约束

文章目录 主要内容一.正则表达式1.操作1代码如下(示例): 2.操作2代码如下(示例): 3.操作3代码如下(示例): 4.操作4代码如下(示例): 二.约束1.主键约束 2.自增长约束3.非空约束4.唯一…

CSDN学院 < 华为战略方法论进阶课 > 正式上线!

目录 你将收获 适用人群 课程内容 内容目录 CSDN学院 作者简介 你将收获 提升职场技能提升战略规划的能力实现多元化发展综合能力进阶 适用人群 主要适合公司中高层、创业者、产品经理、咨询顾问,以及致力于改变现状的学员。 课程内容 本期课程主要介绍华为…

网络原理的讲解

网络原理 重要性: 网络原理知识 1.工作中非常重要的理论知识,尤其是正在调试一些bug的时候. 2.面试中非常重要的考点. 3.学习中非常关键的难点. 网络原理这里,主要给大家介绍, TCP/IP协议 这里的关键协议. 按照这里的这四层,分别进行介绍(物理层不涉及) 应用层 是和程序猿打…

ubuntu 安装 gnome 安装 xrdp

先安装xrdp 更新 apt-get sudo apt-get update && apt-get upgrade安装图形包 apt-get install xubuntu-desktop安装 xrdp apt-get install xrdp安装 xfce4 apt-get install xfce4配置 xfce4 Add xfce to the xfce desktop window manager autorun by fixing the …

栈、队列、矩阵的总结

栈的应用 括号匹配 表达式求值(中缀,后缀) 中缀转后缀(机算) 中缀机算 后缀机算 总结 特殊矩阵 对称矩阵的压缩存储 三角矩阵 三对角矩阵 稀疏矩阵的压缩存储

如何在vscode中添加less插件

Less (Leaner Style Sheets 的缩写) 是一门向后兼容的 CSS 扩展语言。它对CSS 语言增加了少许方便的扩展,通过less可以编写更少的代码实现更强大的样式。但less不是css,浏览器不能直接识别,即浏览器无法执行less代码&a…

基于springboot实现休闲娱乐代理售票平台系统项目【项目源码+论文说明】

基于springboot实现休闲娱乐代理售票系统演示 摘要 网络的广泛应用给生活带来了十分的便利。所以把休闲娱乐代理售票管理与现在网络相结合,利用java技术建设休闲娱乐代理售票系统,实现休闲娱乐代理售票的信息化。则对于进一步提高休闲娱乐代理售票管理发…

【疑问解决】在自动装箱中Integer赋予一个常量1,为什么会出现==判断true和flase的情况(JDK源码、内部缓冲)

问题来源自讲课时的Integer练习中 当时第一反应是false true true 因为第一段的输出为flase毋庸置疑了,因为已经new了两个新的堆空间,当然指向不同的空间了 但是第二段第三段就没有头绪了,自动装箱了难道不是执行同一个空间吗…

【Linux】安装配置虚拟机及虚拟机操作系统的安装

一. 操作系统和内核 关于操作系统是这样定义的: 操作系统(英语:Operating System,缩写:OS)是管理计算机硬件与软件资源的系统软件,同时也是计算机系统的内核与基石。操作系统需要处理如管理与配…

云计算未来展望:边缘计算、量子计算与AI

文章目录 边缘计算:数据处理的新时代应用领域挑战与机遇 量子计算:超越传统计算的新范式量子比特应用前景挑战与机遇 人工智能:云计算的动力云中的AI应用领域挑战与机遇 结语 🎉欢迎来到云计算技术应用专栏~云计算未来展望&#x…

Xray的简单使用

xray 简介 xray 是一款功能强大的安全评估工具,由多名经验丰富的一线安全从业者呕心打造而成,主要特性有: 检测速度快。发包速度快; 漏洞检测算法效率高。支持范围广。大至 OWASP Top 10 通用漏洞检测,小至各种 CMS 框架 POC,均…

JAVA实现智能停车场管理系统 开源

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容A. 车主端功能B. 停车工作人员功能C. 系统管理员功能1. 停车位模块2. 车辆模块3. 停车记录模块4. IC卡模块5. IC卡挂失模块 三、界面展示3.1 登录注册3.2 车辆模块3.3 停车位模块3.4 停车数据模块3.5 IC卡档案模块3.6 IC卡挂…

SQL server 代理服务启动和查看

设置重启 使用管理员权限登录到运行 SQL Server 代理服务的计算机。 打开 Windows 服务管理器。可以通过按下 Windows 键 R,然后键入 "services.msc" 并按 Enter 来打开服务管理器。 在服务列表中,找到 "SQL Server Agent" 服务&…

GB/T28181流媒体相关协议详解

GB/T28181流媒体相关协议详解 文章目录 GB/T28181流媒体相关协议详解1 GB/T28181协议中使用的应用层协议介绍2 实时视频点播协议交互流程2.1 设备注册2.2 设备保活2.3 视频播放 总结 本文主要主要针对28181协议中视频流的部分,来阐述视频流通过28181协议如何进行视频…

[Python]Selenium-自动化测试

Selenium是一个web自动化测试的工具,在使用之前先在对应的项目添加工具包噢. 本文章主要简单的介绍了selenium对于自动化测试的使用 目录 添加浏览器驱动 get函数来到对应网站 驱动的定位 元素定位 id定位 class name定位 CSS定位 XPath定位 link text定位 定位一…

【Mybatis源码】XMLConfigBuilder构建器 - 读取XML配置初始化Configuration对象

XMLConfigBuilder是Mybatis中定义的进行构建Configuration对象的类,此类用于读取XML配置文件创建并初始化Configuration对象; 上一篇中我们介绍了XMLConfigBuilder构建器加载XML配置文件以及创建Configuration对象https://blog.csdn.net/m1729339749/article/details/133983…

ES6初步了解Map对象(含十种方法)

ES6提供了 Map数据结构。它类似于对象,也是键值对的集合。但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。 创建方法 let m new Map()console.log(m)Map的方法 1.set( ) 添加元素 接收两个参数&#xff0c…

Linux系统编程_网络编程:字节序、socket、serverclient、ftp 云盘

1. 网络编程概述(444.1) TCP/UDP对比 TCP 面向连接(如打电话要先拨号建立连接);UDP 是无连接的,即发送数据之前不需要建立连接TCP 提供可靠的服务。也就是说,通过 TCP 连接传送的数据&#xf…

Django实战项目-学习任务系统-任务管理

接着上期代码框架,开发第3个功能,任务管理,再增加一个学习任务表,用来记录发布的学习任务的标题和内容,预计完成天数,奖励积分和任务状态等信息。 第一步:编写第三个功能-任务管理 1&#xff0…

信钰证券:华为汽车概念股持续活跃 圣龙股份斩获12连板

近期,华为轿车概念股在A股商场遭到热捧,多只股票迭创前史新高。10月23日,华为轿车概念股再度走强,到收盘,板块内圣龙股份、银宝山新涨停,轿车ETF在重仓股提振下盘中一度上涨近2%。业界人士认为,…