首页 > 其他分享 >详解验证码与打码平台的攻防对抗

详解验证码与打码平台的攻防对抗

时间:2022-09-27 11:22:36浏览次数:61  
标签:攻防 验证 平台 验证码 黑灰产 打码 破解

众所周知,验证码的出现是为了区分人和机器,但随着科技的发展,黑产从业者的可图之利增多,验证码的战场也进入了一段破解与抗破解的持久博弈。

验证码在逐渐复杂的同时,黑灰产的攻击手段也不断提升。本文就从验证码与打码平台的对抗讲起。

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

其工作流程如下图所示:

以前黑灰产要想获取数据,首先会向自己想要获取的数据页面发送请求,若该数据页面没有任何对于黑灰产的防护机制的话,那么黑灰产轻而易举的就能获取到数据;反之如果该数据页面存在验证码防御机制,那么在黑灰产获取数据的时候不会直接就返回数据,而是先弹出一个验证码作为人机验证的条件,只有通过了这个验证码的识别才返回数据。对于一般的黑灰产而言,其是没有应对验证码手段的,于是就获取不到数据。

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

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

打码平台是如何破解验证码的?
那么,打码平台是如何高效的破解市面上各家验证码平台的各种形式验证码的?

其优势主要表现为以下两方面:

时效性:

在打码平台破解各家验证码平台的验证码时,验证码平台也不会坐以待毙,其会推出新的验证码形式或者在原有验证码形式上提升验证难度。当验证码平台在这两个方向发力时,会导致打码平台破解验证码的难度上升,如果打码平台能快速攻破,则说明时效性高,调整时间短,阻塞黑灰产爬取数据的时间自然也会大大缩短,不然会导致黑灰产被阻塞于验证码这堵高墙外。

高效性:

黑灰产在获取到验证码相关数据时需要提交给打码平台进行破解,然后获取到破解信息后在去数据页面进行验证。如果打码平台对于验证码的单次破解时间长(效率差),比如滑动验证码破解需要1ms ,点选验证码破解需要10ms,那么对于黑灰产而言就是10倍的效率差,相对而言破解滑动验证码是高效的,破解点选验证码就是不够高效的。

假设在爬取航司航班数据的场景下(每时每刻都需要实时去查询航班动态信息),如果数据页面需要验证的是点选验证码,相对于滑动验证码其获取数据就存在一定的信息延后性。

打码平台的两种破解方式
针对这两点,目前打码平台破解验证码方式主要是机器破解和人工打码两种。

1、机器破解:

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

目前验证码的主要验证形式主要是在图像处理的基础上开发各种验证形式,例如滑动类验证码,图片点选类验证码。所以机器破解的主要方向是通过识别图片中的相关验证要素来进行破解,例如识别滑动验证码的缺口,点选验证码中的文字要素和数字要素,其主要技术手段是图像处理,图像二值化,模拟滑动轨迹等相关技术。下图示例是某个打码平台支持识别的验证要素:

由于验证码平台对于图片处理的技术手段不断在提升,验证要素的解析对于打码平台也越来越困难,如下图所示:

为了对抗验证码平台,打码平台也在提升其机器自动化打码的能力,比如说引入机器学习和神经网络等人工智能相关技术来智能识别图片中的验证码要素,提高识别验证要素的准确率等。以下是某个打码平台相关人工智能技术的打码破解流程:

可以看到,机器打码在加入人工智能技术后,识别效率也在成倍增加,这也进一步增大了验证码的防守难度,同时也意味着验证码与打码平台之间的攻防再次升级。

2、人工打码

机器打码的缺点在于前期破解工作量大,技术门槛高,识别准确率等方面存在一定问题。而人工打码可以弥补这种缺点。

其工作流程是:

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

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

如下是某个人工打码的打码界面:

但人工打码有一个很明显的缺点是单次请求耗时高,因为其破解的速度效率严重依赖于标注者的破解速度,但是真人从识别图片到完成图片验证最快起码也要几秒的时间,所以几秒的请求耗时这对于一笔HTTP请求来说肯定是高耗时的(足够机器破解破解上百次的时间),因此,人工打码又有了以下的工作流程:

由上图可知,之前是黑灰产提交验证请求,打码平台被动接收验证请求进行验证动作。现在,打码平台主动请求验证码服务,完成验证请求后将验证码服务下发的合法token存储起来,当黑灰产接入打码平台时,主动下发合法的token给黑灰产,让黑灰产携带着合法token绕过验证码。

验证码如何“对症下药”?
那么,验证码平台作为保护数据安全的防守方,如何与打码平台对抗?

顶象安全专家认为,验证码平台要做好防守,就必须针对打码平台的特性展开,即前文中讲到的高效性和时效性,才能遏制住打码平台破解验证码的效率。

具体怎么实现呢?

针对机器打码,一般来说,主要有以下几个方向:

1、加快验证码更新频率:

验证码平台可以通过不断推出新型验证形式来给机器破解增加难度。如果黑灰产使用机器破解来绕过验证码平台,那么当验证码平台弹出一种机器破解从未见过的验证形式来防御黑灰产,那么在机器破解完成新型验证码破解之前,黑灰产可以说是直接被阻隔在验证码之外,访问不到数据页面的数据,这无疑给打码平台增加很多的前期工作量和难度。

2、提升验证要素识别难度:

验证码平台也可以在原有验证方式上提升验证要素识别难度来抵御机器破解。例如文字点选类验证码,其核心验证要素是文字,机器破解如果识别了图片中的文字要素,那么自然可以返回给黑灰产正确的验证结果。那么可以提升文字要素的识别难度来抵御机器破解,如下图:

可以看到左边三个坊字未作任何处理,右边第一个坊字是做过处理的,加上了颜色和文字空心化。对于机器破解来说,做过文字处理的文字要素相对而言更难识别,并且还可以对文字进行字体的更换,对字体进行旋转,重叠,扭曲,加干扰项等效果,这无疑都给机器破解造成了极大的识别难度。如下图所示:


对于其他类型的验证码也可以做类似的处理,例如滑块验证码加阴影项干扰。图片元素从二维模型换成三维模型等等,都是提升识别验证要素难度的手段。

3、加入人工智能技术:

顶象第五代验证码拥有13种验证方式,并且不断的推出新的验证码方式和安全的优化。

与此同时,顶象验证码还加入了人工智能技术。比如利用NLP技术可以通过给定的关键词语进行造句,通过词库中的词语进行造句,对句子进行切割,最终让用户对切割后的句子进行还原,大大提升了机器破解的难度。

针对人工打码,则主要从以下几方面入手:

1、保证验证码图库实时更新;

前文中提到, 人工打码不易识别其身份,并且验证码图片是其核心筹码,因此我们就可以从验证码图库入手。

顶象验证码以高频率的验证码图片生产速度频繁更新验证图片库,保证新的验证图片实时更新,从根源上杜绝打码平台拖库。这样一来,打码平台背后的标注者便需要源源不断的对新验证图片进行验证,这极大增加了打码平台的识别成本(也变向提升了黑灰产的成本),有效的保护了用户的业务安全。

2、采集验证环境信息判断是否为黑产;

基于人工打码的工作流程,顶象验证码可以通过采集验证环境信息等方式识别到人工打码平台,例如判断完成验证时的验证环境信息和token上报时的验证环境信息是否一致来进行判断,并且人工打码平台的操作行为和黑灰产的操作行为是不一样的,所以可以在验证码的验证环节采集有辨识度的环境信息,和验证结果一起上报到验证码平台,验证码平台配置规则和策略来对这些信息进行分析和匹配,筛选出可能是黑灰产的请求进行二次验证或拦截,这样就可以起到识别黑灰产的效果。

目前,顶象依赖设备指纹和实时风控引擎技术,可以支持在验证码进行验证时采集验证环境相关信息上报到实时风控引擎中,交给其中预设的策略和规则,通过规则引擎进行风险要素的判断,最后判定该请求是否是风险请求。

同时,顶象防御云也将其能力赋能给验证码,不仅使得验证码具备了防御打码平台的能力,并且具备了防御云的风控能力,做到实时感知风险,及时防御处置,进一步增强了打码平台的破解难度。

但正如前文所言,验证码与打码平台之间的攻防对抗是一场持久战,双方并未分出胜负,不难猜测,在很长一段时间内与打码平台的攻防较量依旧是众多验证码平台的重要课题。

标签:攻防,验证,平台,验证码,黑灰产,打码,破解
From: https://www.cnblogs.com/dingxiang-inc/p/16733913.html

相关文章

  • 生成随机四位数验证码
    functiongetCode(n){//有一个基础数据可以获取到其中的随机的字符varstr='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';//空的字符串存......
  • 验证码图片实现
    代码详情:  servlet配置   成果图; ......
  • 生成验证码
    //生成六位验证码(数字、字母)packagettext;importjava.util.Random;importjava.util.Scanner;publicclasslianxi{ staticScannerin=newScanner(System.in......
  • 验证码输入框粘贴复制
    <divclass="box"><divclass="field-list"><divclass="field-item"></div><divclass="field-item"></div><divclass="field-item"></div&g......
  • 直播平台开发,自带干扰线的js随机验证码
    直播平台开发,自带干扰线的js随机验证码 <!DOCTYPEhtml><html><head>  <metacharset="UTF-8">  <metaname="viewport"content="width=device-width,initial......
  • Web安全攻防:渗透测试实战指南 pdf
    高清扫描版下载链接:https://pan.baidu.com/s/1YfLeXKh_kaXF1-bwXU28Cw点击这里获取提取码 ......
  • uni-app 获取图片验证码
      <image:src="imgVerificationCode"@click="getVerificationCode"class="imageCode"></image>arrayBufferToBase64(buffer){ varbinary=''; ......
  • 移动端安全攻防那些事儿,看这场直播就够了!
    随着移动互联网的不断发展,移动终端不管是在设备持有量,还是在用户数量上,都已经超越了传统PC端,成为第一大入口端。其中,以手机为代表的移动终端反而变成了最大的威胁存在。据......
  • 验证码测试
    验证码功能的实现可以分为三个步骤:(1)UI点击获取验证码,同步显示验证码有效时间(2)后端获得指令后通过代理平台发送验证短信(3)用户收到短信,在UI上提交验证码,后台做逻辑判断......
  • 13.1 反射 13.2selenium键盘事件13.3文件上传13.4滚动条操作 13.5鼠标事件13.6验证码
    13.1反射#什么是反射?#如果有一个变量名,是字符串的数据类型,你能获取到这个变量的值吗?#反射方法:classStudent:def__init__(self):self.name='张三'......