领域专家系列第三代验证码研究有哪些突破?
摘要:原创文章,转载请标明出处!https:www.cnblogs.comboyceleep11363611.html 本文配合其他文章一起服用效果更好,能更全面体会安全产品的设计。 (1)《第三代验证码研究》https:www.c
原创文章,转载请标明出处!https://www.cnblogs.com/boycelee/p/11363611.html
本文配合其他文章一起服用效果更好,能更全面体会安全产品的设计。
(1)《第三代验证码研究》https://www.cnblogs.com/boycelee/p/11363611.html(推荐)
(2)《顶象验证码破解与研究》https://www.cnblogs.com/boycelee/p/14269941.html(推荐)
(3)《极验验证码破解与研究》https://www.cnblogs.com/boycelee/p/14021048.html(推荐)
(4)《极验无感验证破解》https://www.cnblogs.com/boycelee/p/13951819.html
(5)《同盾小程序指纹破解》https://www.cnblogs.com/boycelee/category/1819211.html
随着机器学习与图像识别技术的发展,第一代、第二代验证码已经失去了安全验证的作用。为了增加识别难度,网站暴力升级图片验证码,严重破坏了用户体验。第三代验证码的诞生解决了这一痛点,第三代验证码已经不再是狭义上的验证码,它通过多场景多维度进行数据收集,为网站提供立体式安全保障。
声明
本文内容仅限于研究,不涉及各安全厂商具体源码与风控策略。维护网络安全,人人有责。
背景
前段时间分析了市面上一些安全厂商的第三代验证码协议,以下内容不针对任何厂商,仅聊聊自己对第三代验证码的理解。
验证码划代
(一)第一代验证码
定义:主要利用简单知识构建验证码。如中文、英文、数字等。
(二)第二代验证码
定义:以第一代验证码为基础,以创新交互方式的思想构建验证码。如看题选字、看图选物等。
(三)第三代验证码
定义:多场景多维度收集数据信息,为网站提供立体式安全防护。
第一第二代验证码退出历史舞台的原因
以下是我总结的两点原因
(1)随着机器学习与图像是被技术的发展,第一代、第二代验证码已经失去了安全验证的作用;
(2)为了增加识别难度,网站暴力升级图片验证码,严重破坏用户体验。
举个例子
以上类型验证码我们通过肉眼识别准确率大约为30%,但我们拿到图片打码平台(魔镜)上用训练后发现准确率能超过90%。机器能做得比人好,其实这已经失去的验证码的意义。
第三代验证码“很简单”
最近常常会有人问我,研究的第三代验证码是不是就是滑块验证码?不就是把滑块滑动到指定位置吗?这有什么难的?这让我想起,在还没加入Qunar前,小王子在InfoQ上的分享。有人问他,机票价格为什么不能做成一张巨大的哈希表?有必要设计得这么复杂吗?从产品的角度来说,无论是Qunar机票报价还是第三代验证码都是非常成功的,因为优秀的产品就是让普通用户觉得“很简单”。
第三代验证码网上方案可行吗
在google或百度上搜索,就会发现很多文章分享如何通过机器模拟人的行为进行滑动验证码、点选验证码校验。解决方案无非就是一下两种形式:
(1)Selenium + Headless
(2)chrome插件模拟点击
注:
Selenium是一种用于Web应用程序测试工具。使用Selenium能够模拟真正用户操作浏览器的行为,例如模拟鼠标操作、模拟键盘操作等。
PhantomJS是一个”无界面"(headless)浏览器,它会把网站加载到内存并执行页面上的JavaScript,因为不会展示图形界面,所以运行起来比完整的浏览器更高效。
可行吗?我觉得在用户层面上是可行的,无非就是用户怎么操作,机器就怎么操作。但是一旦请求数达到某个阈值后,滑块就再也无法成功。这是什么原因导致的呢?下面我们来分析分析。
第三代验证码是什么?
以下是我对第三代验证码的概括
(一)立体防护
第三代验证码,已经不再是狭义上的验证码。多场景多维度进行数据收集,给网站提供立体的安全保障。
(二)无感验证
以无感、无知识的形式存在,极大提升用户体验。
(三)数据分析
利用机器学习对机器信息、行为数据等进行高维度地分析。
第三代验证码构成
以下是我总结的第三代验证码构成
(一)验证码图片
1)图片还原
2)图片识别
(二)人机识别
3)生物行为特征
4)设备环境信息监测(设备指纹)
(三)平台安全
5)代码混淆(定时混淆)
6)加密算法(高频率定时更新)
7)浏览器多点存储技术(恶意行为标识)
(四)风控模型
8)风险决策(基本行为校验、参数校验)
(五)行为验证
9)验证码(无感、滑块、点选等)
(六)反爬策略
(七)大数据风险库
第三代验证码分析流程
(一)图片还原
分析的第一步,图片被打乱,如何还原?
图片还原思路:
(1)切割图片,记录位置,最后找出规律
(2)通过前序请求返回值
(3)其他特殊方式,如图片名称、图片lbs、固定数组等
(二)滑块识别
分析第二步,缺口识别。(是否下发原图,视具体厂商而定)
滑块识别思路:
(1)暴力遍历(原背景图与缺口背景图相“与”,单片区域中存在大面积不同,返回坐标)
(2)边缘检测(①提取单片边缘并构造二维矩阵②对图像进行处理凸显拼图在背景图中边缘③沿轨迹相与)
(3)机器学习(给图片打标,训练模型)
(三)行为模拟
分析第三步,行为模拟(滑块、点选、刮图等)。
行为模拟思路:
(1)低级数据伪造-自定义算法:
Ⅰ、先快后慢
Ⅱ、临近卡槽动作模拟
(2)高级数据伪造-自定义算法:
Ⅰ、收集人工滑动轨迹
Ⅱ、根据数据拟合模型,用模型构造轨迹
(四)JS混淆
分析第四步,生物行为模拟之后,坐标如何发送?以什么格式发送?要想知道答案就需要去了解其协议。分享淘宝的平展控制流混淆JS(3万行),让大家感受下被JS支配的恐惧。https://g.alicdn.com/AWSC/uab/118.js?d=22
(1)为什么混淆?
JS代码是透明且公开的,如果被轻易了解其中信息即可模拟请求,并与服务器通信。要想解决这一问题,就必须要使用混淆和加密来解决代码安全隐患。
(2)保护机制与原理?
Ⅰ、使JS代码不可分析,防止动态跟踪调试
Ⅱ、定期高频率混淆JS代码
Ⅲ、定期高频率修改加密算法
(3)如何进行JS混淆?
Ⅰ、正则替换。成本低、效果差
Ⅱ、语法树混淆。成本高、更灵活、更安全
(4)常见混淆哪几种形式?
Ⅰ、明文字符加密。对常量、变量以及函数名进行替换
Ⅱ、控制流混淆。将代码块进行拆分,打乱函数执行流程,随机插入垃圾代码。
(五)浏览器多点存储技术
分析第五步,在调试过程中,可能会出现异常状况(验证码验证失败、验证码类型变更、网站拒绝访问等等)。不要怀疑,你的异常行为已经导致该机器被定位。这时候想到的第一件事,应该是删除cookie,但是删除cookie之后,问题还是没得到解决,这是什么原因呢?定位数据具备以下特征。
(1)多点存储
Cookie、SessionStorage、LocalStorage多点存储同一数据
(2)难删除
多点存储,分别存储于浏览器、用户本地。难以一次删除所有数据
(3)防篡改
防篡改机制,通过防篡改签名,内容和签名对应。服务端校验数据是否被篡改
(4)可重生
多点存储,任一存储点存在数据,每次访问数据重新植入所有存储点
(六)设备指纹
分析第六步,在分析JS的过程中会发现,浏览器还收集了其他的信息。那么这些信息是什么呢?其实收集的是设备信息,用户生成设备指纹。
(1)设备指纹是什么?
基于设备与运行环境等多维度收集信息,为设备单独生成的唯一识别码
(2)为什么收集设备指纹?
需要对用户上网的设备的软硬件信息进行收集,为用户生成网络唯一身份标识。若用户存在恶意行为,能够精准鉴别用户身份,进行精确打击。
(3)指纹收集角度?
Ⅰ、硬件信息
Ⅱ、软件信息
Ⅲ、软件环境信息
Ⅳ、服务器下发信息
(4)收集什么信息?
Ⅰ、设备与浏览器基本信息(系统、内存、显卡、浏览器版本、浏览器当前语言、屏幕颜色深度、屏幕分辨率、浏览器插件等)
Ⅱ、服务器存储本地的特性数据(前序请求数据、最新混淆HTML元素信息等)
Ⅲ、浏览器或硬件设备在特性环境下的信息(canvas图片渲染)
Ⅳ、浏览器个人设置与信息(浏览器屏幕占比、显示设置、是否开启控制台等)
(七)无感验证
分析第七步,无感验证。多场景多维度收集用户信息,由风控系统判定用户等级以及是否启用进一步的行为校验。
(八)风险决策
分析第八步,第三代验证码风控系统通过风险决策。结合参数校验、行为校验、网络探测、风险库、风险识别等步骤,最终对当前用户做出等级判定。
总结
第三代验证码是无感知、立体式验证码。而我们普通用户所看到的滑动或点选等形式的行为校验,只不过是风控系统无法准确判别时,进一步收集用户信息的一种方式。第三代验证码看似简单,实则暗藏玄机。
最后
关于验证码,懂得不多,做得很少。欢迎批评与指教。
原创文章,转载请标明出处!https://www.cnblogs.com/boycelee/p/11363611.html
