领域专家系列第三代验证码研究有哪些突破?

摘要:原创文章,转载请标明出处!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