黑产用“未来武器”破解验证码,打码小工都哭了
当我们正讨论如何用AI推动产业升级、改变未来生活时,不法分子也在研究AI技术,并通过各种手段非法牟利。近日,腾讯守护者计划安全团队协助警方打掉市面上最大打码平台“快啊答题”,挖掘出一条从撞库盗号、破解验证码到贩卖公民信息、实施网络诈骗的全链条黑产。而在识别验证码这一关键环节,黑产竟已用上AI人工智能技术。该团伙运用AI技术训练机器,极大提升了单位时间内识别验证码的数量,2017年一季度打码量达到259亿次,且识别验证码的精准度超过80%。借此案件,我们也深入研究AI打码平台黑产领域,对其犯罪模式进行剖析。
打码平台:对抗验证码系统而生
对于“验证码”,大家并不陌生。在登录各网站、平台、APP时,经常见到。常见的“验证码”有“字符式”、“字符+点选式”、“滑块拼图式”和难度逆天的“12306式”。
字符式 字符+点选式
滑块拼图式 12306式
验证码(CAPTCHA ,Completely Automated Public Turing Test to Tell Computers and Humans Apart,全自动区分计算机和人类的图灵测试),是区分计算机和人类的一种程序算法,简单解释是一个答题的验证。系统向请求发起方提问,能正确回答的即是人类,反之则为机器。从安全角度讲,CAPTCHA经过不断演化,已成为目前国内外各大互联网公司用于对抗网络黑产恶意行为(如恶意登录)的验证码安全策略,即我们现在俗称的验证码系统。
在网络黑产中,不法分子窃取网站数据库后,需要确认帐号对应的密码是否正确,将有价值的数据通过验证的方式筛选出来,这一过程黑话叫“晒密”,意即撞库。而“晒密”最核心的障碍就是互联网公司设置的验证码安全体系。每天面对数以亿计的“晒密”需求,黑产分子不可能人工逐个识别,而是需要提高“晒密”效率,批量识别。“打码平台”这一专业服务便应运而生。
“打码平台”会与“晒密”软件作者合作:
1) 黑产团伙把盗取的帐号密码信息导入到“晒密”软件,“晒密”软件模拟登录协议,向互联网公司服务器发送登录请求。 2) 服务器检测到登录异常时,会下发验证码,进行安全策略拦截。 3) “晒密”软件将收到的验证码图片发送给“打码平台”,请求将图片转化为字符。 4) 打码平台后台破解验证码,将字符结果返回“晒密”软件,完成“晒密”(撞库)流程。 5) 这些“晒密”后得到的用户信息,则可能被骗子直接用于实施诈骗犯罪。
下面这张图,可以看到“快啊答题”打码平台所涉及的从撞库到晒密再到打码的整个黑色产业链:
早期的打码平台,对验证码的识别基本是通过“人工+OCR降维识别图片”完成。但是,互联网公司的验证码安全策略升级后,包括出现像12306这样识别难度高的验证码体系,“人工+OCR”方式的识别效率降低、成本升高,一段时期内,确实降低了黑产犯罪。
但是,黑产人员并不会因为一条路被堵死,就放弃犯罪,他们又想出了更前沿的手法来应对。目前市面上最大的 “快啊答题” 打码平台就是典型代表,他们运用目前最流行的人工智能AI技术训练机器,大大提高了识别验证码的精准度,也极大提升了犯罪嫌疑人在单位时间内识别验证码的数量。通过这个打码平台管理后台的统计信息显示,2017年1-3月,其打码量达到259亿次,平台累计打码量超过1700亿次。这套AI系统识别验证码成功率非常高,以下图红框标识处为例,当天的整体识别率会输出成日志文件,通过随机调取某日的日志文件,该日整体验证码识别率高达83.4%。
AI技术破解“晒密”低效难题
“快啊答题”打码平台基于主流AI深度学习Caffe框架,使用vgg16卷积核神经网络模型,可以直接输入原始图像(避免了对图像的复杂前期预处理),并能通过深度的机器学习来获得较高的验证码识别率。
(分布式AI验证码识别系统简易流程介绍)
由于不同方式生成的验证码风格迥异,且经常变换,为了实现精准识别,提高准确度,“快啊答题”收集了大量不同风格的样本,并开发了验证码接收与分发模块,输入端对接打码平台,输出端根据验证码类型轮询选择并推送到相应的验证码识别模型,验证码识别完成,返回验证码字符串到打码平台,打码平台确认是否识别正确,并将结果反馈至该分布式AI验证码识别系统进行进一步优化。
(图为识别平台自身的管理界面)
1、生成方法
打码平台犯罪团伙通过以下步骤,迅速低成本地获得海量验证码训练数据:
(1)从互联网公开渠道获取字体样本,输出数字、字母、字母+数字、中文等不同类型验证码识别模型,获得的公开字体库,并且搜集背景图片,如壁纸/风景类图片。 (2)通过工具将不同字体的验证码进行加工处理(加干扰、变形等)后,写入到背景图片中,生成带标定的训练样本。
由于目标问题是不定长度的字符序列识别,生成的训练样本的字符个数也是不定长度的,可以是1-6个任意字符,最多支持6个标签的识别。黑产人员用一系列的验证码生成工具,来生成不同风格的验证码图片,如下图:
(作者通过工具生成的训练样本示例)
(3)打码平台犯罪团伙基于收集到的超过10000个字体库,通过网络采集和字库背景生成训练样本,针对验证码识别业务,积累超过5000万的样本库,覆盖常见验证码模型。由此训练得到的模型具有非常强的适用性,即便新型的验证码变种,也可达到较高识别率。
2、多标签训练
“快啊答题”打码平台的AI系统,能将一张验证码图片作为一个整体,将单字识别转换成单图多标签、端到端的识别出验证码中的所有字符。
针对网络上主流验证码图片一般不超过6个字符的特点,该AI系统设计6个标签的分类,对于少于6个字符的验证码图片,未含字符的标签会判定为负样本不予输出。因此,最终的输出结果只包含给定字符的有效标签。也就是,原本的OCR识别只能简单识别图形上的文字,而在文字变化后识别率就大大降低。而使用Caffe框架,就可以对图形内的局部特征进行分类提取。
“快啊答题”打码平台基于海量训练样本,建立了多标签分类网络来训练验证码的识别网络。汉字的网络训练周期为1个月左右,而英文+数字的网络训练周期则只需要1个星期。
另外,“快啊答题”打码平台还会通过搜集反馈回来的失败样本,以及人工打码的标定数据,来实时训练和更新识别网络,不断迭代训练进行优化,进一步提高神经网络模型的识别能力。
在以往的对抗黑产过程中,由于犯罪行为认定、法律适用等问题,即使对下游从事诈骗的团伙开展打击,但在针对“打码平台”这一犯罪上游环节上,能真正认定为共同犯罪,形成的实际判例非常少,无法实现全链条打击。下游团伙借助“打码平台”死灰复燃,也是多类网络黑灰产屡禁不止的原因之一。在市场上,“快啊答题”打码平台通过对接晒密软件,根据打码数量收取下游使用晒密软件的黑产犯罪团伙费用,而后再按比例进行分成。
像 “快啊答题” 这类的打码平台,不仅破坏了互联网公司的验证码安全体系,也直接或间接的为更多网络黑产提供了帮助。在腾讯守护者计划安全团队和警方的共同努力下, “快啊答题” 平台负责人及核心人员被公安机关以提供侵入、非法控制计算机信息系统程序工具罪批准逮捕。
- 一个实用的却被忽略的命名空间:Microsoft.VisualBasic
- Spring @RequestBody 传递 List/Map 参数
- win7怎么去除快捷方式的小箭头
- 零基础学编程015:画些有趣的图案
- Spring boot with Thymeleaf
- 零基础学编程014:小海龟做画
- Springboot @RequestBody 传递 List
- 零基础学编程013:import让你飞起来
- 【教程】利用Tensorflow目标检测API确定图像中目标的位置
- 零基础学编程012:画出复利曲线图
- OpenAI发布高度优化的GPU计算内核—块稀疏GPU内核
- SQL SERVER 原来还可以这样玩 FOR XML PATH
- 零基础学编程011:复利数据表问题(总结)
- 一个小程序引发的思考
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android开发中Intent.Action各种常见的作用汇总
- Android解决ScrollView下嵌套ListView和GridView中内容显示不全的问题
- Android添加ButterKnife时报错Error:(2, 0) Cannot add extension with name 'android'的解决办法
- Python视频编辑库MoviePy的使用
- python json.dumps中文乱码问题解决
- Android定时器实现定时执行、重复执行、定时重复执行、定次数执行的多种方式
- Android开发导入项目报错Ignoring InnerClasses attribute for an anonymous inner class的解决办法
- Android中buildToolVersion与CompileSdkVersion的区别
- Glide用法与技巧以及优秀库的推荐
- Android整理好的图片压缩工具类
- Android Studio获取网络JSON数据并处理的方法
- Android使用ViewPager快速切换Fragment时卡顿的优化方案
- 在Android打包中区分测试和正式环境浅析
- django 多数据库及分库实现方式
- Python气泡提示与标签的实现