本文内容仅限于研究,不涉及各安全厂商具体源码与风控策略。维护网络安全,人人有责。

微信验证激活码_坦克世界md5码验证_验证码图片

背景

前段时间分析了市面上一些安全厂商的第三代验证码协议,以下内容不针对任何厂商,仅聊聊自己对第三代验证码的理解。

验证码划代

(一)第一代验证码

定义:主要利用简单知识构建验证码。如中文、英文、数字等。

(二)第二代验证码

定义:以第一代验证码为基础,以创新交互方式的思想构建验证码。如看题选字、看图选物等。

验证码图片_微信验证激活码_坦克世界md5码验证

微信验证激活码_坦克世界md5码验证_验证码图片

微信验证激活码_验证码图片_坦克世界md5码验证

(三)第三代验证码

定义:多场景多维度收集数据信息,为网站提供立体式安全防护。

微信验证激活码_坦克世界md5码验证_验证码图片

验证码图片_微信验证激活码_坦克世界md5码验证

验证码图片_微信验证激活码_坦克世界md5码验证

第一第二代验证码退出历史舞台的原因

以下是我总结的两点原因

(1)随着机器学习与图像是被技术的发展,第一代、第二代验证码已经失去了安全验证的作用;

(2)为了增加识别难度,网站暴力升级图片验证码,严重破坏用户体验。

举个例子

以上类型验证码我们通过肉眼识别准确率大约为30%,但我们拿到图片打码平台(魔镜)上用训练后发现准确率能超过90%。机器能做得比人好,其实这已经失去的验证码的意义。

第三代验证码“很简单”

最近常常会有人问我,研究的第三代验证码是不是就是滑块验证码?不就是把滑块滑动到指定位置吗?这有什么难的? 这让我想起,在还没加入Qunar前,小王子在InfoQ上的分享。有人问他,机票价格为什么不能做成一张巨大的哈希表?有必要设计得这么复杂吗?从产品的角度来说,无论是Qunar机票报价还是第三代验证码都是非常成功的,因为优秀的产品就是让普通用户觉得“很简单”。

第三代验证码网上方案可行吗

在google或百度上搜索,就会发现很多文章分享如何通过机器模拟人的行为进行滑动验证码、点选验证码校验。解决方案无非就是一下两种形式:

(1)Selenium + Headless

(2)chrome插件模拟点击

注:

Selenium是一种用于Web应用程序测试工具。使用Selenium能够模拟真正用户操作浏览器的行为验证码图片,例如模拟鼠标操作、模拟键盘操作等。

PhantomJS是一个”无界面”(headless)浏览器,它会把网站加载到内存并执行页面上的JavaScript,因为不会展示图形界面,所以运行起来比完整的浏览器更高效。

可行吗?我觉得在用户层面上是可行的,无非就是用户怎么操作,机器就怎么操作。但是一旦请求数达到某个阈值后,滑块就再也无法成功。这是什么原因导致的呢?下面我们来分析分析。

第三代验证码是什么?

以下是我对第三代验证码的概括

(一)立体防护

第三代验证码,已经不再是狭义上的验证码。多场景多维度进行数据收集,给网站提供立体的安全保障。

(二)无感验证

以无感、无知识的形式存在,极大提升用户体验。

(三)数据分析

利用机器学习对机器信息、行为数据等进行高维度地分析。

第三代验证码构成

验证码图片_坦克世界md5码验证_微信验证激活码

以下是我总结的第三代验证码构成

(一)验证码图片

1)图片还原

2)图片识别

(二)人机识别

3)生物行为特征

4)设备环境信息监测(设备指纹)

(三)平台安全

5)代码混淆 (定时混淆)

6)加密算法 (高频率定时更新)

7) 浏览器多点存储技术(恶意行为标识)

(四)风控模型

8)风险决策 (基本行为校验、参数校验)

(五)行为验证

9)验证码(无感、滑块、点选等)

(六)反爬策略

(七)大数据风险库

第三代验证码分析流程

(一)图片还原

分析的第一步,图片被打乱,如何还原?

图片还原思路:

(1)切割图片,记录位置,最后找出规律

(2)通过前序请求返回值

(3)其他特殊方式,如图片名称、图片lbs、固定数组等

验证码图片_坦克世界md5码验证_微信验证激活码

微信验证激活码_坦克世界md5码验证_验证码图片

(二)滑块识别

分析第二步,缺口识别。(是否下发原图,视具体厂商而定)

滑块识别思路:

(1)暴力遍历(原背景图与缺口背景图相“与”,单片区域中存在大面积不同,返回坐标)

(2)边缘检测 (①提取单片边缘并构造二维矩阵②对图像进行处理凸显拼图在背景图中边缘③沿轨迹相与)

(3)机器学习(给图片打标,训练模型)

验证码图片_坦克世界md5码验证_微信验证激活码

微信验证激活码_坦克世界md5码验证_验证码图片

(三)行为模拟

分析第三步验证码图片,行为模拟(滑块、点选、刮图等)。

行为模拟思路:

(1)低级数据伪造-自定义算法:

Ⅰ、 先快后慢

Ⅱ、临近卡槽动作模拟

(2)高级数据伪造-自定义算法:

Ⅰ、 收集人工滑动轨迹

Ⅱ、根据数据拟合模型,用模型构造轨迹

坦克世界md5码验证_微信验证激活码_验证码图片

(四)JS混淆

分析第四步,生物行为模拟之后,坐标如何发送?以什么格式发送?要想知道答案就需要去了解其协议。分享淘宝的平展控制流混淆JS(3万行),让大家感受下被JS支配的恐惧。

验证码图片_微信验证激活码_坦克世界md5码验证

(1)为什么混淆?

JS代码是透明且公开的,如果被轻易了解其中信息即可模拟请求,并与服务器通信。要想解决这一问题,就必须要使用混淆和加密来解决代码安全隐患。

(2)保护机制与原理?

Ⅰ、使JS代码不可分析,防止动态跟踪调试

Ⅱ、定期高频率混淆JS代码

Ⅲ、定期高频率修改加密算法

(3)如何进行JS混淆?

Ⅰ、正则替换。成本低、效果差

Ⅱ、语法树混淆。成本高、更灵活、更安全

(4)常见混淆哪几种形式?

Ⅰ、明文字符加密。对常量、变量以及函数名进行替换

Ⅱ、控制流混淆。将代码块进行拆分,打乱函数执行流程,随机插入垃圾代码。

(五)浏览器多点存储技术

分析第五步,在调试过程中,可能会出现异常状况(验证码验证失败、验证码类型变更、网站拒绝访问等等)。不要怀疑,你的异常行为已经导致该机器被定位。这时候想到的第一件事,应该是删除cookie,但是删除cookie之后,问题还是没得到解决,这是什么原因呢?定位数据具备以下特征。

(1)多点存储

Cookie、SessionStorage、LocalStorage多点存储同一数据

(2)难删除

多点存储,分别存储于浏览器、用户本地。难以一次删除所有数据

(3)防篡改

防篡改机制,通过防篡改签名,内容和签名对应。服务端校验数据是否被篡改

(4)可重生

多点存储,任一存储点存在数据,每次访问数据重新植入所有存储点

(六)设备指纹

分析第六步,在分析JS的过程中会发现,浏览器还收集了其他的信息。那么这些信息是什么呢?其实收集的是设备信息,用户生成设备指纹。

(1)设备指纹是什么?

基于设备与运行环境等多维度收集信息,为设备单独生成的唯一识别码

(2)为什么收集设备指纹?

需要对用户上网的设备的软硬件信息进行收集,为用户生成网络唯一身份标识。若用户存在恶意行为,能够精准鉴别用户身份,进行精确打击。

(3)指纹收集角度?

Ⅰ、硬件信息

Ⅱ、软件信息

Ⅲ、软件环境信息

Ⅳ、服务器下发信息

(4)收集什么信息?

Ⅰ、设备与浏览器基本信息 (系统、内存、显卡、浏览器版本、浏览器当前语言、屏幕颜色深度、屏幕分辨率、浏览器插件等)

Ⅱ、服务器存储本地的特性数据(前序请求数据、最新混淆HTML元素信息等)

Ⅲ、浏览器或硬件设备在特性环境下的信息 (canvas图片渲染)

Ⅳ、浏览器个人设置与信息 (浏览器屏幕占比、显示设置、是否开启控制台等)

(七)无感验证

分析第七步,无感验证。多场景多维度收集用户信息,由风控系统判定用户等级以及是否启用进一步的行为校验。

坦克世界md5码验证_微信验证激活码_验证码图片

(八)风险决策

分析第八步,第三代验证码风控系统通过风险决策。结合参数校验、行为校验、网络探测、风险库、风险识别等步骤,最终对当前用户做出等级判定。

坦克世界md5码验证_验证码图片_微信验证激活码

总结

第三代验证码是无感知、立体式验证码。而我们普通用户所看到的滑动或点选等形式的行为校验,只不过是风控系统无法准确判别时,进一步收集用户信息的一种方式。第三代验证码看似简单,实则暗藏玄机。

最后

关于验证码,懂得不多,做得很少。欢迎批评与指教。

———END———
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击网站首页每天更新
站 长 微 信: aiwo51889