今天你抢到回家的火车票了吗?

百家 作者:绿盟科技 2018-01-15 10:57:56


2018年春运正如火如荼进行着,朋友之间见面都会忍不住关切地问一句“抢着票了吗?”

春运又称“年度全球最大规模的人口流动”,是一部“人民的斗争史”,起初是与黄牛斗智斗勇,后来为了整治黄牛,12306不断升级验证码,于是大家又开始与验证码斗智斗勇。


验证码到底是闹啥类?

简单来说,就是区分抢票的你是不是人类。为防止服务器端的资源被客户端的计算机程序滥用或攻击,服务器需要区分当前用户是计算机还是人类,一般在网站的关键操作位置都会采用验证码技术来区分。

验证码的全称是:全自动区分计算机和人类的图灵测试(Completely Automated Public Turing test to tell Computers and Humans Apart,简称CAPTCHA)。是一种区分用户是计算机或人的全自动化程序。在CAPTCHA测试中,作为服务器端的计算机会自动生成一个问题由用户来解答。这个问题可以由计算机生成并评判,但是必须只有人类才能解答。由于计算机无法解答CAPTCHA的问题,所以回答出问题的用户就可以被认为是人类。


验证码的工作原理

常见的图形验证码是与web中的会话相关联的,在一个会话开始时,在需要使用验证码的地方会生成一个与当前会话相关的验证码,用户识别出验证码后,通过填写表单将数据提交给服务器,服务器端会验证此次会话中的验证码是否正确。

具体来说,其工作流程如下图所示:

验证码作为区分人与机器的一道重要屏障,与之相关的对抗技术一直在WEB安全研究上有着重要意义。图片验证码生成算法以及程序实现流程上都有可能带来问题,容易被攻击者突破。


图片验证码的生成可能存在如下问题

1) 图片验证码的字符空间小

如果选取的字符空间较小,则让验证码识别变得相对简单。字母数字组合的字符集比单纯为数字的字符集效果要好。

2) 图片中的字符规则

字符进行变形,扭曲不利于程序的识别,而对人眼识别是无障碍的,但此方法对生成程序来说有一定的难度。

3) 图片中缺少干扰图案

干扰图案能有效增加验证码的识别难度,并且对生成程序来说代价小。


验证码的程序实现流程方面可能存在如下问题

1) 验证码固定

一般来说,如果验证码输入错误,验证码会自动刷新。正常情况下,这个过程看起来是没有问题的。但是,由于HTTP请求响应式的工作原理,使得攻击者有可能控制验证码生成页面请求不被触发,使得在服务器上同一会话内,服务器端保存的此会话下的验证码一直有效。

基于此,服务器端的正确处理应该是在验证码检验失败时,就需要设置此验证码失效,同时对生成的每一个验证码也需要设置有效期。

2) 验证码的字符串值出现在返回的响应中

这是属于程序编码考虑不当导致,比如忘记注释掉调试信息导致。验证码可能出现在响应包中的Cookie, URL, 页面注释,甚至验证码在展示的时候直接就是文本方式,这样就完全失去了使用验证码的价值了。

3) 验证码长度可指定

在页面上存在参数可指定验证码的位数,这可简化识别工作。此问题的出现也可能是调试的需要,并发布时忘记注释掉相关代码而导致。


关于验证码的攻防对抗现状

自验证码技术问世以来,其成为自动化程序运行的第一大敌人。在利益的驱动下,突破封锁技术自然也会产生。

一般来说,验证码的对抗技术有如下几个方面:

1)避免触发验证码

验证码的引入会带来用户友好度的下降,增加验证码输入以及人眼对验证码识别的可能错误等,都会带来不好的使用体验。这对追求用户体验的网站来说,在没遇到可疑行为时,其采取的策略是默认不开启验证码功能,当触发可疑行为识别规则时,才会出现验证码。基于此原理,对攻击方来说,就是尽量避免触发可能出现验证码的规则。一般可疑行为识别是通过检查频繁尝试并且出错这个行为来进行,基于此的对抗措施则是使用不同的IP来进行尝试,或者等待足够的时间再次尝试,这样让目标网站程序认为这些尝试都是正常的访问请求,从而在自动化程序端连续作业时不会出现验证码而达到绕过的目的。

2)验证码固定

从前面的验证码固定问题描述可看出,攻击者可以在同一个会话下,在获得第一个验证码后,后面不再主动触发验证码生成页面,并且一直使用第一个验证码就可循环进行后面的表单操作,从而绕过了验证码的屏障作用。

3)验证码机器自动识别

计算机自动识别验证码,主要原理是通过一定的算法预先建立验证码范围内的字体特征库,再将要识别的验证码通过同样的算法生成特征,与之前保存的特征库进行比较,进而得到图片验证码的值。

一般,其识别过程有如下图所示的处理流程:

4)人工分布式识别

机器自动识别图片验证码,对简单的情况能有较高的准确率,但对干扰多,变形复杂的图片验证码,其准确率会很差。由于图片验证码重要度增加,复杂的图片验证码被大量使用,导致近年来出现了利用众包力量实现的人工验证码识别平台。

其工作原理图下所示

自动化程序将要识别的验证码发送到打码平台,打码平台再将验证码发放给从事验证码识别工作的人员(俗称打码工作),在人工识别后再将值依次返回到自动化程序。由于是人直接参与了验证码的识别,此方法就让验证码完全失去了屏障功能。


验证码的主要形式

随着验证码攻防技术的对抗升级,验证码技术也出现了一些新的发展动向。从图片验证码自身的发展来看,主要是围绕增强人脑交互性来展开的,具体来说有如下几个方向:

1)增强干扰和字符变形

从验证码的机器识别可以看出来,增强干扰和字符变形能极大地提高识别难度。像以下生成的图片验证码,对人眼识别来说都存在着一些难度。

2)拓展字符空间

常见的图片验证码都是数字或者字母,近年来出现了中文字符作为验证码,这样字符空间就增大了很多。

如果字符空间足够大,试图通过制作字符模板库方式来实现识别的难度就变得很大了。

3)增强与用户的互动性

通过增加与用户的互动也可增加难度,但因为这类互动都是通过问答题方式来实现,其题库数量是否足够以及是否具有足够的随机性则成为了关键所在。

如下图所示的问答型验证码


验证码的信息传递途径和方式

1)增加信息传递途径

在原来只通过网页来传递信息的基础上增加了其他传递方式,比如手机短信等。对于使用手机短信验证码,需要确保其关联的手机号不为攻击者所控制,否则也将失去保护意义。

2)利用动态令牌进行一次一密

通过动态令牌实现的一次一密方式,就必须通过人工交互才能实现,但此方式也增加了使用成本,只适用于密级要求很高的场合。

3)语音方式

语音方式在当前网络也有出现,但主要只是作为方便盲人使用的一个备用方案,但由于智能手机终端的广泛普及,以后也有可能成为一个主要的验证码发展场景。

随着技术的不断发展,以后还会出现其他方式的验证码,但可以肯定的是基于人脑的思维特性来区别于程序的预设特性,至于以后会如何发展,还是让我们拭目以待吧。


总结

可以肯定的是,不管使用何种方式的验证码,都会影响用户体验,机器难以识别的验证码最后也会影响人眼的识别,验证码的设计者们需要在用户体验和安全性方面做一个折衷选择。寄希望于通过验证码来作为对抗机器自动化行为的唯一途径是不可取的。

在识别自动化程序发起的远程Web扫描,登陆猜测等方面,推荐架设WAF类的专业防护产品。目前,绿盟科技的WAF产品能对此类问题提供完整的解决方案,有效阻挡即将发生的安全事件。



请点击屏幕右上方“…”

关注绿盟科技公众号
NSFOCUS-weixin

↑↑↑长按二维码,下载绿盟云APP

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

[广告]赞助链接:

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

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接
百度热搜榜
排名 热点 搜索指数