• 找新知
  • 找课程
  • 找服务/产品
  • 找LIVE
  • 找活动
  • 找新知号/店
新知一下
海量新知
1 5 9 7 8 5 4

AI时代!且看验证码的攻与防

同盾智能风控 | 同盾科技-专注于智能风控和分析 2019/10/09 14:17

首先,非常高兴和大家来分享下我在验证码攻防方面的一些实践和探索。我主要从事反欺诈服务的相关工作,最近一段时间接触到OpenCV和Tensorflow,在一次分享会上听到Puppeteer的介绍,经过半年研究将这3个整合起来,在Node中对市面主流验证码做了一轮攻防演练。

1、CAPTCHA

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

2、简介

CAPTCHA这个词最早是在2002年由卡内基梅隆大学的路易斯·冯·安、Manuel Blum、Nicholas J.Hopper以及IBM的John Langford所提出。卡内基梅隆大学曾试图申请此词使其成为注册商标, 但该申请于2008年4月21日被拒绝。一种常用的CAPTCHA测试是让用户输入一个扭曲变形的图片上所显示的文字或数字,扭曲变形是为了避免被光学字符识别(OCR, Optical Character Recognition)之类的计算机程序自动识别出图片上的文数字而失去效果。由于这个测试是由计算机来考人类,而不是标准图灵测试中那样由人类来考计算机,人们有时称CAPTCHA是一种反向图灵测试。

为了无法看到图像的身心障碍者,替代的方法是改用语音读出文数字,为了防止语音识别分析声音,声音的内容会有杂音或仍可以被人类接受的变声。

根据CAPTCHA测试的定义,产生验证码图片的算法必须公开,即使该算法可能有专利保护。这样做是证明想破解就需要解决一个不同的人工智能难题,而非仅靠发现原来的(秘密)算法,而后者可以用逆向工程等途径得到。

3、作用

防止恶意破解密码、刷票、论坛灌水、刷页。有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登录尝试,实际上使用验证码是现在很多网站通行的方式(比如招商银行的网上个人银行,百度社区),我们利用比较简易的方式实现了这个功能。虽然登录麻烦一点,但是对网友的密码安全来说这个功能还是很有必要,也很重要。但我们还是 提醒大家要保护好自己的密码 ,尽量使用混杂了数字、字母、符号在内的6位以上密码,不要使用诸如1234之类的简单密码或者与用户名相同、类似的密码 ,免得你的账号被人盗用给自己带来不必要的麻烦。

验证码通常使用一些线条和一些不规则的字符组成,主要作用是为了防止一些黑客把密码数据化盗取。

典型应用场景:

· 网站安全:垃圾注册、恶意登录、账号盗用

· 数据安全:数据爬取、数据破坏

· 运营安全:恶意刷单、虚假秒杀、虚假评论

· 交易安全:虚假交易、恶意套现、盗卡支付

4、工作原理

智能验证产品主要针对企业不同业务场景,利用生物行为与机器学习方式提供人机验证服务,防范非真实人类流量和恶意程序攻击,帮您降低业务风险。

其工作流程如下图所示:

新知图谱, AI时代!且看验证码的攻与防

5、验证码的分类

字符型图片验证码

字符型图片验证码是由阿拉伯数字,英文字母,中文汉字按照一定规律排列,加入干扰噪点之后生产的一张图片。

行为式验证码

行为式验证码是一种较为流行的验证码。从字面来理解,就是通过用户的操作行为来完成验证,而无需去读懂扭曲的图片文字。常见的有两种:拖动式与点触式。

智能验证码

智能验证码是一种基于语言认知的人机区分,考验机器语言认知能力的智能验证码,会是未来一段时间内的重要选择。典型代表有语序点选和空间推理。

使用到技术找

· OpenCV

· Tensorflow

· Node

· Tesseract

· Python

· node-tesseract & gm & node-cmd 库使用

6、打码平台

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

新知图谱, AI时代!且看验证码的攻与防

字符型图片验证码基本沦陷,验证码进入行为式验证时代。

7、行为式验证码破解

行为式验证的核心思想是利用用户的“行为特征”来做验证安全判别。整个验证框架采用高效的“行为沙盒”主动框架, 这个框架会引导用户在“行为沙盒”内产生特定的行为数据,利用“多重复合行为判别”算法从特指、视觉、思考等多重行为信息中辨识出生物个体的特征, 从而准确快速的提供验证结果。

但是随着puppeteer的出现,行为式验证码的防御不在奏效。Puppeteer 的 Logo 很形象,顾名思义像是一个被操控的傀儡、提线木偶。

新知图谱, AI时代!且看验证码的攻与防

Puppeteer 是一个 Node 库,它提供了高级的 API 并通过 DevTools 协议来控制 Chrome(或Chromium)。通俗来说就是一个 headless chrome 浏览器 (也可以配置成有 UI 的,默认是没有的)

新知图谱, AI时代!且看验证码的攻与防

通过puppetter的page.screenshot进行指定区域截屏,如果页面上未引入jQuery通过page.addScriptTag引入,后面截屏处理需要使用到。利用resemblejs/compareImages进行图片比对取得滑动距离的图片,通过canvas将图片读入内存,取得最终滑动距离,调用puppetter加入人的行为模拟,并最终验证通过。

新知图谱, AI时代!且看验证码的攻与防

Puppeteer-无头浏览器简介

以豆瓣的滑动验证码为列,豆瓣重置密码

7、Puppeteer过人机检测信息

await page.evaluateOnNewDocument(() => {

Object.defineProperty(navigator, 'webdriver', {

get: () => false,

});

Object.defineProperty(navigator, 'plugins', {

get: () => [1, 2, 3, 4, 5],

});

const originalQuery = window.navigator.permissions.query;

return window.navigator.permissions.query = (parameters) => (

parameters.name === 'notifications' ?

Promise.resolve({state: Notification.permission}) :

originalQuery(parameters)

);

});

截屏处理

// 截屏

await screenshot(captionPosition, './screenshots/douban3.png');

await cropImage('./screenshots/douban3.png', './screenshots/douban4.png');

8、对抗

随着互联网技术的进步,黑灰产也逐渐形成了团体化、工具化,对企业造成的危害也越发严重。在与黑产的对抗中,同盾科技反欺诈服务,依托大数据分析技术,提供内容安全,业务安全,云安全,人机验证,行为验证码,营销反作弊,注册保护,登录保护,图像鉴黄,文本过滤,敏感词过滤,黑产情报等产品用于黑产对抗,为企业提供安全解决方案。

相关推荐

更多“智能验证码”相关内容

新知精选