验证码的那些事儿

百家 作者:焦点安全应急响应中心 2020-08-31 18:43:57
前言

“FSRC经验分享”系列文章,旨在分享焦点科技信息安全部工作过程中的经验总结,包括但不限于漏洞分析、运营、sdl、等级保护、自研工具等等。

欢迎各位安全从业者持续关注~ 


1简介

    

     随着黑产的各种手段不断进步,企业方对于帐号风控的需求不断进步。而验证码是防护的第一道墙,如果选对了合适的验证码,可以将绝大部分攻击挡在企业的大门外。

     在用户的日常体验中,注册、登录、甚至发表内容等处都需要验证码,我们了解过验证码是什么吗?验证码的安全现状和发展趋势又是怎么样呢?

    本文为信息安全部研发同事在内部安全验证开发过程中,对验证码的种类、破解办法、发展趋势、案例分析及所面临的威胁进行整理,希望通过下面的介绍,你将会有所了解。


2认识验证码


    2002年,路易斯·冯·安(Luis von Ahn)和他的小伙伴在卡内基梅隆第一次提出了CAPTCHA(验证码)这样一个程序概念。
     该程序是指,向请求的发起方提出问题,能正确回答的即是人类,反之则为机器。这个程序基于一个重要假设,即提出的问题要容易被人类解答,并且让机器无法解答
     这也引伸出我们验证码的设计方向:尽可能的区别人和机器,人识别越简单越好、机器识别越困难越好。


3输入式验证码

   输入式验证码,指通过用户输入图片中的字母、数字、汉字等进行验证。


验证码示例

   


优劣处

   

优:

成本便宜,操作简单

大众化接受度高


劣:

容易被破解


破解方法

   

 OCR 

简介:Optical Character Recognition,光学字符识别

特点:简单易用、识别率低,需要配合灰度、二值化等操作



 机器学习 

简介:使用TensorFlow

特点:需要大量验证码分析和处理

流程:

(1)获取字体样本,搜集背景图片

(2)将不同字体验证码加工处理(干扰、变形)

(3)将处理后验证码写入背景图片,生成训练样本

(4)累计样本库,覆盖常见模型

(5)判断错误,对结果进行优化


 打码平台 

简介:通过第三方人工

特点:速度快,准确率高,以人工方法进行识别;需付费,属于黑灰产


未来发展方向

   

1、“字体”:扭曲、粘连、混用


2、“背景”:干扰色、干扰字母


3、“逻辑问题”:通过问题结果辨识人和机器


4拖动式验证码


      拖动式滑块,指将滑块拖动到指定位置。此外,拖动式滑块经过变种可以形成拖动旋转式验证码,即通过图像的旋转角度确认其校正方向的准确性。


验证码示例

   

拖动式滑块



拖动旋转验证码


优劣处

   

  优:

难度简单,用户体验性好

无法接入打码平台


劣:

偶尔影响正常用户使用

素材库单一时易被破解


破解方法

   

 模拟真人操作 

简介:计算图片位置,模拟点击

特点:需要大量学习

(1)截取验证码图片区域

(2)通过比较色值差异计算缺口位置

(3)计算需要滑动的距离

(4)用先加速后减速的过程进行滑动


未来发展方向

   

1、缺口的位置、方向随机


2、引入AI模型(如滑动速度判断等)


3、背景图片足够多或经常更新


4、加入混淆选项,防止破解


5、新型的随机手势轨迹

5点触式验证码


      点触式验证码,指使用点击选择的形式完成验证,是一种安全,有趣,互动形式的新型验证方法。

验证码示例

   


优劣处

   

优:

机器识别有一定成本

破解有一定技术门槛


劣:

对图片、图库识别技术要求高


破解方法

   

 调用各类识图API 

简介:使用各大搜索引擎中图片识别api

特点:容易被察觉并被封


 可以接入打码平台 

简介:同图片验证码


 机器学习 

简介:使用机器学习寻找关键词共同点并分析图片内容

特点:固定化,每多一个内容都需重新学习


未来发展方向

   
1、增加个人信息相关认证



2、接入一些人可以理解的逻辑要求



6智能验证码


        智能验证码,指在点选或滑动验证码的基础上加入风控模型,判断用户风险,在同一个登录模式中存在多种不同的验证方式对用户进行二次验证。

验证码示例

   


安全用户

低可疑用户

中可疑用户

高可疑用户


优劣处

   

优:

用户体验好,不打扰正常用户

操作简单,安全系数高


劣:

需持续完善的风控模型

   需长期根据实际情况调参

占用资源  


破解方法

   

暂无


未来发展方向

   
利用人工智能技术对验证码进行革新,实现智能无感知



7FSRC验证码漏洞案例


        验证码漏洞本身危害程度不是很高,但由于其场景较多,如果用心去研究,还是有很大可能性挖到漏洞。


验证码内容在前端/返回包中

   

如果开发图简单,直接将验证码在前端验证/放在返回包中,则简单的查看网页源代码或抓包即可发现。

当然有时候是加过密的,需要解密才能看到



验证码置空通过校验

   

设计时,是判断当ticket存在且错误时,统一返回报错信息

通过置空ticket参数,直接返回对应的报错信息(账号不存在/账号密码错误),被用来爆破用户手机号


清空cookie绕过

   

清空cookie之后,可以让后端认为是首次访问无需验证码,绕过限制5次/10次等次数才触发的验证码机制


修改验证返回包绕过

   

包括两种:

1、修改返回包中提示验证码是否错误的值,进行爆破。


【过于简单  假装有图】


2、骚姿势,有些前端会把是否需要验证码作为请求发到服务端,这时候将needvalidate参数改为false,即可让系统不弹出验证码。


验证码图片修改分辨率

   

通过修改验证码的height和width值,导致服务器资源浪费在生成验证码图片上。

如果修改成超大分辨率或多次申请,可导致服务器宕机。


8总结


       各种验证码其实都有一定的优劣处,并不是某一种验证码一定就比其他的验证码更加合适我们的业务。因此,还是需要根据业务的实际情况和使用人数做好均衡评估,在保证服务器性能的情况下选择合适的验证码机制。

        此外,无论使用哪种验证码,只要开发操作不当都可能产生安全漏洞,如果逻辑设计上本就有问题,哪怕最安全的验证机制也是马奇诺防线。


9免责声明


      本文中提到的相关资源已在网络公布,仅供研究学习使用,请遵守《网络安全法》等相关法律法规。


10参考资料


验证码的前世今生(by 阿里云誉反欺诈)

https://www.freebuf.com/articles/web/102276.html

验证码安全那些事(by LionZ)

https://www.freebuf.com/131542.html

验证码实战攻防(by 红日安全):

https://xz.aliyun.com/t/6971


FSRC,愿与你共同成长
焦点科技漏洞提交网址:https://security.focuschina.com




关注公众号:拾黑(shiheibook)了解更多

[广告]赞助链接:

四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接