一文带你看懂验证码攻防技术那些事儿

news2024/10/7 16:18:55

本文目录

验证码为什么越变越复杂?

验证码有哪些破解方式?

验证码如何进行顶层产品能力设计?


“天生反骨”的验证码总是让人类头疼不已。

比如最基础的英文数字组合验证码,就已经会让人陷入自我怀疑:

“I还是1?0还是O?2还是Z?9还是q?vv还是w?”

再比如无数网友被12306网站验证码支配的恐惧。

如果想顺利买到火车票,抢票页面的“余票充足”并不能代表能买到,只有在付款前的验证码环节顺利通关,才算成功一半。

要么是在一群明星的照片中找出影帝影后,要么是在一堆山寨商品中找出真货,更过分的是在一打方言中选出”海南话“……

无数被烦人验证码挡在网页外的网民,心里都有一声愤怒的呐喊:

验证码,人类一生之敌。

但验证码越来越“变态”的背后实际上是安全攻防人员与黑灰产之间的持续对抗。

近日,顶象在CSDN直播间就验证码的攻防问题与大家展开讨论,反欺诈专家大卫老师就现阶段验证码黑灰产会有哪些破解方式谈起,从防御角度深度剖析如何应对黑灰产的攻击,那么,验证码如何以技术万变钳制黑灰产之变?验证码产品又改做哪些产品安全能力设计?

验证码为什么越变越复杂?

人机验证码相信大家都不陌生。

人机验证从最早的传统字符型验证码到图形验证码再到行为验证码再到如今的智能验证码,验证方式可以说是千变万化的。

那么,为什么随着验证码的不断迭代,验证码反而越来越“变态”?我们越来越难以证明我是人而不是机器?

要回答这个问题,大卫认为可以从以下两个角度来分析:

一是机器难度,即安全性;一是人的难度,即用户友好程度。

这两个要素一直是验证码的核心关注点。可以看到,传统的字符类验证码虽然难度不高,但对机器来说却几乎没有难度;为了增加机器破解的难度,针对其他验证方式做了混淆,比如在图片上做噪点来提升安全性,这样一来,反而增加了人的视觉难度。

所以也就可以理解我们为什么觉得验证码越来越“变态”。

但整体来看,传统验证码验证方式设计不合理,只增加了人的难度, 缺乏感知能力 以及调整能力,安全纵深不足,这也很好的解释了验证码为什么迭代到如今的智能验证码。

验证码有哪些破解方式?

那么,对于黑灰产而言,验证码究竟是如何破解验证码的。

从上图可知,验证码的破解流程可分为三步:

第一步资源爬取,即通过机器爬取获得文字、图标、图片、音频等信息;第二步是工具识别,常见的破解工具主要有OCR、打标训练、图像识别平台等;第三步就是进行自动化提交破解验证码。

以智能验证码的破解为例。我们来看下验证码的破解过程。

首先是识别元素的提取,即当一张图片出现用户需要知道这张图片的答案在哪里,比如说要把滑块拖到哪个地方、图片上有哪些元素、所在的位置是怎样的,这些都是黑灰产需要破解的。

一般而言,有以下几个步骤:

一是识别元素群,需要大量爬取目标验证码的元素。二是对目标验证码进行人工标注,标注的数量越多,样本数量就越多,最终训练的模型效果就越好,这其中就会用到图像识别的一些模型。

三是自动化识别,即可通过模型就知道这张图片的答案在哪里,知道了答案之后,接下来就是如何完成验证了。

对于智能验证码而言,它需要的不仅是答案本身,更关注验证过程中的数据。这其中又有几种思路。

一种思路是可以破解整个JS文件,即完全逆向验证码JS文件,这样一来你就可以知道它在验证过程中收集哪些数据,这些参数又是如何拼装的,参数是如何加密的,也就可以实现脱机运行,不用依赖浏览器环境自行组装参数提交验证,但这个方式成本相对较高,周期也会更长。

另一种思路是UI自动化。即当我们知道图片上的答案之后,可通过自动化脚本去驱动浏览器上的元素自动化操作,进而完成验证。相对于上一种思路其成本较低。

除此之外,还有一种破解方式,即三方接码平台。

打码平台的基本原理是利用人工智能技术实现对验证码设计原理的突破。

黑灰产把获取到的验证码相关信息提交至打码平台,打码平台负责破解验证码,然后把正确的验证结果返回给黑灰产,让黑灰产在带着正确的验证结果去请求数据页面,大大加大了验证码被破解的风险。

综上,原本的请求流程只有黑灰产和数据页面的双向通信,由于打码平台的加入,现在这条链路上便演变成了黑灰产、数据页面、验证码、打码平台四者之间的通信。

目前打码平台破解验证码方式主要是机器破解和人工打码两种。

1、机器破解

机器破解的好处在于自动化程度高,识别速度快,而且对于黑灰产用户的单词调用价格低,缺点是需要花费大量的时间去破解验证码的验证方式,前期投入的工作量会比较大,而且有时候机器破解的识别准确率也会有一定的误差导致验证失败。

2、人工打码:

人工打码则是在打码平台建立一个任务平台,任务发布者是黑灰产方,将获取到的验证码信息封装成任务提交到打码平台,打码平台则作为中间的任务调度者,将一个个任务调度给标注者(专门做验证码验证的人),完成后将标注结果返回给黑灰产,由黑灰产带着标注结果去请求数据页面。

标注结果打码平台也会存储一份,下次若遇到相同的验证码则直接返回这次的标注结果。如果验证码平台的验证图片长久不更新,那么就会有被拖库的风险,也就是其所有验证图片都会被标注,这时候就无需人工标注了,直接转变成机器打码的形式。

验证码如何进行顶层产品能力设计?

那么,我们究竟应该如何提升防御能力?

大卫认为应从以下三方面进行考虑:

1、识别对抗。

首先我们需要明确识别对抗的本质是什么。

从字面意思不难理解,识别对抗的本质其实就是对抗黑灰产的工具,但从技术层面来看,实际上指的是与黑灰产人工智能技术的对抗。

2、感知能力。

感知能力即识别恶意爬虫、恶意流量的能力,它是区别于传统验证码与智能验证码的标志性能力。

因为智能验证码要求不仅需要知道答案,还需要具备答案是怎么来的能力。

那么感知是从几个维度来做的呢?

  • 一是行为数据,用户在验证过程中可能会产生键盘上的敲击数据、鼠标的点击数据、触屏等数据,这些数据都需要我们去收集,用来辅助判断用户在整个验证过程中是否具备人的行为特征。
  • 二是终端风险,如果对方使用了自动化工具,如模拟器、虚拟机等等,我们可以通过在终端设备指纹的能力去识别环境风险做辅助判断行为是否可信。
  • 三是数据统计。通过大数据的分析以及计算,能够大致圈定哪些范围内的验证码的请求是有问题的,进而针对这部分请求做防御提升。
  • 四是预警指标。通过实时计算的指标我们能够感知某一类验证码是否有被破解的可能性。
  • 五是安全策略,通过检测攻击行为的安全策略,根据风险情况对验证码做出调整。

3、以万变钳制黑灰产破解

不难看出,上述的攻防对抗都是围绕变字展开的。

以顶象验证码为例,我们来看下顶象验证码围绕变做了哪些安全能力的设计。

首先是安全可信的通信链路。前文中提到,黑灰产在破解验证码时首先要考虑的是是否要逆向JS文件来知道你的通信协议以及参数信息。对此,顶象增加了安全加密中心,安全加密中心会定期自动化的生成新的加密算码,把代码重新混淆一遍。有了这种的动态更新的机制后,即便黑灰产破解了某个版本的验证码JS 文件,在下一个更新窗口到来之后,这个验证码JS 文件也就失效了。

其次是验证方式和组合的实时变化。

前文中提到,识别对抗的本质是黑灰产的人工智能能力的对抗,因此我们的验证元素也要进行实时变换。例如文字点选类验证码,其核心验证要素是文字,机器破解如果识别了图片中的文字要素,那么自然可以返回给黑灰产正确的验证结果。那么可以提升文字要素的识别难度来抵御机器破解。

最后是安全策略的实时调整。

针对私有化客户,我们可以定向的验证私有化验证码,支持对接防御云,基于云服务拉取最新的更新模块、插件以及情报到私有化的环境中去,进而实现本地和云端的能力同步。

直播最后,大卫分享了人机验证未来的几个趋势,他认为:

首先人机验证是企业业务安全必不可缺的一环。

其次,人机验证的对抗专业程度将会越来越高,从以前简单的OCR软件到现在的图像识别技术甚至专业的打码平台,这些都是在攻防对抗过程中持续出现的工具,这就导致了人机安全的门槛也将越来越高。

随着安全厂商与黑灰产之间攻防对抗的不断迭代,各种各样的对抗手段及策略在不断对抗的过程中也在逐渐提高,此时,对于中小型厂商而言,技术上是处于落后状态的,因此人机安全的门槛将会越来越高,甚至到最后可能只有少数的几个专业的安全厂商具备较好的人机防护能力。

最后再给大家简单介绍下顶象业务安全大讲堂。

顶象业务安全大讲堂汇集了业内大咖,分享万亿级业务安全攻防经验,打造时下最专业的业务安全直播课,通过“技术+方案+实践”三大核心专题,带您全面了解金融、互联网、航旅出行、跨境电商以及目前大热的NFT等各类业务风险及防范手段,深入解析背后的产品技术,抽丝剥茧攻防实战,助您打造零风险的数字业务。

春节后,顶象将开启第二季业务安全大讲堂,第二季业务安全大讲堂将建立安全圈生态,邀约知名大厂安全负责人和技术博主来给大家分享业务安全专业知识,敬请期待!顶象在这里提前预祝大家春节快乐,新的一年“兔”飞猛进。

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

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

相关文章

【机器学习 - 3】:数据归一化(最值归一化、均值方差归一化)

文章目录数据归一化的使用最值归一化均值方差归一化(常用)在sklearn中调用归一化(鸢尾花数据归一化)数据归一化的使用 为什么要使用数据归一化? 举个例子,例如我们要使用KNN算法来预测肿瘤为良性肿瘤或恶性…

Python算法:三种高级排序的方法

前言 声明:本文所有动图来源为菜鸟教程 🍀作者简介:被吉师散养、喜欢前端、学过后端、练过CTF、玩过DOS、不喜欢java的不知名学生。 🍁个人主页:红中 🍂不就是蓝桥杯嘛,干他!&#…

Windows系统上的小知识点集合(收藏更新)

1.开机自动运行 如果你写了一段代码或者脚本,甚至某个程序。希望在windows开机之后自动执行,可以按照以下方法操作 对于Windows系统,开机之后当所有的软件初始化完毕之后,会自动运行 C:\Users\(你的用户名&#xff…

Elasticsearch入门—— Elasticsearch7.8.0版本索引操作

目录一、创建索引1.1、创建索引概述1.2、创建索引示例1.3、重复创建索引示例二、查看索引2.1、查看所有索引2.2、查看单个索引三、删除索引3.1、删除索引一、创建索引 1.1、创建索引概述 对比关系型数据库,创建索引就等同于创建数据库 1.2、创建索引示例 在 Pos…

matlab/simulink仿真数据的导出暨to workspace模块的使用

matlab/simulink仿真数据的导出 在用simulink仿真的时候,希望把数据导出,用其他软件进一步分析和处理,该如何做呢? 使用下面这个叫做to workspace的模块就可以实现 1 参数设置 把该模块拖出来。双击打开进行设置,会…

贪心策略(一)(选择排序、分割平衡串、买卖股票、跳跃游戏)

贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。 贪心选择是指所求问题的整体最优解可以通过一系列…

4、Ubuntu20常用操作_文本编辑文件系统目录和文件操作用户管理和文件权限

Ubuntu系统操作 注销(退出Linux系统) 在每次使用完后,一定要进行注销(或者说退出),以防他人通过你的帐号进入系统。 在Linux提示符下,运行exit命令,即可退出本次登录 或直接按组…

代码随想录刷题训练营第七天|● 454.四数相加II ● 383. 赎金信 ● 15. 三数之和 ● 18. 四数之和 ● 总结

四数相加 看完题后的思路 首先想到了暴力解法,四重for循环,时间复杂度为0(n^4).接着往下想,四数相加不正好是(两数相加)(两数相加)吗,可以依次求出两数相加的结果存入hash表中 和-[下标1,下标2],然后再进行两数相加. 思路 上面的思路中,有两点疑问: (12)(34)(13)(24)吗? 1…

渗透测试基础入门【01】——测试流程(IPC$)

渗透测试基础入门【01】——测试流程(IPC$) 注意,攻击对方需要对方授权,本文章目的只为教学,不要拿去干违法的事 1 渗透测试流程 授权(获取目标用户授权,否则是违法行为)信息收集 …

【4 - 降维算法PCA和SVD - 原理部分】菜菜sklearn机器学习

课程地址:《菜菜的机器学习sklearn课堂》_哔哩哔哩_bilibili 第一期:sklearn入门 & 决策树在sklearn中的实现第二期:随机森林在sklearn中的实现第三期:sklearn中的数据预处理和特征工程第四期:sklearn中的降维算法…

nacos注册源码分析

Nacos注册服务 cosumer启动的时候,从nacos server上读取指定服务名称的实例列表,缓存到本地内存中。 开启一个定时任务,每隔10s去nacos server上拉取服务列表 nacos的push机制: 通过心跳检测发现服务提供者出现心态超时的时候…

SpringCloud学习笔记 - 流控规则 - Sentinel

1. Sentinel流控规则简介 这里的流控指的是“流量控制”,进一步解释说明: 资源名:唯一名称,默认请求路径。 针对来源:Sentinel可以针对调用者进行限流,填写微服务名,默认default(不…

爬虫解析模块(bs4,selenium)

bs4文档 from bs4 import BeautifulSoupBeautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。 解析器 解析器使用方法优势劣势Python标准库BeautifulS…

Dubbo——入门介绍

目录1.概述1.1.什么是 Dubbo ?1.2.Dubbo 架构2.Dubbo 快速入门2.1.Zookeeper 安装2.2.创建项目2.3.代码实现2.3.1.dubbo-service 模块2.3.2.dubbo-web 模块2.4.本地启动2.5.使用 Dubbo 实现 PRC2.5.1.修改 dubbo-service 模块2.5.2.修改 dubbo-web 模块2.5.3.启动 d…

可免费编辑 PDF 内容的 7 大 PDF 编辑工具

有时您可能希望编辑 PDF 文档中的敏感信息,例如财务帐号和 ID 号,以便在不泄露隐私的情况下共享 PDF。编辑 PDF 是从 PDF 中删除私有内容。使用PDF 编辑工具可以轻松完成编辑。市场上有这么多工具,您需要选择最好的一种。 7 大 PDF 编辑工具 …

data analysis and predict

data anlysis and predict 谢邀,本人正在崩溃和兴奋间反复横跳(崩溃居多),anyway, 我心态超好的!besides, 仅供个人学习查阅,不具任何参考价值!!! (小边不想努…

路由信息协议RIP

文章目录路由信息协议RIP一、Routing Information Protocol的定义二、RIP的基本工作过程三、“坏消息传播得慢”的问题四、总结路由信息协议RIP 一、Routing Information Protocol的定义 RIP是分布式的基于距离向量的路由选择协议 协议RIP的特点是: 仅和相邻路由…

Java数据结构(泛型)

1、集合框架 Java 集合框架Java Collection Framework ,又被称为容器container ,是定义在 java.util 包下的一组接口interfaces 和其实现类classes 。 其主要表现为将多个元素element 置于一个单元中,用于对这些元素进行快速、便捷的存储sto…

【XML了解】xml与hxml 标记语言学习

XML与HXML的区别 XML 被设计用来传输和存储数据,结构化、存储以及传输信息(如:数据包) XML 被设计用来传输和存储数据,其焦点是数据的内容 XML 标签没有被预定义, 需要自行定义标签 HTML 被设计用来表现和展示数据&…

数组常用方法总结 (7) :copyWithin / fill / reduce / reduceRight

copyWithin 将指定位置的元素复制到数组的其他位置。返回值为移动后数组。原始数组的内容会被改变,原始数组的长度不会改变。arr.copyWithin(index, startIndex, endIndex)第一个参数为,期望被复制的内容将要插入的位置。第二个参数为,数组中…